@panphora/clayjs 1.15.2 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +4 -5
- package/THIRD-PARTY-NOTICES.md +16 -0
- package/compat/highlight-11.9.0.min.js +1213 -0
- package/compat/highlight-LICENSE +29 -0
- package/compat/journal-assets.lock.json +22 -0
- package/compat/overtype-2.6.1.min.js +116 -0
- package/compat/overtype-LICENSE +21 -0
- package/dist/all.js +90 -0
- package/dist/clay-dom.js +84 -0
- package/dist/clay-events.js +103 -0
- package/dist/clay-internals.js +85 -0
- package/dist/clay-options.js +93 -0
- package/dist/clay-router.js +98 -0
- package/dist/clay-ui.js +95 -0
- package/dist/clay-utils.js +84 -0
- package/dist/clay.js +146 -0
- package/dist/clay.standalone.js +84291 -57611
- package/dist/m/attrs/add-from-T5LJXFFI.js +1 -0
- package/dist/m/attrs/onaftersave-OKSWEJQF.js +1 -0
- package/dist/m/attrs/refetch-on-save-ZUE7PSCI.js +1 -0
- package/dist/m/attrs/save-freeze-MYNVXREN.js +1 -0
- package/dist/m/c-2AZDZWCK.js +1 -0
- package/dist/m/c-2SPVQSHC.js +1 -0
- package/dist/m/c-2YYDMLNZ.js +1 -0
- package/dist/m/c-336SGU5W.js +1 -0
- package/dist/m/c-33JJ6CBX.js +2 -0
- package/dist/m/c-3GJ4SDE2.js +1 -0
- package/dist/m/c-3H6BZDNJ.js +6 -0
- package/dist/m/c-3OWDMNJR.js +2 -0
- package/dist/m/c-3RUU4TPX.js +91 -0
- package/dist/m/c-3XIRD4NU.js +1 -0
- package/dist/m/c-46XYM55L.js +1 -0
- package/dist/m/c-4DFEJ2PO.js +3 -0
- package/dist/m/c-4JZDZFF6.js +1 -0
- package/dist/m/c-4L3BTFRK.js +1 -0
- package/dist/m/c-4Q2XTQ2N.js +2 -0
- package/dist/m/c-4WKFKEKF.js +1 -0
- package/dist/m/c-56QRZTZH.js +1 -0
- package/dist/m/c-5J4E7O4Y.js +4 -0
- package/dist/m/c-5LKDWQTL.js +19 -0
- package/dist/m/c-5QWQ7A5L.js +1 -0
- package/dist/m/c-5RJFTLSF.js +1 -0
- package/dist/m/c-5V3MOVJT.js +1 -0
- package/dist/m/c-5VYOWDTI.js +1 -0
- package/dist/m/c-5YIHJ3TJ.js +1 -0
- package/dist/m/c-6AZOGAPE.js +1 -0
- package/dist/m/c-6CRUUXOX.js +5 -0
- package/dist/m/c-6HMB24EV.js +1 -0
- package/dist/m/c-6KEVEQ7L.js +1 -0
- package/dist/m/c-6NC5I2TV.js +1 -0
- package/dist/m/c-74MGYWZF.js +1 -0
- package/dist/m/c-7DJDKPGL.js +1 -0
- package/dist/m/c-7OLLJPWP.js +1 -0
- package/dist/m/c-7SWMYKAI.js +1 -0
- package/dist/m/c-A3E3NIMC.js +1 -0
- package/dist/m/c-A7LS5UZW.js +1 -0
- package/dist/m/c-AMSNPOCX.js +1 -0
- package/dist/m/c-AQLFEATB.js +1 -0
- package/dist/m/c-B3JM5ZXC.js +1 -0
- package/dist/m/c-BBVGTQG7.js +1 -0
- package/dist/m/c-BPF2NSPV.js +1 -0
- package/dist/m/c-BQ6LOBEE.js +1 -0
- package/dist/m/c-BTDI4Y23.js +1 -0
- package/dist/m/c-BWFVSBDF.js +1 -0
- package/dist/m/c-BYTKL6UX.js +1 -0
- package/dist/m/c-CFHW5AMY.js +6 -0
- package/dist/m/c-CJ3A7ZKE.js +1 -0
- package/dist/m/c-CQHPGKX2.js +1 -0
- package/dist/m/c-CYWLPPUS.js +1 -0
- package/dist/m/c-CZUSOB7V.js +1 -0
- package/dist/m/c-DCFSEJZG.js +1 -0
- package/dist/m/c-DCXOXBF3.js +1 -0
- package/dist/m/c-DFS4XZJV.js +2 -0
- package/dist/m/c-DNENWY4O.js +1 -0
- package/dist/m/c-DNZ5IFM6.js +1 -0
- package/dist/m/c-E4LIR5X5.js +1 -0
- package/dist/m/c-EJTGYSLN.js +1 -0
- package/dist/m/c-EVCQ3BKA.js +1 -0
- package/dist/m/c-EZU56NQV.js +34 -0
- package/dist/m/c-FDNHHZY5.js +1 -0
- package/dist/m/c-FILLTJA7.js +1 -0
- package/dist/m/c-FRLHSY7E.js +1 -0
- package/dist/m/c-FROJUZMV.js +1 -0
- package/dist/m/c-G2JPKCTP.js +1 -0
- package/dist/m/c-GB6TU7WV.js +1 -0
- package/dist/m/c-GFJJEBTU.js +1 -0
- package/dist/m/c-GJAEGGXY.js +1 -0
- package/dist/m/c-GOWBDM6J.js +1 -0
- package/dist/m/c-GQ6F6IDK.js +1 -0
- package/dist/m/c-GSFIGKOP.js +1 -0
- package/dist/m/c-GY422N3Q.js +1 -0
- package/dist/m/c-H4LG442Q.js +1 -0
- package/dist/m/c-HA6INT6J.js +1 -0
- package/dist/m/c-HAWFNBYG.js +1 -0
- package/dist/m/c-HDDEEL77.js +1 -0
- package/dist/m/c-HFKUVACH.js +1 -0
- package/dist/m/c-HHDFCNHV.js +1 -0
- package/dist/m/c-HPURYVZS.js +2 -0
- package/dist/m/c-I2ZATQCD.js +2 -0
- package/dist/m/c-IEM4NTCS.js +1 -0
- package/dist/m/c-IJUK2GPW.js +1 -0
- package/dist/m/c-IW6GGOU2.js +1 -0
- package/dist/m/c-JAX2667S.js +6 -0
- package/dist/m/c-JDCX26UP.js +25 -0
- package/dist/m/c-JRKY44DK.js +1 -0
- package/dist/m/c-JU3NK25H.js +1 -0
- package/dist/m/c-KAU6E43D.js +1 -0
- package/dist/m/c-KBS3UV6B.js +1 -0
- package/dist/m/c-KGVGROZT.js +1 -0
- package/dist/m/c-KI7M4AY3.js +1 -0
- package/dist/m/c-KIPQJX4B.js +1 -0
- package/dist/m/c-KQ6TYJAP.js +135 -0
- package/dist/m/c-KU3ZFADW.js +1 -0
- package/dist/m/c-L4WQSC27.js +1 -0
- package/dist/m/c-LFPHCXY3.js +1 -0
- package/dist/m/c-LRPUO2MX.js +1 -0
- package/dist/m/c-LWLBHLVC.js +3 -0
- package/dist/m/c-LZJPNR2W.js +1 -0
- package/dist/m/c-M2L47S2X.js +7 -0
- package/dist/m/c-MFP2ZWD4.js +1 -0
- package/dist/m/c-MKSQ4Y57.js +1 -0
- package/dist/m/c-MTQHWQC3.js +1 -0
- package/dist/m/c-N326R2JD.js +1 -0
- package/dist/m/c-N7JPUPGC.js +1 -0
- package/dist/m/c-NRPJEVJS.js +1 -0
- package/dist/m/c-NUFFJVVJ.js +1 -0
- package/dist/m/c-NUHP2XDB.js +1 -0
- package/dist/m/c-NUHSPT5P.js +1 -0
- package/dist/m/c-O72HVYSA.js +1 -0
- package/dist/m/c-OCSZ4QGN.js +1 -0
- package/dist/m/c-OIBUTDXI.js +1 -0
- package/dist/m/c-OIDRZKAF.js +1 -0
- package/dist/m/c-OW5QIGG3.js +1 -0
- package/dist/m/c-P7KNDG34.js +1 -0
- package/dist/m/c-PGRCK73F.js +1 -0
- package/dist/m/c-PQ5LK6QE.js +993 -0
- package/dist/m/c-PS5ARVWR.js +9 -0
- package/dist/m/c-PZ4XEPUP.js +2 -0
- package/dist/m/c-Q622NS2Y.js +1 -0
- package/dist/m/c-Q7NQD65V.js +1 -0
- package/dist/m/c-QH63LQOS.js +1 -0
- package/dist/m/c-QHIWXHRO.js +1 -0
- package/dist/m/c-QHWJ5ZIJ.js +1 -0
- package/dist/m/c-QICP2YR5.js +1 -0
- package/dist/m/c-QJ4OM3G6.js +1 -0
- package/dist/m/c-QNKREOL6.js +1 -0
- package/dist/m/c-R3L7ZJGB.js +2 -0
- package/dist/m/c-R7IWVINQ.js +1 -0
- package/dist/m/c-RM7J7BV2.js +1 -0
- package/dist/m/c-RSMOODDU.js +1 -0
- package/dist/m/c-RVMWGXEJ.js +1 -0
- package/dist/m/c-RYUXUUBX.js +1 -0
- package/dist/m/c-S4ZEH46B.js +9 -0
- package/dist/m/c-S7H2DRCB.js +1 -0
- package/dist/m/c-S7LK4KUE.js +1 -0
- package/dist/m/c-SDAXDM2D.js +1 -0
- package/dist/m/c-SGIA4IEQ.js +188 -0
- package/dist/m/c-SMBZG5X4.js +1 -0
- package/dist/m/c-SMGU7RT3.js +235 -0
- package/dist/m/c-SPIORRYS.js +1 -0
- package/dist/m/c-SWLRT66R.js +1 -0
- package/dist/m/c-SZGYW5HT.js +1 -0
- package/dist/m/c-TCCA5BZN.js +2 -0
- package/dist/m/c-TCJTVAFN.js +1 -0
- package/dist/m/c-TJ6WOJL3.js +67 -0
- package/dist/m/c-TQEMVJCS.js +1 -0
- package/dist/m/c-TRS6TM6O.js +1 -0
- package/dist/m/c-TYLXX4NF.js +21 -0
- package/dist/m/c-U62OB4BT.js +1 -0
- package/dist/m/c-U6YWUAR3.js +8 -0
- package/dist/m/c-UDCSU5G5.js +2 -0
- package/dist/m/c-UDUUJPFZ.js +1 -0
- package/dist/m/c-UGHH4MB3.js +1 -0
- package/dist/m/c-UL2YUY52.js +1 -0
- package/dist/m/c-VAK7SG37.js +1 -0
- package/dist/m/c-VDSS4K3Z.js +1 -0
- package/dist/m/c-VE6ZMYMC.js +1 -0
- package/dist/m/c-VG5XIN4T.js +1 -0
- package/dist/m/c-VHM5XQHK.js +1 -0
- package/dist/m/c-VHNSBD2M.js +1 -0
- package/dist/m/c-VI5RMSVY.js +1 -0
- package/dist/m/c-VKEDWYDF.js +1 -0
- package/dist/m/c-VRZN56XY.js +1 -0
- package/dist/m/c-W5MCHEGA.js +1 -0
- package/dist/m/c-WDC5GVKU.js +1 -0
- package/dist/m/c-WN5AY3OZ.js +1 -0
- package/dist/m/c-WNYBLIOZ.js +1 -0
- package/dist/m/c-WRBKEJD4.js +1 -0
- package/dist/m/c-WWXIDH4O.js +28 -0
- package/dist/m/c-WYFDLITL.js +1 -0
- package/dist/m/c-XCNTK76U.js +1 -0
- package/dist/m/c-XMS6DPBR.js +1 -0
- package/dist/m/c-XN6MBKI6.js +67 -0
- package/dist/m/c-XPELB6E5.js +1 -0
- package/dist/m/c-XQXZAO7N.js +1 -0
- package/dist/m/c-Y5HBBIQ4.js +1 -0
- package/dist/m/c-ZE46QDIH.js +1 -0
- package/dist/m/c-ZUCOKOHT.js +1 -0
- package/dist/m/c-ZVPVXTJF.js +4 -0
- package/dist/m/c-ZVRKXKM7.js +1 -0
- package/dist/m/c-ZWIOJGMT.js +1 -0
- package/dist/m/core/admin-attrs-QHOKPJ7W.js +1 -0
- package/dist/m/core/autosave-HRYGUWV6.js +1 -0
- package/dist/m/core/conflict-notice-6MROJN2L.js +1 -0
- package/dist/m/core/draft-mode-WSQAT67S.js +1 -0
- package/dist/m/core/host-permission-FNXVEFNE.js +1 -0
- package/dist/m/core/is-edit-mode-KTWA3O5N.js +1 -0
- package/dist/m/core/persist-JFYRHMRJ.js +3 -0
- package/dist/m/core/recovery-FLTCC2OC.js +1 -0
- package/dist/m/core/save-HQZ4S667.js +1 -0
- package/dist/m/core/save-core-KGQWFUNH.js +1 -0
- package/dist/m/core/snapshot-EGQZNT45.js +1 -0
- package/dist/m/core/unsaved-warning-IDJLD66H.js +1 -0
- package/dist/m/dom/all-APS5ZSKP.js +1 -0
- package/dist/m/dom/dom-helpers-L7OSR6S4.js +1 -0
- package/dist/m/events/index-RN2JNGBV.js +1 -0
- package/dist/m/internals/index-PVXGPUDA.js +1 -0
- package/dist/m/lib/cache-bust-MUMFXZK6.js +1 -0
- package/dist/m/lib/region-policy-SB2AWVG5.js +1 -0
- package/dist/m/loader-S4I7GKXR.js +1 -0
- package/dist/m/manifest-4C419D67.js +1 -0
- package/dist/m/manifest-edit-B077F288.js +1 -0
- package/dist/m/manifest.json +3988 -0
- package/dist/m/options/options-EJMS3K24.js +1 -0
- package/dist/m/page/editor-NNJA4OKD.js +202 -0
- package/dist/m/plugins/ai-edit-QN4PMMNL.js +6 -0
- package/dist/m/plugins/bind-text-NX46N5UV.js +1 -0
- package/dist/m/plugins/cms-HP3LSTPN.js +2293 -0
- package/dist/m/plugins/demo-RM5IR6AO.js +1 -0
- package/dist/m/plugins/derive-UAAA4V4S.js +1 -0
- package/dist/m/plugins/indicator-URDBBOQO.js +1 -0
- package/dist/m/plugins/live-HFWD4OIH.js +1 -0
- package/dist/m/plugins/menu-3HIEQSI6.js +138 -0
- package/dist/m/plugins/message-LQ6EDH4V.js +1 -0
- package/dist/m/plugins/page-JOKB6XPR.js +2 -0
- package/dist/m/plugins/page-view-NXOJHNW6.js +1 -0
- package/dist/m/plugins/people-SGPJKANK.js +1 -0
- package/dist/m/plugins/quickcrop-QNY3PKLD.js +26 -0
- package/dist/m/plugins/quickcrop-QNY3PKLD.js.LEGAL.txt +7 -0
- package/dist/m/plugins/richclay-NRQDSWX6.js +517 -0
- package/dist/m/plugins/richclay-NRQDSWX6.js.LEGAL.txt +1 -0
- package/dist/m/plugins/sortable-GWT4PWDV.js +1 -0
- package/dist/m/plugins/source-4ZRSAIYM.js +1 -0
- package/dist/m/plugins/undo-VDA5P7FH.js +1 -0
- package/dist/m/plugins/unsent-HJFLQJ2O.js +1 -0
- package/dist/m/plugins/upgrade-W7FG5VFG.js +1 -0
- package/dist/m/plugins/upload-WLYKK6TL.js +1 -0
- package/dist/m/plugins/visitor-drafts-LIDY7NH6.js +21 -0
- package/dist/m/plugins/visitor-drafts-owner-ZXCKBZE7.js +1 -0
- package/dist/m/plugins/wire-4N6GYAF6.js +1 -0
- package/dist/m/reader-core-DXYCURFF.js +68 -0
- package/dist/m/route/route-KOCZSEGN.js +1 -0
- package/dist/m/sync/live-sync-J7VMYTKS.js +1 -0
- package/dist/m/ui/index-3JLVI27O.js +1 -0
- package/dist/m/utils/index-4TJCVLT7.js +1 -0
- package/dist/m/vendor/Sortable.vendor-A755ITLN.js +3 -0
- package/dist/m/vendor/Sortable.vendor-A755ITLN.js.LEGAL.txt +1 -0
- package/dist/m/vendor/sap-core.vendor-A7BMUYZT.js +6 -0
- package/dist/offline-manifest.json +4034 -0
- package/dist/page/themes/light-1.css +430 -0
- package/dist/server/core.cjs +23748 -22855
- package/dist/server/offline-runtime.cjs +4954 -0
- package/dist/server/offline-runtime.mjs +4923 -0
- package/dist/server/rooms.mjs +9 -0
- package/docs/guide.md +1078 -669
- package/entries/all.js +2 -0
- package/entries/clay-data.js +1 -1
- package/entries/clay-dom.js +2 -0
- package/entries/clay-events.js +2 -0
- package/entries/clay-internals.js +2 -0
- package/entries/clay-options.js +2 -0
- package/entries/clay-router.js +2 -0
- package/entries/clay-ui.js +2 -0
- package/entries/clay-utils.js +2 -0
- package/entries/clay.js +2 -0
- package/entries/sap.js +6 -6
- package/fonts/ibm-plex-mono-LICENSE +93 -0
- package/fonts/ibm-plex-mono-latin-300-normal.woff2 +0 -0
- package/fonts/ibm-plex-mono-latin-400-italic.woff2 +0 -0
- package/fonts/ibm-plex-mono-latin-400-normal.woff2 +0 -0
- package/fonts/ibm-plex-mono-latin-500-normal.woff2 +0 -0
- package/fonts/ibm-plex-mono-latin-600-normal.woff2 +0 -0
- package/fonts/ibm-plex-sans-LICENSE +93 -0
- package/fonts/ibm-plex-sans-latin-400-normal.woff2 +0 -0
- package/fonts/ibm-plex-sans-latin-500-normal.woff2 +0 -0
- package/fonts/ibm-plex-sans-latin-600-normal.woff2 +0 -0
- package/fonts/ibm-plex.css +71 -0
- package/fonts/inter-LICENSE +93 -0
- package/fonts/inter-cyrillic-ext-wght-normal.woff2 +0 -0
- package/fonts/inter-cyrillic-wght-normal.woff2 +0 -0
- package/fonts/inter-greek-ext-wght-normal.woff2 +0 -0
- package/fonts/inter-greek-wght-normal.woff2 +0 -0
- package/fonts/inter-latin-ext-wght-normal.woff2 +0 -0
- package/fonts/inter-latin-wght-normal.woff2 +0 -0
- package/fonts/inter-vietnamese-wght-normal.woff2 +0 -0
- package/fonts/inter.css +62 -0
- package/fonts/newsreader-LICENSE +93 -0
- package/fonts/newsreader-latin-ext-opsz-normal.woff2 +0 -0
- package/fonts/newsreader-latin-opsz-normal.woff2 +0 -0
- package/fonts/newsreader-vietnamese-opsz-normal.woff2 +0 -0
- package/fonts/newsreader.css +26 -0
- package/fonts/work-sans-LICENSE +93 -0
- package/fonts/work-sans-latin-wght-normal.woff2 +0 -0
- package/fonts/work-sans.css +8 -0
- package/package.json +20 -3
- package/packed-contract.json +1 -0
- package/src/attrs/add-from.js +27 -4
- package/src/attrs/save-freeze.js +7 -52
- package/src/core/admin-attrs.js +119 -12
- package/src/core/admin-contenteditable.js +12 -10
- package/src/core/admin-inputs.js +14 -15
- package/src/core/admin-onclick.js +2 -0
- package/src/core/autosave.js +74 -21
- package/src/core/boot-phase.js +2 -1
- package/src/core/conflict-download.js +19 -23
- package/src/core/conflict-notice-ui.js +1173 -0
- package/src/core/conflict-notice.js +140 -697
- package/src/core/download.js +32 -0
- package/src/core/edit-mode.js +147 -14
- package/src/core/etag.js +30 -12
- package/src/core/host-meta.js +90 -8
- package/src/core/host-permission.js +29 -0
- package/src/core/is-edit-mode.js +145 -12
- package/src/core/mode-key.js +125 -0
- package/src/core/mode-lifecycle.js +544 -0
- package/src/core/mode-receipt.js +30 -0
- package/src/core/mode-refusal.js +13 -0
- package/src/core/mode-resources.js +52 -0
- package/src/core/mode-support.js +82 -0
- package/src/core/mode-switch.js +259 -0
- package/src/core/mode-transition.js +112 -0
- package/src/core/page-data-write.js +305 -0
- package/src/core/page-data.js +26 -227
- package/src/core/page-format-wire.js +4 -0
- package/src/core/page-format.js +58 -0
- package/src/core/persist.js +37 -9
- package/src/core/preserve-authored.js +114 -0
- package/src/core/recovery.js +772 -0
- package/src/core/runtime-url.js +105 -0
- package/src/core/save-core.js +113 -12
- package/src/core/save-replace.js +72 -0
- package/src/core/save-size-notice.js +134 -0
- package/src/core/save-size.js +140 -0
- package/src/core/save.js +806 -119
- package/src/core/snapshot.js +159 -11
- package/src/core/source-map.js +157 -9
- package/src/core/unsaved-warning.js +14 -4
- package/src/core/upgrade-run.js +408 -0
- package/src/core/version.js +18 -0
- package/src/lib/assets.js +30 -0
- package/src/lib/autosave-debug-gate.js +50 -0
- package/src/lib/autosave-scheduler.js +140 -0
- package/src/lib/boot-imports.js +8 -0
- package/src/lib/derived.js +3 -1
- package/src/lib/dirty-gate.js +15 -0
- package/src/lib/doc-storage.js +33 -0
- package/src/lib/effect.js +9 -4
- package/src/lib/mutation.js +4 -2
- package/src/lib/offline-runtime.js +226 -0
- package/src/lib/preload.js +48 -0
- package/src/lib/root-attrs.js +1 -1
- package/src/lib/trash.js +18 -0
- package/src/lib/undo/capture-move.js +152 -0
- package/src/live/local-channel.js +61 -0
- package/src/live/local-lane.js +60 -9
- package/src/live/server-lane.js +6 -3
- package/src/loader-logic.js +76 -15
- package/src/loader.js +218 -30
- package/src/page/adopt-boot.js +76 -22
- package/src/page/adopt.js +25 -4
- package/src/page/awareness.js +230 -0
- package/src/page/blocks.js +113 -6
- package/src/page/blocksel.js +20 -4
- package/src/page/board-face.js +13 -0
- package/src/page/board-panel.js +5 -17
- package/src/page/board-style.js +2 -13
- package/src/page/board-view.js +1 -11
- package/src/page/board-views.js +3 -0
- package/src/page/board.js +2 -2
- package/src/page/boot-pack.js +26 -0
- package/src/page/boot.js +237 -0
- package/src/page/chart-tables.js +11 -0
- package/src/page/chart.js +6 -10
- package/src/page/checklist.js +1 -1
- package/src/page/checkpoint-proof.js +289 -0
- package/src/page/chrome.js +431 -63
- package/src/page/csv-import.js +17 -2
- package/src/page/document-title-dom.js +52 -0
- package/src/page/document-title-runtime.js +90 -0
- package/src/page/document-title.js +12 -0
- package/src/page/drag.js +48 -13
- package/src/page/drop.js +2 -1
- package/src/page/editor.js +399 -90
- package/src/page/emoji-data.js +162 -0
- package/src/page/feature-loader.js +72 -0
- package/src/page/features/board.js +21 -0
- package/src/page/features/chart.js +11 -0
- package/src/page/features/code.js +13 -0
- package/src/page/features/dates.js +180 -0
- package/src/page/features/emoji.js +187 -0
- package/src/page/features/media.js +290 -0
- package/src/page/features/mentions.js +188 -0
- package/src/page/features/registry.js +28 -0
- package/src/page/features/table.js +383 -0
- package/src/page/{tool-view.js → features/tool.js} +33 -2
- package/src/page/format-codec.js +215 -0
- package/src/page/format-command.js +9 -0
- package/src/page/format-gate.js +179 -0
- package/src/page/format-host.js +54 -0
- package/src/page/format-level.js +157 -0
- package/src/page/format-native-commands.js +142 -0
- package/src/page/format-native.js +42 -0
- package/src/page/highlight-slot.js +23 -0
- package/src/page/highlight.js +30 -16
- package/src/page/history-intent.js +78 -0
- package/src/page/inline.js +45 -28
- package/src/page/items.js +67 -14
- package/src/page/link.js +1 -0
- package/src/page/markdown.js +112 -3
- package/src/page/media-views.js +3 -0
- package/src/page/media.js +33 -245
- package/src/page/mention-picker.js +99 -0
- package/src/page/merge.js +1 -1
- package/src/page/outline-cache.js +11 -0
- package/src/page/placeholder.js +27 -7
- package/src/page/projection.js +240 -51
- package/src/page/reader-patch.js +306 -0
- package/src/page/recover.js +1 -1
- package/src/page/rich/page-tool.js +1 -4
- package/src/page/runtime-owner.js +27 -0
- package/src/page/save-projection.js +46 -4
- package/src/page/save-states.js +1 -1
- package/src/page/schema.js +47 -0
- package/src/page/table-rect-key.js +3 -0
- package/src/page/table-select.js +4 -3
- package/src/page/table-style.js +1 -1
- package/src/page/table-views.js +3 -0
- package/src/page/table.js +8 -293
- package/src/page/themes/content.css +25 -1
- package/src/page/themes/light-1.css +163 -2
- package/src/page/themes/light-1.source.css +269 -0
- package/src/page/tool-capability.js +3 -0
- package/src/page/tool-views.js +3 -0
- package/src/page/view-hooks.js +32 -0
- package/src/page/view.js +390 -107
- package/src/page/ybind/awareness.js +172 -0
- package/src/page/ybind/binding.js +40 -5
- package/src/page/ybind/bridge.js +50 -47
- package/src/page/ybind/decode.js +52 -19
- package/src/page/ybind/doc.js +27 -2
- package/src/page/ybind/group.js +12 -3
- package/src/page/ybind/index.js +2 -0
- package/src/page/ybind/lineage.js +71 -0
- package/src/page/ybind/marks.js +26 -1
- package/src/page/ybind/migrate.js +48 -13
- package/src/page/ybind/moves.js +32 -21
- package/src/page/ybind/positions.js +50 -0
- package/src/page/ybind/provider.js +97 -24
- package/src/page/ybind/recovery-proof.js +191 -0
- package/src/page/ybind/recovery-replay.js +488 -0
- package/src/page/ybind/tokens.js +15 -6
- package/src/page/ybind/walk.js +10 -3
- package/src/page/ybind/writer.js +48 -4
- package/src/plugins/ai-edit.js +167 -32
- package/src/plugins/bind-text.js +218 -0
- package/src/plugins/cms.js +93 -0
- package/src/plugins/indicator.js +57 -5
- package/src/plugins/live.js +319 -35
- package/src/plugins/menu/claygoo.svg.js +1 -0
- package/src/plugins/menu/seo-head.js +323 -0
- package/src/plugins/menu/seo.js +849 -0
- package/src/plugins/menu.js +425 -0
- package/src/plugins/page-view.js +131 -0
- package/src/plugins/page.js +1131 -270
- package/src/plugins/people.js +158 -31
- package/src/plugins/richclay.js +119 -9
- package/src/plugins/sortable.js +370 -60
- package/src/plugins/source.js +189 -366
- package/src/plugins/undo.js +289 -19
- package/src/plugins/unsent.js +132 -0
- package/src/plugins/upgrade-run.js +1 -0
- package/src/plugins/upgrade.js +210 -0
- package/src/plugins/upload-task.js +571 -0
- package/src/plugins/upload-ui.js +265 -0
- package/src/plugins/upload.js +34 -153
- package/src/plugins/visitor-drafts/inert.js +32 -0
- package/src/plugins/visitor-drafts/intro.js +2 -1
- package/src/plugins/visitor-drafts/owner-chip.js +3 -0
- package/src/plugins/visitor-drafts/prompt.js +2 -2
- package/src/plugins/visitor-drafts-owner.js +85 -0
- package/src/plugins/visitor-drafts.js +31 -42
- package/src/plugins/wire.js +82 -1
- package/src/reader-core.js +26 -0
- package/src/recovery/conflicts.js +287 -0
- package/src/recovery/identity.js +154 -0
- package/src/recovery/store.js +792 -0
- package/src/recovery/undo.js +257 -0
- package/src/server/checkpoint/index.js +68 -4
- package/src/server/offline-runtime/index.js +214 -0
- package/src/server/rooms/index.js +2 -1
- package/src/server/rooms/live-data-rooms.js +2 -2
- package/src/server/rooms/page-admission.js +33 -0
- package/src/server/rooms/page-lineage.js +56 -0
- package/src/server/rooms/page-rebase.js +11 -5
- package/src/server/rooms/page-state.js +2 -0
- package/src/server/rooms/page-write-admission.js +9 -3
- package/src/source/session.js +705 -0
- package/src/sync/conflict-revert.js +5 -4
- package/src/sync/conflicts-edit.js +119 -0
- package/src/sync/conflicts-facade.js +49 -0
- package/src/sync/conflicts.js +99 -1
- package/src/sync/editing-marker.js +37 -6
- package/src/sync/editing-sender.js +8 -1
- package/src/sync/live-sync-edit.js +63 -0
- package/src/sync/live-sync.js +364 -119
- package/src/sync/local-presence.js +187 -0
- package/src/sync/merge-declarations.js +10 -0
- package/src/sync/merge-engine.js +12 -0
- package/src/sync/presence-store.js +412 -0
- package/src/sync/presence-target.js +243 -0
- package/src/sync/presence.js +72 -41
- package/src/sync/saved-handoff.js +200 -0
- package/src/sync/saved-stream.js +544 -0
- package/src/sync/version-guard.js +92 -0
- package/src/sync/wire-profile.js +81 -0
- package/src/ui/bevel-controls.js +2 -8
- package/src/ui/page-scheme.js +7 -0
- package/src/ui/skins/cms.js +1 -1
- package/src/ui/theme-config.js +150 -0
- package/src/ui/theme.js +6 -138
- package/src/ui/toast-lazy.js +11 -0
- package/src/vendor/LICENSES-optional.md +253 -0
- package/src/vendor/highlight.vendor.js +3 -0
- package/src/vendor/hljs-bash.vendor.js +2 -0
- package/src/vendor/hljs-css.vendor.js +2 -0
- package/src/vendor/hljs-javascript.vendor.js +2 -0
- package/src/vendor/hljs-json.vendor.js +2 -0
- package/src/vendor/hljs-python.vendor.js +2 -0
- package/src/vendor/hljs-xml.vendor.js +2 -0
- package/src/vendor/hyper-html-api-data.vendor.js +1 -1
- package/src/vendor/hyper-html-api-upgrade.vendor.js +5 -0
- package/src/vendor/hyper-morph-identity.vendor.js +2 -0
- package/src/vendor/hyper-morph-json.vendor.js +3 -0
- package/src/vendor/hyper-morph.vendor.js +6 -6
- package/src/vendor/hyper-undo.vendor.js +1 -1
- package/src/vendor/hypercms.vendor.js +169 -84
- package/src/vendor/marked.vendor.js +68 -0
- package/src/vendor/overtype.vendor.js +994 -0
- package/src/vendor/richclay.vendor.js +17 -17
- package/src/vendor/sap-core.vendor.js +5 -5
- package/src/vendor/sap-ownership.vendor.js +11 -7
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as ue,b as me}from"./c-R7IWVINQ.js";import{i as pe,k as U,t as A}from"./c-4DFEJ2PO.js";import{D as ae,E as K,M as fe,Q as le,f as se,h as ce,s as ie,z as de}from"./c-6CRUUXOX.js";import{$ as H,B as Q,M as G,N as q,P as X,_ as Z,a as L,ca as z,da as ee,e as N,ha as S,ia as D,ja as te,ka as v,la as k,m as E,ma as oe,na as V,oa as ne,pa as re,ra as I,w as W,x as P,y as J}from"./c-WWXIDH4O.js";var ge="page-adopt",R=(o,e)=>k(o)===k(e),C=({id:o,parent:e,...t})=>({...t,parent:e??null});function qe(o,e,t=v(o)){let s=t,r=new Map(s.map(n=>[n.id,n])),i=new Map(e.map(n=>[n.id,n])),a=new Map,d=new Map;for(let n of e){let h=r.get(n.id);h?R(C(h),C(n))||a.set(n.id,n):d.set(n.id,n)}let f=s.filter(n=>!i.has(n.id)).map(n=>n.id),m=e.filter(n=>r.has(n.id)).map(n=>n.id),u=s.filter(n=>i.has(n.id)).map(n=>n.id),y=m.some((n,h)=>n!==u[h]);return!a.size&&!d.size&&!f.length&&!y?null:{edited:a,created:d,deleted:f,order:e.map(n=>n.id),reordered:y,base:r}}function B(o,e,t,s=r=>r){let r=o.map(d=>({id:d.id,pos:e?.[d.id]?.pos??null})),i=X(r,t),a={};return o.forEach((d,f)=>{a[d.id]=s({...d,pos:i[f]?i[f].pos:r[f].pos})}),a}function Y(o,e){let{id:t,t:s,...r}=o,i={t:s,pos:e?.pos??null};if(Object.assign(i,r),s==="table"&&!r.rows.length&&r.cols.length&&(r.rows=[{id:`r-${t}`,cells:{}}]),s==="table"&&(i.cols=B(r.cols,e?.cols,"c",({id:a,...d})=>d),i.rows=B(r.rows,e?.rows,"r",({id:a,cells:d,pos:f})=>({pos:f,cells:d}))),s==="board"){i.columns=B(r.columns,e?.columns,"c",({id:f,...m})=>m);let a={},d=new Map;for(let f of r.cards)(d.get(f.col)??d.set(f.col,[]).get(f.col)).push(f);for(let f of d.values())Object.assign(a,B(f,e?.cards,"k",({id:m,...u})=>u));i.cards=a}return i}var we=(o,e,t)=>{let{t:s,pos:r,c:i,m:a,...d}=t,f=typeof i=="string"&&i?Q(o,i,S(a,i.length),o.nodes.opaque_block):null;return o.nodes.opaque_block.create({id:e,pos:r,raw:{t:s,...d}},f)},be=o=>Object.fromEntries(Object.entries(o).map(([e,t])=>{if(t.t!=="opaque_block")return[e,t];let{t:s,raw:r,...i}=t,{t:a,...d}=r??{};return[e,{t:a??"paragraph",pos:t.pos,...d,...i}]}));function M(o,e){let t=null;return o.forEach((s,r)=>{!t&&s.attrs.id===e&&(t={node:s,pos:r})}),t}function ke(o,e){let t=o.filter(d=>e.has(d)),s=[],r=[],i=new Array(t.length).fill(-1);t.forEach((d,f)=>{let m=e.get(d),u=0,y=s.length;for(;u<y;){let n=u+y>>1;s[n]<m?u=n+1:y=n}u>0&&(i[f]=r[u-1]),s[u]=m,r[u]=f});let a=new Set;for(let d=r[s.length-1]??-1;d>=0;d=i[d])a.add(t[d]);return a}function Oe(o,e,t){let{node:s,pos:r}=M(o.doc,e),i={...t.attrs,id:s.attrs.id,pos:s.attrs.pos};if(s.isTextblock&&t.isTextblock&&t.type.validContent(s.content)){(s.type!==t.type||!R(s.attrs,i))&&o.setNodeMarkup(r,t.type,i);let a=M(o.doc,e).node,d=a.content.findDiffStart(t.content);if(d==null)return;let{a:f,b:m}=a.content.findDiffEnd(t.content),u=d-Math.min(f,m);u>0&&(f+=u,m+=u),o.replace(r+1+d,r+1+f,new L.Slice(t.content.cut(d,m),0,0));return}o.replaceWith(r,r+s.nodeSize,t.type.create(i,t.content,t.marks))}function ze(o,e){if(!e)return null;let t=o.schema,s=o.doc,r=be(G(s)),i=o.tr,a=new Map(v(r).map(c=>[c.id,c])),d={};for(let c of[...e.edited.keys(),...e.deleted]){let l=e.base.get(c),p=a.get(c);l&&p&&!R(C(l),C(p))&&(d[c]=r[c])}let f=(c,l)=>{let p=Y(l,r[c]);return Object.hasOwn(z,l.t)?q(t,c,p):we(t,c,p)},m=e.base.size?[]:Object.keys(r).filter(c=>r[c].t==="paragraph"&&!r[c].c&&!e.order.includes(c));for(let c of e.deleted){let l=M(i.doc,c);l&&i.delete(l.pos,l.pos+l.node.nodeSize)}let u=[];i.doc.forEach(c=>u.push(c.attrs.id));let y=new Set(e.order),n=e.order.filter(c=>!e.deleted.includes(c));e.reordered?u.forEach((c,l)=>{if(y.has(c))return;let p=u.slice(0,l).reverse().find(w=>n.includes(w));n.splice(p?n.indexOf(p)+1:0,0,c)}):(n=u.slice(),e.order.forEach((c,l)=>{if(!e.created.has(c)||n.includes(c))return;let p=l-1;for(;p>=0&&!n.includes(e.order[p]);)p--;n.splice(p>=0?n.indexOf(e.order[p])+1:0,0,c)}));let h=new Map(u.map((c,l)=>[c,l]));n=n.filter(c=>h.has(c)||e.edited.has(c)||e.created.has(c));let _=ke(n,h),O=new Map;for(let c of u.slice().reverse()){if(_.has(c)||!n.includes(c))continue;let l=M(i.doc,c);O.set(c,l.node),i.delete(l.pos,l.pos+l.node.nodeSize)}let j=0;for(let c of n){if(_.has(c)){let w=M(i.doc,c);j=w.pos+w.node.nodeSize;continue}let l=e.edited.get(c)||e.created.get(c),p=l?f(c,l):O.get(c);i.insert(j,p),j+=p.nodeSize}for(let[c,l]of[...e.edited,...e.created])_.has(c)&&Oe(i,c,f(c,l));for(let c of m){let l=M(i.doc,c);l&&i.doc.childCount>1&&i.delete(l.pos,l.pos+l.node.nodeSize)}return i.docChanged?N.closeHistory(i).setMeta(ge,{displaced:d}):null}function Ae(o,e,t=""){let s=v(o),r=new Map(s.map(d=>[d.id,d])),i=d=>typeof o[d]?.artifact?.fallbackHtml=="string"?o[d].artifact.fallbackHtml:"",a=e.createElement("article");return a.innerHTML=re(s,{fallbackOf:i,clean:ne(e)}),I(a,{seed:t,known:r})}function De(o,e){let t=o.getAttribute("data-rev"),s=me(e),r=v(s),i=new Map(r.map(y=>[y.id,y])),a=t??"",d=I(o,{seed:a,known:i}),f=V(d);if(t&&f===t)return{kind:"untouched"};let m=V(r);if(t&&m!==t)return{kind:"unbased",A:f,R:t,T:m};if(!t){let y=new Set(d.map(n=>n.id));if(!r.every(n=>y.has(n.id)))return{kind:"unbased",A:f,R:t,T:m}}let u=Ae(s,o.ownerDocument,a);return{kind:"adopt",base:s,parsed:d,baseItems:u,A:f}}var F=class extends Error{constructor(e){super(e),this.name="YMigrationError",this.code="invalid-source"}},g=o=>{throw new F(o)},x=o=>o!==null&&typeof o=="object"&&!Array.isArray(o),$=o=>JSON.parse(k(o));function Me(o){(!Array.isArray(o)||!o.length)&&g("Expected at least one hybrid page value");for(let e of o){(!x(e)||!x(e.blocks)||Object.keys(e).some(t=>t!=="blocks"&&t!=="deleted"))&&g("Expected a hybrid page value with blocks and optional deleted ids"),e.deleted!=null&&!x(e.deleted)&&g("Invalid hybrid page tombstones");for(let[t,s]of Object.entries(e.blocks))!e.deleted?.[t]&&(!t||t==="__proto__"||!x(s))&&g(`Invalid hybrid page block: ${t}`),!e.deleted?.[t]&&/^~|~\d+$/.test(t)&&g(`Reserved hybrid page block id: ${t}`)}return te(o)}var $e=(o,e)=>{let t;try{t=P(E,o)}catch{return g(`Invalid mark key on block: ${e}`)}return W([...t].sort((s,r)=>s.type.rank-r.type.rank))},he=(o,e)=>{let t=S(o.m,o.c.length);t||g(`Invalid mark runs on block: ${e}`);for(let s=0;s<t.length;s++){let r=t[s];typeof r!="string"&&g(`Invalid mark key on block: ${e}`),r.startsWith("@")&&(r!==H||o.c[s]!==Z)&&g(`Unsupported inline atom on block: ${e}`),o.t==="code_block"&&r&&g(`Unsupported formatting in code block: ${e}`),r.startsWith("@")||(t[s]=$e(r,e))}return t};function je(o,e,t){let s={t:e.t,pos:t};for(let r of Object.keys(e))r==="t"||r==="pos"||r==="c"||r==="m"||(s[r]=$(e[r]));if(e.c!=null&&typeof e.c!="string"&&g(`Invalid text on block: ${o}`),s.c=e.c??"",typeof e.c=="string"&&e.m!=null){let r=he(e,o);r.some(Boolean)&&(s.m=D(r))}else e.m!=null&&g(`Mark runs require flat text on block: ${o}`);return s}function Ee(o,e,t){let s=Object.hasOwn(z,e.t);!s&&(typeof e.t!="string"||!e.t||e.t==="opaque_block")&&g(`Unsupported hybrid block type: ${e.t}`);let r=String(t+1).padStart(8,"0");if(!s)return je(o,e,r);let i=E.nodes[e.t],a=ae(i),d=new Set(["t","pos","c","m",...a,...e.t==="table"?["rows"]:[]]),f={t:e.t,pos:r};for(let n of Object.keys(e))d.has(n)||(f[n]=$(e[n]));for(let n of a){let h=e[n]===void 0?K(i,n):e[n];k(h)!==k(K(i,n))&&(f[n]=$(h))}if(e.t==="table"&&(e.rows!==void 0&&!x(e.rows)&&g(`Invalid table rows: ${o}`),f.rows=$(e.rows??{})),!i.isTextblock)return e.c!=null&&e.c!==""&&!(Array.isArray(e.c)&&!e.c.length)&&g(`Unexpected text on block: ${o}`),e.m!=null&&!(Array.isArray(e.m)&&!e.m.length)&&g(`Unexpected marks on block: ${o}`),f;e.c!=null&&typeof e.c!="string"&&!Array.isArray(e.c)&&g(`Invalid text on block: ${o}`),typeof e.c=="string"&&e.m!=null?he(e,o):e.m!=null&&g(`Mark runs require flat text on block: ${o}`);let m=q(E,o,e);m.check();let{c:u,m:y}=J(m.content);return f.c=u,y.some(Boolean)&&(f.m=D(y)),f}function Se(o,e){let t;try{let s=Me(o),r=ee(s),i=Object.fromEntries(r.map((n,h)=>[n,Ee(n,s[n],h)]));t=new se,t.clientID=e;let a=fe(t),d=0;t.transact(()=>{for(let n of r){let h=i[n],{pos:_,c:O,m:j,...c}=h;if(h.t==="board"&&(delete c.columns,delete c.cards),a.attrs.set(n,new ie(Object.entries($(c)))),h.t==="board"){for(let[p,w]of Object.entries(h.columns??{})){a.boardFields.set(A(n,"column",p,"alive"),!0);for(let b of["name","pos"])a.boardFields.set(A(n,"column",p,b),w[b]??"")}for(let[p,w]of Object.entries(h.cards??{})){a.boardFields.set(A(n,"card",p,"alive"),!0);for(let b of["title","owner","due"])w[b]!==void 0&&a.boardFields.set(A(n,"card",p,b),w[b]);a.boardFields.set(A(n,"card",p,"placement"),{columnId:w.col??"",pos:w.pos??""})}}if(a.flow.insertEmbed(a.flow.length,{b:n},{}),!O)continue;let l=0;for(let[p,w]of D(S(j,O.length)??Array(O.length).fill(""))){if(w===H)for(let b=0;b<p;b++)a.flow.insertEmbed(a.flow.length,{br:1},{});else{let b=Object.fromEntries(Object.entries(le(P(E,w))).map(([ye,T])=>[`${ye}~${e}-m${(d++).toString(36)}`,T&&typeof T=="object"?$(T):T]));a.flow.insert(a.flow.length,O.slice(l,l+p),b)}l+=p}}},de);let f=pe(ce(t)),m=Math.ceil(f.length/U),y={v:1,g:0,y:m<=1?{seed:f}:Object.fromEntries(Array.from({length:m},(n,h)=>[`seed.${h}.${m}`,f.slice(h*U,(h+1)*U)]))};return k(ue(y))!==k(i)&&g("Hybrid page data cannot be represented without loss"),y}catch(s){throw s instanceof F?s:new F(`Cannot migrate hybrid page: ${s.message}`)}finally{t?.destroy()}}function ve(o){let e=parseInt(oe(`page-seed:v1:${k(o)}`).slice(0,8),16)>>>0;return e<2?e+2:e}function Je(o){let e=I(o,{seed:o.getAttribute("data-rev")??""}),t={};return e.forEach((s,r)=>{let i=Y(s,null);i.pos=String(r+1).padStart(8,"0"),t[s.id]=i}),Se([{blocks:t}],ve(t))}export{ge as a,qe as b,ze as c,Ae as d,De as e,Je as f};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as Ge,b as oe,d as he,e as ce,f as We}from"./c-7OLLJPWP.js";import{a as $e,b as je,c as ae,d as ze}from"./c-LZJPNR2W.js";import{a as C,b as W}from"./c-FILLTJA7.js";import{b as Ue}from"./c-5VYOWDTI.js";import{b as se,c as re,d as E,f as le,h as Oe}from"./c-QJ4OM3G6.js";import{a as A}from"./c-ZWIOJGMT.js";import{a as Ne}from"./c-TQEMVJCS.js";import{a as te,b as Me,c as P,d as ne,e as ie,h as Be}from"./c-DCXOXBF3.js";import{e as Pe}from"./c-VRZN56XY.js";import{d as Ae}from"./c-IJUK2GPW.js";import{e as G,i as Q}from"./c-OW5QIGG3.js";import{a as De}from"./c-BPF2NSPV.js";import{b as k,j as ee,n as F,r as Fe,s as z,t as qe,v as q}from"./c-SPIORRYS.js";import{a as He,b as Ce,c as Re,e as $,g as j,h as Z}from"./c-VG5XIN4T.js";import{m as ke,n as xe}from"./c-HA6INT6J.js";import{a as Ie,b as be,l as Te,m as Le}from"./c-DCFSEJZG.js";function Ye(s){let e=new WeakMap,t=0,n=r=>e.get(r)||null,i=r=>{let a=e.get(r);return a||(a=`${s}:${++t}`,e.set(r,a)),a};return{idOf:n,ensure:i,adopt:(r,a)=>{r&&typeof a=="string"&&a&&e.set(r,a)},exportMap:(r,a)=>{let l={},h=[],c=[],d=(f,y)=>{let m=a(f);m&&(l[y]=i(m));let w=f.children;h.push(w.length),c.push(f.tagName.toLowerCase());for(let p=0;p<w.length;p++)d(w[p],y===""?String(p):`${y}.${p}`)};return d(r,""),l["~"]=h.join(","),l["^"]=c.join(","),l}}}function at(s){return e=>{for(let t of s){let n=t(e);if(typeof n=="string"&&n!=="")return n}return null}}var Et=at([s=>s.getAttribute("data-id"),s=>s.getAttribute("id")]);var ot={"merge-tokens":"tokens","merge-max":"max"};function Je(s,e){if(!e.startsWith("data-")||e==="data-id"||!s?.closest)return null;for(let[t,n]of Object.entries(ot)){let i=s.closest(`[${t}]`);if(i&&i.getAttribute(t).split(/\s+/).includes(e))return n}return null}var _=null,Ve=null,M=new Map;function Y(){return Ve??=Promise.all([import("./c-3XIRD4NU.js"),import("./c-EJTGYSLN.js")]).then(([s,e])=>{_={...s,beginLineageCapture:e.beginLineageCapture};for(let t of[...M.keys()])M.set(t,s.registerContext(t));return _}),Ve}var Xe=()=>_,x={get size(){return _?_.conflicts.size:0},list(){return _?_.conflicts.list():[]},get(s){return _?_.conflicts.get(s):null},acknowledge(s,e={}){if(_)return _.conflicts.acknowledge(s,e);if(!Array.isArray(s))throw new TypeError("clay.conflicts.acknowledge needs an array of ids");return{removedIds:[],remainingIds:[]}},claim(s,e={}){if(_)return _.conflicts.claim(s,e);if(!e.owner)throw new TypeError("clay.conflicts.claim needs an owner");return{release(){}}},registerContext(s){if(_)return _.conflicts.registerContext(s);if(typeof s!="function")throw new TypeError("clay.conflicts.registerContext needs a resolver function");return M.set(s,null),()=>{let e=M.get(s);M.delete(s),e&&e()}},contextFor(s,e){return _?_.conflicts.contextFor(s,e):null},recoveryOf(s){return _?_.conflicts.recoveryOf(s):null},hasPendingApply(){return _?_.conflicts.hasPendingApply():!1}};var u=null,de=null;function R(){return de??=new Promise(s=>setTimeout(s,0)).then(()=>import("./c-CJ3A7ZKE.js")).then(s=>u=s).catch(s=>{throw de=null,s}),de}var _e=null,ue=null;function ct(){return ue??=import("./c-SMBZG5X4.js").then(s=>_e=s.presence).catch(s=>{throw ue=null,s}),ue}var Ze=Q().phase==="entering";G&&!Ze&&R().catch(()=>{});G&&Y().catch(()=>{});var D=null,fe=null,V=[];function et(s){D.presence.update(s),D.editingMarker.update(s)}function dt(){return fe??=Promise.all([import("./c-HFKUVACH.js"),import("./c-EVCQ3BKA.js")]).then(([s,e])=>{D={presence:s.presence,editingMarker:e.editingMarker};let t=V;V=[];for(let n of t)et(n);return D}).catch(s=>{throw fe=null,s}),fe}function ut(s){if(D){et(s);return}V.push(s),dt().catch(()=>{})}var Ke=Object.freeze({bytes:null,etag:null,seq:null}),ft=()=>({msg:"Not in edit mode",msgType:"skipped",code:null,etag:null}),tt=["[editor-ui]",'[clay~="editor-ui"]',"[save-ignore]","[snapshot-remove]","[no-snapshot]","[no-save]","[save-remove]","[freeze] *","[save-freeze] *",'[clay~="no-save"]','[clay~="no-snapshot"]','[clay~="freeze"] *',Te,Ie].join(","),nt='[clay~="freeze"], [freeze], [save-freeze]';function J(s){for(let e of s.querySelectorAll(nt))e.replaceChildren();return j()&&Re(s),s}function Qe(s){if(s==null)return s;let e=typeof s=="string"?new DOMParser().parseFromString(s,"text/html"):s;return ee(e),J(e),e}var pt=[Le,'[clay~="no-watch"]',"[no-watch]","[mutations-ignore]"].join(","),_t=(s,e,t)=>ke(s,e,t)||be.test(e.toLowerCase()),it=s=>s.getAttribute("data-id")||s.getAttribute("id")||null;function gt(s){let e=new Map,t=i=>{if(i.matches(tt))return;let r=it(i);r&&e.set(r,(e.get(r)||0)+1);let a=i.localName==="template"&&i.content?i.content.children:i.children;for(let l of a)t(l)},n=s.nodeType===9?[s.documentElement]:s.nodeType===11?s.children:[s];for(let i of n)i&&i.nodeType===1&&t(i);return e}var yt=s=>e=>{let t=it(e);if(!t)return null;let n=e.getRootNode(),i=s.get(n);return i||s.set(n,i=gt(n)),i.get(t)===1?t:null},pe=s=>!!s&&typeof s=="object"&&!Array.isArray(s);function mt(s){return typeof s!="string"||s===""?null:new DOMParser().parseFromString(s,"text/html").documentElement?.getAttribute("documentetag")||null}function vt(s,e){e!=="live"||!s||!u||(u.enableContentEditable(s),u.enableOnClick(s),u.enableAdminInputs(s),u.enableAdminResources(s))}function St(){let{forComparison:s,forDirty:e}=Fe({flushUndo:!1});return[s,e]}var ge=class{constructor(){this.sse=null,this.currentFile=null,this.lastHtml=null,this._diskBase=null,this._diskBaseTicket=0,this._agreeSeq=0,this._saveTicket=0,this._peerBaseTicket=0,this._acceptedSaveTicket=0,this._morphTicket=0,this.clientId=this.generateClientId(),this.resumeId=null,this._savedSnapshot=null,this._sendInFlight=!1,this._queuedSend=null,this._profile=null,this._profilePromise=null,this._sharedData=!1,this._sharedSync=!1,this._liveData=!1,this._editing=null,this._presenceLease=null,this._ready=null,this._startGen=0,this.isPaused=!1,this.isDestroyed=!1,this.debug=!1,this._lane=G?"live":"saved",this._laneChosen=!1,this._snapshotHandler=null,this.lastSeenSeq=0,this._pendingHtml=null,this._pendingSeq=null,this._pendingIdentityMap=null,this._pendingEtag=null,this._pendingBy=null,this._morphInFlight=!1,this._rafHandle=null,this._represented=Ke,this._handoff=null,this._handoffHeld=!1,this._pendingExternal=null,this._lastExternalSeq=0,this._saveEpoch=0,this._saveSavedHandler=null,this._saveConflictHandler=null,this._settledHandler=null,this._lastIdentityMap=null,this._applyGen=0,this._holdRetryPeer=null,this._holdRetryExt=null,this._servedFetchId=0,this._startupRetry=null,this._engineRetry=null,this._heldLive=!1,this._heldExt=!1,this.identity=Ye(this.clientId),this.onConnect=null,this.onDisconnect=null,this.onUpdate=null,this.onError=null,this.onNotification=null}get unresolvedConflicts(){return x.list().filter(e=>e.kind!=="apply-incomplete")}_log(e,t=null){if(!this.debug)return;let n=`[LiveSync ${new Date().toISOString()}]`;t!==null?console.log(n,e,t):console.log(n,e)}generateClientId(){return Math.random().toString(36).slice(2,11)+Date.now().toString(36)}generateResumeId(){try{let e=new Uint8Array(16);return(globalThis.crypto||window.crypto).getRandomValues(e),Array.from(e,t=>t.toString(16).padStart(2,"0")).join("")}catch{return Math.random().toString(36).slice(2)+Date.now().toString(36)}}_seedBases(){if(E())return;let e=F({flushUndo:!1});this._setPeerBase(q(e),this.identity.exportMap(e,k),this._ticket()),this._setDiskBase(z({emitForSync:!1}).forSave,this._ticket())}get lane(){return this._lane}set lane(e){this._lane=e,this._laneChosen=!0}start(e=null,{lane:t,represented:n}={}){if(this.isDestroyed=!1,(this.sse||this._snapshotHandler)&&this.cleanup(),this.currentFile=e||this.detectCurrentFile(),!this.currentFile){console.warn("[LiveSync] No file detected");return}let i=Q().mode==="edit"?"live":"saved",r=this.lane==="live";this._lane=t||(this._laneChosen?this._lane:i),this.lastHtml=null,this._lastIdentityMap=null,this._peerBaseTicket=this._ticket(),this._diskBase=null,this._diskBaseTicket=this._ticket(),this._saveTicket=0,this._savedSnapshot=null,this._applyGen++,this.lastSeenSeq=0,this._lastExternalSeq=0,this._represented=n?Object.freeze({bytes:n.bytes??null,etag:n.etag??null,seq:n.seq??null}):Ke,this._acquireEmptySaved=r&&this.lane==="saved"&&this._represented.bytes===null,this._pendingExternal=null,this.resumeId=this.generateResumeId(),this.lane==="live"&&this._seedBases(),this.lane==="live"&&Y().catch(()=>{}),console.log(`[LiveSync] Starting for: ${this.currentFile} (lane=${this.lane})`);let a=++this._startGen;if(this.lane==="live"&&!(u&&u.baselineSettled())){let l=this._applyGen,h=this._morphTicket,c=this._saveEpoch,d=this.lastHtml,f=this._diskBaseTicket,y=this._diskBase!==null;this._settledHandler=()=>{if(this._settledHandler=null,!(this.isDestroyed||this._startGen!==a)&&!Ae()&&!E()&&this._saveTicket===0&&this._morphTicket===h){if(d!==null&&this._applyGen===l&&this._saveEpoch===c&&this.lastHtml===d){let m=F({flushUndo:!1});this._setPeerBase(q(m),this.identity.exportMap(m,k),this._ticket())}y&&this._diskBaseTicket===f&&this._setDiskBase(z({emitForSync:!1}).forSave,this._ticket())}},document.addEventListener("clay:baseline-settled",this._settledHandler,{once:!0})}this._ready=Promise.all([this.lane==="live"?R():null,this._resolveProfile()]).then(()=>{this.isDestroyed||this._startGen!==a||this.connect()}),this.lane==="live"&&(this.listenForSnapshots(),ct().then(l=>this._startPresence(l,a),()=>{}),this._saveSavedHandler=()=>{this._saveEpoch++;let l=this._saveTicket||this._ticket();this._saveTicket=0,l>this._acceptedSaveTicket&&(this._acceptedSaveTicket=l);let h=u?u.getLastSavedBytes():null;h!=null&&this._setDiskBase(h,l),this._relayCommit()},document.addEventListener("clay:save-saved",this._saveSavedHandler),this._saveConflictHandler=l=>{let h=l.detail&&l.detail.etag;h&&queueMicrotask(()=>{this.isDestroyed||h===te()&&(u?.conflictResolvedBySync(h),this._saveAfterMerge(E(),!1))})},document.addEventListener("clay:save-conflict",this._saveConflictHandler))}cleanup(){this.sse&&(this.sse.close(),this.sse=null),ae(),V=[],D&&(D.presence.clear(),D.editingMarker.clear()),this._editing&&(this._editing.stop(),this._editing=null),this._presenceLease&&(this._presenceLease.detach(),this._presenceLease=null),this._lastRoster=null,this._snapshotHandler&&(document.removeEventListener("clay:snapshot-ready",this._snapshotHandler),this._snapshotHandler=null),this._saveSavedHandler&&(document.removeEventListener("clay:save-saved",this._saveSavedHandler),this._saveSavedHandler=null),this._saveConflictHandler&&(document.removeEventListener("clay:save-conflict",this._saveConflictHandler),this._saveConflictHandler=null),this._settledHandler&&(document.removeEventListener("clay:baseline-settled",this._settledHandler),this._settledHandler=null),this._queuedSend=null,this._rafHandle!=null&&(this._cancelFrame(this._rafHandle),this._rafHandle=null),this._pendingHtml=null,this._pendingSeq=null,this._pendingIdentityMap=null,this._pendingBy=null,this._pendingExternal=null,this._handoff=null,this._handoffHeld=!1,clearTimeout(this._holdRetryPeer),clearTimeout(this._holdRetryExt),this._holdRetryPeer=null,this._holdRetryExt=null,clearTimeout(this._startupRetry),this._startupRetry=null,clearTimeout(this._engineRetry),this._engineRetry=null,this._servedFetchId++}detectCurrentFile(){let e=window.location.pathname;if(e==="/")return"index.html";e=e.replace(/^\//,"");let t=e.match(/^(.*?\.html(?:clay)?)/);return t?t[1]:e}_resolveProfile(){return this._profilePromise||(this._profilePromise=We().then(e=>(this._sharedData=e.sharedData,this._sharedSync=e.sharedSync,this._liveData=e.liveData,this._profile=e.profile,this._log(`Wire profile: ${e.profile.name}`),e.profile))),this._profilePromise}_setHeld(e,t,n){let i=e==="live"?"_heldLive":"_heldExt";this[i]!==t&&(this[i]=t,!t&&!this._heldLive&&!this._heldExt&&Be({fresh:!0,clearIfMissing:!1}),document.dispatchEvent(new CustomEvent(t?"clay:sync-held":"clay:sync-resumed",{detail:{lane:e,el:n||null}})))}_applyEtagFrame(e){return typeof e.etag!="string"||typeof e.html=="string"?!1:(this._log("Dropping a stamp that arrived with no document: nothing proves this tab holds those bytes"),!0)}connect(){if(this.isDestroyed)return;let t=(this._profile||ce.legacy).streamPath(window.location.href,this.lane,this.resumeId,this.clientId);this.sse=new Ge(new URL(t,window.location.origin).href,{shared:this._sharedSync,sharedData:this._sharedData,documentURL:window.location.href,lane:this.lane,clientId:this.clientId,keepAliveWhenHidden:this._liveData&&this.lane==="live",startupCheck:!!De}),this._acquireEmptySaved&&(this._acquireEmptySaved=!1,this._fetchServedDocument(void 0,{repair:!0})),this.sse.onopen=()=>{console.log("[LiveSync] Connected"),this._editing&&this._editing.reconnected(),_e&&_e.reconnect(),this.onConnect&&this.onConnect()},this.sse.addEventListener("open",()=>je({clientId:this.clientId,lane:this.lane})),this.sse.addEventListener("error",()=>ae());for(let n of $e)this.sse.addEventListener(n,i=>{let r;try{r=JSON.parse(i.data)}catch{return}ze(n,r)});this.sse.addEventListener("cursor",n=>{let i;try{i=JSON.parse(n.data)}catch{return}if(!i||i.resync!==!0&&i.startup!==!0)return;let r=i.resync===!0,a=i.startup===!0&&!r;console.log(r?"[LiveSync] Server could not replay everything; refetching the document":"[LiveSync] Checking the served document against the version this tab was served"),this._fetchServedDocument(typeof i.seq=="number"?i.seq:void 0,{repair:r,startup:a})}),this.sse.addEventListener("presence",n=>{let i;try{i=JSON.parse(n.data)}catch{return}ut(i),this._lastRoster=i,this._editing&&this._editing.roster(i)}),this.sse.onmessage=n=>{let i=JSON.parse(n.data),{seq:r}=i;if(typeof r=="number"&&r<=this.lastSeenSeq){this._log(`Dropping stale message: seq=${r}, lastSeen=${this.lastSeenSeq}`);return}if(typeof r=="number"&&(this.lastSeenSeq=r),i.type==="notification"){if(this._maybeAcceptExternalChange(i))return;this.handleNotification(i);return}if(i.error){console.error("[LiveSync] Server error:",i.error),this.onError&&this.onError(new Error(i.error));return}if(this._applyEtagFrame(i))return;let{html:a,sender:l,identityMap:h}=i;if(l===this.clientId){this._log("Ignoring own message (sender matches clientId)");return}if(typeof a!="string"){console.error("[LiveSync] Received invalid html, ignoring");return}let c=typeof i.etag=="string"&&i.etag?i.etag:null;if(this.lane==="live"&&!c&&Me()){this._log(`Dropping an unstamped live frame on a stamping host (seq=${r})`);return}if(this.lane==="saved"&&a===this._represented.bytes){this._represented=Object.freeze({bytes:a,etag:c||null,seq:r??null}),P(c);return}if(c&&a===this.lastHtml){this._log(`Taking the stamp from a peer save of content already applied (seq=${r})`),P(c),u&&u.isSaveConflicted()&&(u.conflictResolvedBySync(c),this._saveAfterMerge(E(),!1));return}this._log(`Received update from: ${l} (my clientId: ${this.clientId}, seq=${r})`),this.applyUpdate(a,r,h,c,i.by),this.onUpdate&&this.onUpdate({html:a,sender:l,seq:r,identityMap:h,etag:c})},this.sse.onerror=()=>{this.sse.readyState===EventSource.CONNECTING?console.log("[LiveSync] Reconnecting..."):this.sse.readyState===EventSource.CLOSED&&(console.log("[LiveSync] Connection closed"),this.onError&&this.onError(new Error("Connection closed"))),this.onDisconnect&&this.onDisconnect()}}listenForSnapshots(){this._snapshotHandler=e=>{if(!e.detail||e.detail.forSave!==!0)return;this._saveTicket=this._ticket();let{documentElement:t}=e.detail;if(!t)return;this._log("snapshot-ready received, preparing to send");let n=q(t),i=this.identity.exportMap(t,k);this._savedSnapshot={html:n,identityMap:i,ticket:this._saveTicket}},document.addEventListener("clay:snapshot-ready",this._snapshotHandler)}_enqueueSend(e,t,n=null){if(!this._profile){this._queuedSend={html:e,identityMap:t,etag:n},this._resolveProfile().then(()=>this._flushQueuedSend());return}if(this._sendInFlight){this._queuedSend={html:e,identityMap:t,etag:n};return}this._postUpdate(e,t,n)}_flushQueuedSend(){if(this.isDestroyed||this._sendInFlight)return;let e=this._queuedSend;e&&(this._queuedSend=null,this._postUpdate(e.html,e.identityMap,e.etag))}_relayCommit(){if(this.isDestroyed)return;let e=te(),t=this._savedSnapshot;if(this._savedSnapshot=null,!t||typeof t.html!="string")return;let n=!e&&t.html===this.lastHtml;if(this._setPeerBase(t.html,t.identityMap,t.ticket),n){this._log("Skipping send - HTML unchanged");return}this._enqueueSend(t.html,t.identityMap,e||null)}_postUpdate(e,t,n=null,i=0){this._log(`Sending update (HTML length: ${e.length})`),this._sendInFlight=!0;let r=!1,a=this._profile||ce.legacy;fetch(new URL(a.relayPath,window.location.origin).href,{method:"POST",headers:{"Content-Type":"application/json",[a.documentHeader]:window.location.href,[Ne]:String(1)},body:JSON.stringify({[a.snapshotKey]:e,sender:this.clientId,identityMap:t,...n?{etag:n}:{}})}).then(l=>{l.ok||(console.warn("[LiveSync] Save returned status:",l.status),r=l.status>=500||l.status===408||l.status===429)}).catch(l=>{console.error("[LiveSync] Save failed:",l),this.onError&&this.onError(l),r=!0}).finally(()=>{this._sendInFlight=!1;let l=this._queuedSend;if(this._queuedSend=null,l){this._postUpdate(l.html,l.identityMap,l.etag);return}!r||!n||i>=3||this.isDestroyed||(this._sendInFlight=!0,setTimeout(()=>{if(this._sendInFlight=!1,this.isDestroyed)return;let h=this._queuedSend;this._queuedSend=null,h?this._postUpdate(h.html,h.identityMap,h.etag):this._postUpdate(e,t,n,i+1)},500*2**i))})}_startPresence(e,t){return this.isDestroyed||this._startGen!==t||this._presenceLease?null:e.connect({send:n=>this._postPresence(n)}).then(n=>this.isDestroyed||this._startGen!==t?(n?.detach(),null):(this._presenceLease=n||null,Pe("presence-editing")),()=>!1).then(n=>{if(!(!n||this.isDestroyed||this._startGen!==t||this._editing))return R().then(i=>{this.isDestroyed||this._startGen!==t||this._editing||(this._editing=new i.EditingSender({}),this._editing.start(),this._editing.roster(this._lastRoster))})})}_postPresence(e){let t=new URL("/_/presence",window.location.origin);return t.searchParams.set("client-id",this.clientId),fetch(t.href,{method:"POST",headers:{"Content-Type":"application/json","Document-URL":window.location.href},body:JSON.stringify(e)}).then(n=>n.ok,()=>!1)}_maybeAcceptExternalChange(e){if(this.lane!=="live")return!1;let t=e.data;return t&&t.kind==="external-change"?(typeof t.html=="string"?this._enqueueExternal(t.html,e.seq,t.etag,t.by):this._fetchExternalChange(e.seq),!0):typeof e.msg=="string"&&e.msg.endsWith("changed on disk outside this tab")?(this._fetchExternalChange(e.seq),!0):!1}_enqueueExternal(e,t,n,i){if(typeof t=="number"){if(t<=this._lastExternalSeq){this._log(`Dropping replayed external change: seq=${t}`);return}this._lastExternalSeq=t}this._pendingExternal={html:e,seq:t,saveEpoch:this._saveEpoch,etag:typeof n=="string"&&n?n:null,by:i??null},this._scheduleNextFrame()}_fetchExternalChange(e){if(typeof e=="number"){if(e<=this._lastExternalSeq)return;this._lastExternalSeq=e}this._fetchServedDocument(e)}_fetchServedDocument(e,{attempt:t=0,repair:n=!1,startup:i=!1}={}){if(i&&(this._morphInFlight||this._pendingHtml!=null||this._pendingExternal!=null)){this._retryStartup(t);return}let r=this._saveEpoch,a=this._startGen,l=this.lastSeenSeq,h=this._applyGen,c=++this._servedFetchId;n&&typeof e!="number"&&(e=this._lastExternalSeq),fetch(new URL(window.location.href),{cache:"no-store"}).then(d=>d.ok?d.text():null).then(d=>{if(this.isDestroyed||d==null||this._startGen!==a)return;let f=mt(d),y=i||n&&!!f;if(y){if(c!==this._servedFetchId){n&&this._retryStartup(t+1,{repair:n,startup:i},typeof e=="number"?Math.max(e,this._lastExternalSeq):e);return}if(r!==this._saveEpoch||l!==this.lastSeenSeq||h!==this._applyGen||this._morphInFlight||this._pendingHtml!=null||this._pendingExternal!=null){this._retryStartup(t+1,{repair:n,startup:i},e);return}if(f){if(f===ne()){(n||i)&&this.lane==="saved"&&(this._represented=Object.freeze({bytes:d,etag:f,seq:e??null}));return}}else if(!n)return}else if(typeof e=="number"&&e<this._lastExternalSeq){n&&t<3&&this._fetchServedDocument(this._lastExternalSeq,{attempt:t+1,repair:n,startup:i});return}else if(this._saveEpoch>r){t<3&&(console.log("[LiveSync] Refetching external change: own save landed mid-fetch"),this._fetchServedDocument(e,{attempt:t+1,repair:n,startup:i}));return}this._pendingExternal={html:d,seq:e,saveEpoch:r,etag:f,by:null,fetchOptions:{repair:n,startup:i,attempt:t,versionCheck:y},startGen:a,seenSeq:l,applyGen:h,fetchId:c},this._scheduleNextFrame()}).catch(d=>{this._log("External-change fetch failed",d),typeof e=="number"&&this._lastExternalSeq===e&&(this._lastExternalSeq=e-1)})}_retryStartup(e=0,t={startup:!0},n){this.isDestroyed||e>3||(clearTimeout(this._startupRetry),this._startupRetry=setTimeout(()=>{if(this._startupRetry=null,!this.isDestroyed){if(this._morphInFlight||this._pendingHtml!=null||this._pendingExternal!=null){this._retryStartup(e,t,n);return}this._fetchServedDocument(n,{...t,attempt:e})}},16))}applyUpdate(e,t,n,i,r){this.isDestroyed||(this._pendingHtml=e,this._pendingSeq=t,this._pendingIdentityMap=n,this._pendingEtag=i??null,this._pendingBy=r??null,this._scheduleNextFrame())}prepareHandoff(e={}){return this._handoff?Promise.resolve(this._handoff):this.isDestroyed?Promise.reject(new Error("LiveSync: stopped")):(this._handoffHeld=!0,this._rafHandle!=null&&(this._cancelFrame(this._rafHandle),this._rafHandle=null),import("./c-GSFIGKOP.js").then(({engineHandoff:t})=>t(this,e)).then(t=>this._handoff=t))}_scheduleNextFrame(){this.isDestroyed||this._handoffHeld||this._rafHandle==null&&(this._morphInFlight||(this._rafHandle=this._requestFrame(()=>this._runPending())))}async _runPending(){if(this._rafHandle=null,this.isDestroyed)return;if(!C()){this._morphInFlight=!0;try{await W()}catch(r){this._log("Merge engine failed to load",r),this._engineRetry=setTimeout(()=>this._scheduleNextFrame(),2e3);return}finally{this._morphInFlight=!1}if(this.isDestroyed)return}let e=this._pendingExternal,t=e?.fetchOptions||null,n=!!(t?.startup||t?.versionCheck),i=!1;if(e!=null&&(n&&this._pendingHtml!=null?i=!1:this._pendingHtml==null?i=!0:i=!(typeof e.seq=="number"&&typeof this._pendingSeq=="number"&&this._pendingSeq<e.seq)),i)if(this._pendingExternal=null,typeof e.seq=="number"&&e.seq<this._lastExternalSeq)n&&t?.repair?this._retryStartup((t.attempt||0)+1,t,this._lastExternalSeq):this._log("Dropping superseded external change at drain");else if(n&&e.startGen!==this._startGen)this._log("Dropping superseded startup check at drain");else if(n&&e.fetchId!==this._servedFetchId)t?.repair?this._retryStartup((t.attempt||0)+1,t,this._lastExternalSeq):this._log("Dropping superseded startup check at drain");else if(n&&(e.saveEpoch!==this._saveEpoch||e.seenSeq!==this.lastSeenSeq||e.applyGen!==this._applyGen))this._retryStartup((t.attempt||0)+1,t,e.seq);else if(n&&e.etag!=null&&e.etag===ne())this._log("Startup check found the same version: nothing to apply");else if(!n&&e.saveEpoch!==this._saveEpoch)console.log("[LiveSync] Refetching external change: own save landed after queue"),this._fetchServedDocument(e.seq,t||{});else{this._morphInFlight=!0;try{await this._doApplyExternal(e.html,e.seq,e.etag,e.by,t)}catch(r){console.error("[LiveSync] applyExternal failed:",r)}finally{this._morphInFlight=!1}}else{let r=this._pendingHtml,a=this._pendingSeq,l=this._pendingIdentityMap,h=this._pendingEtag,c=this._pendingBy;if(this._pendingHtml=null,this._pendingSeq=null,this._pendingIdentityMap=null,this._pendingEtag=null,this._pendingBy=null,r==null)return;this._morphInFlight=!0;try{await this._doApplyUpdate(r,a,l,h,c)}catch(d){console.error("[LiveSync] applyUpdate failed:",d)}finally{this._morphInFlight=!1}}!this.isDestroyed&&(this._pendingHtml!=null||this._pendingExternal!=null)&&this._scheduleNextFrame()}_ticket(){return++this._agreeSeq}_setDiskBase(e,t){t<=this._diskBaseTicket||(this._diskBase=e,this._diskBaseTicket=t)}_setPeerBase(e,t,n){return n<this._peerBaseTicket?!1:(this._peerBaseTicket=n,this.lastHtml=e,this._lastIdentityMap=t&&typeof t=="object"&&!Array.isArray(t)?t:null,!0)}_requestFrame(e){return typeof window<"u"&&typeof window.requestAnimationFrame=="function"?window.requestAnimationFrame(e):setTimeout(e,16)}_cancelFrame(e){if(typeof window<"u"&&typeof window.cancelAnimationFrame=="function"){window.cancelAnimationFrame(e);return}clearTimeout(e)}async _mergeIncoming(e,t,{base:n,baseIdentityMap:i=null,captureLocal:r,synthetic:a,source:l="peer",seq:h=null,etag:c=null,extra:d={}}){C()||await W();let{beginApply:f,completeApply:y,failApply:m,beginLineageCapture:w}=Xe()||await Y(),p,v=o=>{p=w(x.list());try{let g=C().HyperMorph.mergeDocument({...o,lineage:p.lineage});return p.returned(),g}catch(g){throw p.invalidate(x.list()),p.finish(x.list()),g}},b=this.identity,st=xe,T=yt(new WeakMap),B=o=>pe(o)?{first:T,map:o,then:T}:T,N=a?o=>T(o)||b.idOf(k(o)||o)||null:T,I=e,me=new Map;if(pe(t)){I=new DOMParser().parseFromString(e,"text/html"),ee(I);let o=C().HyperMorph.importMap(I.documentElement,t);for(let g of I.querySelectorAll("[data-id], [id]")){let S=T(g),we=S&&o.get(g);we&&me.set(S,we)}}I=Qe(I);let X={live:document,remote:I,ignore:o=>o.matches(tt),opaque:o=>o.matches(nt)||j()&&Ce(o),remoteWins:o=>o.matches(pt),ignoreAttribute:(o,g,S)=>_t(o,g,S)||j()&&He(S||o,g),attributeMerge:Je,protectFocusedValue:!0,keepLiveOnly:l==="peer",scripts:{mergeTags:C().mergeTagRecognizers},hooks:{beforeAttributeUpdated:st},...d},ve=this.lane==="live"&&E(),Se=le(),O,K=null,L=null;if(n==null)O=v({...X,base:null,local:{root:J(r()),toLive:k},identity:{local:N,remote:B(t)}});else if(ve){let o=r(),g=o.cloneNode(!0);K=J(o),L=f({source:l,seq:h,etag:c,root:K,recoveryRoot:g,domain:l==="disk"?"save":"sync"});try{O=v({...X,base:Qe(n),local:{root:K,toLive:k},identity:{base:B(i),local:N,remote:B(t)}})}catch(S){throw m(L,S),S}}else{let o=J(r()),g=o.ownerDocument;g.documentElement!==o&&g.replaceChild(o,g.documentElement),O=v({...X,base:g,local:{root:o,toLive:k},fastPath:!0,identity:{base:N,local:N,remote:B(t)}})}let U=this._ticket();this._morphTicket=U;let H;try{H=await O}catch(o){p.invalidate(x.list());try{L&&m(L,o,{ticket:U})}finally{p.finish(x.list())}throw o}let rt=le().gen!==Se.gen,Ee;try{p.prepareComplete(H,x.list()),Ee=L?y(L,H.conflicts,{ticket:U}):[]}finally{p.finish(x.list())}ve&&!H.localDiverged&&Oe(Se);let lt=new Set(pe(t)?Object.values(t):[]);for(let[o,g]of H.identities){let S=lt.has(g)?g:me.get(g);S&&b.adopt(o,S)}return{report:H,ticket:U,typedDuringWait:rt,conflictIds:Ee}}_saveAfterMerge(e,t){(e||t)&&Ue()&&(u?u.savePageThrottled():ft())}async _doApplyUpdate(e,t,n,i,r=null){if(oe(e)){await he();return}this.lane==="live"&&!u&&await R(),this._log("applyUpdate - pausing mutations and morphing"),this.isPaused=!0;let a=window.scrollX,l=window.scrollY;A.pause(),se();let h=!1,c=!1,d=!1;try{if(this.lane==="live"&&E()&&this.lastHtml===null){console.log("[LiveSync] Holding incoming update: unsaved local edits and no baseline to merge against"),this._setHeld("live",!0,null);let p=this._saveEpoch,v=this.lastSeenSeq;clearTimeout(this._holdRetryPeer),this._holdRetryPeer=setTimeout(()=>{this._holdRetryPeer=null,!(this.isDestroyed||this._pendingHtml!=null)&&this._saveEpoch===p&&this.lastSeenSeq===v&&(this._pendingHtml=e,this._pendingSeq=t,this._pendingIdentityMap=n,this._pendingBy=r,this._scheduleNextFrame())},3e3);return}this._setHeld("live",!1);let{report:f,ticket:y,typedDuringWait:m,conflictIds:w}=await this._mergeIncoming(e,n,{base:this.lastHtml,baseIdentityMap:this._lastIdentityMap,captureLocal:()=>F({flushUndo:!1}),synthetic:!0,source:"peer",seq:t,etag:i});if(h=f.localDiverged,c=m,Z(),window.scrollTo(a,l),this._setPeerBase(e,n,y),this._applyGen++,this._acceptedSaveTicket>y||(typeof i=="string"&&i?(P(i),d=!0):ie()),this.lane==="live"&&!h&&!E()){let{forSave:p,forComparison:v,forDirty:b}=z({emitForSync:!1,flushUndo:!1});u.setLastSavedBaselines(v,b),this._setDiskBase(p,this._ticket())}this.lane==="saved"&&(this._represented=Object.freeze({bytes:e,etag:i||null,seq:t??null})),document.dispatchEvent(new CustomEvent("clay:sync-applied",{detail:{seq:t,source:this.lane==="saved"?"disk":"peer",lane:this.lane,by:r||null,html:e,report:f,unresolved:this.unresolvedConflicts,conflictIds:w}}))}finally{this._log("applyUpdate - morph complete, resuming mutations"),A.resume(),re(),await new Promise(f=>setTimeout(f,0)),this.isPaused=!1}d&&u?.conflictResolvedBySync(i),this._saveAfterMerge(h,c)}async _doApplyExternal(e,t,n=null,i=null,r=null){if(oe(e)){await he();return}this.lane==="live"&&!u&&await R();let a=this._diskBase;this._log(`applyExternal - external disk change (seq=${t})`),this.isPaused=!0;let l=window.scrollX,h=window.scrollY;A.pause(),se();let c=!1,d=!1,f=!1;try{if(this.lane==="live"&&E()&&this._diskBase===null){if(console.log("[LiveSync] Holding external change: unsaved local edits and no baseline to merge against"),this._setHeld("external",!0,null),r?.startup||r?.versionCheck){clearTimeout(this._holdRetryExt),this._holdRetryExt=setTimeout(()=>{if(this._holdRetryExt=null,this.isDestroyed)return;let b=typeof t=="number"?Math.max(t,this._lastExternalSeq):t;this._retryStartup(0,r,b)},3e3);return}let v=this._saveEpoch;clearTimeout(this._holdRetryExt),this._holdRetryExt=setTimeout(()=>{this._holdRetryExt=null,!(this.isDestroyed||this._pendingExternal!=null)&&(this._pendingExternal={html:e,seq:t,saveEpoch:v,etag:n,by:i},this._scheduleNextFrame())},3e3);return}this._setHeld("external",!1);let{report:y,ticket:m,typedDuringWait:w,conflictIds:p}=await this._mergeIncoming(e,null,{base:this._diskBase,captureLocal:()=>qe().saveClone,synthetic:!1,source:"disk",seq:t,etag:n,extra:{beforeApply:v=>vt(v.documentElement,this.lane)}});if(c=y.localDiverged,d=w,Z(),this._setDiskBase(e,m),window.scrollTo(l,h),this._acceptedSaveTicket>m||(typeof n=="string"&&n?(P(n),f=!0):ie()),this.lane==="live"&&!c&&!E()){u.setLastSavedBaselines(...St()),u.setUnsavedChanges(!1);let v=F({flushUndo:!1});this._setPeerBase(q(v),this.identity.exportMap(v,k),m),this._applyGen++}this.lane==="saved"&&(this._represented=Object.freeze({bytes:e,etag:n||null,seq:t??null})),document.dispatchEvent(new CustomEvent("clay:sync-applied",{detail:{seq:t,source:"disk",etag:typeof n=="string"&&n?n:null,by:i||null,html:e,report:y,conflictIds:p,unresolved:this.unresolvedConflicts}}))}finally{this._log("applyExternal - morph complete, resuming mutations"),A.resume(),re(),await new Promise(y=>setTimeout(y,0)),this.isPaused=!1}f&&u?.conflictResolvedBySync(n),this._saveAfterMerge(c,d),a!=null&&$(a)===$(e)&&u&&u.schedulePaintHeal(()=>this._diskBase==null?null:$(this._diskBase))}handleNotification({msgType:e,msg:t,action:n,persistent:i,data:r}){this._log(`Notification received: ${e} - ${t}`),e==="data-loss"||(i&&window.toastPersistent?window.toastPersistent(t,e):window.toast?window.toast(t,e):console.log(`[LiveSync] Notification: ${t}`)),document.dispatchEvent(new CustomEvent("clay:notification",{detail:{msgType:e,msg:t,action:n,persistent:i,data:r}})),this.onNotification&&this.onNotification({msgType:e,msg:t,action:n,persistent:i,data:r})}stop(){this.cleanup(),this.isDestroyed=!0,console.log("[LiveSync] Stopped")}editParticipant(){return R().then(e=>e.syncParticipant(this))}},ye=new ge;typeof window<"u"&&!Ze&&(document.readyState==="loading"?document.addEventListener("DOMContentLoaded",()=>ye.start()):ye.start());var Yt=(s,e,t)=>W().then(({morph:n})=>n(s,e,t));var Jt=ye;export{x as a,tt as b,pt as c,ge as d,ye as e,Yt as f,Jt as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{d as b,e as m}from"./c-PGRCK73F.js";import"./c-R7IWVINQ.js";import"./c-IW6GGOU2.js";import"./c-HAWFNBYG.js";import{e as d,f as h,g as l,h as w}from"./c-4DFEJ2PO.js";import"./c-6CRUUXOX.js";import"./c-WWXIDH4O.js";import"./c-TCCA5BZN.js";import"./c-5V3MOVJT.js";import"./c-6NC5I2TV.js";import"./c-XCNTK76U.js";import"./c-ZWIOJGMT.js";import"./c-IJUK2GPW.js";import{c as T}from"./c-BPF2NSPV.js";import{e as v}from"./c-SPIORRYS.js";import"./c-XQXZAO7N.js";import"./c-S7LK4KUE.js";import"./c-VG5XIN4T.js";import"./c-2YYDMLNZ.js";import"./c-HA6INT6J.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";v(b);var A=1,y=class extends Error{constructor(a,o){super(o),this.name="PageCheckpointError",this.code=a}},k=(e,a)=>{throw new y(e,a)},t=(e,a)=>({ok:!1,code:e,message:a}),P=/^[0-9a-f]{64}$/,j=/^[0-9a-f]{32}$/,E=e=>!!e&&typeof e=="object"&&!Array.isArray(e);function H(e){return{v:e.v,g:e.g,y:{...e.y??{}}}}function I(e){let a;try{a=JSON.parse(e)}catch{k("invalid-state","The page state is not JSON")}return(!E(a)||a.v!==1)&&k("invalid-state","Expected a version 1 Yjs page value"),{state:H(a),bytes:h(a)}}var S=e=>e==null?"":String(e);async function N({href:e,etag:a,fetch:o=globalThis.fetch,signal:s=null}={}){if(typeof a!="string"||!a)return t("missing-etag","A conditional read needs the accepted ETag");if(typeof e!="string"||!e)return t("no-page-state","This host names no page-state resource");if(typeof o!="function")return t("unavailable","This tab cannot read the page state");let i=globalThis.location?.href??"http://localhost/",u;try{u=new URL(e,i).href}catch{return t("no-page-state","The page-state resource is not a URL")}let c=T(),n;try{n=await o(u,{method:"GET",credentials:c?"omit":"same-origin",headers:{"If-Match":a,"Document-URL":globalThis.location?.href??i},cache:"no-store",redirect:"manual",signal:s})}catch{return t("unavailable","The page-state request did not complete")}if(!n||typeof n.status!="number")return t("unavailable","The page-state request did not answer");if(n.status===412)return t("etag-mismatch","Another version of this document is stored");if(n.status===428)return t("etag-required","The host needs a condition this read cannot send");if(n.status===404)return t("no-page-state","This host keeps no page state");if(!n.ok)return t("unavailable",`The host answered ${n.status}`);let r;try{r=JSON.parse(await n.text())}catch{return t("invalid-state","The page-state answer is not JSON")}return!E(r)||r.version!==A?t("unsupported-version","Unknown page-state version"):typeof r.tag!="string"||!r.tag?t("invalid-state","The page-state answer carries no page tag"):typeof r.stateHash!="string"||!P.test(r.stateHash)?t("invalid-state","The page-state answer carries no state digest"):typeof r.generation!="string"||!j.test(r.generation)?t("invalid-state","The page-state answer carries no generation"):typeof r.etag!="string"||!r.etag?t("invalid-state","The page-state answer carries no ETag"):Object.hasOwn(r,"documentId")?{ok:!0,version:r.version,documentId:r.documentId,generation:r.generation,etag:r.etag,stateHash:r.stateHash,tag:r.tag}:t("invalid-state","The page-state answer carries no document identity")}async function _(e,{accepted:a,article:o,etag:s}={}){if(!e||e.ok!==!0)return t(e?.code??"unavailable",e?.message??"The page state was not read");if(S(e.documentId)!==S(a?.authority?.documentId))return t("foreign-document","The page state belongs to another document");if(typeof a?.lineage?.generation!="string"||e.generation!==a.lineage.generation)return t("foreign-generation","The page state belongs to another generation");if(e.etag!==s)return t("etag-mismatch","The page state belongs to another version of this document");let i,u;try{({state:u,bytes:i}=I(e.tag))}catch(n){return t(n?.code??"invalid-state",n?.message??"The page state does not decode")}if(await d(i)!==e.stateHash)return t("state-digest-mismatch","The page state is not the one the host hashed");if(typeof o!="string")return t("missing-article","A proof names the final outgoing article");let c;try{c=m(u)}catch(n){return t("invalid-state",n?.message??"The page state does not project")}return c!==o?t("article-mismatch","The page state does not project to the accepted article"):{ok:!0,state:u,receipt:{file:e.etag,pageState:e.stateHash}}}async function O(e,a){let o=(a||[]).map(({id:s,revision:i})=>({id:s,revision:i}));try{return{ok:!0,proof:e,covered:await w(e,o)}}catch(s){return t(s?.code??"invalid-proof",s?.message??"The proof does not validate")}}async function R({capture:e,records:a=[],accepted:o,article:s,state:i=null,etag:u=null}={}){if(!i)return t("no-capture-state","No page state was pinned to this capture");if(typeof u!="string"||!u)return t("missing-etag","An accepted save with no ETag proves no stored pair");if(typeof s!="string")return t("missing-article","The accepted bytes hold no article");let c,n;try{c=m(i),n=h(i)}catch(p){return t(p?.code??"invalid-state",p?.message??"The pinned page state does not decode")}if(c!==s)return t("article-mismatch","The pinned page state does not project to the accepted article");let r;try{r=await l({capture:e,records:a,accepted:o,article:s,state:i,receipt:{file:u,pageState:await d(n)}})}catch(p){return t(p?.code??"invalid-proof",p?.message??"The proof could not be built")}return O(r,a)}async function B({read:e,capture:a,records:o=[],accepted:s,article:i,etag:u=null}={}){let c=await _(e,{accepted:s,article:i,etag:u});if(!c.ok)return c;let n;try{n=await l({capture:a,records:o,accepted:s,article:i,state:c.state,receipt:c.receipt})}catch(r){return t(r?.code??"invalid-proof",r?.message??"The proof could not be built")}return O(n,o)}async function G({channel:e,records:a=[],capture:o,accepted:s,article:i,state:u=null,etag:c=null,href:n=null,read:r=N,fetch:p}={}){if(!e||typeof e.checkpoint!="function")return{ok:!1,code:"no-channel",retired:[],proof:null};let f=await R({capture:o,records:a,accepted:s,article:i,state:u,etag:c});if(!f.ok){let x=await r({href:n,etag:c,fetch:p});f=await B({read:x,capture:o,records:a,accepted:s,article:i,etag:c})}if(!f.ok)return{ok:!1,code:f.code,retired:[],proof:null};let g=await e.checkpoint({records:f.covered,proof:f.proof});return!g||g.ok!==!0?{ok:!1,code:g?.code??"checkpoint-failed",retired:[],proof:f.proof}:{ok:!0,retired:g.retired??[],proof:f.proof}}export{A as PAGE_STATE_VERSION,y as PageCheckpointError,R as captureProof,G as checkpointAccepted,N as readPageState,B as refetchedProof,_ as verifyPageState};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as K}from"./c-BWFVSBDF.js";import{d as A}from"./c-VRZN56XY.js";var p=1,P=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 f(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)||!f(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(!f(t))return null;return{kind:"blocks",ids:[...e.ids]}}return e.kind==="cell"?!d(e,J)||!f(e.block)||!f(e.row)||!f(e.col)?null:{kind:"cell",block:e.block,row:e.row,col:e.col}:null}function w(e){return T(JSON.stringify(e))<=P}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(!f(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"?K.test(e)?a(e):o("path"):g(e)?e.kind==="record"?ee(e):e.kind==="page"?te(e):o("kind"):o("shape")}function O(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 R(e){return e==null?"":typeof e=="string"?`path:${e}`:`target:${JSON.stringify(e)}`}function z(e,t=null){let n=Array.isArray(e)?e:[],s=[];for(let i of n){if(!g(i))continue;let r=f(i.id)?i.id:null;if(!r)continue;let l=Number.isSafeInteger(i.n)&&i.n>=0?i.n:0,h=t&&t.get(r);if(h&&l<h.n){s.push(h);continue}let u=y(i.editing===void 0?null:i.editing);s.push({id:r,you:i.you===!0,n:l,editing:u.ok?u.target:null})}return s}function I(e){if(!g(e))return null;let t=f(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}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,l=s===!0;return i===this.supported&&r===this.recordAwareness&&l===this.pageAwareness?this.snapshot:(this.supported=i,this.recordAwareness=r,this.pageAwareness=l,this.emit())}receive(t){let n=t&&typeof t=="object"?t:{},s=Array.isArray(n.people)?n.people:[],i=this.sessions,r=new Map,l=[];for(let c of s){if(!c||typeof c.id!="string"||!c.id)continue;let D=typeof c.name=="string"&&c.name.trim()?c.name.trim():"Someone",k=z(c.sessions,i);for(let b of k)r.set(b.id,b);let x={id:c.id,name:D,you:c.you===!0,editing:O(c.editing),sessions:k};typeof c.canEdit=="boolean"&&(x.canEdit=c.canEdit),l.push(x)}this.people=l,this.sessions=r;let h=n.anonymous;this.anonymous=typeof h=="number"&&Number.isFinite(h)&&h>0?Math.floor(h):0;let u=I(n.selfSession),M=!this.session||!this.session.token;u&&(this.session=u);let j=this.emit();return u&&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=R(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(){n.owner===s&&(n.owner=null,n.session=null,n.n=0,n.sentKey=null,n.cancel(),n.target=null,n.heldKey="",n.explicit=!1,n.clear())}};return this.owner=s,this.session=null,this.n=0,this.sentKey=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-Q622NS2Y.js").then(({localPresence:l})=>l({scope:r,store:this}).start()??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,s.v===p&&(this.n=n);let i=r=>{if(this.inflight=!1,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))}},C=new S,le=C;typeof window<"u"&&(window.clay=window.clay||{},window.clay.presence||(window.clay.presence=C));export{p as a,E as b,ie as c,y as d,S as e,C as f,le as g};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c}from"./c-ZUCOKOHT.js";import"./c-OIBUTDXI.js";import"./c-4JZDZFF6.js";import"./c-VAK7SG37.js";import"./c-NUHP2XDB.js";import"./c-VHNSBD2M.js";export{c as default,b as dismissPersistent,a as toastPersistent};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{c as a}from"./c-4Q2XTQ2N.js";import"./c-LRPUO2MX.js";import"./c-VHNSBD2M.js";export{a as createToolHost};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
function h(a,p,m=!0){let u=m?0:Date.now(),o=null,r=[];function f(c,s,n){let l;try{l=a.apply(c,s)}catch(t){for(let e of n)e.reject(t);return}Promise.resolve(l).then(t=>{for(let e of n)e.resolve(t)},t=>{for(let e of n)e.reject(t)})}return function(...c){let s=this,n=Date.now(),l=p-(n-u);return new Promise((t,e)=>{if(l<=0){clearTimeout(o),o=null,u=n;let i=r.concat({resolve:t,reject:e});r=[],f(s,c,i)}else r.push({resolve:t,reject:e}),o||(o=setTimeout(()=>{u=Date.now(),o=null;let i=r;r=[],f(s,c,i)},l))})}}var w=h;export{w as a};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./c-VHNSBD2M.js";var l=(e,n)=>Object.assign(new Error(`clayjs: ${e}`),{code:n}),u=(e,n)=>!e||n.seq===null||e.seq===null||n.seq>e.seq?n:e;function a({stream:e,apply:n,retire:f,yieldArticle:i=()=>!1,reclaimArticle:s=()=>!1}){let t=null,r=!1;e.adopt({onSnapshot:o=>(t=u(t,o),!0)});let d=()=>{let o=t;return t=null,o};return{get represented(){return e.represented},get held(){return t??e.represented},yieldArticle(){return r||!i()?!1:(r=!0,!0)},reclaimArticle(){return!r||!s()?!1:(r=!1,!0)},reconcile(){let o=d();return o&&!n(o)?Promise.reject(l("the switch could not apply the saved file","load-failed")):Promise.resolve()},resume(){e.adopt({onSnapshot:n});let o=d();o&&n(o)},commit(){if(!r){let o=d();if(o&&!n(o))return!1}return e.represented.bytes===null?!1:(e.stop(),f())}}}async function c({stream:e,options:n,apply:f,retire:i,yieldArticle:s=()=>!1,reclaimArticle:t=()=>!1}){if(e)return a({stream:e,apply:f,retire:i,yieldArticle:s,reclaimArticle:t});let r=await import("./sync/live-sync-J7VMYTKS.js").then(({liveSync:d})=>d.prepareHandoff(n));return{get represented(){return r.represented},get held(){return r.held},yieldArticle:s,reclaimArticle:t,reconcile:()=>r.reconcile(),resume:()=>r.resume(),commit:()=>r.commit()&&i()}}async function p(e,{signal:n,deadline:f=15e3}={}){let i=Date.now()+f;for(;e._morphInFlight;){if(n?.aborted)throw e._handoffHeld=!1,l("the switch was cancelled","aborted");if(Date.now()>=i)throw e._handoffHeld=!1,l("the apply did not settle","timeout");await new Promise(t=>setTimeout(t,1))}let s=()=>e._pendingHtml!=null||e._pendingExternal!=null;return{get represented(){return e._represented},get held(){let t=e._represented;return e._pendingHtml!=null&&(t=u(t,{bytes:e._pendingHtml,etag:e._pendingEtag??null,seq:e._pendingSeq??null})),e._pendingExternal&&(t=u(t,{bytes:e._pendingExternal.html,etag:e._pendingExternal.etag??null,seq:e._pendingExternal.seq??null})),t},async reconcile(){if(!(!e._handoff||e.isDestroyed)){for(let t=0;t<8;t++){if(e._morphInFlight){await new Promise(r=>setTimeout(r,1));continue}if(!s())return;await e._runPending()}if(s())throw l("the held frame could not be applied","load-failed")}},resume(){e._handoff&&(e._handoff=null,e._handoffHeld=!1,e._scheduleNextFrame())},commit(){return e._represented.bytes?(e._handoff=null,e._handoffHeld=!1,e.stop(),!0):!1}}}export{p as engineHandoff,c as readerHandoff};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as f,b as u}from"./c-7SWMYKAI.js";import{b as l}from"./c-UGHH4MB3.js";import{a as s}from"./c-ZWIOJGMT.js";var c=(t=[])=>i=>{let e=(i.getAttribute("clay")??"").split(/\s+/).filter(Boolean),n=["no-dirty",...t].filter(r=>!e.includes(r));n.length&&i.setAttribute("clay",[...e,...n].join(" "))},p=c();function S(t,i){return y(t,i)}function b(t,i,e,n=[]){return y(t,i,e,n)}function y(t,i,e,n=[]){let r=typeof i=="string",a=r?{name:t,legacyId:e}:{href:f(t)},d=e===void 0?[]:document.querySelectorAll(`style[id="${e}"]:not([data-name])`);s.pause();try{l(a);for(let o of d)o.dataset.name=t;if(r){let o=u(t,i,c(n));return e!==void 0&&(o.id=e),o}return u(t,o=>{p(o),o.getAttribute("href")!==t&&o.setAttribute("href",t)})}finally{s.resume()}}export{S as a,b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"./c-VHNSBD2M.js";var s=i=>({IMPORTANT:{scope:"meta",begin:"!important"},BLOCK_COMMENT:i.C_BLOCK_COMMENT_MODE,HEXCOLOR:{scope:"number",begin:/#(([0-9a-fA-F]{3,4})|(([0-9a-fA-F]{2}){3,4}))\b/},FUNCTION_DISPATCH:{className:"built_in",begin:/[\w-]+(?=\()/},ATTRIBUTE_SELECTOR_MODE:{scope:"selector-attr",begin:/\[/,end:/\]/,illegal:"$",contains:[i.APOS_STRING_MODE,i.QUOTE_STRING_MODE]},CSS_NUMBER_MODE:{scope:"number",begin:i.NUMBER_RE+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",relevance:0},CSS_VARIABLE:{className:"attr",begin:/--[A-Za-z_][A-Za-z0-9_-]*/}}),d=["a","abbr","address","article","aside","audio","b","blockquote","body","button","canvas","caption","cite","code","dd","del","details","dfn","div","dl","dt","em","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","html","i","iframe","img","input","ins","kbd","label","legend","li","main","mark","menu","nav","object","ol","p","q","quote","samp","section","span","strong","summary","sup","table","tbody","td","textarea","tfoot","th","thead","time","tr","ul","var","video"],c=["any-hover","any-pointer","aspect-ratio","color","color-gamut","color-index","device-aspect-ratio","device-height","device-width","display-mode","forced-colors","grid","height","hover","inverted-colors","monochrome","orientation","overflow-block","overflow-inline","pointer","prefers-color-scheme","prefers-contrast","prefers-reduced-motion","prefers-reduced-transparency","resolution","scan","scripting","update","width","min-width","max-width","min-height","max-height"],b=["active","any-link","blank","checked","current","default","defined","dir","disabled","drop","empty","enabled","first","first-child","first-of-type","fullscreen","future","focus","focus-visible","focus-within","has","host","host-context","hover","indeterminate","in-range","invalid","is","lang","last-child","last-of-type","left","link","local-link","not","nth-child","nth-col","nth-last-child","nth-last-col","nth-last-of-type","nth-of-type","only-child","only-of-type","optional","out-of-range","past","placeholder-shown","read-only","read-write","required","right","root","scope","target","target-within","user-invalid","valid","visited","where"],g=["after","backdrop","before","cue","cue-region","first-letter","first-line","grammar-error","marker","part","placeholder","selection","slotted","spelling-error"],m=["align-content","align-items","align-self","all","animation","animation-delay","animation-direction","animation-duration","animation-fill-mode","animation-iteration-count","animation-name","animation-play-state","animation-timing-function","backface-visibility","background","background-attachment","background-blend-mode","background-clip","background-color","background-image","background-origin","background-position","background-repeat","background-size","block-size","border","border-block","border-block-color","border-block-end","border-block-end-color","border-block-end-style","border-block-end-width","border-block-start","border-block-start-color","border-block-start-style","border-block-start-width","border-block-style","border-block-width","border-bottom","border-bottom-color","border-bottom-left-radius","border-bottom-right-radius","border-bottom-style","border-bottom-width","border-collapse","border-color","border-image","border-image-outset","border-image-repeat","border-image-slice","border-image-source","border-image-width","border-inline","border-inline-color","border-inline-end","border-inline-end-color","border-inline-end-style","border-inline-end-width","border-inline-start","border-inline-start-color","border-inline-start-style","border-inline-start-width","border-inline-style","border-inline-width","border-left","border-left-color","border-left-style","border-left-width","border-radius","border-right","border-right-color","border-right-style","border-right-width","border-spacing","border-style","border-top","border-top-color","border-top-left-radius","border-top-right-radius","border-top-style","border-top-width","border-width","bottom","box-decoration-break","box-shadow","box-sizing","break-after","break-before","break-inside","caption-side","caret-color","clear","clip","clip-path","clip-rule","color","column-count","column-fill","column-gap","column-rule","column-rule-color","column-rule-style","column-rule-width","column-span","column-width","columns","contain","content","content-visibility","counter-increment","counter-reset","cue","cue-after","cue-before","cursor","direction","display","empty-cells","filter","flex","flex-basis","flex-direction","flex-flow","flex-grow","flex-shrink","flex-wrap","float","flow","font","font-display","font-family","font-feature-settings","font-kerning","font-language-override","font-size","font-size-adjust","font-smoothing","font-stretch","font-style","font-synthesis","font-variant","font-variant-caps","font-variant-east-asian","font-variant-ligatures","font-variant-numeric","font-variant-position","font-variation-settings","font-weight","gap","glyph-orientation-vertical","grid","grid-area","grid-auto-columns","grid-auto-flow","grid-auto-rows","grid-column","grid-column-end","grid-column-start","grid-gap","grid-row","grid-row-end","grid-row-start","grid-template","grid-template-areas","grid-template-columns","grid-template-rows","hanging-punctuation","height","hyphens","icon","image-orientation","image-rendering","image-resolution","ime-mode","inline-size","isolation","justify-content","left","letter-spacing","line-break","line-height","list-style","list-style-image","list-style-position","list-style-type","margin","margin-block","margin-block-end","margin-block-start","margin-bottom","margin-inline","margin-inline-end","margin-inline-start","margin-left","margin-right","margin-top","marks","mask","mask-border","mask-border-mode","mask-border-outset","mask-border-repeat","mask-border-slice","mask-border-source","mask-border-width","mask-clip","mask-composite","mask-image","mask-mode","mask-origin","mask-position","mask-repeat","mask-size","mask-type","max-block-size","max-height","max-inline-size","max-width","min-block-size","min-height","min-inline-size","min-width","mix-blend-mode","nav-down","nav-index","nav-left","nav-right","nav-up","none","normal","object-fit","object-position","opacity","order","orphans","outline","outline-color","outline-offset","outline-style","outline-width","overflow","overflow-wrap","overflow-x","overflow-y","padding","padding-block","padding-block-end","padding-block-start","padding-bottom","padding-inline","padding-inline-end","padding-inline-start","padding-left","padding-right","padding-top","page-break-after","page-break-before","page-break-inside","pause","pause-after","pause-before","perspective","perspective-origin","pointer-events","position","quotes","resize","rest","rest-after","rest-before","right","row-gap","scroll-margin","scroll-margin-block","scroll-margin-block-end","scroll-margin-block-start","scroll-margin-bottom","scroll-margin-inline","scroll-margin-inline-end","scroll-margin-inline-start","scroll-margin-left","scroll-margin-right","scroll-margin-top","scroll-padding","scroll-padding-block","scroll-padding-block-end","scroll-padding-block-start","scroll-padding-bottom","scroll-padding-inline","scroll-padding-inline-end","scroll-padding-inline-start","scroll-padding-left","scroll-padding-right","scroll-padding-top","scroll-snap-align","scroll-snap-stop","scroll-snap-type","scrollbar-color","scrollbar-gutter","scrollbar-width","shape-image-threshold","shape-margin","shape-outside","speak","speak-as","src","tab-size","table-layout","text-align","text-align-all","text-align-last","text-combine-upright","text-decoration","text-decoration-color","text-decoration-line","text-decoration-style","text-emphasis","text-emphasis-color","text-emphasis-position","text-emphasis-style","text-indent","text-justify","text-orientation","text-overflow","text-rendering","text-shadow","text-transform","text-underline-position","top","transform","transform-box","transform-origin","transform-style","transition","transition-delay","transition-duration","transition-property","transition-timing-function","unicode-bidi","vertical-align","visibility","voice-balance","voice-duration","voice-family","voice-pitch","voice-range","voice-rate","voice-stress","voice-volume","white-space","widows","width","will-change","word-break","word-spacing","word-wrap","writing-mode","z-index"].reverse();function p(i){let o=i.regex,e=s(i),t={begin:/-(webkit|moz|ms|o)-(?=[a-z])/},n="and or not only",a=/@-?\w[\w]*(-\w+)*/,l="[a-zA-Z-][a-zA-Z0-9_-]*",r=[i.APOS_STRING_MODE,i.QUOTE_STRING_MODE];return{name:"CSS",case_insensitive:!0,illegal:/[=|'\$]/,keywords:{keyframePosition:"from to"},classNameAliases:{keyframePosition:"selector-tag"},contains:[e.BLOCK_COMMENT,t,e.CSS_NUMBER_MODE,{className:"selector-id",begin:/#[A-Za-z0-9_-]+/,relevance:0},{className:"selector-class",begin:"\\."+l,relevance:0},e.ATTRIBUTE_SELECTOR_MODE,{className:"selector-pseudo",variants:[{begin:":("+b.join("|")+")"},{begin:":(:)?("+g.join("|")+")"}]},e.CSS_VARIABLE,{className:"attribute",begin:"\\b("+m.join("|")+")\\b"},{begin:/:/,end:/[;}{]/,contains:[e.BLOCK_COMMENT,e.HEXCOLOR,e.IMPORTANT,e.CSS_NUMBER_MODE,...r,{begin:/(url|data-uri)\(/,end:/\)/,relevance:0,keywords:{built_in:"url data-uri"},contains:[...r,{className:"string",begin:/[^)]/,endsWithParent:!0,excludeEnd:!0}]},e.FUNCTION_DISPATCH]},{begin:o.lookahead(/@/),end:"[{;]",relevance:0,illegal:/:/,contains:[{className:"keyword",begin:a},{begin:/\s/,endsWithParent:!0,excludeEnd:!0,relevance:0,keywords:{$pattern:/[a-z-]+/,keyword:n,attribute:c.join(" ")},contains:[{begin:/[a-z-]+(?=:)/,className:"attribute"},...r,e.CSS_NUMBER_MODE]}]},{className:"selector-tag",begin:"\\b("+d.join("|")+")\\b"}]}}export{p as default};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{g as l}from"./c-WRBKEJD4.js";var o="ephemeral",i="ephemeral:",_=new Set(["class","id","data-id","value","checked","selected","save-remove","save-ignore","save-freeze","mutations-ignore","snapshot-remove"]),T=t=>_.has(t)||l(t);function d(t,e){return t===o?!0:!t||!e||e.nodeType!==1||T(t)||t.startsWith(i)?!1:t==="open"&&e.localName==="dialog"?!0:e.hasAttribute(i+t)}function h(t,e){return!!e&&e.nodeType===1&&e.hasAttribute(i+t)}function p(t){t.localName==="dialog"&&t.hasAttribute("open")&&t.removeAttribute("open"),t.hasAttribute(o)&&t.removeAttribute(o);let e=t.attributes,r=null;for(let n=0;n<e.length;n++){let f=e[n].name;if(!f.startsWith(i))continue;let s=f.slice(i.length);s&&!T(s)&&(r||(r=[])).push(s)}if(r)for(let n of r)t.removeAttribute(n)}function A(t){if(!(!t||t.nodeType!==1)){p(t);for(let e of t.querySelectorAll("*"))if(p(e),e.localName==="template"&&e.content)for(let r of e.content.children)A(r);if(t.localName==="template"&&t.content)for(let e of t.content.children)A(e)}}function c(t){return(t.getAttribute(o)||"").split(/\s+/).filter(Boolean)}function m(t,e){e.length?t.setAttribute(o,e.join(" ")):t.removeAttribute(o)}var a={has(t,e){return c(t).includes(e)},add(t,e){let r=c(t);r.includes(e)||m(t,[...r,e])},remove(t,e){let r=c(t);r.includes(e)&&m(t,r.filter(n=>n!==e))},toggle(t,e,r){let n=r===void 0?!a.has(t,e):!!r;return n?a.add(t,e):a.remove(t,e),n}};var v=["savetoken"],x=["htmlclaytoken"],b=["documentid","htmlclayid"],S=["documentetag","sitevisibility"],g=[...v,...x,...b],O=["savestatus","editmode","pageowner","draftmode","unsaved","canedit"],N=new Set([...g,...S,...O]);var E="route-",u="route-active";function R(t,e){return d(t,e)||t===u?!0:!e||e.localName!=="html"||e.parentElement?!1:N.has(t)||t.startsWith(E)}function k(t,e,r){return R(e,r||t)}function V(t,e){return R(t,e)&&!h(t,e)?!1:void 0}function H(t){for(let e of[...t.attributes])e.name.startsWith(E)&&t.removeAttribute(e.name);for(let e of t.querySelectorAll(`[${u}]`))e.removeAttribute(u)}export{d as a,A as b,a as c,v as d,x as e,b as f,S as g,O as h,N as i,E as j,u as k,R as l,k as m,V as n,H as o};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var r="Untitled";function s(i,{custom:l=!1,currentTitle:n="",keepWithoutHeading:f=!1}={}){if(l)return n;let e=i.find(t=>t.t==="heading"&&(t.level??2)===1&&t.parent==null);return!e&&f&&!["",r].includes(String(n).trim())?n:String(e?.c??"").replace(/[\s\uFFFC]+/gu," ").trim()||r}export{r as a,s as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as i,d as n}from"./c-WWXIDH4O.js";var{Plugin:g,PluginKey:c}=i,{DecorationSet:p}=n,e=new c("page-highlight");function h(){return new g({key:e,state:{init:()=>p.empty,apply(t,a){let o=t.getMeta(e);return o?p.create(t.doc,o):a.map(t.mapping,t.doc)}},props:{decorations:t=>e.getState(t)}})}export{e as a,h as b};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{f as h}from"./c-GFJJEBTU.js";import"./c-BWFVSBDF.js";import{b as m,c as f}from"./c-RVMWGXEJ.js";import{b as n,c as r}from"./c-NUHP2XDB.js";import{e as c}from"./c-VRZN56XY.js";import"./c-OW5QIGG3.js";import"./c-BPF2NSPV.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-HA6INT6J.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";var x=30,b=6,e=null,u=null;function y(){return u??=Promise.all([import("./c-6HMB24EV.js"),import("./c-ZE46QDIH.js")]).then(([o,t])=>e={pageScheme:o.pageScheme,RUNTIME_ONLY:o.RUNTIME_ONLY,TOKENS:t.TOKENS,SHADOW:t.SHADOW,FONT:`600 11px/1 ${t.FONT_MONO}`,LABEL_FONT:`500 11px/1.4 ${t.FONT_MONO}`}).catch(o=>{throw u=null,o}),u}var O=()=>y().then(()=>!0,()=>!1),a=["all:initial","color-scheme:inherit","direction:ltr","unicode-bidi:isolate"],N="#FFFCF6";function l(o){return o.setAttribute("clay",e.RUNTIME_ONLY),o}function T(o){return{people:o.people.map(i=>({id:i.id,name:i.name,you:i.you})),anonymous:o.anonymous}}var d=class{constructor(){this.roster={people:[],anonymous:0},this.root=null,this.stack=null,this.count=null,this.tip=null,this._gate=null}supported(){return this._gate||(this._gate=Promise.all([c("presence"),c("record-awareness-v1"),c("page-awareness-v1")]).then(([t,i,s])=>(h.setCapabilities({supported:t,recordAwareness:i,pageAwareness:s}),t===!0),()=>!1)),this._gate}async update(t){let i=T(h.receive(t)),s=this.root&&JSON.stringify(i)===JSON.stringify(this.roster);if(this.roster=i,!!await this.supported()){if(s){n(this.root,"color-scheme",e.pageScheme());return}await this.render()}}clear(){h.clear(),this.roster={people:[],anonymous:0},this.root&&(this.root.remove(),this.root=null,this.stack=null,this.count=null,this.tip=null)}async render(){let{people:t,anonymous:i}=this.roster;if(t.length+i<=1){this.hide();return}if(await O()&&this.build()){this.hideTip(),n(this.root,"color-scheme",e.pageScheme()),this.stack.textContent="";for(let s of t)this.stack.appendChild(this.avatar(s));this.stack.firstElementChild&&n(this.stack.firstElementChild,"margin-left","0"),i>0?(this.count.textContent=`+${i} viewing`,n(this.count,"display","inline-block")):(this.count.textContent="",n(this.count,"display","none")),n(this.root,"display","flex")}}hide(){this.root&&(this.hideTip(),this.stack.textContent="",this.count.textContent="",n(this.root,"display","none"))}build(){return this.root?!0:typeof document>"u"||!document.body?!1:(this.root=l(r("div",[...a,`color-scheme:${e.pageScheme()}`,"position:fixed","top:calc(12px + env(safe-area-inset-top,0px))","right:calc(12px + env(safe-area-inset-right,0px))","z-index:2147483000","display:flex","align-items:center","gap:8px","max-width:calc(100vw - 24px)",`font:${e.LABEL_FONT}`,`color:${e.TOKENS.ink}`,"pointer-events:none"])),this.root.setAttribute("data-clay-presence",""),this.count=l(r("span",[...a,"box-sizing:border-box","flex:none","white-space:nowrap","padding:3px 8px","border-radius:0",`background:${e.TOKENS.surface}`,`color:${e.TOKENS.muted}`,`border:1px solid ${e.TOKENS["line-2"]}`,`font:${e.LABEL_FONT}`,"letter-spacing:.02em",`box-shadow:${e.SHADOW}`,"display:none","pointer-events:none"])),this.count.setAttribute("data-clay-presence-count",""),this.stack=l(r("div",[...a,"display:flex","align-items:center","flex:none","pointer-events:none"])),this.tip=l(r("span",[...a,"position:absolute","top:100%","right:0","margin-top:6px","box-sizing:border-box","white-space:nowrap","pointer-events:none","padding:5px 9px","border-radius:0",`background:${e.TOKENS.ink}`,`color:${e.TOKENS.ground}`,`font:${e.LABEL_FONT}`,"letter-spacing:.02em",`box-shadow:${e.SHADOW}`,"display:none"])),this.tip.setAttribute("data-clay-presence-tip",""),this.root.append(this.stack,this.count,this.tip),document.body.appendChild(this.root),!0)}avatar(t){let i=m(t.id),s=[`background-color:${N}`,`color:${i}`,`border-color:${i}`],p=l(r("div",[...a,"box-sizing:border-box","flex:none",`width:${x}px`,`height:${x}px`,"border-radius:0","display:flex","align-items:center","justify-content:center",`font:${e.FONT}`,"letter-spacing:.02em",`margin-left:-${b}px`,"border-width:2px","border-style:solid","background-image:none",`box-shadow:${e.SHADOW}`,"user-select:none","cursor:default","pointer-events:auto",...s],f(t.name)));p.setAttribute("data-clay-presence-avatar","");let g=t.you?`${t.name} (you)`:t.name;return p.addEventListener("mouseenter",()=>this.showTip(g)),p.addEventListener("mouseleave",()=>this.hideTip()),p}showTip(t){this.tip&&(this.tip.textContent=t,n(this.tip,"display","block"))}hideTip(){this.tip&&(this.tip.textContent="",n(this.tip,"display","none"))}},E=new d;var v=E;export{d as Presence,v as default,E as presence};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b as d,c,d as o}from"./c-XCNTK76U.js";import{a as l}from"./c-VKEDWYDF.js";import{e as i}from"./c-OW5QIGG3.js";import{m as u}from"./c-SPIORRYS.js";var n="[editmode\\:contenteditable]";function f(){u(t=>{t.querySelectorAll(n).forEach(o)})}function m(){i&&l(()=>{s()})}function s(t=document){t.querySelectorAll(n).forEach(e=>{a(e);let r=e.getAttribute("inert-contenteditable")??e.getAttribute("contenteditable")??d(e,"inert-contenteditable")??"true",b=r.toLowerCase();e.setAttribute("contenteditable",["","true","false","plaintext-only"].includes(b)?r:"true"),e.removeAttribute("inert-contenteditable")})}function h(){document.querySelectorAll(n).forEach(t=>{o(t),c(t)})}function y(){f(),m()}export{n as a,s as b,h as c,y as d};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{e as a}from"./c-OIBUTDXI.js";import{a as c}from"./c-4JZDZFF6.js";var s=e=>e.nodeType===1&&e.hasAttribute("data-clay-skin");function f(e){for(let t of e.childNodes)if(!s(t))return t;return null}function d(e,t){if(t.parentNode!==e)return!1;for(let n=t.previousSibling;n;n=n.previousSibling)if(!s(n))return!1;return!0}var u=new Map;function y(e){return`
|
|
2
|
+
@layer clay-skin{:is(${e.join(", ")}){color-scheme:${c()} !important}}`}function m(e,t,{roots:n}={}){u.set(e,{css:t,roots:n});let o=document.head||document.documentElement,i=null;for(let l of o.querySelectorAll("style[data-clay-skin]"))l.getAttribute("data-clay-skin")===e&&(i=l);i||(i=document.createElement("style"),i.setAttribute("clay",a),i.setAttribute("data-clay-skin",e));let r=n?t+y(n):t;return i.textContent!==r&&(i.textContent=r),d(o,i)||o.insertBefore(i,f(o)),i}typeof document<"u"&&document.addEventListener("clay:sync-applied",()=>{for(let[e,{css:t,roots:n}]of u)m(e,t,{roots:n})});export{m as a};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as P}from"./c-FDNHHZY5.js";import{a as T,b as E,c as S}from"./c-KBS3UV6B.js";import{l as A}from"./c-3H6BZDNJ.js";import"./c-4DFEJ2PO.js";import"./c-6CRUUXOX.js";import"./c-336SGU5W.js";import"./c-6KEVEQ7L.js";import{A as q}from"./c-5J4E7O4Y.js";import{b as k,m as x}from"./c-WWXIDH4O.js";import"./c-4L3BTFRK.js";import"./c-5V3MOVJT.js";import"./c-VHNSBD2M.js";var R=/^[A-Za-z0-9_-]{8,64}$/,D="@",F=100;function _({view:o=null}={}){if(!o)return{run:()=>({ok:!1,code:"not-editing"}),dispose(){}};let f=o.dom.ownerDocument,y=()=>globalThis.clay?.people??null,l=null;function d(t){let e=o.state;if(!e.selection.empty)return null;let r=e.selection.head;if(r<=t.from||r-t.from>F+1||r>e.doc.content.size)return null;let n=e.doc.resolve(t.from);return!n.parent.isTextblock||n.parent.type.spec.code||r>n.end()||r<n.start()||n.parentOffset&&!/\s/.test(e.doc.textBetween(t.from-1,t.from,"",`
|
|
2
|
+
`))||e.doc.textBetween(t.from,t.from+1)!==D?null:{head:r,query:e.doc.textBetween(t.from+1,r)}}function $(t){try{let e=o.dom.parentElement?.getBoundingClientRect?.()??{left:0,top:0},r=o.coordsAtPos(t.from);return{x:Math.max(8,r.left-e.left),y:r.bottom+6-e.top}}catch{return null}}function h(t){let e=t.picker.activeId();e?o.dom.setAttribute("aria-activedescendant",e):o.dom.getAttribute("aria-activedescendant")?.startsWith(t.picker.el.id)&&o.dom.removeAttribute("aria-activedescendant")}function m(t){t.picker.show(E(T(t.saved,t.allowed),t.query),$(t)),h(t)}function i(){let t=l;if(t){l=null;for(let[e,r,n,s]of t.listen)e.removeEventListener(r,n,s);o.dom.getAttribute("aria-activedescendant")?.startsWith(`${t.picker.el.id}-`)&&o.dom.removeAttribute("aria-activedescendant"),t.picker.destroy()}}function p(){let t=l;if(!t||o.composing)return;let e=d(t);if(!e)return i();t.query=e.query,m(t)}async function g(t){let e=l;if(!e)return{ok:!1,code:"not-editing"};let r=e.picker.personAt(t),n=d(e);if(!(r&&n&&n.query===e.query&&R.test(String(r.id??""))&&String(r.name??"").trim()))return i(),{ok:!1,code:r?"stale-target":"no-person"};let c=String(r.name).trim();return i(),P(o,()=>{let u=d(e);if(!u||u.query!==e.query)return{ok:!1,code:"stale-target"};let a=o.state.tr.insertText(c,e.from,u.head);return a.addMark(e.from,e.from+c.length,x.marks.mention.create({id:r.id})),a.insertText(" ",e.from+c.length),a.setSelection(k.TextSelection.create(a.doc,e.from+c.length+1)),o.dispatch(q(a)),o.focus(),{ok:!0,id:r.id,label:c}})}function B(t){let e=l;if(!e||A(t,o))return;let r=()=>{t.preventDefault(),t.stopPropagation()};t.key==="ArrowDown"||t.key==="ArrowUp"?(r(),e.picker.move(t.key==="ArrowDown"?1:-1),h(e)):t.key==="Enter"?(r(),g(e.picker.index())):(t.key==="Escape"||t.key==="Tab")&&(r(),i())}function I(t){let e=y()?.available;e&&Promise.resolve().then(()=>e()).then(r=>{l===t&&(t.allowed=Array.isArray(r)?r:null,m(t))}).catch(()=>{})}function M(t){i();let e=S({document:f,onPick:c=>g(c)}),r={from:t,picker:e,query:"",allowed:null,saved:[],listen:[]};try{r.saved=y()?.list?.()??[]}catch{r.saved=[]}l=r;let n=(c,u,a,b)=>{c.addEventListener(u,a,b),r.listen.push([c,u,a,b])};n(f,"keydown",c=>B(c),!0),n(o.dom,"input",()=>p()),n(o.dom,"keyup",()=>p()),n(o.dom,"compositionend",()=>p()),n(f,"mousedown",c=>{r.picker.el.contains(c.target)||i()},!0),(o.dom.parentElement??f.body).appendChild(e.el);let s=d(r);return s?(r.query=s.query,m(r),I(r),{ok:!0,picker:!0}):(i(),{ok:!1,code:"stale-target"})}return{async run(t={}){let e=Number.isInteger(t?.from)?t.from:null;if(e===null){let r=o.state,n=r.selection.$from;if(!r.selection.empty||!n.parent.isTextblock||n.parent.type.spec.code)return{ok:!1,code:"stale-target"};e=r.selection.from;let s=o.state.tr.insertText(D);s.setSelection(k.TextSelection.create(s.doc,e+1)),o.dispatch(s)}return M(e)},dispose(){i()}}}export{_ as createFeature};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as u}from"./c-XMS6DPBR.js";import"./c-PZ4XEPUP.js";import{g as p,l as w,n as v,q as s}from"./c-OIBUTDXI.js";import{a as f}from"./c-4JZDZFF6.js";import"./c-VAK7SG37.js";import"./c-MFP2ZWD4.js";import{b as c}from"./c-NUHP2XDB.js";import{e as l}from"./c-OW5QIGG3.js";import"./c-BPF2NSPV.js";import"./c-P7KNDG34.js";import"./c-CYWLPPUS.js";import"./c-N7JPUPGC.js";import"./c-SPIORRYS.js";import"./c-XQXZAO7N.js";import"./c-S7LK4KUE.js";import"./c-VG5XIN4T.js";import"./c-2YYDMLNZ.js";import"./c-HA6INT6J.js";import"./c-DCFSEJZG.js";import"./c-WRBKEJD4.js";import"./c-VHNSBD2M.js";var E="Download a copy, then reduce its size; saving still works.",$="Download a copy to keep your work.",t=null,a=null,o=null,r=null;function m(e){return typeof e!="number"||!Number.isFinite(e)||e<0?"an unknown size":e>=1024*1024?`${(e/(1024*1024)).toFixed(1)} MB`:e>=1024?`${Math.max(1,Math.round(e/1024))} KB`:`${e} bytes`}function z({bytes:e,maxBytes:n,state:g}){let d=`At the last save attempt: ${m(e)} of ${m(n)}.`;return g==="over"?`This host can't save a file this size. ${d} ${$}`:`This file is getting large. ${d} ${E}`}function i(){if(!t)return;let e=window.visualViewport,n=e?Math.max(0,window.innerHeight-e.height-e.offsetTop):0;c(t,"bottom",`calc(${16+n}px + env(safe-area-inset-bottom,0px))`)}function S(){u({})}function b(){t=w("div",["position:fixed","left:50%","transform:translateX(-50%)","z-index:2147483000","display:flex","align-items:center","gap:10px 12px","width:max-content","max-width:calc(100vw - 24px)","flex-wrap:wrap","padding:8px 8px 8px 14px","text-align:left",`color-scheme:${f()}`]),t.setAttribute("clay","editor-ui"),t.setAttribute("data-clay-save-size",""),t.setAttribute("role","status"),a=v("span",[],""),o=p("Download my copy",{small:!0,onClick:S}),s(o,!1,"inline-flex"),t.append(a,o),document.body.appendChild(t),i(),window.visualViewport?.addEventListener("resize",i),window.visualViewport?.addEventListener("scroll",i)}function y(e){t||b(),a.textContent=z(e),s(o,e.state==="over","inline-flex"),i()}function h(){t&&(window.visualViewport?.removeEventListener("resize",i),window.visualViewport?.removeEventListener("scroll",i),t.remove(),t=null,a=null,o=null)}function x(e){let n=e?.detail;n&&(n.state==="near"||n.state==="over"?y(n):h())}function A(){l||M()}function T(e){l&&(r||=new AbortController,document.addEventListener("clay:save-size",x,{signal:r.signal}),document.addEventListener("clay:modechange",A,{signal:r.signal}),e?.type==="clay:save-size"&&x(e))}function M(){r?.abort(),r=null,h()}export{T as start,M as stop};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var f=["pointerdown","pointerup","click","keydown","beforeinput","change","submit","paste","drop","cut"];var n=!1,o=-1/0,s=!1,r=!1,t=!1,u=!1;function i(){return typeof performance<"u"&&performance.now?performance.now():Date.now()}function c(){s=!0,n=!0,o=i(),setTimeout(()=>{n=!1},0)}function a(e){!e||!e.isTrusted||c()}function l(){if(!(u||typeof document>"u")){u=!0;for(let e of f)document.addEventListener(e,a,!0)}}function p(){return n?!0:i()-o<500}function E(){r=!0}function d(){return s}function x(){let e=r;return r=!1,e}function m(){t=!0}function v(){let e=t;return t=!1,e}function S(){t=!1}export{l as a,p as b,E as c,d,x as e,m as f,v as g,S as h};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{b as u}from"./c-HAWFNBYG.js";var c="clay-seo-title-mode",n=t=>t?.nodeType===9?t.head:t?.tagName==="HEAD"?t:t?.querySelector?.("head")??null;function l(t){let r=n(t);if(!r)return!1;for(let e of r.querySelectorAll("meta"))if((e.getAttribute("name")??"").trim().toLowerCase()===c&&(e.getAttribute("content")??"").trim().toLowerCase()==="custom")return!0;return!1}function f(t){let r=n(t);if(!r||l(t))return!1;let e=r.ownerDocument.createElement("meta");return e.setAttribute("name",c),e.setAttribute("content","custom"),r.insertBefore(e,r.querySelector("title")??r.firstChild),!0}function s(t){return n(t)?.querySelector("title")?.textContent??""}function m(t,r){let e=n(t);if(!e)return!1;let o=e.querySelector("title");if(o)return o.textContent===r?!1:(o.textContent=r,!0);let i=e.ownerDocument.createElement("title");return i.textContent=r,e.insertBefore(i,e.firstChild),!0}function d(t,r){let e=l(t);return{custom:e,title:u(r,{custom:e,currentTitle:s(t)})}}export{l as a,f as b,s as c,m as d,d as e};
|