@panphora/clayjs 1.15.2 → 1.16.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 +83090 -58706
- 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-NWPPXOCZ.js +1 -0
- package/dist/m/attrs/save-freeze-FUP4Q4X3.js +1 -0
- package/dist/m/c-2AZDZWCK.js +1 -0
- package/dist/m/c-2JL6E75N.js +1 -0
- package/dist/m/c-2M73252O.js +1 -0
- package/dist/m/c-2SPVQSHC.js +1 -0
- package/dist/m/c-33HUYEDI.js +1 -0
- package/dist/m/c-33JJ6CBX.js +2 -0
- package/dist/m/c-35NBGMZB.js +1 -0
- package/dist/m/c-3GJ4SDE2.js +1 -0
- package/dist/m/c-3IQRECYS.js +1 -0
- package/dist/m/c-3OWDMNJR.js +2 -0
- package/dist/m/c-46XYM55L.js +1 -0
- package/dist/m/c-4B6H4G5V.js +1 -0
- package/dist/m/c-4DRMS4QG.js +9 -0
- package/dist/m/c-4FFHZM32.js +1 -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-4YSCRICO.js +1 -0
- package/dist/m/c-54RCDCBU.js +1 -0
- package/dist/m/c-5M4YEKCX.js +4 -0
- package/dist/m/c-5R4PTRG2.js +1 -0
- package/dist/m/c-5V3MOVJT.js +1 -0
- package/dist/m/c-5VYOWDTI.js +1 -0
- package/dist/m/c-5Y6TNX5W.js +34 -0
- package/dist/m/c-5YIHJ3TJ.js +1 -0
- package/dist/m/c-66O32MV3.js +28 -0
- package/dist/m/c-6HMB24EV.js +1 -0
- package/dist/m/c-7DJDKPGL.js +1 -0
- package/dist/m/c-7O6AFR65.js +1 -0
- package/dist/m/c-7SWMYKAI.js +1 -0
- package/dist/m/c-7VGZ7RU5.js +1 -0
- package/dist/m/c-A7LS5UZW.js +1 -0
- package/dist/m/c-ANQTJ3B5.js +2 -0
- package/dist/m/c-AQLFEATB.js +1 -0
- package/dist/m/c-AYVOREBE.js +1 -0
- package/dist/m/c-B2ZXPOS3.js +3 -0
- package/dist/m/c-BBVGTQG7.js +1 -0
- package/dist/m/c-BMIZKMPV.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-CJZSLMVQ.js +1 -0
- package/dist/m/c-CYWLPPUS.js +1 -0
- package/dist/m/c-CZUSOB7V.js +1 -0
- package/dist/m/c-DBE6ORSI.js +1 -0
- package/dist/m/c-DCFSEJZG.js +1 -0
- package/dist/m/c-DNZ5IFM6.js +1 -0
- package/dist/m/c-EDHUR4MX.js +1 -0
- package/dist/m/c-EJTGYSLN.js +1 -0
- package/dist/m/c-EY6UOM54.js +1 -0
- package/dist/m/c-F3CKJTJS.js +1 -0
- package/dist/m/c-F7Y6FLPY.js +1 -0
- package/dist/m/c-FA4DZVTC.js +1 -0
- package/dist/m/c-FILLTJA7.js +1 -0
- package/dist/m/c-G2BUZITR.js +1 -0
- package/dist/m/c-GB3JTV6E.js +1 -0
- package/dist/m/c-GBGWXTX4.js +1 -0
- package/dist/m/c-GHBCCVG4.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-H4LG442Q.js +1 -0
- package/dist/m/c-HA6INT6J.js +1 -0
- package/dist/m/c-HPURYVZS.js +2 -0
- package/dist/m/c-HRDCD3WN.js +67 -0
- package/dist/m/c-HT33EQRN.js +1 -0
- package/dist/m/c-HVYXIS72.js +1 -0
- package/dist/m/c-IB52R237.js +1 -0
- package/dist/m/c-IJUK2GPW.js +1 -0
- package/dist/m/c-IKWNE4R4.js +1 -0
- package/dist/m/c-IU3IYEU6.js +1 -0
- package/dist/m/c-IZ2EBRAJ.js +1 -0
- package/dist/m/c-J7CA54IP.js +1 -0
- package/dist/m/c-JAX2667S.js +6 -0
- package/dist/m/c-KI7M4AY3.js +1 -0
- package/dist/m/c-KIPQJX4B.js +1 -0
- package/dist/m/c-KKWLDOPM.js +1 -0
- package/dist/m/c-KR4UW4KW.js +1 -0
- package/dist/m/c-KY3VJGUA.js +8 -0
- package/dist/m/c-L4WQSC27.js +1 -0
- package/dist/m/c-LFPHCXY3.js +1 -0
- package/dist/m/c-LR4CGEPT.js +91 -0
- package/dist/m/c-LRPUO2MX.js +1 -0
- package/dist/m/c-LTGMXXKO.js +1 -0
- package/dist/m/c-LXENEBV7.js +1 -0
- package/dist/m/c-LZJPNR2W.js +1 -0
- package/dist/m/c-MMUIUUZG.js +2 -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-NMJRXKPC.js +8 -0
- package/dist/m/c-NRPJEVJS.js +1 -0
- package/dist/m/c-NUHP2XDB.js +1 -0
- package/dist/m/c-NZMNXVF6.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-OYTFP5QN.js +1 -0
- package/dist/m/c-P7KNDG34.js +1 -0
- package/dist/m/c-PPOSCAQD.js +1 -0
- package/dist/m/c-PQ5LK6QE.js +993 -0
- package/dist/m/c-PZ4XEPUP.js +2 -0
- package/dist/m/c-QHIWXHRO.js +1 -0
- package/dist/m/c-QHWJ5ZIJ.js +1 -0
- package/dist/m/c-QIX5BJYN.js +1 -0
- package/dist/m/c-QNKREOL6.js +1 -0
- package/dist/m/c-QQHEX6HA.js +1 -0
- package/dist/m/c-R7RMANJI.js +9 -0
- package/dist/m/c-RI4NT75Y.js +1 -0
- package/dist/m/c-RM7J7BV2.js +1 -0
- package/dist/m/c-RUJKSUQW.js +1 -0
- package/dist/m/c-RVMWGXEJ.js +1 -0
- package/dist/m/c-S7H2DRCB.js +1 -0
- package/dist/m/c-S7LK4KUE.js +1 -0
- package/dist/m/c-SGCCC4FW.js +25 -0
- package/dist/m/c-SGIA4IEQ.js +188 -0
- package/dist/m/c-SWRJFCNN.js +1 -0
- package/dist/m/c-T4VO4OCB.js +1 -0
- package/dist/m/c-TCCA5BZN.js +2 -0
- package/dist/m/c-TQEMVJCS.js +1 -0
- package/dist/m/c-TQZ2JYHD.js +1 -0
- package/dist/m/c-TR6RMDQ7.js +3 -0
- package/dist/m/c-TRS6TM6O.js +1 -0
- package/dist/m/c-UGHH4MB3.js +1 -0
- package/dist/m/c-UKHTLWUW.js +1 -0
- package/dist/m/c-UL2YUY52.js +1 -0
- package/dist/m/c-UNN7LWCT.js +1 -0
- package/dist/m/c-UXBMRDZB.js +235 -0
- package/dist/m/c-V7PZZRG7.js +1 -0
- package/dist/m/c-VAK7SG37.js +1 -0
- package/dist/m/c-VDSS4K3Z.js +1 -0
- package/dist/m/c-VFX45IZQ.js +1 -0
- package/dist/m/c-VHNSBD2M.js +1 -0
- package/dist/m/c-VKEDWYDF.js +1 -0
- package/dist/m/c-VL52ADDR.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-WWDBYXLK.js +1 -0
- package/dist/m/c-WYFDLITL.js +1 -0
- package/dist/m/c-XN6MBKI6.js +67 -0
- package/dist/m/c-XNNW2CWK.js +1 -0
- package/dist/m/c-XPELB6E5.js +1 -0
- package/dist/m/c-XQXZAO7N.js +1 -0
- package/dist/m/c-Y6USGTS5.js +5 -0
- package/dist/m/c-YDH7Q3NY.js +1 -0
- package/dist/m/c-YG2NJYS6.js +135 -0
- package/dist/m/c-Z36J63PP.js +1 -0
- package/dist/m/c-Z4VRC7GU.js +7 -0
- package/dist/m/c-Z6K52OLP.js +19 -0
- package/dist/m/c-ZDY2MDAA.js +21 -0
- package/dist/m/c-ZE46QDIH.js +1 -0
- package/dist/m/c-ZUCOKOHT.js +1 -0
- package/dist/m/core/admin-attrs-VGNLAUDK.js +1 -0
- package/dist/m/core/autosave-E4PEFPZ6.js +1 -0
- package/dist/m/core/conflict-notice-VQ6Y64PH.js +1 -0
- package/dist/m/core/draft-mode-WSQAT67S.js +1 -0
- package/dist/m/core/host-permission-XN3K2IW3.js +1 -0
- package/dist/m/core/is-edit-mode-JXHDVGUL.js +1 -0
- package/dist/m/core/persist-HKHA66IY.js +3 -0
- package/dist/m/core/recovery-TBBSICE2.js +1 -0
- package/dist/m/core/save-WUCHTQBE.js +1 -0
- package/dist/m/core/save-core-FJVHT5M3.js +1 -0
- package/dist/m/core/snapshot-F3SWDZMM.js +1 -0
- package/dist/m/core/unsaved-warning-STKBHE6G.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-23DPTUT4.js +1 -0
- package/dist/m/internals/index-WOVAP3RU.js +1 -0
- package/dist/m/lib/cache-bust-CGWT6ZJI.js +1 -0
- package/dist/m/lib/region-policy-SB2AWVG5.js +1 -0
- package/dist/m/loader-HXX6YNH5.js +1 -0
- package/dist/m/manifest-F22DEDAC.js +1 -0
- package/dist/m/manifest-edit-C3C7376B.js +1 -0
- package/dist/m/manifest.json +3491 -0
- package/dist/m/options/options-2LH76JQ3.js +1 -0
- package/dist/m/page/editor-XUTB2HB2.js +189 -0
- package/dist/m/plugins/ai-edit-ZQ4CGWIP.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-ZIBFAA3R.js +1 -0
- package/dist/m/plugins/derive-UAAA4V4S.js +1 -0
- package/dist/m/plugins/indicator-PV4YW2ID.js +1 -0
- package/dist/m/plugins/live-NUTTXSBS.js +1 -0
- package/dist/m/plugins/menu-HCKO3DSP.js +138 -0
- package/dist/m/plugins/message-LQ6EDH4V.js +1 -0
- package/dist/m/plugins/page-KSUH7G6J.js +2 -0
- package/dist/m/plugins/page-view-W73OW7WI.js +1 -0
- package/dist/m/plugins/people-AJJ32YCG.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-RC3L2F6X.js +517 -0
- package/dist/m/plugins/richclay-RC3L2F6X.js.LEGAL.txt +1 -0
- package/dist/m/plugins/sortable-YRMQX3ZU.js +1 -0
- package/dist/m/plugins/source-KHK5UUSK.js +1 -0
- package/dist/m/plugins/undo-OF2L3CXU.js +1 -0
- package/dist/m/plugins/unsent-HJFLQJ2O.js +1 -0
- package/dist/m/plugins/upgrade-ZNYODP5Y.js +1 -0
- package/dist/m/plugins/upload-XSGNILUY.js +1 -0
- package/dist/m/plugins/visitor-drafts-XK5GW55Q.js +21 -0
- package/dist/m/plugins/visitor-drafts-owner-KSSH75EV.js +1 -0
- package/dist/m/plugins/wire-ZWVWKF76.js +1 -0
- package/dist/m/reader-core-ILWLXVMP.js +68 -0
- package/dist/m/route/route-KOCZSEGN.js +1 -0
- package/dist/m/sync/live-sync-4AUVXVJU.js +1 -0
- package/dist/m/ui/index-EVHKMKBL.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 +3800 -0
- package/dist/page/themes/light-1.css +406 -0
- package/dist/server/core.cjs +23662 -22860
- 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/conflict-download.js +22 -0
- package/src/core/conflict-notice-ui.js +1173 -0
- package/src/core/conflict-notice.js +140 -697
- package/src/core/edit-mode.js +147 -14
- package/src/core/etag.js +30 -12
- package/src/core/host-meta.js +72 -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 +109 -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 +805 -118
- package/src/core/snapshot.js +121 -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 +141 -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 +79 -5
- 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 +17 -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/checklist.js +1 -1
- package/src/page/chrome.js +411 -61
- package/src/page/csv-import.js +17 -2
- package/src/page/document-title-dom.js +40 -0
- package/src/page/document-title-runtime.js +76 -0
- package/src/page/document-title.js +9 -0
- package/src/page/drag.js +48 -13
- package/src/page/drop.js +2 -1
- package/src/page/editor.js +330 -86
- package/src/page/feature-loader.js +72 -0
- package/src/page/features/board.js +12 -0
- package/src/page/features/code.js +13 -0
- package/src/page/features/media.js +290 -0
- package/src/page/features/registry.js +23 -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-gate.js +179 -0
- package/src/page/format-level.js +157 -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 +18 -25
- package/src/page/items.js +52 -11
- package/src/page/link.js +1 -0
- package/src/page/markdown.js +86 -1
- package/src/page/media-views.js +3 -0
- package/src/page/media.js +33 -245
- package/src/page/outline-cache.js +11 -0
- package/src/page/placeholder.js +27 -7
- package/src/page/projection.js +196 -50
- 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 +7 -4
- package/src/page/schema.js +14 -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/light-1.css +139 -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.js +390 -107
- package/src/page/ybind/awareness.js +172 -0
- package/src/page/ybind/binding.js +9 -1
- 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 +25 -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 +84 -22
- package/src/page/ybind/recovery-proof.js +191 -0
- package/src/page/ybind/recovery-replay.js +130 -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 +282 -34
- 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 +1022 -275
- 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/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 +535 -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{b as l}from"../c-JAX2667S.js";import{i}from"../c-7O6AFR65.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import{h as c}from"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var r="clay:demo:"+(document.documentElement.getAttribute("demo-key")||window.location.pathname),y=800,h=[c,"[data-richclay-toolbar]","[data-richclay-menu]","[data-richclay-dialog]","[data-richclay-live]","[data-richclay-float]","#squire-selection-start","#squire-selection-end",".squire-image-resize-container"].join(","),a=!1,d=null;document.addEventListener("clay:snapshot-ready",e=>{d=e.detail.documentElement.querySelector("body")?.outerHTML||null});function p(e){return typeof e=="string"?e:""}var f=window.fetch.bind(window);function g(e){let t=typeof e=="string"?e:e&&e.url||"";try{let o=new URL(t,window.location.href).pathname;return o==="/_/save"||o.startsWith("/_/save/")}catch{return!1}}window.fetch=(e,t={})=>(t.method||e&&e.method||"GET").toUpperCase()!=="POST"||!g(e)?f(e,t):new Promise(n=>{setTimeout(()=>{if(a){a=!1,n(new Response(JSON.stringify({msg:"Server not responding",msgType:"error"}),{status:503,headers:{"Content-Type":"application/json"}}));return}let m=d||p(t.body),s=new DOMParser().parseFromString(m,"text/html");s.querySelectorAll(h).forEach(u=>u.remove());try{localStorage.setItem(r,s.body.outerHTML)}catch{n(new Response(JSON.stringify({msg:"Couldn't save in this browser (storage is full or blocked)",msgType:"error"}),{status:507,headers:{"Content-Type":"application/json"}}));return}n(new Response(JSON.stringify({msg:"Saved in your browser",msgType:"success"}),{status:200,headers:{"Content-Type":"application/json"}}))},y)});async function w(){let e=localStorage.getItem(r);if(!e)return;let t=new DOMParser().parseFromString(e,"text/html");if(!i)for(let o of t.querySelectorAll(":is([editable], [clay-editable])[contenteditable]"))o.removeAttribute("contenteditable");await l(document.body,t.body,{morphStyle:"outerHTML",ignoreActiveValue:!0,scripts:{handle:!0,matchMode:"smart"}})}var v=w(),E={key:r,failNext(){a=!0},reset(){localStorage.removeItem(r),window.location.reload()}};export{E as demo,v as ready};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../c-VHNSBD2M.js";function n(){let o=window.Sap;return!!(o&&!o.core||window.clay?.loaded?.sap)}var a=n()?null:import("../vendor/sap-core.vendor-A7BMUYZT.js").then(()=>{});export{a as ready};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as s}from"../c-2AZDZWCK.js";import{l as v}from"../c-OIBUTDXI.js";import{a as d}from"../c-4JZDZFF6.js";import{b as p,e as o}from"../c-VAK7SG37.js";import{a as m,b as i}from"../c-NUHP2XDB.js";import{a as f}from"../c-VKEDWYDF.js";import{n as u}from"../c-7O6AFR65.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var l={saving:"Saving\u2026",saved:"Saved",error:"Couldn't save",offline:"Offline, not saved",retrying:"Saving\u2026",blocked:"Can't save here"},g=new Set(["saving","retrying","blocked"]),b=new Set(["error","offline","blocked"]),h=[`background:${o.surface}`,`color:${o.ink}`,`border-color:${o["line-2"]}`],S=[`background:${o["ox-soft"]}`,`color:${o.ox}`,`border-color:color-mix(in srgb, ${o.ox} 28%, ${o["ox-soft"]})`],t=null,a=null;function T(){if(t&&t.isConnected)return t;let e=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches;return t=v("div",["position:fixed","right:16px","bottom:16px","z-index:2147483000","padding:4px 12px",`font:500 13px/1.6 ${p}`,"opacity:0",`transition:${e?"none":"opacity .25s"}`,"pointer-events:none",`color-scheme:${d()}`]),t.setAttribute("data-clay-indicator",""),t.setAttribute("role","status"),document.body.appendChild(t),t}function x(e){if(!l[e])return;let n=e!=="blocked"&&(b.has(e)||e==="saved"&&s.savedToast);if(s.toasts&&n){clearTimeout(a),t&&(i(t,"opacity","0"),t.textContent="",delete t.dataset.state);return}let r=T();r.textContent=l[e],r.dataset.state=e,i(r,"color-scheme",d()),m(r,b.has(e)?S:h),i(r,"opacity","1"),clearTimeout(a),g.has(e)||(a=setTimeout(()=>{i(r,"opacity","0")},2200))}var c=null;function y(){if(s.chip=!0,c)return;c=new AbortController;let{signal:e}=c;for(let n of Object.keys(l))document.addEventListener("clay:save-"+n,()=>x(n),{signal:e});document.addEventListener("clay:page-save-state",n=>x(n.detail?.state),{signal:e})}function A(){c?.abort(),c=null,clearTimeout(a),a=null,t?.remove(),t=null}function $(){u()&&y()}function O(){return{id:"clay:indicator",order:700,prepare(e={}){return{enable(){e.initial!==!0&&y()},quiesce(){},resume(){},dispose(){A()}}}}}f($);export{O as indicatorParticipant,O as modeParticipant};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s}from"../c-R7RMANJI.js";import"../c-TCCA5BZN.js";import"../c-LRPUO2MX.js";import"../c-A7LS5UZW.js";import"../c-5V3MOVJT.js";import"../c-LZJPNR2W.js";import"../c-CJZSLMVQ.js";import"../c-GQ6F6IDK.js";import"../c-2SPVQSHC.js";import"../c-5VYOWDTI.js";import"../c-7VGZ7RU5.js";import"../c-4YSCRICO.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-HT33EQRN.js";import"../c-B2ZXPOS3.js";import"../c-TQEMVJCS.js";import"../c-3IQRECYS.js";import"../c-AYVOREBE.js";import"../c-IJUK2GPW.js";import"../c-7O6AFR65.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-35NBGMZB.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-GHBCCVG4.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";export{a as HOLD_MS,q as checkpointWithin,n as closeStore,j as confirmSaved,s as default,b as drainLiveWriter,p as fastLane,h as live,f as liveTags,c as liveWriterParticipant,c as modeParticipant,o as openStores,d as pageLaneReady,e as pageWriterReady,l as receiveFrame,r as requestCheckpoint,k as sendingCapture,g as serializeLines,i as stageStore,m as storeOf};
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
import{a as q}from"../c-AQLFEATB.js";import{a as R}from"../c-VKEDWYDF.js";import{f as x,g as O,i as L,j as z}from"../c-7O6AFR65.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var B='<svg xmlns="http://www.w3.org/2000/svg" viewBox="-45.87 -57.96 100.26 60.98" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M44.35 -4.56Q40.03 -0.52 34.69 -0.39Q29.34 -0.25 24.81 -0.14Q20.27 -0.02 15.6 0Q10.93 0.02 6.41 0Q1.89 -0.02 -2.79 -0.02Q-7.48 -0.02 -12.11 -0.14Q-16.73 -0.25 -21.64 -0.27Q-26.55 -0.3 -31.72 -2.25Q-36.88 -4.2 -39.87 -9.12Q-42.87 -14.03 -42.8 -19.61Q-42.74 -25.18 -40.43 -29.94Q-38.12 -34.69 -34.82 -38.78Q-31.52 -42.87 -27.25 -45.6Q-22.98 -48.33 -18.35 -50.59Q-13.73 -52.85 -8.7 -53.88Q-3.68 -54.91 1.32 -54.93Q6.32 -54.96 11.44 -54.56Q16.55 -54.16 21.35 -52.2Q26.16 -50.24 30.69 -48.01Q35.22 -45.78 38.99 -42.18Q42.76 -38.59 45.67 -34.37Q48.59 -30.15 49.99 -24.87Q51.39 -19.59 50.04 -14.09Q48.68 -8.6 44.35 -4.56ZM0.66 -30.49C0.5 -28.73 -0.88 -27.42 -2.42 -27.57C-3.96 -27.71 -5.08 -29.25 -4.91 -31.01C-4.75 -32.77 -3.36 -34.08 -1.83 -33.94C-0.29 -33.79 0.83 -32.25 0.66 -30.49ZM13.61 -29.28C13.44 -27.52 12.06 -26.21 10.52 -26.35C8.98 -26.5 7.87 -28.04 8.03 -29.8C8.2 -31.56 9.58 -32.87 11.12 -32.73C12.66 -32.58 13.77 -31.04 13.61 -29.28ZM-1.23 -17.71Q-0.62 -17.35 -0.03 -17.08Q0.56 -16.81 1.15 -16.54Q1.73 -16.28 2.4 -16Q3.07 -15.72 3.87 -15.6Q4.66 -15.48 5.4 -15.55Q6.13 -15.62 6.77 -15.79Q7.41 -15.96 7.97 -16.23Q8.53 -16.5 9 -16.91Q9.46 -17.32 9.73 -17.9Q9.99 -18.47 10.08 -19.12Q10.17 -19.77 10.08 -20.42Q9.99 -21.06 9.45 -21.32Q8.91 -21.58 8.27 -21.38Q7.63 -21.17 6.99 -20.91Q6.36 -20.65 5.7 -20.61Q5.04 -20.56 4.33 -20.73Q3.62 -20.9 2.92 -21.14Q2.23 -21.39 1.54 -21.68Q0.85 -21.97 0.16 -22.27Q-0.52 -22.56 -1.22 -22.79Q-1.92 -23.03 -2.49 -22.61Q-3.05 -22.19 -3.23 -21.5Q-3.4 -20.81 -3.2 -20.09Q-3.01 -19.38 -3.02 -19.15Q-3.02 -18.93 -2.42 -18.5Q-1.83 -18.06 -1.23 -17.71Z"/></svg>';var _=!0,$=6e3,U=12,G=`.clay-menu {
|
|
2
|
+
position: fixed;
|
|
3
|
+
top: max(12px, env(safe-area-inset-top));
|
|
4
|
+
right: max(12px, env(safe-area-inset-right));
|
|
5
|
+
z-index: 2147482000;
|
|
6
|
+
display: flex;
|
|
7
|
+
align-items: center;
|
|
8
|
+
flex-wrap: nowrap;
|
|
9
|
+
gap: 8px;
|
|
10
|
+
font-family: system-ui, -apple-system, "Segoe UI", sans-serif;
|
|
11
|
+
font-size: 13px;
|
|
12
|
+
line-height: 1;
|
|
13
|
+
color: var(--clay-ui-fg, #1F2328);
|
|
14
|
+
}
|
|
15
|
+
.clay-menu-edit {
|
|
16
|
+
display: inline-flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
gap: 8px;
|
|
19
|
+
margin: 0;
|
|
20
|
+
padding: 0;
|
|
21
|
+
border: 0;
|
|
22
|
+
font: inherit;
|
|
23
|
+
color: inherit;
|
|
24
|
+
background: none;
|
|
25
|
+
cursor: pointer;
|
|
26
|
+
}
|
|
27
|
+
.clay-menu-edit:disabled { cursor: progress; opacity: .7; }
|
|
28
|
+
.clay-menu-track {
|
|
29
|
+
position: relative;
|
|
30
|
+
display: block;
|
|
31
|
+
box-sizing: border-box;
|
|
32
|
+
width: 52px;
|
|
33
|
+
height: 32px;
|
|
34
|
+
border: 1px solid rgba(23, 28, 36, .16);
|
|
35
|
+
border-radius: 999px;
|
|
36
|
+
background: var(--clay-ui-bg, #F4F4F5);
|
|
37
|
+
transition: background-color .15s ease, border-color .15s ease;
|
|
38
|
+
}
|
|
39
|
+
.clay-menu-thumb {
|
|
40
|
+
position: absolute;
|
|
41
|
+
top: 2px;
|
|
42
|
+
left: 2px;
|
|
43
|
+
width: 26px;
|
|
44
|
+
height: 26px;
|
|
45
|
+
border-radius: 50%;
|
|
46
|
+
background: #FAFAFB;
|
|
47
|
+
box-shadow: 0 1px 2px rgba(23, 28, 36, .35);
|
|
48
|
+
transition: transform .15s ease;
|
|
49
|
+
}
|
|
50
|
+
.clay-menu-edit[aria-checked="true"] .clay-menu-track {
|
|
51
|
+
border-color: transparent;
|
|
52
|
+
background: var(--clay-ui-accent, #2F6FEB);
|
|
53
|
+
}
|
|
54
|
+
.clay-menu-edit[aria-checked="true"] .clay-menu-thumb { transform: translateX(20px); }
|
|
55
|
+
.clay-menu-label { font-size: 13px; line-height: 1; }
|
|
56
|
+
.clay-menu-goo {
|
|
57
|
+
position: relative;
|
|
58
|
+
display: inline-flex;
|
|
59
|
+
align-items: center;
|
|
60
|
+
justify-content: center;
|
|
61
|
+
box-sizing: border-box;
|
|
62
|
+
width: 32px;
|
|
63
|
+
height: 32px;
|
|
64
|
+
margin: 0;
|
|
65
|
+
padding: 0;
|
|
66
|
+
border: 1px solid rgba(23, 28, 36, .16);
|
|
67
|
+
border-radius: 50%;
|
|
68
|
+
color: inherit;
|
|
69
|
+
background: var(--clay-ui-bg, #F4F4F5);
|
|
70
|
+
cursor: pointer;
|
|
71
|
+
}
|
|
72
|
+
.clay-menu-goo svg { display: block; width: 18px; height: auto; }
|
|
73
|
+
.clay-menu-dot {
|
|
74
|
+
position: absolute;
|
|
75
|
+
top: 1px;
|
|
76
|
+
right: 1px;
|
|
77
|
+
width: 8px;
|
|
78
|
+
height: 8px;
|
|
79
|
+
border-radius: 50%;
|
|
80
|
+
background: var(--clay-ui-accent, #2F6FEB);
|
|
81
|
+
}
|
|
82
|
+
.clay-menu-list {
|
|
83
|
+
position: absolute;
|
|
84
|
+
top: calc(100% + 8px);
|
|
85
|
+
right: 0;
|
|
86
|
+
min-width: 184px;
|
|
87
|
+
margin: 0;
|
|
88
|
+
padding: 4px;
|
|
89
|
+
border: 1px solid rgba(23, 28, 36, .16);
|
|
90
|
+
border-radius: 10px;
|
|
91
|
+
background: var(--clay-ui-bg, #F4F4F5);
|
|
92
|
+
box-shadow: 0 10px 28px -14px rgba(23, 28, 36, .5);
|
|
93
|
+
}
|
|
94
|
+
.clay-menu-list button {
|
|
95
|
+
display: block;
|
|
96
|
+
width: 100%;
|
|
97
|
+
padding: 8px 10px;
|
|
98
|
+
border: 0;
|
|
99
|
+
border-radius: 6px;
|
|
100
|
+
font: inherit;
|
|
101
|
+
text-align: left;
|
|
102
|
+
color: inherit;
|
|
103
|
+
background: none;
|
|
104
|
+
cursor: pointer;
|
|
105
|
+
}
|
|
106
|
+
.clay-menu-list button:hover,
|
|
107
|
+
.clay-menu-list button:focus-visible { outline: none; background: rgba(23, 28, 36, .08); }
|
|
108
|
+
.clay-menu-note {
|
|
109
|
+
position: absolute;
|
|
110
|
+
top: calc(100% + 8px);
|
|
111
|
+
right: 0;
|
|
112
|
+
max-width: 260px;
|
|
113
|
+
padding: 8px 10px;
|
|
114
|
+
border: 1px solid rgba(23, 28, 36, .16);
|
|
115
|
+
border-radius: 8px;
|
|
116
|
+
line-height: 1.4;
|
|
117
|
+
text-align: left;
|
|
118
|
+
background: var(--clay-ui-bg, #F4F4F5);
|
|
119
|
+
box-shadow: 0 10px 28px -14px rgba(23, 28, 36, .5);
|
|
120
|
+
}
|
|
121
|
+
@media (pointer: coarse) {
|
|
122
|
+
.clay-menu-edit { min-height: 44px; padding: 6px 0; }
|
|
123
|
+
.clay-menu-goo { width: 44px; height: 44px; }
|
|
124
|
+
}
|
|
125
|
+
@media (prefers-color-scheme: dark) {
|
|
126
|
+
.clay-menu { color: var(--clay-ui-fg, #E9E9EC); }
|
|
127
|
+
.clay-menu-track,
|
|
128
|
+
.clay-menu-goo,
|
|
129
|
+
.clay-menu-list,
|
|
130
|
+
.clay-menu-note { border-color: rgba(233, 233, 236, .16); background: var(--clay-ui-bg, #26282C); }
|
|
131
|
+
.clay-menu-track { background: rgba(233, 233, 236, .22); }
|
|
132
|
+
.clay-menu-thumb { background: #E9E9EC; }
|
|
133
|
+
.clay-menu-list button:hover,
|
|
134
|
+
.clay-menu-list button:focus-visible { background: rgba(233, 233, 236, .12); }
|
|
135
|
+
}
|
|
136
|
+
@media (prefers-reduced-motion: reduce) {
|
|
137
|
+
.clay-menu-track, .clay-menu-thumb { transition: none; }
|
|
138
|
+
}`,D=()=>window.clay&&typeof window.clay.mode=="string"?window.clay.mode:z;function P(){if(document.getElementById("clay-menu-style"))return;let t=document.createElement("style");t.id="clay-menu-style",t.setAttribute("clay","editor-ui"),t.textContent=G,document.head.append(t)}function j(){if(document.querySelector(".clay-menu"))return;P();let t=document.createElement("div");t.className="clay-menu",t.setAttribute("clay","editor-ui"),t.setAttribute("clay-mode-toggle",""),t.innerHTML=`<button type="button" class="clay-menu-edit" role="switch" aria-checked="false"><span class="clay-menu-track" aria-hidden="true"><span class="clay-menu-thumb"></span></span><span class="clay-menu-label">Edit</span></button><button type="button" class="clay-menu-goo" aria-haspopup="menu" aria-expanded="false" aria-label="Clay menu">${B}</button><div class="clay-menu-list" role="menu" hidden></div><div class="clay-menu-note" role="status" hidden></div>`;let a=t.querySelector(".clay-menu-edit"),l=t.querySelector(".clay-menu-goo"),i=t.querySelector(".clay-menu-list"),p=t.querySelector(".clay-menu-note"),b=new Map,c=()=>!i.hidden;function w(e){i.hidden=!e,l.setAttribute("aria-expanded",e?"true":"false")}let Q=()=>[...i.querySelectorAll('[role="menuitem"]')];function m(e){let r=Q();r.length&&r[(e+r.length)%r.length].focus()}function s(){c()&&w(!1)}function f(){c()||w(!0)}function N(){let e=i.contains(document.activeElement);i.textContent="";for(let o of b.values()){let u=document.createElement("button");u.type="button",u.setAttribute("role","menuitem"),u.dataset.menuId=o.id,u.textContent=o.label,u.addEventListener("click",()=>{s(),o.run&&o.run()}),i.append(u)}let r=l.querySelector(".clay-menu-dot"),n=[...b.values()].some(o=>o.badge);if(n&&!r){let o=document.createElement("span");o.className="clay-menu-dot",l.append(o)}else!n&&r&&r.remove();e&&m(0)}function v({id:e,label:r,run:n,badge:o}={}){return e?(b.set(e,{id:e,label:String(r??""),run:typeof n=="function"?n:null,badge:!!o}),N(),e):null}function Z(e){e&&(p.textContent=e,p.hidden=!1,clearTimeout(k),k=setTimeout(()=>{p.hidden=!0,p.textContent=""},$))}let k=0,g=!1;function h(){a.setAttribute("aria-checked",D()==="edit"?"true":"false")}h(),document.addEventListener("clay:modechange",h),a.addEventListener("click",async()=>{if(g)return;let e=a.getAttribute("aria-checked"),r=D()==="edit"?"view":"edit";g=!0,a.setAttribute("aria-busy","true"),a.disabled=!0;let n;try{n=await window.clay?.setMode?.(r)}catch(o){n={ok:!1,message:o&&o.message}}if(!(n&&n.reloading))if(g=!1,a.removeAttribute("aria-busy"),a.disabled=!1,n&&n.ok===!1){a.setAttribute("aria-checked",e);let o=q(n);o&&Z(o)}else h()}),l.addEventListener("click",()=>{c()?s():f()}),document.addEventListener("click",e=>{c()&&!t.contains(e.target)&&s()}),t.addEventListener("keydown",e=>{if(e.key==="Escape"){if(!c())return;e.preventDefault(),s(),l.focus();return}if(e.target===l&&(e.key==="Enter"||e.key===" ")){e.preventDefault(),c()?s():(f(),m(0));return}if(!c())return;if(e.key==="Enter"&&i.contains(e.target)){e.preventDefault(),e.target.click();return}let r=Q();if(!r.length)return;let n=r.indexOf(document.activeElement);e.key==="ArrowDown"?(e.preventDefault(),m(n<0?0:n+1)):e.key==="ArrowUp"&&(e.preventDefault(),m(n<0?r.length-1:n-1))});let E=document,d=null,C=null;function F(e){t.style.top=`${Math.round(e.getBoundingClientRect().bottom)+U}px`}function M(){if(!t.isConnected)return;let e=E.querySelector(".clay-intro");if(e!==C){if(d&&(d.disconnect(),d=null),C=e,!e){t.style.removeProperty("top");return}typeof ResizeObserver=="function"&&(d=new ResizeObserver(()=>F(e)),d.observe(e)),F(e)}}let y=document.createElement("style");y.id="clay-menu-vars",y.setAttribute("clay","editor-ui"),document.head.append(y);function A(){let e=t.getBoundingClientRect();y.textContent=`:root { --clay-menu-width: ${Math.ceil(e.width)}px; --clay-menu-height: ${Math.ceil(e.height)}px; }`}document.body.append(t),A(),typeof ResizeObserver=="function"&&new ResizeObserver(A).observe(t),new MutationObserver(M).observe(E.body,{childList:!0}),M();let S=()=>import("../c-UXBMRDZB.js").then(e=>e.open());if(_){v({id:"seo",label:"SEO settings\u2026",run:S});let e=window.clay.storage&&window.clay.storage.session;e&&e.get("reopen-seo")===!0&&(e.remove("reopen-seo"),S().catch(()=>{}))}window.clay.menu={addItem:v,open:f,close:s}}var I=!1,H=()=>(O||L)&&!x;function T(){I||!H()||(I=!0,j())}x||(R(T),document.addEventListener("clay:capabilitychange",T));
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import"../c-VHNSBD2M.js";function y(e){let t={},n=r=>{let o=r.getAttribute("name"),s=r.value??r.getAttribute("value");if(!(!o||r.disabled))switch(r.type){case"checkbox":t[o]||(t[o]=[]),r.checked&&t[o].push(s);break;case"radio":r.checked&&(t[o]=s);break;case"select-multiple":t[o]=Array.from(r.selectedOptions,w=>w.value);break;case"button":case"submit":case"reset":o&&s&&(t[o]=s);break;default:t[o]=s}};return e instanceof HTMLFormElement?Array.from(e.elements).forEach(n):(e.hasAttribute("name")&&n(e),e.querySelectorAll("[name]").forEach(n)),t}var u=y;var d="/_/message",E="/_/form-token",T=5400*1e3,m=["click","keydown","pointerdown","touchstart","input","change"],k=Object.fromEntries(m.map(e=>[e,0])),c=null,h=0,a=null,i=new WeakSet;function g(){return a||(a=fetch(E,{credentials:"omit",cache:"no-store"}).then(e=>e.ok?e.json():null).then(e=>{e&&typeof e.token=="string"&&(c=e.token,h=Date.now())}).catch(()=>{}).finally(()=>{a=null})),a}async function A(){(!c||Date.now()-h>T)&&await g();let e=c;return c=null,e}function v(){return{webdriver:navigator.webdriver===!0,trusted:{...k}}}function p(e){if(!(e instanceof HTMLFormElement))return!1;if(e.hasAttribute("message-form"))return!0;let t=e.getAttribute("action");if(!t)return!1;try{let n=new URL(t,window.location.href);return n.origin===window.location.origin&&n.pathname===d}catch{return!1}}async function b(e={}){let t=await f(e);return t.code==="form-token"?f(e):t}async function f(e){let t=await A(),n;try{n=await fetch(d,{method:"POST",credentials:"omit",headers:{"Content-Type":"application/json","Document-URL":window.location.href},body:JSON.stringify({...e,formToken:t,formSignals:v()})})}catch{return{ok:!1,error:"The message couldn't be sent. Check your connection and try again."}}let r=await n.json().catch(()=>null);if(n.ok)return r?{ok:!0,error:null}:{ok:!1,error:"This page can't send messages."};if(!r)return{ok:!1,error:`The message couldn't be sent (${n.status}).`};let o=r.error||r.msg||`The message couldn't be sent (${n.status}).`;return r.code==="form-token"?{ok:!1,error:o,code:"form-token"}:{ok:!1,error:o}}async function S(e){let t=e.target;if(!(e.defaultPrevented||!p(t))&&(e.preventDefault(),!i.has(t))){i.add(t);try{let n=await b(u(t));n.ok&&t.reset();let r=new CustomEvent(n.ok?"clay:message-sent":"clay:message-failed",{bubbles:!0,cancelable:!0,detail:n});if(!t.dispatchEvent(r))return;let o=window.clay?.toast;if(!o)return;n.ok?o(t.getAttribute("message-form")||"Sent","success"):o(n.error,"error")}finally{i.delete(t)}}}function l(e){if(c||a)return;let t=e.target?.closest?.("form");t&&p(t)&&g()}if(typeof document<"u"){for(let e of m)document.addEventListener(e,t=>{t.isTrusted&&k[e]++},{capture:!0,passive:!0});document.addEventListener("focusin",l,!0),document.addEventListener("input",l,!0),document.addEventListener("submit",S)}var D={send:b},F=D;export{F as default,D as message,b as send};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{a as ge}from"../c-3GJ4SDE2.js";import{a as ce,b as ie}from"../c-4FFHZM32.js";import"../c-PZ4XEPUP.js";import{a as ze,b as pe}from"../c-BMIZKMPV.js";import{a as Je}from"../c-BYTKL6UX.js";import{a as Ge,b as F,c as E}from"../c-4L3BTFRK.js";import{a as Ke}from"../c-L4WQSC27.js";import{d as We,e as Ye,i as $e,m as H,n as Ue,p as J,q as fe,r as Xe}from"../c-R7RMANJI.js";import{a as Be}from"../c-TCCA5BZN.js";import{k as de}from"../c-LRPUO2MX.js";import"../c-A7LS5UZW.js";import"../c-5V3MOVJT.js";import"../c-LZJPNR2W.js";import{b as Ve}from"../c-FILLTJA7.js";import{a as Fe}from"../c-NUHP2XDB.js";import{A as _e,E as qe,d as Ne,e as X,m as ue,n as G}from"../c-CJZSLMVQ.js";import"../c-GQ6F6IDK.js";import{a as Me}from"../c-2SPVQSHC.js";import"../c-5VYOWDTI.js";import"../c-7VGZ7RU5.js";import"../c-4YSCRICO.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-HT33EQRN.js";import{d as U}from"../c-B2ZXPOS3.js";import"../c-TQEMVJCS.js";import{a as Le,c as De,d as He}from"../c-3IQRECYS.js";import{d as xe}from"../c-AYVOREBE.js";import"../c-IJUK2GPW.js";import{n as Ce}from"../c-7O6AFR65.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{q as D}from"../c-35NBGMZB.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-GHBCCVG4.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var Vr=Object.freeze({"page-converting":"retrying","page-capacity":"retrying",busy:"retrying","rate-limited":"retrying",offline:"retrying",network:"retrying","network-error":"retrying",timeout:"retrying","save-history-pending":"retrying","page-condition-required":"blocked","page-conversion-refused":"blocked","page-conversion-required":"blocked","page-conversion-stale":"blocked","save-id-reused":"blocked","too-large":"blocked","unsupported-host":"blocked","save-history-refresh-required":"blocked","provenance-unsupported":"blocked","receipt-expired":"blocked"}),z="Can't save here. Your edits are still in this tab.",K="Still trying to save. Your edits are safe in this tab.";function M({ok:e=!1,code:r=null,offline:t=!1}={}){return e?"saved":t?"retrying":Vr[r]??"error"}function Qe(e){let r;try{r=new DOMParser().parseFromString(e,"text/html")}catch{return e}let t=[...r.querySelectorAll('script[type="application/json"][merge="page"][clay~="live"]')].filter(y=>!y.closest("template")&&!y.closest("noscript"));if(t.length!==1)return e;let a=t[0].outerHTML,l=e.indexOf(a);return l<0||e.indexOf(a,l+1)!==-1?e:e.slice(0,l)+e.slice(l+a.length)}function Q(){let{forSave:e}=D();return ie({html:Qe(e),name:`${ce()}.html`})}function ye(e){return ie({html:Qe(e),name:`${ce()}.html`})}async function Ze(){try{let{forSave:e}=D(),t=new DOMParser().parseFromString(e,"text/html").querySelectorAll("article[data-page]");return t.length!==1?!1:(await navigator.clipboard.writeText(t[0].textContent),!0)}catch{return!1}}var er="clay.page.author",he="clay.page.author.owned.",rr=()=>globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;function tr(e=globalThis.localStorage){try{let r=[];for(let a=0;a<e.length;a++){let l=e.key(a);l&&l.startsWith(he)&&r.push(l.slice(he.length))}let t=e.getItem(er);return(!t||!r.includes(t))&&(t=rr(),e.setItem(he+t,"1"),e.setItem(er,t),r.push(t)),{token:t,owned:r.sort()}}catch{let r=rr();return{token:r,owned:[r]}}}var A=Object.freeze({loading:"loading",joining:"joining",adopting:"adopting",ready:"ready",blocked:"blocked",error:"error"}),Br=new Set([A.ready,A.blocked,A.error]),or=0,lr=()=>globalThis.performance?.now?.()??Date.now();function nr({gen:e=0,isCurrent:r=()=>!0,onPhase:t=null}={}){return or+=1,{installId:or,gen:e,isCurrent:r,onPhase:typeof t=="function"?t:null,phase:A.loading,result:null,at:lr(),controller:new AbortController,disposers:[],disposed:!1,steps:null,deferred:null}}function p(e){return!e.disposed&&!e.controller.signal.aborted&&e.isCurrent()!==!1}function me(e,r){return p(e)&&!!r?.view&&e.mounted===r.view}function C(e,r,t=null){if(Br.has(e.phase)&&e.result)return e.result;e.phase=r,e.at=lr(),e.result=Object.freeze({phase:r,reason:t??null,installId:e.installId,at:e.at});try{e.onPhase?.(e.result)}catch(a){console.error("clayjs: page boot phase callback failed",a)}return e.result}function we(e,r){let t=C(e,A.blocked,r);return e.editorReadyResolve?.(),t}function sr(e,r){return C(e,A.error,r)}function ee(e,r){return typeof r=="function"&&e.disposers.push(r),r}function ve(e){if(e.disposed)return;e.disposed=!0,e.mounted=null;try{e.controller.abort()}catch(t){console.error("clayjs: page boot abort failed",t)}let r=e.disposers.splice(0).reverse();for(let t of r)try{t()}catch(a){console.error("clayjs: a page boot disposer failed",a)}}function Z(e,r){let t=globalThis.performance;if(typeof t?.mark=="function")try{t.mark(e,{detail:{installId:r.installId}})}catch{try{t.mark(e)}catch{return}}}function Wr(e,r){try{r.release?.(e)}catch(t){console.error("clayjs: page boot release failed",t)}}function V(e,r,t){return r.cancelled?null:(Wr(e,t),we(e,r.reason??"boot-incomplete"))}function ar(e,r,t,a=null){return Promise.resolve(e).then(l=>l??{ok:!1,reason:t},l=>(console.error(`clayjs: page boot ${t}`,l),{ok:!1,reason:t})).then(l=>(l.ok&&a&&p(r)&&Z(a,r),l))}function Yr(e,r){return new Promise(t=>{let a=e.controller.signal,l=!1,y=b=>{l||(l=!0,t(b))};if(a.aborted)return y({cancelled:!0});a.addEventListener("abort",()=>y({cancelled:!0}),{once:!0});let h=new Array(r.length),k=r.length;r.forEach((b,P)=>{b.then(S=>{if(!l){if(!S.ok)return y({result:S,branch:b});h[P]=S,k-=1,k===0&&y({results:h})}})})})}async function cr(e,r,{activate:t=!0}={}){Z("document:boot",e),C(e,A.loading);let a=r.readSource(e);if(!p(e))return null;if(!a.ok)return we(e,a.reason);let l=a.source;C(e,A.joining);let y=await Yr(e,[ar(r.loadEditorAssets(e,l),e,"editor-assets-failed","document:assets-ready"),ar(r.prepareAuthority(e,l),e,"authority-failed","document:authority-ready")]);if(y.cancelled||!p(e))return null;if(!y.results){try{e.controller.abort()}catch(O){console.error("clayjs: page boot abort failed",O)}return V(e,y.result,r)}let[h,k]=y.results,b=r.mountAndAttach(e,l,h,k);if(!p(e))return null;if(!b.ok)return V(e,b,r);e.mounted=b.view??null,C(e,A.adopting);let P=await r.adoptSource(e,l,b);if(!p(e))return null;if(!P.ok)return V(e,P,r);if(!t){if(r.prepareInput){let O=await r.prepareInput(e,b);if(!p(e))return null;if(!O.ok)return V(e,O,r)}return e.deferred=b,{phase:e.phase,view:b.view,deferred:!0}}let S=await r.enableInput(e,b);return p(e)?S.ok?(Z("document:input-ready",e),C(e,A.ready)):V(e,S,r):null}function ir(e){let r=e.deferred;if(e.deferred=null,!r||!p(e))return e.result??null;let t=e.steps?.openInput?.(e,r);return t?.ok?(Z("document:input-ready",e),C(e,A.ready)):we(e,t?.reason??"input-refused")}var W="article[data-page]",oe='script[type="application/json"][merge="page"][clay~="live"]',ur={state:"blocked",code:"unsupported-host",message:"This host does not support page editing"},$r=45e3,Ur="Couldn't save",Xr="Offline, not saved",gr="This page was changed outside the editor. Reload to see it.",Gr="That change is too large to share, so it was not saved. Reload the page to keep editing.",Jr="Some changes you made were replaced by a change made outside the editor.",yr="The page was changed outside the editor; reload to see it.",zr=150,Kr="Loading the editor\u2026",Se="the page session has not committed yet",dr=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function be(e){return dr(e)?e.v!==1||!dr(e.y)||Object.hasOwn(e,"blocks")||Object.hasOwn(e,"deleted")?(console.warn("clayjs: page plugin: the page tag is not a strict Yjs page, leaving the page as saved HTML"),"unsupported-page-format"):null:(console.warn("clayjs: page plugin: the page tag is not JSON, leaving the page as saved HTML"),"invalid-page-json")}var N=null,fr=null;function x(){return fr??=import("../c-ZDY2MDAA.js").then(e=>N=e),fr}function Qr(e){let r=new Set;return e.forEach(t=>{let a=pe(t.type.name);a&&r.add(a)}),[...r]}function L(e){e.statusTimer&&(clearTimeout(e.statusTimer),e.statusTimer=null),e.statusNote?.remove(),e.statusNote=null}function Zr(e,r){L(e),e.statusTimer=setTimeout(()=>{if(e.statusTimer=null,!p(e))return;let t=r.ownerDocument.createElement("div");t.className="page-boot-status",t.setAttribute("clay","editor-ui"),t.setAttribute("sap-ignore",""),t.setAttribute("role","status"),Fe(t,["display:block","margin:0 0 1em","font:500 13px/1.6 system-ui, sans-serif","color:color-mix(in srgb, currentColor 55%, transparent)","user-select:none"]),t.textContent=Kr,r.prepend(t),e.statusNote=t},zr)}var ae=0,R=null,re=null,et=8e3;function rt(e,r=globalThis.location){let t=r?.hash?.slice(1);if(!t)return;let a;try{a=decodeURIComponent(t)}catch{return}let l=-1;e.state.doc.forEach((y,h)=>{l<0&&y.attrs.id===a&&(l=h)}),!(l<0)&&globalThis.requestAnimationFrame?.(()=>e.nodeDOM(l)?.scrollIntoView?.({block:"start"}))}function Ae(e,r,t){document.dispatchEvent(new CustomEvent("clay:page-save-state",{detail:{state:e,code:r,message:t}}))}function hr(){E(Ur),E(Xr)}function mr(e){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.retryShown=!1,E(K)}function tt(e,r,t){hr(),Ae("retrying",r,t),!(e.retryTimer||e.retryShown)&&(e.retryTimer=setTimeout(()=>{e.retryTimer=null,e.retryShown=!0,F(K,"warning")},$r))}function wr(e,r,t){mr(e),hr(),Ae("blocked",r,t),F(z,"error",{detail:t,actions:[{label:"Download a copy",onClick:Q},{label:"Copy text",onClick:Ze}]})}function ot(e){mr(e),E(z),Ae("saved",null,"")}function at(e,r,t=!1){if(typeof e!="string"||!e)return!1;let a;try{a=new DOMParser().parseFromString(e,"text/html")}catch{return!1}let l=a.querySelectorAll(W);return t?l.length!==1&&!a.querySelector(oe):l.length!==1||a.querySelector(oe)?!1:l[0].getAttribute("data-rev")!==r}function lt(e){if(!e.store||!N)return e.savedRev;try{return N.renderFromTags([JSON.stringify(e.store.value)]).rev}catch{return e.savedRev}}function vr(e){let r=e.view;r&&(r.setProps({editable:()=>!1}),r.setProps({dispatchTransaction:t=>r.updateState(r.state.apply(t))}));try{e.binding?.dispose()}catch(t){console.error("clayjs: page plugin binding failed to dispose",t)}e.savesHeld||(e.savesHeld=!0,ue(yr))}function nt(e){if(!e.tabValue)return Q();let{forSave:r}=D(),t=new DOMParser().parseFromString(r,"text/html"),a=t.querySelectorAll(W);if(a.length!==1)return Q();let l=N.renderFromTags([JSON.stringify(e.tabValue)]);return a[0].innerHTML=l.html,l.rev==null?a[0].removeAttribute("data-rev"):a[0].setAttribute("data-rev",l.rev),ye(`<!DOCTYPE html>
|
|
2
|
+
${t.documentElement.outerHTML}`)}function br(e,r){e.replaced||(e.replaced=!0,vr(e),F(r,"warning",{actions:[{label:"Reload",onClick:()=>window.location.reload()},{label:"Download your copy",onClick:()=>nt(e)}]}))}var ke=e=>br(e,gr),st=e=>br(e,Gr);function B(e,r,t,a){r==="saved"?ot(e):r==="retrying"?tt(e,t,a):r==="blocked"&&wr(e,t,a)}function I(e,r,t){document.addEventListener(r,t),e.listeners.push([r,t])}function ct(e){I(e,"clay:save-error",t=>{let a=t.detail?.code??null;a!=="page-nothing-to-write"&&B(e,M({code:a}),a,t.detail?.msg??"")}),I(e,"clay:save-offline",t=>{let a=t.detail?.code??null;B(e,M({code:a,offline:!0}),a,t.detail?.msg??"")}),I(e,"clay:save-conflict",t=>{let a=t.detail?.code??null;B(e,M({code:a}),a,t.detail?.msg??"")});let r=t=>{ut(e,t)};I(e,"clay:save-conflict",r),I(e,"clay:save-error",r),I(e,"clay:save-saved",t=>{B(e,M({ok:!0}),null,t.detail?.msg??""),e.savedRev=lt(e),e.adoption?.saved(_e())}),I(e,"clay:live-notice",t=>{if(t.detail?.name!=="page"||t.detail?.code==="op-too-large")return;if(t.detail?.code==="unknown-store"){ke(e);return}let a=t.detail?.code??null;B(e,M({code:a}),a,t.detail?.message??"")})}async function it(){let e=await fetch(new URL(globalThis.location.href).href,{cache:"no-store"});if(!e?.ok)return null;let r=await e.text(),a=new DOMParser().parseFromString(r,"text/html").querySelector(W);return a?{article:a,etag:e.headers?.get?.("etag")||null}:null}async function ut(e,r){let t=e.staged;if(!t||e.staleRetry||e.replaced)return;let a=r?.detail?.code??null;if(!(a!=="page-lineage-stale"&&a!=="conflict")&&!(!e.store||!t.isPending())){e.staleRetry=!0;try{let l=await it();if(!l||!p(e))return;let y=await x();if(!p(e))return;let h=y.seedPageFromArticle(l.article.cloneNode(!0)),k=l.etag??r?.detail?.etag??null;k&&De(k),e.store.rebase(h,{source:"state"}),await qe()}catch(l){console.warn("clayjs: page plugin could not offer the refused first write again",l)}}}function Re(e){let r=e.article;if(!r)return;let t=e.bootHtml,a=e.bootRev;if(e.store&&N)try{let l=N.renderFromTags([JSON.stringify(e.store.value)]);t=l.html,a=l.rev}catch(l){console.error("clayjs: page plugin could not render the saved article",l)}r.innerHTML=t,a==null?r.removeAttribute("data-rev"):r.setAttribute("data-rev",a)}function Ee(e){for(let[r,t]of e.listeners)document.removeEventListener(r,t);e.listeners=[];try{e.adoption?.dispose()}catch(r){console.error("clayjs: page plugin adoption failed to dispose",r)}e.adoption=null;try{e.recover?.destroy()}catch(r){console.error("clayjs: page plugin recover list failed to dispose",r)}if(e.recover=null,e.aiTool?.dispose(),e.aiTool=null,e.awareness?.dispose(),e.awareness=null,e.toolHost?.dispose(),e.toolHost=null,e.view&&Je.delete(e.view),e.article){let r=e.article.querySelector(".page-shell");r&&r.remove()}try{e.binding?.dispose()}catch(r){console.error("clayjs: page plugin binding failed to dispose",r)}try{e.binding?.ydoc?.destroy()}catch(r){console.error("clayjs: page plugin document failed to destroy",r)}try{e.staged?.close()}catch(r){console.error("clayjs: page plugin staged store failed to close",r)}if(e.staged=null,e.pageStore){try{Ue("page",e.pageStore)}catch(r){console.error("clayjs: page plugin store failed to close",r)}e.pageStore=null}e.binding=null,e.flush=null,e.releaseArticle?.(),e.releaseArticle=null}function pr(e){let r=e.view;if(r&&!r.isDestroyed&&typeof r.destroy=="function")try{r.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}e.titleObserver?.dispose(),e.titleObserver=null,L(e),Ee(e),Re(e)}function Te(){ae+=1;let e=R;if(R=null,U("Page-Write",null),!!e){ve(e),e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),E(K),E(z),E(gr);for(let r of e.notices?.values()??[])E(r);if(e.savesHeld&&(e.savesHeld=!1,G({replay:!1,reason:yr})),e.titleObserver?.dispose(),e.titleObserver=null,L(e),e.sessionHeld&&G({replay:!1,reason:Se}),e.autosaveSuspended&&X(),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(r){console.error("clayjs: page plugin view failed to destroy",r)}Ee(e),Re(e)}}function dt(e,r){let t=null,a=null,l=null,y=null,h=null,k=null,b=null,P=[],S=null,O=null,_=null,Y=null,$=null,Ar=new Promise(o=>{y=o});e.editorReadyResolve=y,ee(e,()=>y?.()),ee(e,()=>L(e));let Oe='script[type="application/json"][merge="page.tools"][clay~="live"]',Rr=()=>_||(_=(async()=>{if(!document.querySelector(Oe)){let c=document.createElement("script");c.setAttribute("type","application/json"),c.setAttribute("merge","page.tools"),c.setAttribute("clay","live"),c.textContent="{}",document.head.appendChild(c)}if(document.querySelector(Oe))try{S=window.clay.live("page.tools"),await S.ready}catch(c){console.warn("clayjs: page plugin could not open the tool store",c)}if(!p(e))return null;let[{createToolHost:o},{tablesFromDoc:n}]=await Promise.all([import("../c-GOWBDM6J.js"),import("../c-PPOSCAQD.js")]);if(!p(e))return null;let s=o({store:S,mode:"edit",tables:()=>n(l?.state.doc??a.doc()).map(({id:c,cols:d,rows:i})=>({id:c,cols:d,rows:i}))});if(e.toolHost=s,ge(t)){let{createAiTool:c}=await import("../c-TQZ2JYHD.js");if(!p(e))return null;let d=window.clay?.wire?.pageTool??r.transport??null;O=c({getView:()=>e.view,store:S,transport:d,acceptState:r.acceptState}),e.aiTool=O}return s})().catch(o=>{throw _=null,o}),_),q=new Map,Er=o=>{if(q.has(o))return;let n=`The ${o} controls could not load. Reload the page after saving.`;q.set(o,n),F(n,"warning",{actions:[{label:"Retry",onClick:()=>{k.ensure(o).then(()=>{let s=q.get(o);s&&(q.delete(o),E(s))},()=>{})}}]})};e.notices=q;let ne=async({target:o=null,remove:n=null}={})=>{Y&&l&&n&&Y.holdSlashRange(l,n),await k.ensure("tool").catch(()=>{}),!(!p(e)||!O||!l)&&O.open({target:o,remove:n?Y.heldSlashRange(l.state):null})},se=()=>ge(t);function Or(o){let n=document.querySelectorAll(W),s=typeof o.context?.represented?.bytes=="string"?new DOMParser().parseFromString(o.context.represented.bytes,"text/html"):null,c=s?s.querySelectorAll(W):n,d=s?s.querySelectorAll(oe):document.querySelectorAll(oe);if(!c.length&&!d.length)return{ok:!1,reason:"no-page"};let i=c.length===1&&d.length===0;if(c.length!==1||!i&&d.length!==1)return console.warn(`clayjs: page plugin needs exactly one article[data-page] and one merge="page" live tag; found ${c.length} article(s) and ${d.length} tag(s), leaving the page as saved HTML`),{ok:!1,reason:"ambiguous-page"};let g=n[0];if(!g)return{ok:!1,reason:"no-page"};let u=c[0],w=d[0],v=null;if(!i){try{v=Be(w?.textContent)}catch{v=null}let T=be(v);if(T)return{ok:!1,reason:T}}let m={article:u.cloneNode(!0),tags:v?[v]:null,element:g,blocks:null,seeded:i,seedValue:null};return m.ready=(async()=>{let T=await x();if(!p(o))return{ok:!1,cancelled:!0};if(i){try{v=m.seedValue=T.seedPageFromArticle(m.article.cloneNode(!0))}catch(j){return console.warn("clayjs: page plugin could not rebuild the page it found, leaving the page as saved HTML",j),{ok:!1,reason:"invalid-page-source"}}let f=be(v);if(f)return{ok:!1,reason:f};m.tags=[v]}try{m.blocks=T.blocksFromYValue(v)}catch(f){return console.warn("clayjs: page plugin: the page tag is not a valid Yjs page, leaving the page as saved HTML",f),{ok:!1,reason:"invalid-page-json"}}return{ok:!0}})(),Zr(o,g),{ok:!0,source:m}}function jr(o,n){if(be(n))return!1;if(de(o.authoritative)===de(n))return!0;try{return o.rebase(n,{source:"state"})}catch(s){return console.warn("clayjs: page plugin could not reconcile the open page store with the saved file",s),!1}}async function Pr(o,n){let s=x();s.catch(()=>null);let c=await n.ready;if(!c.ok)return c;if(!p(o))return{ok:!1,cancelled:!0};let d=await s,i=[...new Set(Object.values(n.blocks).map(u=>pe(u.t)).filter(Boolean))];k=d.createFeatureLoader({load:u=>ze[u].load(),install:async(u,w)=>{if(l||await Ar,!p(o)||!l)return null;let v={view:l,upload:r.upload,board:a.board,undo:a.undo,redo:a.redo,revise:se()?(m,T)=>{ne({target:{toolId:m,rev:T}})}:null};return u==="tool"&&(v.toolHost=await Rr(),!p(o))?null:g.installPageFeature(v,u,w)},reportError:(u,w)=>{console.error("clayjs: an editor feature failed to load",u),Er(w)}});for(let u of i)k.prepare(u).catch(()=>null);let g=null;try{g=await import("../page/editor-XUTB2HB2.js"),$=g.setEditorActive,Y={holdSlashRange:d.holdSlashRange,heldSlashRange:d.heldSlashRange}}catch(u){return console.error("clayjs: page plugin could not load the editor",u),{ok:!1,reason:"editor-assets-failed"}}return p(o)?{ok:!0,editor:g.createPageEditor,refreshView:g.refreshMountedView,featureIds:i,code:d}:{ok:!1,cancelled:!0}}async function Ir(o,n){let s=x();try{t=await xe()}catch{t=null}if(!p(o))return{ok:!1,cancelled:!0};if(!t||!Array.isArray(t.extensions)||!t.extensions.includes("page"))return wr(o,ur.code,ur.message),{ok:!1,reason:"missing-capability"};o.mergeTagless=!t.extensions.includes("live-data"),U("Page-Write","v1");let c=null,d=null;if(n.seeded){if(c=await n.ready,!c.ok)return c;if(d=await s,!p(o))return{ok:!1,cancelled:!0}}let i,g=!0;try{if(n.seeded){let f=$e("page",{value:n.seedValue,represented:r.represented??{bytes:n.article.outerHTML,etag:He()??Le()}});o.staged=f,i=f.handle}else{let f=H("page")===null;g=f,i=window.clay.live("page"),f&&(o.pageStore=H("page"))}}catch(f){return console.warn("clayjs: page plugin could not open the page store",f),{ok:!1,reason:"missing-page-store"}}try{await i.ready}catch(f){return console.warn("clayjs: page plugin could not join the page room",f),{ok:!1,reason:"admission-failed"}}if(!p(o))return{ok:!1,cancelled:!0};if(c??=await n.ready,!c.ok)return c;let u=H("page")?.handle?.status?.mode==="fast";if(!g&&!u&&!jr(H("page"),n.tags?.[0]))return{ok:!1,reason:"stale-store"};if(d??=await s,!p(o))return{ok:!1,cancelled:!0};let w=H("page");if(!w)return{ok:!1,reason:"missing-page-store"};o.store=w;let v=!1,m=null,T=async f=>{let j=await f();return v=j?.ok===!1,m?.changed(),j};return h=tr(),a=d.createYPageBinding({store:w,onStopped:f=>{o.tabValue=d.yValueOf(a.ydoc),f==="lineage"?(J()?.abandon?.("page"),ke(o)):st(o)},authorToken:h.token,ownedTokens:h.owned,checkpointWithin:fe,requestCheckpoint:Xe,registerUnsavedState:f=>(m=Me({id:f.id,isPending:()=>v||f.isPending(),flush:()=>T(()=>f.flush())}),m)}),o.binding=a,o.flush=f=>T(()=>a.flush(f)),ct(o),{ok:!0,store:w,handle:i}}function Cr(o,n){import("../c-NMJRXKPC.js").then(async s=>{if(o.view!==n)return;let c=await s.installPageAwareness({binding:o.binding,view:n});if(c){if(o.view!==n||n.isDestroyed){c.dispose();return}o.awareness=c}}).catch(s=>console.error("clayjs: page plugin remote carets failed to load",s))}function xr(o,n,s){let c=n.element;o.context?.reader?.yieldArticle?.();try{o.releaseArticle=Ke(c,"editor")}catch(u){return console.error("clayjs: page plugin could not claim the article",u),{ok:!1,reason:"article-owned"}}o.source=n,o.article=c,o.bootHtml=n.article.innerHTML,o.bootRev=n.article.getAttribute("data-rev"),o.savedRev=o.bootRev,I(o,"clay:sync-applied",u=>{o.replaced||at(u.detail?.html,o.savedRev,o.mergeTagless)&&ke(o)}),P=[...c.childNodes].filter(u=>u!==o.statusNote);let d=c.ownerDocument.createElement("div"),i=null;try{i=s.editor(d,{doc:a.doc(),dispatch:a.dispatch,history:!1,undo:a.undo,redo:a.redo,board:a.board,editable:!1,features:k,onAiTool:se()?(u,w)=>{ne({remove:w})}:null,reviseTool:se()?(u,w)=>{ne({target:{toolId:u,rev:w}})}:null})}catch(u){return console.error("clayjs: page plugin could not mount the editor",u),d.replaceChildren(),o.releaseArticle?.(),o.releaseArticle=null,o.article=null,{ok:!1,reason:"mount-failed"}}l=i,o.view=i;let g=i.dom.closest(".page-shell");if(g&&(g.inert=!0),s.featureIds.length&&g&&(g.style.visibility="hidden"),!s.featureIds.length)for(let u of P)u.remove();return g&&c.appendChild(g),s.refreshView?.(i),a.attach(i),Cr(o,i),y(),b=Promise.allSettled(s.featureIds.map(u=>k.ensure(u))),rt(i),o.recover=s.code.createRecoverList({binding:a,mount:i.dom.closest(".page-shell")??c,ownTokens:[h.token,...h.owned],onRestored:u=>s.code.focusBlock(i,u),onStale:()=>Ge("That change was updated. The list now shows the latest version.","warning")}),o.titleObserver=s.code.observeDocumentTitle(i),{ok:!0,view:i,featureIds:s.featureIds}}async function Lr(o,n){try{let s=await x(),{HyperMorph:c}=await Ve(),d=s.blocksFromYValue(o.store.authoritative),i=s.readBack(d,document),g=s.mergePageModels(n.baseItems,i,n.parsed,{doc:document,merge3:c.merge3,mergeJson:c.mergeJson});return s.canon(g.items)===s.canon(i)}catch{return!1}}async function Dr(o,n){let s=await x();return await Lr(o,n)?{ok:!0,outcome:"writer-adopts"}:new Promise(c=>{let d=null,i=null,g=!1,u=w=>{g||(g=!0,i&&clearTimeout(i),i=null,d?.(),d=null,c(w))};ee(o,()=>u({ok:!1,cancelled:!0})),d=o.store.onRebase(w=>{w.source==="remote"&&u({ok:!0,outcome:"writer-adopts"})}),i=setTimeout(()=>{console.warn("page: gave up waiting for the writer's adoption; the hand edit was not adopted"),u({ok:!1,reason:"adoption-timeout"})},s.ADOPTION_TIMEOUT_MS)})}async function Hr(o,n,s){let c=await x(),d=c.classifyFile(n.article,n.tags),i=d.kind==="adopt",g=async()=>{let m=await We();if(!m||!p(o))return;if(m.status.writer===null){let f=o.store.value.y,j=Object.keys(f),_r=j.length?j[0]:`claim-${a.ydoc.clientID.toString(36)}`,qr=j.length?f[j[0]]:c.yValueOf(a.ydoc).y.seed;o.store.handle.set(["y",_r],qr),m.release("page")}let T;await Promise.race([Ye(),new Promise(f=>{T=setTimeout(f,et)})]),clearTimeout(T)},u=i?g():Promise.resolve(),w=c.installAdoption({view:s.view,source:n,ready:u,isAdopter:()=>{let m=J();return!m||m.status.writer===null?!0:m.isWriter()},requestCheckpoint:()=>fe(0),snapshot:()=>D().forSave,mergeTagless:o.mergeTagless,writerReady:g,adopted:m=>J()?.adopted?.("page",m,o.store.mark),notice:m=>{m.copy&&F(Jr,"warning",{actions:[{label:"Download your copy",onClick:()=>ye(m.copy)}]})}});o.adoption=w;let v=await w.idle();return v?(v.outcome==="writer-adopts"&&(v=await Dr(o,d)),!v.ok&&p(o)&&pr(o),v):{ok:!0,outcome:"unchanged"}}async function je(o,n){if(o.replaced)return{ok:!1,reason:"page-replaced"};if(await b,!p(o))return{ok:!1,cancelled:!0};let s=n.view.dom.closest(".page-shell");if(!me(o,n)||!s||!s.isConnected||n.view.isDestroyed)return{ok:!1,reason:"view-detached"};let c=new Set(n.featureIds??[]),d=Qr(n.view.state.doc).filter(i=>!c.has(i));return d.length&&(await Promise.allSettled(d.map(i=>k.ensure(i))),!p(o))?{ok:!1,cancelled:!0}:{ok:!0}}function Pe(o,n){let s=n.view.dom.closest(".page-shell"),c=()=>{for(let d of P)d.remove();s&&(s.style.visibility="")};return o.replaced?(c(),vr(o),{ok:!1,reason:"page-replaced"}):o.inputOpen?{ok:!0}:!me(o,n)||!s||!s.isConnected||n.view.isDestroyed?{ok:!1,reason:"view-detached"}:(c(),s.inert=!1,$?.(n.view,!0),o.inputOpen=!0,L(o),{ok:!0})}function Fr(o){return o.inputOpen?($?.(o.view,!1),!0):!1}function Mr(o){return o.inputOpen?($?.(o.view,!0),!0):!1}async function Nr(o,n){let s=await je(o,n);return s.ok?Pe(o,n):s}let Ie={readSource:Or,loadEditorAssets:Pr,prepareAuthority:Ir,mountAndAttach:xr,adoptSource:Hr,prepareInput:je,openInput:Pe,closeInput:Fr,resumeInput:Mr,enableInput:Nr,release:o=>{o.view||pr(o)}};return e.steps=Ie,Ie}async function ft(e,r={},{activate:t=!0}={}){return cr(e,dt(e,r),{activate:t})}function kr(e={},{activate:r=!0,context:t=null}={}){Te(),re=null;let a=++ae,l={...nr({gen:a,isCurrent:()=>a===ae&&(t?.isCurrent?.()??!0),onPhase:h=>{(h.phase==="ready"||h.phase==="blocked"||h.phase==="error")&&L(l),e.onPhase?.(h)}}),article:null,view:null,binding:null,adoption:null,source:null,store:null,toolHost:null,aiTool:null,bootHtml:"",bootRev:null,savedRev:null,staged:null,pageStore:null,releaseArticle:null,replaced:!1,savesHeld:!1,flush:null,listeners:[],retryTimer:null,retryShown:!1,statusTimer:null,statusNote:null,notices:null,editorReadyResolve:null,context:t,inputOpen:!1,sessionHeld:!1,autosaveSuspended:!1,staleRetry:!1};R=l;let y=ft(l,e,{activate:r}).catch(h=>(console.error("clayjs: page plugin failed to install",h),re=sr(l,"boot-failed"),R===l&&Te(),re));return{inst:l,boot:y}}function Tr(e={}){return kr(e).boot}function pt(e){if(R===e&&(R=null,ae+=1),U("Page-Write",null),ve(e),e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.titleObserver?.dispose(),e.titleObserver=null,L(e),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(r){console.error("clayjs: page plugin view failed to destroy",r)}e.view=null,Ee(e),Re(e)}function te(e){e.sessionHeld&&(e.sessionHeld=!1,G({replay:!1,reason:Se}))}function Sr(e,{held:r=!0}={}){return{enable(){r&&(te(e),ir(e))},quiesce(){if(e.view?.composing)throw Object.assign(new Error("clayjs: a composition is still in progress"),{code:"composition"});e.steps?.closeInput?.(e),e.autosaveSuspended||(e.autosaveSuspended=!0,Ne())},resume(){te(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,X()),e.steps?.resumeInput?.(e)},dispose(){te(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,X()),pt(e)}}}function gt(e=null,r={}){ue(Se);let{inst:t,boot:a}=kr(r,{activate:!1,context:e});t.sessionHeld=!0;let l=Sr(t,{held:!0});le.ready=a.then(()=>le.status);let y=a.then(h=>{if(!h?.deferred)throw Object.assign(new Error("clayjs: the page session could not prepare"),{code:h?.reason??"load-failed"})});return y.catch(()=>{te(t);try{e?.reader?.reclaimArticle?.()}catch(h){console.error("clayjs: the reader could not take the article back",h)}}),{ready:y,...l}}function Vt(e={}){return{id:"clay:page",order:400,prepare(r={}){return r.initial===!0?R?Sr(R,{held:!1}):{enable(){},quiesce(){},resume(){},dispose(){}}:gt(r,e)}}}var le={ready:null,install:Tr,get status(){return R?.result??re},flush(e={}){let r=R;return!r||!r.flush?Promise.resolve({ok:!1,code:"disposed"}):r.flush(e)},dispose:Te,get view(){return R?.view??null}};le.ready=Ce()?Tr():null;var Bt=le;export{et as WRITER_WAIT_MS,dt as createSteps,Bt as default,Vt as modeParticipant,le as page,Vt as pageParticipant,gt as preparePageSession};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as ge,b as be,c as me,d as se,f as ve}from"../c-Z36J63PP.js";import{a as le}from"../c-L4WQSC27.js";import"../c-AYVOREBE.js";import{a as ye}from"../c-7O6AFR65.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var Se="saved",Pe=2;function Re(){return Math.random().toString(36).slice(2,11)+Date.now().toString(36)}function Ie(){try{let e=new Uint8Array(16);return(globalThis.crypto||window.crypto).getRandomValues(e),Array.from(e,r=>r.toString(16).padStart(2,"0")).join("")}catch{return Math.random().toString(36).slice(2)+Date.now().toString(36)}}function Ce(e){return typeof e!="string"||e===""?null:new DOMParser().parseFromString(e,"text/html").documentElement?.getAttribute("documentetag")||null}var H=e=>typeof e=="string"&&e?e:null;function Me(e){let r=window.location.origin;if(typeof r!="string"||r===""||r==="null")return null;let c=new URL(e||window.location.href,r);return c.protocol==="http:"||c.protocol==="https:"?c.href:null}var Y=e=>Number.isSafeInteger(e)?e:null;function De(e){if(e==null)return Object.freeze({bytes:null,etag:null,seq:null});if(typeof e.bytes!="string"||e.bytes==="")throw new TypeError("createSavedStream: represented.bytes must be a full HTML string");return Object.freeze({bytes:e.bytes,etag:H(e.etag),seq:Y(e.seq)})}function we({documentURL:e,servedEtag:r=null,represented:c=null,onSnapshot:f,onStatus:m}={}){if(typeof f!="function")throw new TypeError("createSavedStream: onSnapshot must be a function");let g=Me(e),b=!!H(r),o=De(c);if(g===null){let n={ready:null,get represented(){return o},adopt(){return n},start(){return n.ready=Promise.resolve(n),n},stop(){}};return n}let v=!0,k=o.seq??0,E=0,O=0,D=f,x=m,I=0,j=!1,L=null,A=null,t=null,a=!1,p=null,d=null,u=null,S=[],q=n=>!j&&n===I;function N(n,l={}){j||typeof x!="function"||x({state:n,...l})}function G(){S.length=0,d&&(d.detach(),d=null),p=null,u=null}function W(n){if(p){p.receive(n);return}S.push(n),!u&&(u=import("../c-G2BUZITR.js").then(({presence:l})=>{p=l,d=l.attachTransport({send:()=>Promise.resolve(!1)});for(let i of S.splice(0))l.receive(i);return l}).catch(()=>(u=null,null)))}function re(){if(G(),!L)return;let n=L;L=null,n.onopen=null,n.onerror=null,n.onmessage=null,n.close()}function X(){if(!A)return;let n=A;A=null,n.controller.abort()}function B(n){if(j)return!1;let l={bytes:n.bytes,etag:H(n.etag),seq:Y(n.seq)};if(typeof l.bytes!="string"||l.bytes==="")return N("recoverable",{reason:"invalid-bytes",seq:l.seq}),!1;if(l.bytes===o.bytes&&l.etag===o.etag&&l.seq===o.seq)return!0;let i=!1;try{i=D(Object.freeze(l))===!0}catch{i=!1}return i?(o=Object.freeze(l),N("applied",{seq:o.seq,etag:o.etag}),!0):(N("recoverable",{reason:"refused",seq:l.seq,etag:l.etag}),!1)}function ne(n,l){if(l==="startup")return null;let i=Math.max(n.seq??0,k);return i>0?i:null}function _(n,l){t=n,a=!0,N("recoverable",{reason:l,seq:n.seq??null})}function z(n){j||(t={kind:n.kind,seq:Y(n.seq)},a=!1,J())}function J(){if(j||A||a||!t)return;let n=I,l=t;t=null;let i=new AbortController;A={controller:i};let w=E,K=k,M=T=>{if(A&&A.controller===i&&(A=null),!(!q(n)||i.signal.aborted)){if(T==null){_(l,"repair-failed");return}if(E!==w||k!==K){if(O+=1,O<=Pe){t=t??{kind:l.kind,seq:ne(l,l.kind)},J();return}U(T.text,{kind:l.kind,seq:ne(l,l.kind)},T.etag),J();return}U(T.text,l,T.etag),J()}};fetch(g,{cache:"no-store",signal:i.signal}).then(T=>T.ok?T.text().then(F=>({text:F,etag:H(T.headers?.get?.("etag"))})):null).then(M).catch(()=>M(null))}function U(n,l,i){let K=H(i)??Ce(n)??(n===o.bytes?o.etag:null),M=l.kind==="startup"?o.seq:l.seq??o.seq;B({bytes:n,etag:K,seq:M})&&(v=!1,O=0,a=!1,N("current",{seq:o.seq,etag:o.etag}))}function s(n,l){let i={bytes:o.bytes,etag:n??o.etag,seq:l??o.seq};i.etag===o.etag&&i.seq===o.seq||(o=Object.freeze(i),N("current",{seq:o.seq,etag:o.etag}))}function y(n,l,i){let w=H(l);if(!(i!==null&&o.seq!==null&&i<=o.seq)){if(!v&&w!==null&&o.etag!==null){if(w!==o.etag){z({kind:"unmatched",seq:i});return}v=!0}if(n===o.bytes){s(w,i);return}B({bytes:n,etag:w,seq:i})&&(v=!0)}}function h(n,l){let i=n.data;if(i&&i.kind==="external-change"){typeof i.html=="string"?y(i.html,i.etag,l):z({kind:"notice",seq:l});return}typeof n.msg=="string"&&n.msg.endsWith("changed on disk outside this tab")&&z({kind:"notice",seq:l})}function P(n,l){if(!q(l))return;E++;let i;try{i=JSON.parse(n)}catch{N("recoverable",{reason:"bad-json"});return}if(!i||typeof i!="object"||Array.isArray(i)){N("recoverable",{reason:"bad-frame"});return}let w=Y(i.seq);if(w!==null&&w>k&&(k=w),i.type==="notification"){h(i,w);return}if(i.error){N("recoverable",{reason:"server-error",seq:w});return}if(typeof i.html!="string"){H(i.etag)?z({kind:"notice",seq:w}):N("recoverable",{reason:"bad-frame",seq:w});return}y(i.html,i.etag,w)}function $(n,l){if(!q(l))return;E++;let i;try{i=JSON.parse(n)}catch{return}if(!i||typeof i!="object")return;let w=Y(i.seq);if(w!==null&&w>k&&(k=w),i.resync===!0){z({kind:"resync",seq:w});return}i.startup===!0&&z({kind:"startup",seq:null})}function C(n){if(q(n)){if(N("open",{seq:o.seq,etag:o.etag}),a){a=!1,J();return}o.bytes===null&&!b&&z({kind:"startup",seq:null})}}let R={ready:null,get represented(){return o},adopt({onSnapshot:n,onStatus:l}={}){return typeof n=="function"&&(D=n),typeof l=="function"&&(x=l),R},start(){j=!1;let n=++I;return re(),X(),t=null,a=!1,E=0,O=0,k=o.seq??0,R.ready=ve().then(l=>{if(!q(n))return R;let i=Ie(),w=Re(),K=l.profile.streamPath(g,Se,i,w),M=new ge(new URL(K,window.location.origin).href,{shared:l.sharedSync,sharedData:l.sharedData,documentURL:g,lane:Se,clientId:w,startupCheck:b});return L=M,M.onopen=()=>C(n),M.onerror=()=>{q(n)&&N("reconnecting")},M.onmessage=T=>P(T.data,n),M.addEventListener("cursor",T=>$(T.data,n)),M.addEventListener("presence",T=>{if(!q(n))return;let F;try{F=JSON.parse(T.data)}catch{return}F&&typeof F=="object"&&!Array.isArray(F)&&W(F)}),R}),R},stop(){j||(j=!0,I++,re(),X(),t=null,a=!1)}};return R}var ze="article[data-page]",Ue='section[data-type="tool"][data-id]',Ne=new Set(["UL","OL","LI","DETAILS"]),Ae=new Set(["UL","OL"]),qe=e=>e.tagName==="SECTION"&&e.getAttribute("data-type")==="tool"&&e.hasAttribute("data-id");function xe(e){return oe(e)}function oe(e){let r=e.querySelector(':scope > script[type="application/json"][data-tool]'),c={};try{c=r?JSON.parse(r.textContent):{}}catch(f){return{rev:null,artifact:null,state:{},signature:null,invalid:!0,error:f}}return{rev:c.rev??null,artifact:c.artifact??null,state:c.state??{},signature:JSON.stringify(c.artifact??null),invalid:!1}}function ie(e){let r=new Map,c=new Set;for(let f of e.querySelectorAll(Ue)){let m=f.getAttribute("data-id");if(!c.has(m)){if(r.has(m)){r.delete(m),c.add(m);continue}r.set(m,oe(f))}}return r}function ue(e){let r=e.querySelector('script[type="application/json"][merge="page.tools"]');if(!r)return{};try{return JSON.parse(r.textContent)}catch{return{}}}function Ve(e){let r=new Map,c=new Set,f=m=>{for(let g of m.children){let b=g.getAttribute("data-id");if(b){if(c.has(b))continue;if(r.has(b)){r.delete(b),c.add(b);continue}r.set(b,g)}Ne.has(g.tagName)&&f(g)}};return f(e),r}function ke(e){let r=new Set,c=f=>{for(let m of f.children){let g=m.getAttribute("data-id");g&&r.add(g),Ne.has(m.tagName)&&c(m)}};return c(e),r}function Q(e,r=document){if(typeof e!="string"||e==="")return{ok:!1,reason:"bytes"};let c=(r.defaultView??globalThis).DOMParser;if(typeof c!="function")return{ok:!1,reason:"parser"};let f=new c().parseFromString(e,"text/html"),m=[...f.querySelectorAll(ze)];if(m.length!==1)return{ok:!1,reason:"article"};let g=m[0],b=new Map;for(let v of g.querySelectorAll("details[data-id]"))b.set(v.getAttribute("data-id"),v.hasAttribute("open"));let o=ie(g);return{ok:!0,article:g,source:f,rev:g.getAttribute("data-rev"),title:f.title||null,savedOpen:b,tools:o,toolState:o.size?ue(f):{}}}var ce=(e,r)=>{let c=oe(e),f=oe(r);return!c.invalid&&!f.invalid&&c.rev===f.rev&&c.signature===f.signature};function Ee(e,{article:r,readerOpen:c=new Map,savedOpen:f=null,keepTool:m=ce}={}){if(!e?.ok||!r)return{changed:!1};for(let t of e.article.querySelectorAll("details[data-id]")){let a=t.getAttribute("data-id");c.has(a)&&t.hasAttribute("open")!==c.get(a)&&t.toggleAttribute("open",c.get(a))}let g=Ve(r),b=new Set,o=!1,v=t=>(o=!0,t.cloneNode(!0)),k=(t,a)=>{let p=ke(t);for(let d of a.children){if(b.has(d)||d.hasAttribute("data-id")||d.tagName!==t.tagName)continue;if(!p.size)return d;let u=ke(d);for(let S of p)if(u.has(S))return d}return null},E=(t,a)=>{for(let p of a.children)if(!(b.has(p)||p.hasAttribute("data-id"))&&p.tagName===t.tagName)return p;return null},O=(t,a,p=null)=>{for(let{name:d,value:u}of[...a.attributes])d===p||t.getAttribute(d)===u||(t.setAttribute(d,u),o=!0);for(let{name:d}of[...t.attributes])d===p||a.hasAttribute(d)||(t.removeAttribute(d),o=!0)},D=(t,a,p)=>{let d=S=>S&&S.nodeType===t.nodeType&&S.nodeValue===t.nodeValue&&!b.has(S),u=d(a.childNodes[p])?a.childNodes[p]:[...a.childNodes].find(d);return u?(b.add(u),u):t.cloneNode(!0)},x=(t,a)=>{let p=[],d=[...a.childNodes];for(let q=0;q<d.length;q++){let N=d[q];if(N.nodeType!==1){p.push(D(N,t,q));continue}let G=A(N,t);b.add(G),p.push(G)}let u=new Set(p),S=t.firstChild;for(let q of p){for(;S&&!u.has(S);)S=S.nextSibling;if(S===q){S=S.nextSibling;continue}t.insertBefore(q,S),o=!0}for(let q of[...t.childNodes])u.has(q)||(q.remove(),o=!0)},I=t=>{o=!0;let a=t.cloneNode(!1);return x(a,t),a},j=(t,a)=>{o=!0;let p=t.getAttribute("data-id"),d=c.has(p)?c.get(p):a.hasAttribute("open");O(t,a,"open"),t.hasAttribute("open")!==d&&t.toggleAttribute("open",d),x(t,a)},L=(t,a)=>{o=!0,O(t,a),x(t,a)};function A(t,a){let p=t.getAttribute("data-id");if(p){let u=g.get(p);return!u||b.has(u)||u===a||u.contains(a)?v(t):(b.add(u),qe(u)&&qe(t)?m(u,t)?u:v(t):u.tagName!==t.tagName?v(t):u.isEqualNode(t)?u:t.tagName==="DETAILS"?(j(u,t),u):t.tagName==="LI"?(L(u,t),u):Ae.has(t.tagName)?(O(u,t),x(u,t),u):v(t))}if(Ae.has(t.tagName)){let u=k(t,a);return u?(b.add(u),O(u,t),x(u,t),u):I(t)}let d=E(t,a);return d?(b.add(d),d.isEqualNode(t)?d:(o=!0,v(t))):v(t)}if(x(r,e.article),f){f.clear();for(let[t,a]of e.savedOpen)f.set(t,a)}for(let t of[...c.keys()])e.savedOpen.has(t)||c.delete(t);return{changed:o}}var Le="article[data-page]",Je='section[data-type="tool"][data-id]',je='script[type="application/json"][merge="page"]',fe=["live-at","live-by"];var Be=e=>{import("../c-VL52ADDR.js").then(({recordEtag:r})=>r(e)).catch(()=>{})},de=e=>Object.freeze({bytes:typeof e?.bytes=="string"?e.bytes:null,etag:typeof e?.etag=="string"&&e.etag?e.etag:null,seq:Number.isSafeInteger(e?.seq)?e.seq:null}),Fe=(e,r)=>{let c=e.source.querySelector(je),f=r.querySelector(je);if(!c)return f?(f.remove(),!0):!1;if(f){let g=fe.map(o=>c.getAttribute(o));return f.textContent===c.textContent&&fe.every((o,v)=>f.getAttribute(o)===g[v])?!1:(f.textContent!==c.textContent&&(f.textContent=c.textContent),fe.forEach((o,v)=>{g[v]===null?f.removeAttribute(o):f.setAttribute(o,g[v])}),!0)}let m=r.querySelector(Le);return m?.parentNode?(m.parentNode.insertBefore(r.importNode(c,!0),m),!0):!1};function He({doc:e,article:r,represented:c=null,feed:f=null,documentURL:m,servedEtag:g=null,stream:b=null,release:o=()=>{}}){let v=new Map,k=new Map,E=new Map,O={data:{}},D=[],x=null,I=null,j=0,L=!1,A=b,t=null,a=de(c),p=null,d=o,u=!1,S=(s,y)=>{let h=e.defaultView??globalThis;e.dispatchEvent(new h.CustomEvent(s,{detail:y}))},q=()=>{for(let s of E.values())try{s.instance?.dispose?.()}catch{}E.clear()},N=()=>x?Promise.resolve(x):(I||(I=import("../c-GOWBDM6J.js").then(({createToolHost:s})=>L?null:(x=s({store:O,mode:"view"}),x)).catch(s=>(I=null,console.warn("clayjs: could not load the reader tool host",s),null))),I),G=s=>{for(let[y,h]of E){let P=s.get(y);if(!P||P.invalid||P.rev!==h.rev||P.signature!==h.signature){try{h.instance?.dispose?.()}catch{}E.delete(y)}}},W=(s,y)=>{let h=[];for(let[$,C]of s)C.invalid?console.warn("clayjs: could not decode saved tools",C.error):h.push([$,C]);if(!h.length)return;O.data=y??{};let P=++j;N().then($=>{if(!(L||!$||P!==j))for(let[C,R]of h){if(E.has(C))continue;let n=[...r.querySelectorAll(Je)].find(l=>l.getAttribute("data-id")===C);if(n)try{let l=$.mount(n,{id:C,artifact:R.artifact,rev:R.rev,seed:R.state??{}});E.set(C,{rev:R.rev,signature:R.signature,instance:l})}catch(l){console.warn(`clayjs: tool ${C} could not mount`,l)}}})},re=(s,y)=>{let h=E.get(s.getAttribute("data-id"));if(!h)return ce(s,y);let P=xe(y);return!P.invalid&&P.rev===h.rev&&P.signature===h.signature},X=s=>{s?.state==="current"&&(a=de({bytes:a.bytes,etag:s.etag??null,seq:s.seq??null})),s?.state&&s.state!=="applied"&&S("clay:reader-status",s)},B=s=>{Ee(s,{article:r,readerOpen:v,savedOpen:k,keepTool:re}),s.rev===null?r.removeAttribute("data-rev"):r.setAttribute("data-rev",s.rev),s.title&&(e.title=s.title),Fe(s,e)},ne=s=>{console.warn("clayjs: the reader could not apply a saved file",s),A?.stop(),A=null,q();let y=a.bytes?Q(a.bytes,e):null;if(y?.ok)try{B(y)}catch(h){console.warn("clayjs: the reader could not restore the previous file",h)}S("clay:reader-status",{state:"blocked"})};function _(s){if(L||u)return!1;let y=Q(s.bytes,e);if(!y.ok||r.querySelector(".page-editor"))return!1;if(be(s.bytes))return A?.stop(),A=null,se(),S("clay:reader-status",{state:"blocked",reason:"upgraded"}),!1;G(y.tools);try{B(y)}catch(h){return ne(h),!1}return a=de(s),a.etag&&Be(a.etag),W(y.tools,y.toolState),S("clay:reader-status",{state:"applied",etag:a.etag,seq:a.seq}),!0}let z=()=>a.bytes===null?!1:(U.stop(),!0),J=s=>{let y=s.target;if(y.tagName!=="DETAILS"||!r.contains(y))return;let h=y.getAttribute("data-id");h&&(y.open===k.get(h)?v.delete(h):v.set(h,y.open))};if(e.addEventListener("toggle",J,!0),D.push(["toggle",J,!0]),c){let s=Q(c.bytes,e);if(!s.ok)throw new Error(`clayjs: the saved file is not a readable page (${s.reason})`);B(s),W(s.tools,s.toolState)}else{for(let s of r.querySelectorAll("details[data-id]"))k.set(s.getAttribute("data-id"),s.hasAttribute("open"));W(ie(r),ue(e))}let U={ready:null,get represented(){return a},yieldArticle(){return L||u?!1:(j++,q(),u=!0,d(),!0)},reclaimArticle(){if(L||!u)return!1;if(d=le(r,"reader"),u=!1,a.bytes!==null){let s=Q(a.bytes,e);s.ok&&(B(s),W(s.tools,s.toolState))}return!0},prepareHandoff(s={}){return p?Promise.resolve(p):L?Promise.reject(new Error("clayjs: the reader is stopped")):(p=import("../c-J7CA54IP.js").then(({readerHandoff:y})=>y({stream:A,options:s,apply:_,retire:z,yieldArticle:U.yieldArticle,reclaimArticle:U.reclaimArticle})),p)},stop(){if(L)return t;L=!0,p=null,j++,A?.stop(),A=null;for(let[s,y,h]of D)e.removeEventListener(s,y,h);D.length=0,q();try{x?.dispose()}catch{}return x=null,u||d(),u=!1,d=()=>!1,t=Object.freeze({...a}),t}};if(U.ready=Promise.resolve(U),f){let s=y=>{let h=y.detail;typeof h?.html=="string"&&(h.source&&h.source!=="disk"&&h.lane!=="saved"||_({bytes:h.html,etag:h.etag??null,seq:h.seq??null}))};f.addEventListener("clay:sync-applied",s),D.push(["clay:sync-applied",s])}else A?A.adopt({onSnapshot:_,onStatus:X}):(A=we({documentURL:m,servedEtag:g,represented:a.bytes?a:null,onSnapshot:_,onStatus:X}),A.start());return U}function ae({represented:e=null,documentURL:r,servedEtag:c=null,stream:f=null,feed:m=null,doc:g=document}={}){if(e&&(typeof e.bytes!="string"||e.bytes===""))throw new TypeError("clayjs: the reader needs the full saved bytes to start");if(!m&&!f&&!e&&!r)throw new TypeError("clayjs: the reader needs a file, a stream or a page to follow");let b=g.querySelectorAll(Le);if(b.length!==1)throw new Error("clayjs: the reader needs exactly one article[data-page]");let o=b[0];if(o.querySelector(".page-editor"))throw new Error("clayjs: the reader will not start over a mounted editor");if(e){let k=Q(e.bytes,g);if(!k.ok)throw new Error("clayjs: the saved file is not a readable page");if(me(k.source))throw se(),new Error("clayjs: the saved file was published at another version of this document")}let v=le(o,"reader");try{return He({doc:g,article:o,represented:e,feed:m,documentURL:r,servedEtag:c,stream:f,release:v})}catch(k){throw v(),k}}var V=null,te=null,he=!1,Te=!1,ee=null,Z=null,pe=null,Oe=()=>document.querySelectorAll("article[data-page]").length===1;function Ge(){ee=e=>{if(he)return;let r=e.detail;r?.state==="applied"?te?.(V):(r?.state==="blocked"||r?.state==="recoverable")&&te?.(null)},document.addEventListener("clay:reader-status",ee)}function We(){ee&&document.removeEventListener("clay:reader-status",ee),ee=null,te=null}function _e(e=null){if(!Oe())return Promise.resolve(null);try{V=e?ae({represented:e}):ae({documentURL:window.location.href,servedEtag:ye})}catch(r){return console.warn("clayjs: the reader could not start over the served article",r),Promise.resolve(null)}return e?Promise.resolve(V.represented):new Promise(r=>{te=r})}function $e(e=null){if(!Oe())return Promise.resolve(null);try{V=ae({feed:document,represented:e,documentURL:window.location.href})}catch(r){return console.warn("clayjs: the reader could not start over the page sync projects",r),Promise.resolve(null)}return Promise.resolve(V)}function Qe({sync:e=!1,represented:r=null}={}){return Z||(he=!1,Te=e,Ge(),pe=e?$e(r):_e(r),Z=e?pe:Promise.resolve(null),Z)}function it(e={}){return Xe(),Qe(e)}function ut(e){return V?V.prepareHandoff(e):Promise.reject(new Error("clayjs: the reader has not started"))}function Xe(){he=!0,Te||te?.(null),We(),V?.stop(),V=null,pe=null,Z=null}export{pe as acquired,ut as prepareHandoff,Z as ready,it as restart,Qe as start,Xe as stop};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as I,c as V}from"../c-RVMWGXEJ.js";import{a as P,d as j}from"../c-AYVOREBE.js";import{i as K,m as M}from"../c-7O6AFR65.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var b=()=>window.clay&&"isEditMode"in window.clay?!!window.clay.isEditMode:K,pe=/^[A-Za-z0-9_-]{8,64}$/,D="clay:people:me",de=2e3,B=120,Q=/\S+@\S+\.\S+/,a={supports:!1,me:null,members:null,unavailable:!1},l=null,m,u=null,f=null,y=null,x=null,N="",_=null;function g(e){if(!e||typeof e!="object")return null;let t=typeof e.id=="string"?e.id:"",n=typeof e.name=="string"?e.name.trim().replace(/\s+/g," "):"";return!pe.test(t)||!n||n.length>B||Q.test(n)?null:{id:t,name:n}}function p({id:e,name:t}){return Object.freeze({id:e,name:t,initials:V(t),color:I(e)})}function E(){document.dispatchEvent(new CustomEvent("clay:people",{detail:{me:ee()}}))}function fe(){return document.querySelector("[clay-people]")}function O(){return[...document.querySelectorAll("[clay-people] data[value]")]}function R(){if(u)return u;u=new Map;for(let e of O()){let t=g({id:e.getAttribute("value"),name:e.textContent});t&&!u.has(t.id)&&u.set(t.id,p(t))}return u}function S(){if(m===void 0){m=null;try{m=g(JSON.parse(window.localStorage.getItem(D)||"null"))}catch{}}return m}function q(e){m=e;try{window.localStorage.setItem(D,JSON.stringify(e))}catch{}}function me(){let e=new Uint8Array(16);return crypto.getRandomValues(e),btoa(String.fromCharCode(...e)).replace(/\+/g,"-").replace(/\//g,"_").replace(/=+$/,"")}function ee(){if(!b())return null;if(a.me)return p(a.me);if(a.unavailable||l!=="ok"&&l!=="none")return null;let e=S();return e?p(e):null}function te(e){let t=P(e);if(t!=="ok"&&a.supports)return;let n=e.document?.people,o=e.extensions.includes("people")&&!!n&&typeof n=="object",r={supports:o,me:o?g(n.me):null,members:o&&Array.isArray(n.members)?n.members.map(g).filter(Boolean):null,unavailable:o&&n.unavailable===!0},s=t!==l||JSON.stringify(r)!==JSON.stringify(a);a=r,l=t,s&&E()}async function k(e){te(await j({fresh:e}))}function ne(e){L();let t=String(e??""),n=a.me?.id===t&&a.me||a.members?.find(r=>r.id===t);if(n)return p(n);let o=S();return o?.id===t?p(o):R().get(t)||Object.freeze({id:t,name:"Unknown person",initials:"?",color:I(t)})}function oe(){return L(),[...R().keys()].map(ne)}async function be(){return await k(l!=="none"),a.members?a.members.map(p):null}function J(e){let t=g(e);if(!t)throw new TypeError("clay.people.add: needs an id of 8 to 64 letters, digits, _ or -, and a name of 1 to 120 characters");let n=fe();n||(n=document.createElement("div"),n.setAttribute("clay-people",""),n.hidden=!0,document.body.append(n));let o=O().filter(r=>r.getAttribute("value")===t.id);if(o.length){o[0].textContent!==t.name&&(o[0].textContent=t.name);for(let r of o.slice(1))r.remove()}else{let r=document.createElement("data");r.setAttribute("value",t.id),r.textContent=t.name,n.append(r)}return u=null,p(t)}function ge(e){let t=String(e??"");for(let n of O())n.getAttribute("value")===t&&n.remove();u=null}function re(){return b()&&!a.me&&(l==="ok"||l==="none")&&!!S()&&!a.unavailable}function he(e){if(!re())throw Object.assign(new Error("clay.people.rename: only a name chosen in this browser can be changed here"),{code:"not-renamable"});let t=S(),n=g({id:t.id,name:e});if(!n)throw new TypeError("clay.people.rename: needs a name of 1 to 120 characters that is not an email address");return q(n),O().some(o=>o.getAttribute("value")===n.id)&&J(n),E(),p(n)}var ye=e=>e!==M().generation||!b();function z(e){if(ye(e))throw Object.assign(new Error("clay.author: the page left edit mode before your name was recorded"),{code:"stale-document"})}function X(){return Object.assign(new Error("Can't reach the host to check who you are. Try again in a moment."),{code:"people-unavailable"})}async function Pe(e,t="data-by"){if(!window.clay?.isEditMode)throw new Error("clay.author: this page is not in edit mode");if(!(e instanceof Element))throw new TypeError("clay.author: needs an element");let n=M().generation;if(a.supports){let r=await j({fresh:!0});z(n);let s=P(r);if(s==="none")throw Object.assign(new Error("This page lost its connection to the host. Reload it to keep editing."),{code:"people-unavailable"});if(s!=="ok")throw X();if(te(r),a.unavailable)throw Object.assign(new Error("The app hosting this file can't name you right now. Check its Profile settings, then try again."),{code:"people-unavailable"})}else l!=="ok"&&l!=="none"&&(await k(l==="failed"),z(n));if(l==="failed")throw X();let o=ee();if(!o){let r=await ve();if(z(n),!r)return null;q(r),o=p(r),E()}return J(o),e.setAttribute(t,o.id),o}function we(){return _??=Promise.all([import("../c-WNYBLIOZ.js"),import("../c-6HMB24EV.js"),import("../c-OCSZ4QGN.js")]).then(([e,t,n])=>({...e,...t,resolveTheme:n.resolveTheme})).catch(e=>{throw _=null,e}),_}function ve(){return f&&(!y||y.isConnected)||(f&&x(),f=xe().catch(e=>{throw f=null,y=null,x=null,e})),f}async function xe(){let e=await we();return new Promise(t=>{let n=e.resolveTheme(),{root:o,overlay:r,panel:s,heading:ae,body:U,footer:le,close:se}=e.bevelDialog({zIndex:"2147483001",width:"420px",closable:!0,titled:!0,theme:n,surface:"people"});y=o,x=()=>d(null),ae.textContent="What name should appear on your changes?",s.setAttribute("aria-label","Your name");let c=e.bevelInput("input",{rules:["display:block","width:100%","margin:0"],theme:n,parts:["dialog.input","people.input"]});c.setAttribute("aria-label","Your name"),c.maxLength=B,c.autocomplete="name";let h=e.bevelText("p",["display:block","margin:10px 0 0","font-size:13px","opacity:.8"],"Saved in this browser. Everyone who can read this page will see it.",{theme:n,parts:["dialog.hint","people.hint"],role:"mutedText"}),F=h.textContent;U.append(c,h);let W=oe().slice(0,8);if(W.length){let i=e.bevelText("p",["display:block","margin:18px 0 8px","font-size:13px"],"Or continue as someone already in this page:",{theme:n,parts:["people.choiceLabel"],role:"mutedText"}),H=e.bevelBox("div",["display:flex","flex-wrap:wrap","gap:8px"],{theme:n,parts:["people.choices"]});for(let T of W)H.append(e.bevelButton(T.name,{small:!0,onClick:()=>d({id:T.id,name:T.name}),theme:n,parts:["dialog.button","people.button","people.choice"],labelParts:["dialog.buttonLabel","people.buttonLabel"]}));U.append(i,H)}let ce=e.bevelButton("Cancel",{onClick:()=>d(null),theme:n,parts:["dialog.button","people.button"],labelParts:["dialog.buttonLabel","people.buttonLabel"]}),ue=e.bevelButton("Continue",{variant:"primary",onClick:()=>A(),theme:n,parts:["dialog.button","people.button"],labelParts:["dialog.buttonLabel","people.buttonLabel"]});le.append(ce,ue);let A=()=>{let i=c.value.trim().replace(/\s+/g," ");if(!i){c.focus();return}if(Q.test(i)){h.textContent="Use a name, not an email address. Everyone who can read this page will see it.",c.focus();return}d({id:me(),name:i.slice(0,B)})};c.addEventListener("input",()=>{h.textContent!==F&&(h.textContent=F)}),s.addEventListener("submit",i=>{i.preventDefault(),A()}),se?.addEventListener("click",()=>d(null));let C=!1;r.addEventListener("mousedown",i=>{C=i.target===r}),r.addEventListener("click",i=>{C&&i.target===r&&d(null),C=!1});let Y=i=>{if(i.key==="Tab"){i.stopPropagation(),e.keepFocusIn(s,i);return}i.key==="Escape"?(i.preventDefault(),i.stopPropagation(),d(null)):i.key==="Enter"&&i.target===c&&(i.preventDefault(),i.stopPropagation(),A())};document.addEventListener("keydown",Y,!0);let $=!1;function d(i){$||($=!0,document.removeEventListener("keydown",Y,!0),o.remove(),i&&q(i),f=null,y=null,x=null,t(i))}e.dismissOf.set(o,()=>d(null)),o.setAttribute("aria-hidden","false"),Ee().append(o),c.focus()})}function Ee(){let e=[...document.querySelectorAll("dialog[open]")].filter(t=>t.matches(":modal"));return e[e.length-1]||document.body}function Z(e){return e.nodeType===1&&(e.matches("[clay-people]")||!!e.querySelector("[clay-people]"))}function G(){return JSON.stringify([...R().values()].map(({id:e,name:t})=>[e,t]))}var w=null;function L(){let e=document;if(w?.doc===e)return;w?.observer.disconnect(),N=G();let t=new MutationObserver(n=>{if(!(typeof document>"u"||document!==e))for(let o of n){let r=o.target.nodeType===1?o.target:o.target.parentElement;if(o.attributeName==="clay-people"||r?.closest("[clay-people]")||[...o.addedNodes].some(Z)||[...o.removedNodes].some(Z)){u=null;let s=G();s!==N&&(N=s,E());return}}});t.observe(e.body,{subtree:!0,childList:!0,characterData:!0,attributes:!0,attributeFilter:["value","clay-people"]}),w={doc:e,observer:t}}function ke(){w?.observer.disconnect(),w=null}var v=null;function ie(){if(!b())return Promise.resolve(null);if(!v){let e=new AbortController,{signal:t}=e;window.addEventListener("storage",n=>{n.key!==D||!b()||(m=void 0,E())},{signal:t}),document.addEventListener("visibilitychange",()=>{b()&&document.visibilityState==="visible"&&l!=="none"&&k(!0)},{signal:t}),v={listeners:e,first:k(!1)}}return Promise.race([v.first,new Promise(e=>setTimeout(e,de))])}function Oe(){v?.listeners.abort(),v=null}async function Se(){L(),await ie()}function Le(){return{enable(){L(),ie()},quiesce(){if(f)throw Object.assign(new Error("clay:people: a name is still being chosen"),{code:"pending-input",pending:["name"]})},resume(){},dispose(){x?.(),ke(),Oe()}}}function je(){return{id:"clay:people",order:330,prepare(e={}){let t=Le();return e.initial!==!0?t:{...t,enable(){}}}}}var Ae=Object.freeze({get:ne,list:oe,available:be,add:J,remove:ge,canRename:re,rename:he}),Ie=Se(),Ne=Ae;export{Pe as author,ee as currentMe,Ne as default,je as modeParticipant,Ae as people,je as peopleParticipant,Ie as ready};
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import{a as ot,b as rt,c as it}from"../c-LFPHCXY3.js";import{a as nt}from"../c-HPURYVZS.js";import{g as et}from"../c-OIBUTDXI.js";import"../c-4JZDZFF6.js";import"../c-VAK7SG37.js";import"../c-NUHP2XDB.js";import"../c-VHNSBD2M.js";var qt=":root{--qc-surface:#f7f2ea;--qc-surface-hover:#efe7d8;--qc-border:#cdbfa6;--qc-text:#2b241b;--qc-text-hover:#463c2e;--qc-on-dark:#efe7d8;--qc-overlay:rgba(43,36,27,.6);--qc-dim:rgba(0,0,0,.55);--qc-radius:8px;--qc-crop-line:#fff;--qc-font:ui-sans-serif,system-ui,sans-serif;}.qc-css-probe{position:absolute;}.qc-backdrop{position:fixed;inset:0;background:var(--qc-overlay);display:grid;place-items:center;z-index:1000;animation:qc-fade .15s ease;}@keyframes qc-fade{from{opacity:0}}.qc-modal{background:var(--qc-surface);border:1px solid var(--qc-border);border-radius:var(--qc-radius);padding:16px;max-width:92vw;font-family:var(--qc-font);}.qc-bar{display:flex;justify-content:flex-end;gap:10px;margin-top:12px;}.qc-btn{font:inherit;font-family:var(--qc-font);font-size:.85rem;padding:.3rem .75rem;border:1px solid var(--qc-border);border-radius:6px;background:var(--qc-surface);color:var(--qc-text);cursor:pointer;}.qc-btn:hover{background:var(--qc-surface-hover);}.qc-btn-primary{background:var(--qc-text);border-color:var(--qc-text);color:var(--qc-on-dark);font-weight:600;}.qc-btn-primary:hover{background:var(--qc-text-hover);border-color:var(--qc-text-hover);}.qc-stage{position:relative;line-height:0;user-select:none;-webkit-user-select:none;touch-action:none;}.qc-stage img{display:block;max-width:100%;pointer-events:none;}.qc-dim{position:absolute;inset:0;background:var(--qc-dim);pointer-events:none;}.qc-box{position:absolute;cursor:move;outline:1px solid var(--qc-crop-line);background:linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 0 33.33%/100% 1px no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 0 66.66%/100% 1px no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 33.33% 0/1px 100% no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 66.66% 0/1px 100% no-repeat;background-blend-mode:overlay;}.qc-handle{position:absolute;box-sizing:border-box;width:28px;height:28px;border:7px solid transparent;background:var(--qc-crop-line);background-clip:padding-box;border-radius:9px;}.qc-nw{left:-14px;top:-14px;cursor:nwse-resize;}.qc-ne{right:-14px;top:-14px;cursor:nesw-resize;}.qc-sw{left:-14px;bottom:-14px;cursor:nesw-resize;}.qc-se{right:-14px;bottom:-14px;cursor:nwse-resize;}.qc-mount{line-height:0;}",gt=["image/jpeg","image/png","image/webp"];var _=!1;function L(t,n="",e=""){let r=document.createElement(t);return n&&(r.className=n),e&&(r.textContent=e),r}function D(t,n,e){t.style.setProperty(n,e,"important")}function vt(t){return String(t).replace(/[&<>"']/g,n=>({"&":"&","<":"<",">":">",'"':""","'":"'"})[n])}function K(){if(document.querySelector("style[data-quickcrop]"))return;let t=L("div","qc-css-probe");t.style.display="none",document.body.append(t);let n=getComputedStyle(t).position==="absolute";if(t.remove(),n)return;let e=document.createElement("style");e.setAttribute("data-quickcrop",""),e.setAttribute("save-remove",""),e.setAttribute("snapshot-remove",""),e.textContent=qt,document.head.append(e)}var Y={open({content:t,confirmLabel:n,onConfirm:e,onCancel:r}){K();let i=L("div","qc-backdrop");i.setAttribute("save-remove",""),i.setAttribute("snapshot-remove","");let m=L("div","qc-modal"),u=L("div","qc-bar"),f=L("button","qc-btn qc-btn-primary",n);f.type="button",u.append(f),m.append(t,u),i.append(m),document.body.append(i);let E=q=>{q.key==="Escape"&&r()};return document.addEventListener("keydown",E),f.onclick=()=>e(),i.onclick=q=>{q.target===i&&r()},f.focus(),{close(){document.removeEventListener("keydown",E),i.remove()}}}};function at(t){return!!t&&typeof t=="object"&&typeof t.open=="function"&&typeof t.close=="function"&&typeof t.onYes=="function"&&"html"in t}var xt='<svg viewBox="0 0 134 134" xmlns="http://www.w3.org/2000/svg"><path class="micromodal__close-bg" d="M132 132.5 1 1.5h131v131Z"/><path d="M83 27l24 24M107 27L83 51" stroke="#fff" stroke-width="6"/></svg>';function ct(t){let n=()=>t.isShowing&&!!document.querySelector(".micromodal-parent");return{fit(){if(n())return null;let e=window.innerWidth>=640?128:80;return{width:Math.max(120,Math.min(550,window.innerWidth-32)-4-e),height:Math.max(120,window.innerHeight-220)}},open(e){if(n())return Y.open(e);let{content:r,confirmLabel:i,onConfirm:m,onCancel:u}=e;K();let f=!1,E=C=>{f||(f=!0,document.removeEventListener("keydown",q,!0),C())},q=C=>{C.key==="Escape"&&(C.stopPropagation(),u())};return t.html='<div class="qc-mount"></div>',t.yes=vt(i),t.no="",t.closeHtml=xt,t.disableFocus=!0,t.onOpen(()=>{document.querySelector(".micromodal__content .qc-mount")?.append(r),document.querySelector(".micromodal-parent .micromodal__yes")?.focus(),document.addEventListener("keydown",q,!0)}),t.onYes(()=>(E(m),!0)),t.onNo(()=>{E(u)}),t.open(),{close(){f||(f=!0,document.removeEventListener("keydown",q,!0),t.close())}}}}}function yt(t){if(t==="builtin")return Y;if(t&&typeof t=="object"){if(at(t))return ct(t);if(typeof t.open=="function")return t;throw new TypeError('quickcrop: modal must be "auto", "builtin", a themodal instance, or an adapter with open()')}if(t==="auto")return at(window.themodal)?ct(window.themodal):Y;throw new TypeError('quickcrop: modal must be "auto", "builtin", a themodal instance, or an adapter with open()')}function wt(t,n={}){let{aspect:e=null,type:r,quality:i=.92,maxWidth:m=null,maxHeight:u=null,minSize:f=40,labels:E={},modal:q="auto"}=n,{confirm:C="Crop"}=E;if(!(t instanceof Blob))return Promise.reject(new TypeError("quickcrop: expected a File or Blob"));if(_)return Promise.reject(new Error("quickcrop: already open"));let S;try{S=yt(q)}catch(R){return Promise.reject(R)}_=!0;let A=r||(gt.includes(t.type)?t.type:"image/png"),F=URL.createObjectURL(t),a=new Image;return new Promise((R,z)=>{a.onerror=()=>{URL.revokeObjectURL(F),_=!1,z(new Error("quickcrop: could not decode image"))};function h(){let U=S.fit?S.fit():null,mt=Math.max(1,Math.min(U?.width??window.innerWidth*.86,a.naturalWidth)),ut=Math.max(1,U?.height??window.innerHeight*.72),N=Math.min(mt/a.naturalWidth,ut/a.naturalHeight,1),M=Math.max(1,Math.round(a.naturalWidth*N)),g=Math.max(1,Math.round(a.naturalHeight*N)),$=Math.min(f,M,g);K();let v=L("div","qc-stage");D(a,"width",M+"px"),D(a,"height",g+"px");let Q=L("div","qc-dim"),B=L("div","qc-box");for(let o of["nw","ne","sw","se"])B.appendChild(L("div","qc-handle qc-"+o));v.append(a,Q,B);let c,p;e?(c=Math.min(M,g*e),p=c/e,p>g&&(p=g,c=p*e)):(c=M,p=g);let y=(M-c)/2,w=(g-p)/2;Z();function Z(){D(B,"left",y+"px"),D(B,"top",w+"px"),D(B,"width",c+"px"),D(B,"height",p+"px"),D(Q,"clip-path",`polygon(0 0, 100% 0, 100% 100%, 0 100%, 0 0, ${y}px ${w}px, ${y}px ${w+p}px, ${y+c}px ${w+p}px, ${y+c}px ${w}px, ${y}px ${w}px)`)}let T=(o,b,d)=>Math.max(b,Math.min(d,o));v.addEventListener("pointerdown",o=>{let b=o.target.closest(".qc-handle"),d=o.target===B;if(!b&&!d)return;o.preventDefault(),v.setPointerCapture(o.pointerId);let s={px:o.clientX,py:o.clientY,x:y,y:w,w:c,h:p},l=b&&[...b.classList].find(W=>/^qc-(nw|ne|sw|se)$/.test(W))?.slice(3),x=W=>{if(!l)y=T(s.x+(W.clientX-s.px),0,M-c),w=T(s.y+(W.clientY-s.py),0,g-p);else{let O=l.includes("w")?s.x+s.w:s.x,H=l.includes("n")?s.y+s.h:s.y,P=l.includes("e"),X=l.includes("s"),G=v.getBoundingClientRect(),J=Math.abs(W.clientX-(G.left+O)),V=Math.abs(W.clientY-(G.top+H));if(e){let tt=Math.min(P?M-O:O,(X?g-H:H)*e),bt=Math.min(Math.max($,$*e),tt);c=T(Math.max(J,V*e),bt,tt),p=c/e}else c=T(J,$,P?M-O:O),p=T(V,$,X?g-H:H);y=P?O:O-c,w=X?H:H-p}Z()},k=()=>{v.removeEventListener("pointermove",x),v.removeEventListener("pointerup",k),v.removeEventListener("pointercancel",k)};v.addEventListener("pointermove",x),v.addEventListener("pointerup",k),v.addEventListener("pointercancel",k)});function ft(){let o=a.naturalWidth/M,b=a.naturalHeight/g,d=Math.round(c*o),s=Math.round(p*b),l=1;m&&d>m&&(l=m/d),u&&s*l>u&&(l=u/s),d*l*s*l>16777216&&(l=Math.sqrt(16777216/(d*s)));let x=document.createElement("canvas");x.width=Math.max(1,Math.round(d*l)),x.height=Math.max(1,Math.round(s*l));let k=x.getContext("2d");if(!k)throw new Error("quickcrop: crop too large for a canvas");return A==="image/jpeg"&&(k.fillStyle="#fff",k.fillRect(0,0,x.width,x.height)),k.imageSmoothingQuality="high",k.drawImage(a,y*o,w*b,c*o,p*b,0,0,x.width,x.height),x}let j=!1,I=()=>j?!1:(j=!0,ht.close(),URL.revokeObjectURL(F),_=!1,!0),ht=S.open({content:v,confirmLabel:C,onConfirm(){if(j)return;let o,b;try{o=ft(),b=o.toDataURL(A,i)}catch(d){I()&&z(d);return}I()&&o.toBlob(d=>{if(!d){z(new Error("quickcrop: image encoding failed"));return}R({blob:d,dataURL:b,width:o.width,height:o.height})},A,i)},onCancel(){I()&&R(null)}})}a.onload=()=>{try{h()}catch(U){URL.revokeObjectURL(F),_=!1,z(U)}},a.src=F})}var pt=wt;var st=[".qc-stage",".qc-backdrop"],dt=`@layer clay-skin{
|
|
2
|
+
:is(.qc-stage, .qc-backdrop),:is(.qc-stage, .qc-backdrop) *{--qc-surface:light-dark(#FFFCF6, #11131E) !important;--qc-text:light-dark(#2B241B, #ECEAF2) !important;--qc-border:light-dark(#D8C8AF, #353B52) !important;--qc-radius:0px !important;--qc-font:system-ui,-apple-system,"Segoe UI",sans-serif !important;--qc-surface-hover:light-dark(#F4ECDF, #1A1D2C) !important;--qc-text-hover:color-mix(in srgb, light-dark(#2B241B, #ECEAF2), light-dark(#FDF8F0, #0B0C13) 12%) !important;--qc-on-dark:light-dark(#FDF8F0, #0B0C13) !important;--qc-overlay:color-mix(in srgb, light-dark(#FDF8F0, #0B0C13) 70%, transparent) !important;--qc-dim:rgba(0,0,0,.55) !important;--qc-crop-line:#fff !important}
|
|
3
|
+
.qc-stage{margin-inline:auto !important;inline-size:fit-content !important;background:light-dark(#F4ECDF, #1A1D2C) !important}
|
|
4
|
+
.qc-stage img{display:block !important;max-inline-size:100% !important}
|
|
5
|
+
.qc-backdrop{position:fixed !important;inset:0 !important;background:var(--qc-overlay) !important;display:grid !important;place-items:center !important;z-index:1000 !important;animation:qc-fade .15s ease !important}
|
|
6
|
+
.qc-modal{background:var(--qc-surface) !important;border:1px solid var(--qc-border) !important;border-radius:var(--qc-radius) !important;padding:16px !important;max-width:92vw !important;font-family:var(--qc-font) !important}
|
|
7
|
+
.qc-bar{display:flex !important;justify-content:flex-end !important;gap:10px !important;margin-top:12px !important}
|
|
8
|
+
.qc-btn{font:inherit !important;font-family:var(--qc-font) !important;font-size:.85rem !important;padding:.3rem .75rem !important;border:1px solid var(--qc-border) !important;border-radius:6px !important;background:var(--qc-surface) !important;color:var(--qc-text) !important;cursor:pointer !important}
|
|
9
|
+
.qc-btn:hover{background:var(--qc-surface-hover) !important}
|
|
10
|
+
.qc-btn-primary{background:var(--qc-text) !important;border-color:var(--qc-text) !important;color:var(--qc-on-dark) !important;font-weight:600 !important}
|
|
11
|
+
.qc-btn-primary:hover{background:var(--qc-text-hover) !important;border-color:var(--qc-text-hover) !important}
|
|
12
|
+
.qc-stage{position:relative !important;line-height:0 !important;user-select:none !important;-webkit-user-select:none !important;touch-action:none !important}
|
|
13
|
+
.qc-stage img{display:block !important;max-width:100% !important;pointer-events:none !important}
|
|
14
|
+
.qc-dim{position:absolute !important;inset:0 !important;background:var(--qc-dim) !important;pointer-events:none !important}
|
|
15
|
+
.qc-box{position:absolute !important;cursor:move !important;outline:1px solid var(--qc-crop-line) !important;background:linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 0 33.33%/100% 1px no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 0 66.66%/100% 1px no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 33.33% 0/1px 100% no-repeat,linear-gradient(var(--qc-crop-line),var(--qc-crop-line)) 66.66% 0/1px 100% no-repeat !important;background-blend-mode:overlay !important}
|
|
16
|
+
.qc-handle{position:absolute !important;box-sizing:border-box !important;width:28px !important;height:28px !important;border:7px solid transparent !important;background:var(--qc-crop-line) !important;background-clip:padding-box !important;border-radius:9px !important}
|
|
17
|
+
.qc-nw{left:-14px !important;top:-14px !important;cursor:nwse-resize !important}
|
|
18
|
+
.qc-ne{right:-14px !important;top:-14px !important;cursor:nesw-resize !important}
|
|
19
|
+
.qc-sw{left:-14px !important;bottom:-14px !important;cursor:nesw-resize !important}
|
|
20
|
+
.qc-se{right:-14px !important;bottom:-14px !important;cursor:nwse-resize !important}
|
|
21
|
+
.qc-mount{line-height:0 !important}
|
|
22
|
+
.qc-stage img[hidden]{display:none !important}
|
|
23
|
+
.qc-backdrop[hidden]{display:none !important}
|
|
24
|
+
.qc-bar[hidden]{display:none !important}
|
|
25
|
+
}`;var lt=844;nt("quickcrop",dt,{roots:st});function kt(t){return!!t&&typeof t=="object"&&typeof t.open=="function"&&typeof t.close=="function"&&typeof t.onYes=="function"&&"html"in t}var Et={fit(){let t=document.documentElement.clientWidth;return{width:Math.max(120,Math.min(lt,t-32)-2-44),height:Math.max(120,window.innerHeight-Math.min(96,window.innerHeight*.1)-200)}},open({content:t,confirmLabel:n,onConfirm:e,onCancel:r}){let{root:i,overlay:m,panel:u,heading:f,body:E,footer:q,close:C}=it({zIndex:"2147483001",width:`${lt}px`,closable:!0,titled:!0});f.textContent="Crop image",u.setAttribute("aria-label","Crop image"),E.append(t);let S=et(n,{variant:"primary",onClick:()=>e()});q.append(S),C.addEventListener("click",()=>r()),u.addEventListener("submit",h=>h.preventDefault());let A=!1;m.addEventListener("mousedown",h=>{A=h.target===m}),m.addEventListener("click",h=>{A&&h.target===m&&r(),A=!1});let F=h=>{if(h.key==="Tab"){h.stopPropagation(),rt(u,h);return}h.key==="Escape"&&(h.stopPropagation(),r())};document.addEventListener("keydown",F,!0);let a=document.body.style.overflow;document.body.style.overflow="hidden";let R=!1,z=()=>{R||(R=!0,document.removeEventListener("keydown",F,!0),document.body.style.overflow=a,i.remove())};return ot.set(i,()=>{z(),r()}),i.setAttribute("aria-hidden","false"),document.body.append(i),S.focus(),{close:z}}};function Mt(t,n={}){let e=n.modal??"auto",r=e==="auto"||kt(e);return pt(t,r?{...n,modal:Et}:n)}var Bt=Mt;export{Et as bevelCropAdapter,Bt as default,Mt as quickcrop};
|
|
26
|
+
/*! For license information please see quickcrop-QNY3PKLD.js.LEGAL.txt */
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/*! quickcrop v1.2.1 | MIT-0 | https://github.com/panphora/quickcrop
|
|
2
|
+
*
|
|
3
|
+
* const result = await quickcrop(file, { aspect: 1 });
|
|
4
|
+
* // result: { blob, dataURL, width, height } on confirm, null on cancel
|
|
5
|
+
*
|
|
6
|
+
* Uses your modal system (themodal, or any adapter) or brings its own.
|
|
7
|
+
*/
|