@panphora/clayjs 1.19.0 → 1.20.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/dist/all.js +1 -1
- package/dist/clay-dom.js +1 -1
- package/dist/clay-events.js +1 -1
- package/dist/clay-internals.js +1 -1
- package/dist/clay-options.js +1 -1
- package/dist/clay-router.js +1 -1
- package/dist/clay-ui.js +1 -1
- package/dist/clay-utils.js +1 -1
- package/dist/clay.js +1 -1
- package/dist/clay.standalone.js +8186 -8076
- package/dist/m/attrs/{refetch-on-save-ZUE7PSCI.js → refetch-on-save-DPGJJMGN.js} +1 -1
- package/dist/m/attrs/save-freeze-MTFVVYV5.js +1 -0
- package/dist/m/{c-DHUCEMXE.js → c-2VB555FG.js} +1 -1
- package/dist/m/{c-KGHVFRR3.js → c-3AXJDL2P.js} +1 -1
- package/dist/m/{c-FOOE4GML.js → c-3GJ4XARY.js} +1 -1
- package/dist/m/c-3TWCKFOP.js +1 -0
- package/dist/m/{c-LPCZOYTX.js → c-3YH6JSIL.js} +1 -1
- package/dist/m/{c-AIWN4QN4.js → c-44B5ODN7.js} +2 -2
- package/dist/m/{c-S2U6NJU4.js → c-62HZW5DH.js} +1 -1
- package/dist/m/{c-ZGDYHKG3.js → c-67ILSNPR.js} +1 -1
- package/dist/m/c-67LGZ52V.js +20 -0
- package/dist/m/{c-ZRUQ5FSU.js → c-7SXYQCN4.js} +1 -1
- package/dist/m/{c-LACAAQFB.js → c-AL4RBJF2.js} +1 -1
- package/dist/m/{c-L42OLXWM.js → c-ANNFZFLN.js} +1 -1
- package/dist/m/{c-QO4HNGCQ.js → c-B4VYNXTQ.js} +1 -1
- package/dist/m/{c-7PRJCA3E.js → c-BJPZCWAV.js} +1 -1
- package/dist/m/{c-V52FE5FI.js → c-BTLFLLML.js} +1 -1
- package/dist/m/c-C4IIQZGJ.js +1 -0
- package/dist/m/{c-5T6NZHNM.js → c-CAWNFER6.js} +1 -1
- package/dist/m/c-CSNE5EIF.js +1 -0
- package/dist/m/{c-DVYGFTSK.js → c-DDDOKPI6.js} +2 -2
- package/dist/m/{c-2RARVIAK.js → c-DHXPDLW6.js} +1 -1
- package/dist/m/{c-WCXLG3MV.js → c-E4IBSAQM.js} +1 -1
- package/dist/m/{c-IVTRVENZ.js → c-EDSPKYMA.js} +1 -1
- package/dist/m/{c-2Y4DOHSY.js → c-EFD6QNTE.js} +1 -1
- package/dist/m/{c-7MG5RU63.js → c-EGTIAL6P.js} +1 -1
- package/dist/m/{c-FCNAO2MI.js → c-EOCKLMKX.js} +1 -1
- package/dist/m/{c-UXFUJEZO.js → c-EOCZ2YVL.js} +1 -1
- package/dist/m/{c-K72SY2TL.js → c-EZ7B5AZT.js} +1 -1
- package/dist/m/{c-UPD33ZPE.js → c-FDAXZ2PM.js} +1 -1
- package/dist/m/{c-P3CK66NT.js → c-FNVQAACK.js} +1 -1
- package/dist/m/c-FSWRGBVQ.js +1 -0
- package/dist/m/c-FTWGYI5E.js +1 -0
- package/dist/m/{c-WKNRJX3C.js → c-GKEATME6.js} +1 -1
- package/dist/m/{c-QINHDETP.js → c-GPGYKER7.js} +1 -1
- package/dist/m/{c-FWKHM4E7.js → c-GSRLXYWL.js} +1 -1
- package/dist/m/{c-B7J4K2AE.js → c-GVPNDIKJ.js} +2 -2
- package/dist/m/{c-FTQKI7SP.js → c-I2IFKJX2.js} +1 -1
- package/dist/m/c-ICMAOOGK.js +1 -0
- package/dist/m/{c-HUISJXHF.js → c-J3BXFTZS.js} +1 -1
- package/dist/m/{c-BIJALSRD.js → c-JDZDF2QM.js} +1 -1
- package/dist/m/{c-UDHIVLYH.js → c-JH5FF4NL.js} +1 -1
- package/dist/m/{c-OYRZ7XG2.js → c-JHJR5BQX.js} +1 -1
- package/dist/m/{c-V44KWI2L.js → c-JOH753EJ.js} +2 -2
- package/dist/m/{c-P3OFYUMA.js → c-JUE7B4OX.js} +1 -1
- package/dist/m/c-K76AUL4I.js +7 -0
- package/dist/m/{c-ZWIOJGMT.js → c-LA2BW7UY.js} +1 -1
- package/dist/m/{c-ICJYHABF.js → c-LDUNOR57.js} +1 -1
- package/dist/m/{c-XSZKP646.js → c-LIBE4HPD.js} +1 -1
- package/dist/m/c-LPUJXRXW.js +1 -0
- package/dist/m/{c-JK3PHE7J.js → c-LQU7TXIH.js} +1 -1
- package/dist/m/{c-5ZQV7KC4.js → c-LV5MABYD.js} +1 -1
- package/dist/m/{c-GWNC3UGL.js → c-M4FSPNQ2.js} +1 -1
- package/dist/m/{c-2KIEGNC4.js → c-MEWUGR4D.js} +1 -1
- package/dist/m/c-MIL4B2JQ.js +1 -0
- package/dist/m/{c-IVMD3FEM.js → c-N7Y52HJH.js} +1 -1
- package/dist/m/{c-O4JMKN6U.js → c-NFR673TL.js} +2 -2
- package/dist/m/{c-ZKNBMNN3.js → c-NLZ5AN4L.js} +1 -1
- package/dist/m/{c-RRZJWFLE.js → c-OABVRYOT.js} +1 -1
- package/dist/m/c-PIVIYLTY.js +1 -0
- package/dist/m/{c-L7JL5TL3.js → c-QY7F6EN6.js} +1 -1
- package/dist/m/{c-UY4QX42B.js → c-RG6XUZFA.js} +1 -1
- package/dist/m/c-RHMPKZZ7.js +1 -0
- package/dist/m/{c-TJAXGIRV.js → c-RQRMPZXD.js} +1 -1
- package/dist/m/{c-GY422N3Q.js → c-RS77ODLY.js} +1 -1
- package/dist/m/{c-BAUBNYXK.js → c-RT3C74GY.js} +1 -1
- package/dist/m/{c-CAS3NND4.js → c-S5IEIZCN.js} +1 -1
- package/dist/m/{c-HXPHZN7Q.js → c-SBSMJIPC.js} +1 -1
- package/dist/m/c-SFKI6OLM.js +2 -0
- package/dist/m/{c-4FJTBE6I.js → c-SJPD46ZO.js} +4 -4
- package/dist/m/{c-JCP3XDSJ.js → c-SO63UGPQ.js} +1 -1
- package/dist/m/{c-PLP4JKFC.js → c-TUGVINJR.js} +1 -1
- package/dist/m/{c-Q26MME6N.js → c-TWCXBWS3.js} +1 -1
- package/dist/m/{c-GNDL3TKB.js → c-U5X57T4L.js} +1 -1
- package/dist/m/{c-ZS4US2XV.js → c-UXEVJ63W.js} +1 -1
- package/dist/m/{c-KJJPV77R.js → c-V2J5C5MT.js} +1 -1
- package/dist/m/{c-7PYNAULW.js → c-VBLFAQD2.js} +1 -1
- package/dist/m/{c-ERQSNR6K.js → c-VQCEOGKH.js} +2 -2
- package/dist/m/{c-YVZ2L7CE.js → c-VSPAFOKU.js} +1 -1
- package/dist/m/{c-L6FLIUXP.js → c-VY6XRBOW.js} +1 -1
- package/dist/m/{c-2KL3BD52.js → c-W23KVGUO.js} +1 -1
- package/dist/m/{c-AXGY2WTB.js → c-W3K23S72.js} +1 -1
- package/dist/m/c-WFMRX5RZ.js +1 -0
- package/dist/m/{c-BWFVSBDF.js → c-WN3MXOLT.js} +1 -1
- package/dist/m/{c-MIKZEG5I.js → c-XD5MOROJ.js} +1 -1
- package/dist/m/{c-CQQDL6O4.js → c-XQSXKIKM.js} +1 -1
- package/dist/m/{c-I4MQHOEY.js → c-Y33LUUIQ.js} +1 -1
- package/dist/m/{c-JDARJDOT.js → c-YQUJ74R3.js} +1 -1
- package/dist/m/{c-F6G2OGYG.js → c-YSB6JKV2.js} +2 -2
- package/dist/m/{c-WQWIRWO3.js → c-Z32V4MHK.js} +1 -1
- package/dist/m/{c-BHZYSHW4.js → c-ZJLU56DV.js} +1 -1
- package/dist/m/{c-DKLS74XB.js → c-ZQXNHZZT.js} +2 -2
- package/dist/m/{c-TNEM3RNM.js → c-ZSCBEB7I.js} +1 -1
- package/dist/m/core/{admin-attrs-YY7T5FGU.js → admin-attrs-ZG7R5V3E.js} +1 -1
- package/dist/m/core/{autosave-RVJPYLRT.js → autosave-VPORYJSE.js} +1 -1
- package/dist/m/core/{conflict-notice-2WGT52LH.js → conflict-notice-JMAZLVRX.js} +1 -1
- package/dist/m/core/{persist-UKXV5KLA.js → persist-3OPWJKZS.js} +1 -1
- package/dist/m/core/{recovery-ZOUOJVIX.js → recovery-DRFZRJED.js} +1 -1
- package/dist/m/core/{save-A5JXV6ME.js → save-AOJBDSOK.js} +1 -1
- package/dist/m/core/{save-core-MKRPSEEO.js → save-core-IOCMXO5L.js} +1 -1
- package/dist/m/core/{snapshot-NU3YM6GR.js → snapshot-O7II2AGG.js} +1 -1
- package/dist/m/core/unsaved-warning-U5VUJFOE.js +1 -0
- package/dist/m/events/{index-RN2JNGBV.js → index-B6TGDYMG.js} +1 -1
- package/dist/m/internals/{index-TGLQINN3.js → index-HDRANDWE.js} +1 -1
- package/dist/m/lib/{cache-bust-MUMFXZK6.js → cache-bust-NH7VBWHO.js} +1 -1
- package/dist/m/lib/{region-policy-SB2AWVG5.js → region-policy-KWBPROWF.js} +1 -1
- package/dist/m/{loader-34YPFKOH.js → loader-DZZLUBVB.js} +1 -1
- package/dist/m/manifest-3AEF5191.js +1 -0
- package/dist/m/manifest-edit-29A26F22.js +1 -0
- package/dist/m/manifest.json +1202 -1158
- package/dist/m/options/{options-EJMS3K24.js → options-55LQHSJ4.js} +1 -1
- package/dist/m/page/{editor-WRQGHDSG.js → editor-EY2WAAGB.js} +2 -2
- package/dist/m/plugins/{ai-edit-X2L2KIEP.js → ai-edit-J5VLSW5I.js} +1 -1
- package/dist/m/plugins/{demo-OYO5GCAO.js → demo-42BSYQ7T.js} +1 -1
- package/dist/m/plugins/{live-7C36XEI2.js → live-5EZN2EYP.js} +1 -1
- package/dist/m/plugins/menu-KGWKT6CS.js +1 -0
- package/dist/m/plugins/{page-BSW6MGDO.js → page-LVW5DWA4.js} +2 -2
- package/dist/m/plugins/{page-view-WFZVTPQK.js → page-view-5KQ76IJB.js} +1 -1
- package/dist/m/plugins/{sortable-4S6SQC3D.js → sortable-WJZZBM7R.js} +1 -1
- package/dist/m/plugins/{source-TJXOIOYY.js → source-CCEUM3OR.js} +1 -1
- package/dist/m/plugins/{undo-NLPGCJQY.js → undo-3JEYK5QY.js} +1 -1
- package/dist/m/plugins/{upgrade-HSUNDNJD.js → upgrade-NW556WJD.js} +1 -1
- package/dist/m/plugins/{upload-NHGJXZK2.js → upload-TTCQRIM5.js} +1 -1
- package/dist/m/plugins/{visitor-drafts-BW43DGY3.js → visitor-drafts-2AWNT23K.js} +2 -2
- package/dist/m/plugins/{visitor-drafts-owner-7ODQG7JX.js → visitor-drafts-owner-MZP45XSG.js} +1 -1
- package/dist/m/plugins/{wire-6OSIL3I7.js → wire-VRYPY6EJ.js} +1 -1
- package/dist/m/{reader-core-PLZYLYLT.js → reader-core-2GXY7SHY.js} +2 -2
- package/dist/m/sync/{live-sync-UXNI6ZF6.js → live-sync-SKPMFYOO.js} +1 -1
- package/dist/m/ui/{index-IVWN2QC4.js → index-QNIPDHXQ.js} +1 -1
- package/dist/offline-manifest.json +634 -610
- package/docs/guide.md +24 -8
- package/package.json +3 -2
- package/src/core/conflict-download.js +8 -7
- package/src/core/conflict-notice-ui.js +4 -4
- package/src/core/copy-content.js +103 -0
- package/src/core/download.js +14 -2
- package/src/core/save-size-notice.js +2 -2
- package/src/core/upgrade-run.js +5 -1
- package/src/lib/region-policy.js +1 -1
- package/src/page/features/export-html.js +4 -4
- package/src/page/features/export-markdown.js +2 -2
- package/src/page/recovery-ui.js +2 -2
- package/src/page/save-states.js +4 -4
- package/src/plugins/menu/actions.js +1 -1
- package/src/plugins/page.js +4 -4
- package/src/plugins/visitor-drafts/prompt.js +12 -12
- package/src/plugins/wire.js +3 -1
- package/dist/m/attrs/save-freeze-LWGF6XUN.js +0 -1
- package/dist/m/c-DCFSEJZG.js +0 -1
- package/dist/m/c-EXEDYU4H.js +0 -1
- package/dist/m/c-GRXHHFPO.js +0 -1
- package/dist/m/c-HT2DKBV2.js +0 -1
- package/dist/m/c-MCOOHCSG.js +0 -1
- package/dist/m/c-MMXKAX2W.js +0 -1
- package/dist/m/c-VE7RKNKZ.js +0 -7
- package/dist/m/c-VR2BJ4AN.js +0 -1
- package/dist/m/c-WGW764WX.js +0 -1
- package/dist/m/c-WNTYKCDG.js +0 -1
- package/dist/m/c-YBSS55KU.js +0 -20
- package/dist/m/core/unsaved-warning-4ZPEV7BF.js +0 -1
- package/dist/m/manifest-0D166F4F.js +0 -1
- package/dist/m/manifest-edit-3877153E.js +0 -1
- package/dist/m/plugins/menu-MFC4DI5E.js +0 -1
- /package/dist/m/{c-QTTJYJMA.js → c-FILLTJA7.js} +0 -0
- /package/dist/m/{c-5JLFROUB.js → c-X5LNHET5.js} +0 -0
- /package/dist/m/plugins/{people-JCHVPF7P.js → people-C7TVBBMR.js} +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
import{c as m}from"../c-7SWMYKAI.js";import{a as f}from"../c-
|
|
1
|
+
import{c as m}from"../c-7SWMYKAI.js";import{a as f}from"../c-LA2BW7UY.js";import"../c-IJUK2GPW.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var w="option-visibility",y=[{prefix:"option-not",kind:"show-not"},{prefix:"option",kind:"show"},{prefix:"show-when",kind:"show"},{prefix:"hide-when",kind:"hide"}];function x(t,e){let n=null;for(let o of y)if(t.startsWith(o.prefix+":")){n=o;break}if(!n)return null;let r=t.slice(n.prefix.length+1),i=e,s=i.split("|");return{name:r,rawValue:i,values:s,kind:n.kind,prefix:n.prefix,negated:n.kind==="show-not"}}var h={debug:!1,_started:!1,_unsubscribe:null,log(...t){this.debug&&console.log("[OptionVisibility]",...t)},findOptionAttributes(){let t=new Map;try{let e=document.evaluate('//*[@*[starts-with(name(), "option:") or starts-with(name(), "option-not:") or starts-with(name(), "show-when:") or starts-with(name(), "hide-when:")]]',document.documentElement,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for(let n=0;n<e.snapshotLength;n++){let r=e.snapshotItem(n);for(let i of r.attributes){let s=x(i.name,i.value);if(!s)continue;let o=`${s.prefix}:${s.name}=${s.rawValue}`;t.has(o)||t.set(o,s)}}}catch(e){this.log("XPath error, falling back to empty",e)}return[...t.values()]},generateCSS(t){return t.length?t.map(e=>{let{name:n,rawValue:r,values:i}=e,s=e.kind||(e.negated?"show-not":"show"),o=e.prefix||(s==="show-not"?"option-not":s==="hide"?"hide-when":"option"),a=CSS.escape(n),b=CSS.escape(r),u=`[${CSS.escape(o)}\\:${a}="${b}"]`,S=i.map(c=>`[${a}="${CSS.escape(c)}"]`),g=i.map(c=>`[${a}="${CSS.escape(c)}"] *`),p=[...S,...g].join(",");if(s==="hide")return`${u}:is(${p}){display:none!important}`;let l;if(s==="show-not"){let c=i.map($=>`[${a}="${CSS.escape($)}"]`).join(","),d=`[${a}]:not(${c})`;l=`${d},${d} *`}else l=p;return`${u}:not(:is(${l})){display:none!important}`}).join(""):""},update(){try{let t=this.findOptionAttributes(),e=this.generateCSS(t);m(w,e,n=>{n.setAttribute("clay","no-watch")}),this.log(`Generated ${t.length} rules`)}catch(t){console.error("[OptionVisibility] Error generating rules:",t)}},start(){if(!this._started){if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",()=>this.start(),{once:!0});return}this._started=!0,this.update(),this._unsubscribe=f.onAnyChange({debounce:200,selectorFilter:t=>[...t.attributes].some(e=>e.name.startsWith("option:")||e.name.startsWith("option-not:")||e.name.startsWith("show-when:")||e.name.startsWith("hide-when:")),omitChangeDetails:!0,require:"observed",pausable:!1},()=>this.update()),this.log("Started")}},stop(){if(!this._started)return;this._started=!1,this._unsubscribe&&(this._unsubscribe(),this._unsubscribe=null);let t=document.querySelector(`style[data-name="${w}"]`);t&&t.remove(),this.log("Stopped")}};window.clay.optionVisibility=h;var O=h;function _(){h.start()}_();export{O as default,_ as init,x as parseOptionAttribute};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as se,c as L}from"../c-
|
|
1
|
+
import{a as se,c as L}from"../c-JDZDF2QM.js";import"../c-IW6GGOU2.js";import"../c-HAWFNBYG.js";import{b as he}from"../c-VJYEVRYK.js";import{P as Pe,Q as Ce,f as te,j as ge,k as de,l as le,m as ce,o as ue,r as be,t as fe,y as me}from"../c-SJPD46ZO.js";import"../c-EXKHPOVC.js";import"../c-L5VFATT6.js";import{n as oe}from"../c-XQSXKIKM.js";import"../c-67ILSNPR.js";import{a as pe,b as ie,d as ne}from"../c-W4JCVLAB.js";import"../c-7K4SCQB7.js";import"../c-WMRJKQ2V.js";import{A as ze,B as Ee,H as Ae,b as ae,c as re,f as R,k as ve,o as ke,w as we,z as ye}from"../c-44B5ODN7.js";import{G as Y,J,N as Q,P as Z,S as ee,a as W,b as u,d as v,e as B,f as D,g as w,h as U,i as X,m as b,w as G}from"../c-QIXT3Q7C.js";import{a as q,c as Be,d as F}from"../c-LPUJXRXW.js";import{a as xe}from"../c-BYTKL6UX.js";import"../c-E4IBSAQM.js";import"../c-57XDY6HC.js";import{b as I}from"../c-RS77ODLY.js";import"../c-7SWMYKAI.js";import"../c-UGHH4MB3.js";import"../c-LA2BW7UY.js";import"../c-IJUK2GPW.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var{Decoration:V,DecorationSet:qe}=v,Ve="Type / for blocks",$e="Untitled",He="To do";function _e(e){let a=!1,r=null;return e.forEach((o,t)=>{a||o.type!==b.nodes.heading||o.attrs.level!==1||(o.attrs.parent??null)!==null||(a=!0,o.content.size||(r=V.node(t,t+o.nodeSize,{class:"page-title-placeholder","data-placeholder":$e})))}),r}function Ne(e){let a=[];return e.forEach((r,o)=>{r.type!==b.nodes.list_item||r.attrs.kind!=="check"||r.content.size||r.attrs.checked||a.push(V.node(o,o+r.nodeSize,{class:"page-check-placeholder","data-placeholder":He}))}),a}function Se(e=Ve){return new u.Plugin({props:{decorations(a){let r=Ne(a.doc),o=_e(a.doc);o&&r.push(o);let{selection:t}=a;if(t.empty){let p=t.$from;if(p.depth===1){let n=p.parent;if(n.type===b.nodes.paragraph&&!n.content.size){let d=p.before(1);r.push(V.node(d,d+n.nodeSize,{class:"page-placeholder","data-placeholder":e}))}}}return r.length?qe.create(a.doc,r):null}}})}var De=new u.Plugin({props:{handleKeyDown(e,a){if(!(a.metaKey||a.ctrlKey)||!a.shiftKey||a.altKey)return!1;let r=a.key.toLowerCase()==="o"?"owner":a.key.toLowerCase()==="d"?"date":null;if(!r||e.dom.getAttribute(r==="owner"?"data-assignees":"data-dates")==="false")return!1;for(let o of pe.get(e)??[])if(o.focusControl?.(e,r))return!0;return!1}}});var Me="page-editor-style",We=[1,2,3,4,5,6,7,8],Ue=`
|
|
2
2
|
--page-bg: #F7F6F2; --page-ink: #23221F; --page-ink-soft: #6B6862; --page-ink-faint: #9B968C;
|
|
3
3
|
--page-rule: rgba(35, 34, 31, 0.10); --page-accent: #2F5E9E; --page-link: #164583; --page-selection: rgba(88, 120, 170, 0.20);
|
|
4
4
|
--page-check-border: rgba(35, 34, 31, 0.35); --page-check-fill: #23221F; --page-check-ink: #F7F6F2;
|
|
@@ -301,4 +301,4 @@ ${We.map(e=>`:where(article[data-page], .page-editor) .page-li[data-indent="${e}
|
|
|
301
301
|
.page-dock, .page-plus, .page-grip, .page-toggle-button, .page-image-handle, .page-upload-bar > span, .page-board-person { transition: none; }
|
|
302
302
|
}
|
|
303
303
|
}
|
|
304
|
-
`,Ge=(e,a)=>(a&&a(e.tr.replaceSelectionWith(b.nodes.hard_break.create()).scrollIntoView()),!0),Ye=(e,a,r)=>!a||!r?.editable||!G(e,b.marks.underline)?!1:(import("../c-
|
|
304
|
+
`,Ge=(e,a)=>(a&&a(e.tr.replaceSelectionWith(b.nodes.hard_break.create()).scrollIntoView()),!0),Ye=(e,a,r)=>!a||!r?.editable||!G(e,b.marks.underline)?!1:(import("../c-VBLFAQD2.js").then(({formatMark:o,refuse:t})=>o(r,"underline").then(p=>{p?.status!=="applied"&&t(r,p?.message??"That format isn\u2019t available here.")}),()=>null),!0),Je=({history:e=!0,undo:a,redo:r}={})=>({"Mod-z":e?B.undo:()=>(a?.(),!0),"Shift-Mod-z":e?B.redo:()=>(r?.(),!0),"Mod-y":e?B.redo:()=>(r?.(),!0),"Shift-Enter":Ge,"Mod-b":w.toggleMark(b.marks.strong),"Mod-i":w.toggleMark(b.marks.em),"Mod-u":Ye}),Qe=(e,a,r)=>ge(null,r)?!1:U.undoInputRule(e,a&&(o=>a(Ee(o)))),Ze={Backspace:w.chainCommands(Qe,ce),"Mod-e":w.toggleMark(b.marks.code),"Mod-Shift-s":w.toggleMark(b.marks.strike)},ea=(e,a)=>globalThis.clay?.upload?.(e,a)??Promise.resolve({ok:!1,code:"unavailable",msg:"File uploads are not available in this editor"}),Te=new WeakMap,T=new u.PluginKey("lazyViews"),$=class{constructor(a,r){this.node=a,this.type=a.type,this.registry=r;let{dom:o,contentDOM:t}=W.DOMSerializer.renderSpec(document,a.type.spec.toDOM(a));this.dom=o,this.contentDOM=t??null}update(a){return a.type===this.type&&!this.registry.has(a.type.name)}};function aa(){return new u.Plugin({key:T,state:{init:()=>v.DecorationSet.empty,apply(e){let a=e.getMeta(T);if(!a)return v.DecorationSet.empty;let r=[];return e.doc.forEach((o,t)=>{a.types.includes(o.type.name)&&r.push(v.Decoration.node(t,t+o.nodeSize,{},{lazyView:r.length+1}))}),v.DecorationSet.create(e.doc,r)}},props:{decorations:e=>T.getState(e)}})}function ra({view:e,upload:a,toolHost:r,board:o=null,undo:t=null,redo:p=null,revise:n=null,highlight:d},s,m){let x=m.createFeature({view:e,upload:a,toolHost:r,board:o,undo:t,redo:p,revise:n,highlight:d}),y=Te.get(e),z=()=>{if(x.css&&I(`page-feature-${s}`,x.css,`page-feature-${s}`,["editor-ui"]),!x.nodeViews)return;let A=Object.keys(x.nodeViews);for(let k of A)y.set(k,x.nodeViews[k]);e.dispatch(e.state.tr.setMeta(T,{types:A}).setMeta("addToHistory",!1))},E=()=>{e.isDestroyed||(e.composing?setTimeout(E,25):z())};return e.composing?e.dom.addEventListener("compositionend",()=>setTimeout(E,25),{once:!0}):z(),x}function oa(e){return new u.Plugin({view(a){let r=new Set,o=()=>{for(let p of r)e.has(p)&&r.delete(p);a.state.doc.forEach(p=>{let n=Be(p);!n||e.has(n)||r.has(n)||e.ensure(n).catch(()=>{r.add(n)})})},t=a.state.doc;return o(),{update(){a.state.doc!==t&&(t=a.state.doc,o())}}}})}function ta({load:e=()=>Promise.reject(new Error("page: this editor has no command module")),context:a=()=>({}),reportError:r}={}){let o=new Map,t=new Set,p=null,n=null,d=!0,s=!1,m=0,x=l=>{let g=o.get(l);return g||(g=Promise.resolve(e(l)),o.set(l,g),g.catch(()=>{o.get(l)===g&&o.delete(l)})),g},y=()=>(n??=L({load:x,install:(l,g)=>g.createFeature(a(p)),reportError:r??((l,g)=>console.error(`clayjs: the ${g} command failed to load`,l))}),n),z=()=>{let l=m,g=p.state.selection;return{revision:l,selection:g,valid:()=>d&&!s&&!p.isDestroyed&&m===l&&p.state.selection.eq(g)}};function E(l,g){l.doc!==g.doc&&(m+=1);for(let h of t)h.lease.valid()||(t.delete(h),h.controller.abort({ok:!1,code:"stale-target"}))}async function A(l,g){if(!d||s||!p||p.isDestroyed)return{ok:!1,code:"not-editing"};let h={lease:z(),controller:new AbortController};t.add(h);try{let c=await y().ensure(l,{signal:h.controller.signal});return c?h.lease.valid()?await c.run(g):{ok:!1,code:"stale-target"}:{ok:!1,code:"not-editing"}}catch(c){return h.controller.signal.aborted?h.controller.signal.reason:{ok:!1,code:"unavailable",error:c}}finally{t.delete(h)}}function k(){if(d){d=!1;for(let l of t)l.controller.abort({ok:!1,code:"not-editing"});t.clear()}}function S(){k(),n?.dispose(),n=null}return{attach(l){p=l},observe:E,run:A,enter(){s||(d=!0)},quiesce:k,leave:S,dispose(){S(),s=!0,d=!1,o.clear()}}}var H=new WeakMap;function pa(e){return new u.Plugin({view:()=>({update:(a,r)=>e.observe(a.state,r)}),props:{handleTextInput(a,r,o,t){return t!=="@"||a.composing||!Object.hasOwn(F,"mentions")?!1:(a.dispatch(a.state.tr.insertText("@",r,o)),e.run("mentions",{from:r,to:r+1}),!0)}}})}function qa(e,a,r){let o=e?H.get(e):null;return o?Object.hasOwn(F,a)?o.run(a,r):Promise.resolve({ok:!1,code:"unknown-command"}):Promise.resolve({ok:!1,code:"not-editing"})}function ia(e){return new u.Plugin({view(a){let r=e?()=>e.tablesChanged():()=>xe.get(a)?.tablesChanged?.(),o=a.state.doc;return{update(t){t.state.doc!==o&&(o=t.state.doc,r())}}}})}function na({upload:e=ea,highlight:a,history:r=!0,undo:o,redo:t,onAiTool:p=null,toolHost:n=null,features:d=null,commandHost:s=null}={}){return[re(),me({onAiTool:p}),s?pa(s):null,fe(),ia(n),ae(),ue(),Ae(),de(),le(),Se(),se(),D.keymap(Ze),Pe,De,D.keymap(ze),D.keymap(Je({history:r,undo:o,redo:t})),D.keymap(w.baseKeymap),ve(),ee(),Ce(),ne(),te({upload:e}),we(),oe({upload:e,features:d}),he(),ye(),be(),r?B.history():null,X.gapCursor(),aa(),d?oa(d):null].filter(Boolean)}function ga(e,a={}){let r=e&&Object.keys(e).length?e:{[J()]:{t:"paragraph",pos:Y(),c:""}},o=a.doc??Z(b,r);return u.EditorState.create({doc:o,plugins:na(a)})}function Va(e){!e||e.isDestroyed||e.updateState(e.state)}function $a(e,a,{quiesce:r=!1}={}){if(!e||e.isDestroyed)return!1;let o=a===!0;e.setProps({editable:()=>o});let t=H.get(e);return o?t?.enter():r?t?.quiesce():t?.leave(),o}function da(e,a){let r=a.target.closest?.('.page-li[data-kind="check"]');if(!r||!e.dom.contains(r))return!1;let o=r.getBoundingClientRect(),t=parseFloat(getComputedStyle(r).paddingInlineStart)||0,p=getComputedStyle(r).direction==="rtl"?o.right-a.clientX:a.clientX-o.left;if(p<0||p>t)return!1;let n=e.posAtDOM(r,0)-1,d=e.state.doc.nodeAt(n);return d?(a.preventDefault(),e.dispatch(e.state.tr.setNodeMarkup(n,null,{...d.attrs,checked:!d.attrs.checked})),!0):!1}function Ha(e,{blocks:a=null,onChange:r=null,upload:o,highlight:t,doc:p,dispatch:n,history:d=!0,undo:s,redo:m,editable:x=!0,toolHost:y=null,onAiTool:z=null,reviseTool:E=null,board:A=null,features:k=null,formatGate:S=null}={}){let l=e.ownerDocument;I(Me,Xe,Me,["editor-ui"]);let g=l.createElement("div");g.className="page-shell",g.setAttribute("clay","editor-ui"),g.setAttribute("sap-ignore",""),e.appendChild(g);let h=!1,c=null,O=k??L({load:i=>q[i].load(),install:(i,f)=>ra({view:c,upload:o,toolHost:y,board:A,undo:s,redo:m,revise:E,highlight:t},i,f)}),M=ta({load:i=>F[i].load(),context:i=>({view:i,upload:o})}),j=new Map,_={};for(let i of Object.values(q))for(let f of i.views??i.types)_[f]=(C,Ke,Ie,Le,Re)=>{let N=j.get(C.type.name);return N?N(C,Ke,Ie,Le,Re):new $(C,j)};c=new v.EditorView(g,{state:ga(a,{upload:o,highlight:t,doc:p,history:d,undo:s,redo:m,onAiTool:z,toolHost:y,features:O,commandHost:M}),attributes:{class:"page-editor"},scrollMargin:{top:16,bottom:96,left:5,right:5},scrollThreshold:{top:16,bottom:96,left:0,right:0},editable:()=>x,nodeViews:_,handleDOMEvents:{mousedown:da,dragstart(i,f){let C=i.state.selection;return C instanceof u.NodeSelection||C instanceof ke?(f.preventDefault(),!0):!1}},dispatchTransaction(i){if(n){n(i);return}h&&i.docChanged&&!i.getMeta(R)&&B.closeHistory(i),i.docChanged&&(h=!!i.getMeta(R));let f=c.state.doc;c.updateState(c.state.apply(i)),r&&c.state.doc!==f&&r(Q(c.state.doc))}}),Te.set(c,j),ie.set(c,O),M.attach(c),H.set(c,M);let Oe=c.destroy.bind(c),P=null,K=!1,je=()=>(P||(P=Promise.resolve().then(()=>S()).catch(i=>{throw P=null,i})),P);return c.runFormatCommand=async i=>{if(K)return{status:"disposed",retry:!1};if(!S)return{status:"unsupported-host",code:"page-format-unsupported",retry:!1};let f=await je();return K?(f.dispose?.(),{status:"disposed",retry:!1}):f.run({apply:i})},c.destroy=()=>{K=!0,P&&P.then(i=>i?.dispose?.(),()=>{}),M.dispose(),O.dispose(),Oe()},c}export{Xe as PAGE_EDITOR_CSS,Ha as createPageEditor,ra as installPageFeature,T as lazyViewsKey,aa as lazyViewsPlugin,na as pagePlugins,ga as pageState,Va as refreshMountedView,qa as runPageCommand,$a as setEditorActive};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{a as Ce}from"../c-AQYCG7QW.js";import{c as Se}from"../c-
|
|
1
|
+
import{a as Ce}from"../c-AQYCG7QW.js";import{c as Se}from"../c-I2IFKJX2.js";import{e as $e,g as N,h as Be,j as ae,l as ve,n as Ee,p as Pe,q as d}from"../c-BJ7YQ5QZ.js";import{a as De}from"../c-4JZDZFF6.js";import{b as W,c as ye,d as re,e as w,f as Fe}from"../c-VAK7SG37.js";import{b as T}from"../c-MHI3GYKF.js";import{b as Ke}from"../c-TUGVINJR.js";import{a as le,b as We}from"../c-FILLTJA7.js";import{b as m}from"../c-NUHP2XDB.js";import"../c-TWCXBWS3.js";import{a as Ne}from"../c-VKEDWYDF.js";import{m as _e,n as se}from"../c-NLZ5AN4L.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-GSRLXYWL.js";import"../c-X5LNHET5.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import{a as xe}from"../c-LA2BW7UY.js";import"../c-GVPNDIKJ.js";import"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import"../c-NQJRVJ56.js";import"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import{k as He}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-EGTIAL6P.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import{h as J,o as Ie}from"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var Ye="ai-edit",ft="h1,h2,h3,h4,h5,h6,p,figure",pt="p,h1,h2,h3,h4,h5,h6,li,dt,dd,blockquote,pre,figcaption,td,th",ht="section,article,aside,header,footer,nav,main,div,ul,ol,dl,table,figure,form",Je="script,style,template,textarea,input,select,button,iframe,svg,math",mt=900*1024,gt="This section is too large for AI editing; select a smaller part.",bt="The save did not finish; the edit is still on the page.",wt=0,a=null,r,g,c,y,E,h,b,v,L,D,$,B,R,F={},p=null,k=null,H=null,de=!1,ie=new WeakMap,ge=new Set,f=null,U=null,x=null,_,P,ue=null,C=null,z=null,A=null,Z=null,fe=[],q=null,Ae=0;function Xe(e){ie.delete(e),ge.delete(e)}function Me(e,t){if(!t){Xe(e);return}ie.set(e,t),ge.add(e)}var Qe="clay-ai-edit",qe="AI editing is turned off. Turn it on from the app\u2019s menu.";async function Ze(){let t=(await Se.helpers()).find(n=>n.name===Ye);return t&&(t.state==="ready"||t.state==="unavailable")?t.state:null}function xt(){xe.pause()}function Re(){xe.resume()}function ce(e){if(!(e instanceof Element))return null;let t=e.closest("[data-edit-id]");if(!t)return null;let n=e.closest(ft);return n&&t.contains(n)?n:t}function yt(e){if(e===document.body)return"document";let t=e.getAttribute("data-edit-id");if(t)return t;let n=e.closest("[data-edit-id]");return n?n.getAttribute("data-edit-id")+" \u203A "+e.tagName.toLowerCase():e.id?"#"+e.id:e.tagName.toLowerCase()}function be(){let e=window.getSelection();return!e||e.rangeCount===0||e.isCollapsed?null:e.getRangeAt(0)}function et(e){let t=e.commonAncestorContainer;if(t.nodeType!==1&&(t=t.parentElement),!t||!document.body.contains(t))return null;if(t===document.body)return document.body;if(t.closest("[data-clay-ai-edit]")||t.closest(J)||t.closest(Je))return null;if(t.closest("[data-edit-id]"))return ce(t);let n=t.closest(pt)||t.closest(ht);return n&&n!==document.body?n:null}function tt(e,t){if(!e||!t||!t.contains(e.commonAncestorContainer))return;let n=e.toString();if(!n.trim())return;let i=document.createRange();i.selectNodeContents(t),i.setEnd(e.startContainer,e.startOffset);let o=i.toString().length;return{text:n,start:o,end:o+n.length}}function pe(e){let t=be();if(t){if(e===document.body){let n=t.toString();return n.trim()?{text:n,start:void 0,end:void 0}:void 0}return tt(t,e)}}function nt(){let e=document.body.cloneNode(!0);return e.querySelectorAll(J).forEach(t=>t.remove()),e.outerHTML}function vt(e,t,n){let{HyperMorph:i}=le();return i.morph(e,t,{morphStyle:"outerHTML",restoreFocus:!0,scripts:n})}function he(e,t,{rewind:n=!1}={}){let{HyperMorph:i,mergeTagRecognizers:o}=le(),s=n?{merge:!1,handle:!1}:{mergeBase:e.snapshot,mergeTags:o,handle:!1};e.docMode?(typeof t=="string"&&(t=new DOMParser().parseFromString(t,"text/html").body),i.morph(document.body,t,{morphStyle:"outerHTML",restoreFocus:document.activeElement?.localName!=="clay-editor-ui",scripts:s,callbacks:{beforeNodeRemoved:l=>!(l.nodeType===1&&l.matches(J))}})):vt(e.el,t,s),Ke()}function Et(e,t){let n=e.search(new RegExp("<"+t+"(\\s|>)","i"));if(n===-1)return null;let i=e.slice(n).replace(/\s*`{1,3}\s*$/,"");if(t.toLowerCase()==="body")return new DOMParser().parseFromString(i,"text/html").body;let o=document.createElement("template");o.innerHTML=i;let s=o.content.firstElementChild;return!s||s.tagName.toLowerCase()!==t.toLowerCase()?null:s}function Ct(e,t,n){let i=e===document.body,o=[...t.matchAll(/(?<![\w\u00C0-\u024F.@\/:-])@([\w.-]*[/.][\w./-]*)/g)].map(u=>u[1].replace(/\.+$/,"")).filter(u=>u!=="page").filter(u=>/[/.]/.test(u)),s=i?nt():e.outerHTML,l={id:"req-"+Date.now().toString(36)+"-"+ ++wt,editId:yt(e),tag:e.tagName.toLowerCase(),elementHTML:s,comment:t,contextRefs:o};return n&&(l.quote=n.text,Number.isInteger(n.start)&&(l.selection={start:n.start,end:n.end})),!i&&/(?<![\w\u00C0-\u024F.@\/:-])@page(?![\w\/-]|\.\w)/.test(t)&&(l.page=!0),{id:l.id,el:e,docMode:i,tag:l.tag,reassertId:i?null:e.getAttribute("data-edit-id"),snapshot:s,payload:l,state:"requesting",paused:!1,handle:null,finalCandidate:null}}async function St(e,t,n){if(a=Ct(e,t,n),new Blob([JSON.stringify(a.payload)]).size>mt){a=null,me(gt,"warn");return}if(Me(e,t),Pt(),a.paused=!0,xt(),k={},te("working"),O("Sending\u2026"),a.payload.page&&await window.clay.save(),!a)return;let i=Se.send(a.payload,{helper:Ye,onStatus:({text:s})=>{a?.handle===i&&O(s)}});a.handle=i;let o=await i.done;!a||a.handle!==i||(await We(),!(!a||a.handle!==i)&&(o.state==="done"?kt(o.result||{}):o.state==="cancelled"?Q("HTML Clay stopped this edit."):Q(o.error||"the helper reported an error")))}var Tt=/^(on|hx-on|x-|@|:|v-on:|v-bind:|data-on[-:])/,Lt=new Set(["iframe","frame","object","embed","base","link"]);function At(e){let t=e.replace(/[\t\n\r]/g,"").replace(/^[\u0000- ]+/,"").toLowerCase();return t.startsWith("javascript:")||t.startsWith("vbscript:")}function Mt(e){let t=(e.getAttribute("type")||"").trim().toLowerCase();return!t||/javascript|ecmascript/.test(t)||["module","importmap","speculationrules"].includes(t)}function Te(e){return[...e.attributes].map(t=>t.name.toLowerCase()+"="+t.value).sort().join(" ")}function ze(e){let t=new Map,n=i=>t.set(i,(t.get(i)||0)+1);for(let i of[e,...e.querySelectorAll("*")]){let o=i.tagName.toLowerCase();o==="script"?Mt(i)&&n("script "+Te(i)+"|"+i.textContent.trim()):(Lt.has(o)||o==="meta"&&i.hasAttribute("http-equiv")||(o==="animate"||o==="set")&&/href/i.test(i.getAttribute("attributeName")||""))&&n(o+" "+Te(i));for(let s of i.attributes){let l=s.name.toLowerCase();Tt.test(l)?n(o+" "+l+"="+s.value.trim()):l==="srcdoc"?n(o+" srcdoc="+s.value):At(s.value)&&n(o+" "+l+"="+s.value)}}return t}function Rt(e,t,n){let i=n?new DOMParser().parseFromString(t,"text/html").body:(()=>{let s=document.createElement("template");return s.innerHTML=t,s.content.firstElementChild})(),o=i?ze(i):new Map;for(let[s,l]of ze(e))if(l>(o.get(s)||0))return!0;return!1}var Ot="The reply adds a script or event handler, so it was not applied. AI editing changes content, not code.";function kt(e){if(!a||a.state!=="requesting")return;a.state="deciding";let t=[],n=Et(e.html||"",a.tag);if(!n){Q(`reply is not a single <${a.tag}> element`);return}if(!a.docMode){let i=document.createElement("template");i.innerHTML=e.html||"",i.content.children.length>1&&t.push("reply had extra root elements \u2014 kept the first")}if(a.reassertId&&n.setAttribute("data-edit-id",a.reassertId),Rt(n,a.snapshot,a.docMode)){Q(Ot);return}_e(),a.held=!0,a.finalCandidate=n;try{he(a,n)}catch(i){Q("the reply could not be applied: "+(i?.message||i));return}S(),Xe(a.el),te("ready"),O(Ht(t,e.model),t.length?"warn":"")}function Ht(e,t){let n=["Edit ready.",...e.map(i=>"\u26A0 "+i)];return t&&n.push(`(${t})`),n.join(" ")}function Q(e){a&&(oe(),te("error"),O(e,"warn"))}function oe(){let e=a;if(a=null,!!e)try{(e.state==="requesting"||e.state==="deciding")&&le()&&he(e,e.snapshot,{rewind:!0})}finally{e.paused&&Re(),e.held&&se(),S()}}async function it(){let e=a;if(!e)return;a=null;let t=e.docMode?nt():e.el.outerHTML;try{he(e,e.snapshot,{rewind:!0})}finally{e.paused&&Re(),e.held&&se({replay:!1})}he(e,t),S(),te("saving"),O("Saving\u2026");let n=k,i=await window.clay.save();if(n===k){if(i&&i.ok===!1){te("error"),O(i.msg||bt,"warn");return}O(i&&i.msg||"Saved",i&&i.msgType==="error"?"warn":""),Bt()}}function ot(){a?.handle?.cancel(),oe(),V()}var Ge=["z-index:99999","padding:0","display:inline-grid","place-items:center","line-height:1",`box-shadow:${re}`];function K(e,t,n){return e.setAttribute(t,n),e}function It(){let{signal:e}=Z;q=document.createElement("style"),q.setAttribute("clay",$e),q.textContent=`
|
|
2
2
|
[editmode\\:contenteditable][contenteditable]:focus {
|
|
3
3
|
outline: 1px solid #4a4a6a; outline-offset: 4px; border-radius: 2px;
|
|
4
4
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{b as l}from"../c-JAX2667S.js";import{f as i}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import{h as c}from"../c-
|
|
1
|
+
import{b as l}from"../c-JAX2667S.js";import{f as i}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import{h as c}from"../c-ICMAOOGK.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};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}from"../c-
|
|
1
|
+
import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}from"../c-UXEVJ63W.js";import"../c-JKZJIUIP.js";import"../c-TCCA5BZN.js";import"../c-3LDGIBMN.js";import"../c-57XDY6HC.js";import"../c-LZJPNR2W.js";import"../c-NLZ5AN4L.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-GSRLXYWL.js";import"../c-X5LNHET5.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-LA2BW7UY.js";import"../c-GVPNDIKJ.js";import"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import"../c-NQJRVJ56.js";import"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-EGTIAL6P.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";export{a as HOLD_MS,t as checkpointWithin,o as closeStore,k as confirmSaved,w as default,b as drainLiveWriter,q as fastLane,r as lanePending,h as live,f as liveTags,c as liveWriterParticipant,s as localLane,c as modeParticipant,p as openStores,d as pageLaneReady,e as pageWriterReady,m as receiveFrame,j as registerPageCheckpoints,v as requestCheckpoint,u as requestExitCheckpoint,l as sendingCapture,g as serializeLines,i as stageStore,n as storeOf};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{a as be,b as we}from"../c-D3E4WJ4M.js";import{a as K}from"../c-AQLFEATB.js";import{b as ye}from"../c-QY7F6EN6.js";import{b as he,c as ge}from"../c-RVMWGXEJ.js";import{d as me}from"../c-MHI3GYKF.js";import{a as pe,b as fe}from"../c-RHMPKZZ7.js";import{a as de}from"../c-VKEDWYDF.js";import{b as te,c as ne,f as ie,g as ue}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var ve='<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 Ee=new Set(["top-left","top-right","bottom-left","bottom-right"]),Ue=4,xe="menu-corner";function Be(e,n,c,y){return`${n<y/2?"top":"bottom"}-${e<c/2?"left":"right"}`}function Ie(e,n){let[c,y]=e.split("-");if(n==="ArrowUp")c="top";else if(n==="ArrowDown")c="bottom";else if(n==="ArrowLeft")y="left";else if(n==="ArrowRight")y="right";else return null;return`${c}-${y}`}function _e(e){let n=null;try{n=e?e.get(xe):null}catch{}return Ee.has(n)?n:"top-right"}function He(e){let n=document.createElement("div");n.className="clay-menu-spots",n.setAttribute("clay","editor-ui"),n.setAttribute("aria-hidden","true");for(let c of Ee){let y=document.createElement("span");y.className="clay-menu-spot",y.dataset.to=c,n.append(y)}return e.append(n),n}function ke({dock:e,container:n=document.body,grip:c,storage:y,onMove:C,onDragStart:R}){function i(r,{remember:d=!0}={}){if(e.dataset.corner=r,d)try{y&&y.set(xe,r)}catch{}C&&C(r)}i(_e(y),{remember:!1}),c.addEventListener("keydown",r=>{let d=Ie(e.dataset.corner,r.key);d&&(r.preventDefault(),d!==e.dataset.corner&&i(d))});let o=null;c.addEventListener("pointerdown",r=>{if(r.button!==0||r.isPrimary===!1)return;let d=e.getBoundingClientRect();if(o={id:r.pointerId,x:r.clientX,y:r.clientY,dx:r.clientX-d.left,dy:r.clientY-d.top,w:d.width,h:d.height,moving:!1,spots:null,near:null},c.setPointerCapture)try{c.setPointerCapture(r.pointerId)}catch{}}),c.addEventListener("pointermove",r=>{if(!o||r.pointerId!==o.id)return;if(!o.moving){if(Math.hypot(r.clientX-o.x,r.clientY-o.y)<Ue)return;o.moving=!0,e.setAttribute("data-dragging",""),o.spots=He(n),o.spots.style.setProperty("color-scheme",getComputedStyle(e).colorScheme),R&&R()}let d=r.clientX-o.dx,E=r.clientY-o.dy;Object.assign(e.style,{left:`${d}px`,top:`${E}px`,right:"auto",bottom:"auto"}),o.near=Be(d+o.w/2,E+o.h/2,window.innerWidth,window.innerHeight);for(let k of o.spots.children)k.toggleAttribute("data-near",k.dataset.to===o.near)});let h=r=>d=>{if(!o||d.pointerId!==o.id)return;let{moving:E,near:k,spots:s}=o;if(o=null,!!E){s.remove(),e.removeAttribute("data-dragging");for(let u of["left","top","right","bottom"])e.style.removeProperty(u);r&&k?i(k):i(e.dataset.corner,{remember:!1})}};return c.addEventListener("pointerup",h(!0)),c.addEventListener("pointercancel",h(!1)),c.addEventListener("lostpointercapture",h(!1)),{setCorner:i}}var Ae=()=>/mac|iphone|ipad|ipod/i.test(navigator.userAgentData&&navigator.userAgentData.platform||navigator.platform||navigator.userAgent||""),Ve=()=>/Win/.test(navigator.userAgentData&&navigator.userAgentData.platform||navigator.platform||navigator.userAgent||""),Ce=()=>Ae()?"Show in Finder":Ve()?"Show in Explorer":"Show in folder",F=(e,n)=>Ae()?e:n;var z="menu-resume",We=5e3,O=()=>window.clay||{},Se=()=>O().storage&&O().storage.session,oe=e=>{let n=O().editPlugins;return Array.isArray(n)&&n.includes(e)};function Le(e,n=We){return new Promise(c=>{let y=Date.now(),C=()=>{let R=e();R||Date.now()-y>=n?c(R||null):setTimeout(C,50)};C()})}function Qe({addItem:e,note:n,currentMode:c}){let y=new Map;async function C(s,u){if(c()==="edit")return u();let Q=Se();Q&&Q.set(z,s);let A;try{A=await O().setMode?.("edit")}catch(M){A={ok:!1,message:M&&M.message}}if(!(A&&A.ok!==!1&&A.reloading)){if(Q&&Q.remove(z),!A||A.ok===!1){let M=A?K(A):"Couldn't switch modes.";M&&n(M);return}return u()}}function R(s,u){return y.set(s,u),()=>C(s,u)}let i={canUndo:!1,canRedo:!1},o=!1;function h(){if(!oe("undo"))return;let s=c()==="edit"&&O().undo;!o&&s&&typeof s.canUndo=="boolean"&&(i={canUndo:s.canUndo,canRedo:!!s.canRedo}),e({id:"clay.undo",pair:[{id:"clay.undo.undo",label:"Undo",keys:F("\u2318Z","Ctrl+Z"),disabled:!(s&&i.canUndo),run:()=>O().undo?.undo()},{id:"clay.undo.redo",label:"Redo",keys:F("\u2318\u21E7Z","Ctrl+Shift+Z"),disabled:!(s&&i.canRedo),run:()=>O().undo?.redo()}]})}document.addEventListener("clay:undo-change",s=>{let u=s.detail||{};o=!0,i={canUndo:!!u.canUndo,canRedo:!!u.canRedo},h()}),document.addEventListener("clay:modechange",h),h(),oe("ai-edit")&&e({id:"clay.ai",label:"Ask AI\u2026",keys:F("\u2318J","Ctrl+J"),run:R("ai",async()=>{let s=await Le(()=>O().aiEdit);s&&await s.open(document.body)||n("Ask AI isn't available on this page right now.")})}),oe("cms")&&O().cms?.hasRules?.(document)&&e({id:"clay.cms",label:"Open the CMS (Edit content)",run:R("cms",async()=>{let s=await Le(()=>O().cms),u=null;try{u=s?await s.open():{ok:!1}}catch{u={ok:!1}}u&&u.ok===!1&&n("Couldn't open the CMS. Try again.")})}),e({id:"clay.download",label:"Download a copy",run:async()=>{let s=null;try{if(typeof O().getHTML=="function")s=O().getHTML();else{let u=await fetch(location.href,{cache:"no-store",credentials:"same-origin"});u.ok&&(s=await u.text())}}catch{}typeof s=="string"&&/^https?:$/.test(location.protocol)&&(s=s.replace(/(^|[^\w./:-])\/_\/uploads\//g,`$1${location.origin}/_/uploads/`)),(typeof s!="string"||!await fe({html:s,name:`${pe()}.html`}))&&n("Couldn't build the download. Try again.")}});async function r(s){let u=null;try{let Q=await fetch(s,{method:"POST",credentials:"same-origin",headers:{"Document-URL":location.href}});if(u=await Q.json().catch(()=>null),Q.ok&&u?.ok!==!1){typeof u?.href=="string"&&window.open(u.href,"_blank","noopener");return}}catch{}n(typeof u?.message=="string"&&u.message?u.message:"Couldn't do that. Try again.")}let d=(s,u,Q)=>{Q?.href?e({id:s,label:u,href:Q.href}):Q?.post&&e({id:s,label:u,run:()=>r(Q.post)})};import("../c-ZRXJD4G6.js").then(({hostActions:s})=>s()).then(s=>{d("clay.code","Open the code editor",s.codeEditor),d("clay.duplicate","Duplicate as a new page",s.duplicate),d("clay.export","Export as zip",s.export),d("clay.reveal",Ce(),s.reveal),d("clay.versions","Version history\u2026",s.versions)}).catch(()=>{});let E=Se(),k=E&&E.get(z);if(k){E.remove(z);let s=y.get(k);s&&c()==="edit"&&s()}return{inEditMode:C,resumable:R,refresh:h}}var Ye='<svg viewBox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M205.66 194.34a8 8 0 0 1-11.32 11.32L128 139.31l-66.34 66.35a8 8 0 0 1-11.32-11.32L116.69 128 50.34 61.66a8 8 0 0 1 11.32-11.32L128 116.69l66.34-66.35a8 8 0 0 1 11.32 11.32L139.31 128Z"/></svg>',Ke=3,X=(e,n,c)=>`${e} ${e===1?n:c}`;function ae(e){let n=document.createElement("span");n.className="clay-avatar",n.setAttribute("aria-hidden","true");let c=he(e.id);return n.style.setProperty("color",c),n.style.setProperty("border-color",c),n.style.setProperty("background","var(--bevel-surface)"),n.textContent=ge(e.name),n}function Ne({root:e,capsule:n,addItem:c,removeItem:y,closeMenu:C,note:R}){let i={supported:!1,people:[],anonymous:0},o=null,h=null,r=null,d=!1,E=()=>window.clay&&window.clay.people,k=()=>window.clay&&window.clay.me||null,s=()=>{try{return!!E()?.canRename?.()}catch{return!1}},u=()=>i.people.length+i.anonymous,Q=()=>document.documentElement.hasAttribute("clay-menu-roster");function A({restore:w=!0}={}){o&&(o.remove(),o=null,d=!1,r?.setAttribute("aria-expanded","false"),w&&h&&h.isConnected&&h.focus(),h=null)}function M(){let w=k();if(!w||!w.name)return null;let g=document.createElement("div");g.className="clay-people-me";let v=document.createElement("span");v.className="clay-people-me-label",v.textContent="Your edits are signed as";let $=document.createElement("div");if($.className="clay-people-me-row",g.append(v,$),d){let f=document.createElement("input");f.className="clay-people-input",f.type="text",f.value=w.name,f.setAttribute("aria-label","Your name"),f.maxLength=120;let x=document.createElement("button");x.type="button",x.className="clay-menu-btn clay-menu-btn-small clay-menu-btn-primary",x.textContent="Save";let l=()=>{try{E().rename(f.value)}catch(a){R(a&&a.code==="not-renamable"?"This name comes from your account, so it can't be changed here.":"Use a name of 1 to 120 characters that isn't an email address."),f.focus();return}d=!1,U(),o?.querySelector(".clay-people-me .clay-menu-btn")?.focus()};x.addEventListener("click",l),f.addEventListener("keydown",a=>{a.key==="Enter"&&(a.preventDefault(),l())}),$.append(f,x),queueMicrotask(()=>{f.isConnected&&(f.focus(),f.select())})}else{let f=document.createElement("span");if(f.className="clay-people-me-name",f.textContent=w.name,$.append(ae(w),f),s()){let x=document.createElement("button");x.type="button",x.className="clay-menu-btn clay-menu-btn-small",x.textContent="Change",x.addEventListener("click",()=>{d=!0,U()}),$.append(x)}}return g}function U(){if(!o)return;let w=u();o.textContent="";let g=document.createElement("div");g.className="clay-people-head";let v=document.createElement("h3");v.className="clay-people-title",v.textContent="Who's here";let $=document.createElement("span");$.className="clay-people-sum",$.textContent=X(w,"person","people");let f=document.createElement("button");if(f.type="button",f.className="clay-people-close",f.setAttribute("aria-label","Close"),f.innerHTML=Ye,f.addEventListener("click",()=>A()),g.append(v,$,f),o.append(g),i.people.length){let l=document.createElement("ul");l.className="clay-people-list";for(let a of i.people){let b=document.createElement("li");b.className="clay-people-row";let N=document.createElement("span");N.className="clay-people-who";let Y=document.createElement("strong");if(Y.textContent=a.name,a.you){let _=document.createElement("span");_.textContent="(you)",Y.append(_)}N.append(Y),b.append(ae(a),N),l.append(b)}o.append(l)}if(i.anonymous>0){let l=document.createElement("p");l.className="clay-people-anon",l.textContent=i.anonymous===1?"1 other person is here without a shared name.":`${i.anonymous} others are here without a shared name.`,o.append(l)}let x=M();x&&o.append(x)}function T(w){if(C(),o){A();return}h=w,o=document.createElement("div"),o.className="clay-people",o.setAttribute("role","dialog"),o.setAttribute("aria-label","Who's here"),o.addEventListener("keydown",g=>{g.key==="Escape"&&(g.preventDefault(),g.stopPropagation(),d?(d=!1,U(),o.querySelector(".clay-people-me .clay-menu-btn")?.focus()):A())}),U(),e.append(o),r?.setAttribute("aria-expanded",w===r?"true":"false"),o.querySelector(".clay-people-close").focus()}function W(){if(!(Q()&&i.supported&&u()>1)){r?.remove(),r=null;return}r||(r=document.createElement("button"),r.type="button",r.className="clay-roster",r.setAttribute("aria-haspopup","dialog"),r.setAttribute("aria-expanded",o?"true":"false"),r.addEventListener("click",()=>T(r)),e.insertBefore(r,n));let g=i.people.slice(0,Ke),v=u()-g.length,$=document.createElement("span");$.className="clay-roster-faces";for(let x of g)$.append(ae(x));r.textContent="",r.append($),v>0&&r.append(X(v,"other","others"));let f=g.map(x=>x.name);r.setAttribute("aria-label",`Who's here: ${f.join(", ")}${v>0?`${f.length?" and ":""}${X(v,"other","others")}`:""}`)}let P=null;function B(){let w=u();if(i.supported&&(w>1||s())){let g=w>1?`Who's here (${X(w,"person","people")})`:"Who's here";g!==P&&(P=g,c({id:"clay.people",label:g,run:()=>T(n.querySelector(".clay-menu-goo"))}))}else P!==null&&y("clay.people"),P=null,A({restore:!1});if(W(),o&&!d){let g=e.getRootNode().activeElement,v=g&&o.contains(g)?g.classList[0]:null;U(),v&&o.querySelector(`.${v}`)?.focus()}}return document.addEventListener("click",w=>{o&&!w.composedPath().includes(e)&&A({restore:!1})}),document.addEventListener("clay:people",()=>{d||B()}),import("../c-FTWGYI5E.js").then(({presence:w})=>{w.subscribe(g=>{i=g||i,B()})}).catch(()=>{}),{close:A}}var J="not all",G="variants-choose",re="clay.variants.keep",Ze="Change the page look",je="Keep one page look",Fe='<svg viewBox="0 0 6 10" aria-hidden="true" focusable="false"><rect x="4" width="2" height="2"/><rect x="2" y="2" width="2" height="2"/><rect y="4" width="2" height="2"/><rect x="2" y="6" width="2" height="2"/><rect x="4" y="8" width="2" height="2"/></svg>',ze='<svg viewBox="0 0 6 10" aria-hidden="true" focusable="false"><rect width="2" height="2"/><rect x="2" y="2" width="2" height="2"/><rect x="4" y="4" width="2" height="2"/><rect x="2" y="6" width="2" height="2"/><rect y="8" width="2" height="2"/></svg>',Z=()=>[...document.querySelectorAll("head style[clay-variant]")],V=e=>e.getAttribute("clay-variant"),D=()=>Z().map(V);function I(){let e=Z(),n=e.find(c=>c.getAttribute("media")!==J);return n?V(n):e.length?V(e[0]):null}function Re(e,n){let c=window.clay&&window.clay.undo;c&&typeof c.commit=="function"?c.commit(e,n):n(),!document.documentElement.hasAttribute("autosave")&&typeof window.clay?.save=="function"&&window.clay.save()}async function Xe(){let e=await import("../core/save-AOJBDSOK.js");for(;!e.baselineSettled();)await new Promise(n=>document.addEventListener("clay:baseline-settled",n,{once:!0}))}function Ge(e){let n=e.map(c=>`Variant ${c}`);return n.length<2?n.join(""):`${n.slice(0,-1).join(", ")} and ${n[n.length-1]}`}function $e({root:e,capsule:n,addItem:c,removeItem:y,note:C,currentMode:R}){let i=null,o=null,h=null,r=null,d=null,E=()=>R()==="edit",k=()=>i??I(),s=()=>window.clay&&window.clay.storage&&window.clay.storage.session;function u(){let l=I();i!==null&&i===l&&(i=null),h?.remove(),h=null;for(let b of Z()){if(!b.sheet)continue;let N=b.getAttribute("media")!==J;b.sheet.disabled=N&&(V(b)!==l||i!==null)}if(i===null)return;let a=Z().find(b=>V(b)===i);if(!a)return i=null,u();h=document.createElement("style"),h.setAttribute("clay","editor-ui"),h.dataset.clayVariantPreview=i,h.textContent=a.textContent,a.after(h)}function Q(){document.dispatchEvent(new CustomEvent("clay:variant-change",{detail:{active:I(),shown:k()}}))}function A(l){return E()?D().includes(l)?(o=i=null,Re(Ze,()=>{for(let a of Z())V(a)===l?a.removeAttribute("media"):a.getAttribute("media")!==J&&a.setAttribute("media",J)}),v(),{ok:!0}):{ok:!1,code:"unknown-variant"}:{ok:!1,code:"not-editing"}}function M(l){return l!==null&&!D().includes(l)?{ok:!1,code:"unknown-variant"}:(i=l,v(),{ok:!0})}function U(l){o=i=null,Re(je,()=>{for(let a of Z())V(a)===l?(a.removeAttribute("clay-variant"),a.removeAttribute("media"),a.sheet&&(a.sheet.disabled=!1)):a.remove()}),v()}function T(){if(!E())return Promise.resolve({ok:!1,code:"not-editing"});let l=I(),a=D().filter(N=>N!==l);if(!a.length)return Promise.resolve({ok:!1,code:"unknown-variant"});let b=`Keep Variant ${l} and delete ${Ge(a)}? The switcher goes away. Version history still has them.`;return import("../c-FSWRGBVQ.js").then(N=>N.consent(b)).then(()=>(U(l),{ok:!0}),()=>({ok:!1,code:"cancelled"}))}async function W(){let l=i,a=window.clay;if(l===null||!a||typeof a.setMode!="function")return;s()?.set(G,l);let b;try{b=await a.setMode("edit")}catch(N){b={ok:!1,message:N&&N.message}}if(!(b&&b.reloading)&&b&&b.ok===!1){s()?.remove(G);let N=K(b);N&&C(N)}}async function P(){let l=s(),a=l?.get(G);a!=null&&(l.remove(G),!(!E()||!D().includes(a))&&(o=i=a,v(),await Xe(),!(o!==a||!x())&&(o=null,E()&&D().includes(a)&&A(a))))}function B(l){let a=D(),b=a[(a.indexOf(k())+l+a.length)%a.length];E()?A(b):M(b)}function w(){let l=document.createElement("div");l.className="clay-variants",l.setAttribute("role","group"),l.setAttribute("aria-label","Page look"),l.innerHTML=`<button type="button" class="clay-variants-step" data-step="-1" aria-label="Previous look">${Fe}</button><span class="clay-variants-name" aria-live="polite"></span><button type="button" class="clay-variants-step" data-step="1" aria-label="Next look">${ze}</button><button type="button" class="clay-menu-btn clay-menu-btn-small clay-menu-btn-primary clay-variants-use" hidden>Use this look</button><button type="button" class="clay-menu-btn clay-menu-btn-small clay-variants-keep" hidden>Keep</button>`;for(let a of l.querySelectorAll(".clay-variants-step"))a.addEventListener("click",()=>B(Number(a.dataset.step)));return l.querySelector(".clay-variants-use").addEventListener("click",W),l.querySelector(".clay-variants-keep").addEventListener("click",()=>T()),l}function g(){let l=D();if(d=$(),l.length<2){r?.remove(),r=null,y(re);return}r||(r=w()),r.isConnected||e.insertBefore(r,e.querySelector(".clay-roster")??n);let a=k(),b=r.querySelector(".clay-variants-name");b.textContent=`Variant ${a} `;let N=document.createElement("small");N.textContent=`(${l.indexOf(a)+1}/${l.length})`,b.append(N),r.querySelector(".clay-variants-use").hidden=E()||i===null,r.querySelector(".clay-variants-keep").hidden=!E(),E()?c({id:re,label:`Keep Variant ${I()}, remove the others\u2026`,run:()=>T()}):y(re)}function v(){u(),g(),Q()}let $=()=>`${D().join(",")}|${I()}|${k()}`,f=null,x=()=>window.clay?.variants===f;document.addEventListener("clay:modechange",()=>{x()&&(E()?(i=o,P()):o=null,v())}),document.addEventListener("clay:sync-applied",()=>{x()&&v()}),document.addEventListener("clay:undo-change",()=>{x()&&$()!==d&&v()}),f=window.clay.variants={list:()=>{let l=I();return D().map(a=>({name:a,label:`Variant ${a}`,active:a===l}))},get active(){return I()},get shown(){return k()},preview:M,choose:A,keep:T},D().length>=2&&(E()&&P(),v())}var Je=!0,et=6e3,tt=12,nt='<svg viewBox="0 0 6 12" aria-hidden="true" focusable="false"><rect width="2" height="2"/><rect x="4" width="2" height="2"/><rect y="5" width="2" height="2"/><rect x="4" y="5" width="2" height="2"/><rect y="10" width="2" height="2"/><rect x="4" y="10" width="2" height="2"/></svg>',Oe=[["clay.undo","clay.cms","clay.ai","clay.code"],["seo","clay.variants.keep","clay.share","clay.people"],["clay.duplicate","clay.download","clay.export","clay.reveal"],["clay.versions"],null,["upgrade"]],ot=new Set(Oe.flat().filter(Boolean)),j=()=>window.clay&&typeof window.clay.mode=="string"?window.clay.mode:ue;function at(){if(document.querySelector('clay-editor-ui[data-clay-ui="menu"]'))return;let e=document.createElement("div");e.className="clay-menu-dock",e.setAttribute("clay","editor-ui"),e.dataset.corner="top-right",e.innerHTML=`<div class="clay-menu" clay="editor-ui"><button type="button" class="clay-menu-grip" aria-label="Move the menu. Drag it, or use the arrow keys to move it to another corner.">${nt}</button><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><span class="clay-menu-divider" aria-hidden="true"></span><button type="button" class="clay-menu-goo" aria-haspopup="menu" aria-expanded="false" aria-label="Clay menu">${ve}</button></div><div class="clay-menu-list" role="menu" aria-label="Clay menu" hidden></div><div class="clay-menu-note" role="status" hidden></div>`;let n=e.querySelector(".clay-menu-grip"),c=e.querySelector(".clay-menu-edit"),y=e.querySelector(".clay-menu-goo"),C=e.querySelector(".clay-menu-list"),R=e.querySelector(".clay-menu-note"),i=new Map,o=()=>e.getRootNode().activeElement||null,h=()=>!C.hidden;function r(t){C.hidden=!t,y.setAttribute("aria-expanded",t?"true":"false")}let d=()=>[...C.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')];function E(t){let p=d();p.length&&p[(t+p.length)%p.length].focus()}function k(){h()&&r(!1)}let s=null,u=null;function Q(){h()||(u?.close({restore:!1}),s?.refresh(),T(),r(!0))}function A(t){let p=t.href&&!t.disabled,m=document.createElement(p?"a":"button");if(p?(m.href=t.href,m.target="_blank",m.rel="noopener"):m.type="button",m.setAttribute("role","menuitem"),m.dataset.menuId=t.id,t.badge&&t.id==="upgrade"){let S=document.createElement("span");S.className="clay-menu-upgrade",S.textContent=t.label,m.append(S)}else m.textContent=t.label;if(t.keys){let S=document.createElement("kbd");S.textContent=t.keys,m.append(S)}return t.disabled&&m.setAttribute("aria-disabled","true"),m.addEventListener("click",()=>{t.disabled||(k(),t.run&&t.run())}),m}function M(t){if(t.text){let p=document.createElement("p");return p.className="clay-menu-version",p.dataset.menuId=t.id,p.textContent=t.label,p}if(t.pair){let p=document.createElement("div");p.className="clay-menu-pair",p.dataset.menuId=t.id;for(let m of t.pair)p.append(A(m));return p}return A(t)}function U(){let t=[...i.keys()].filter(p=>!ot.has(p));return Oe.map(p=>(p||t).map(m=>i.get(m)).filter(Boolean)).filter(p=>p.length)}function T(){let t=o(),p=t&&C.contains(t)?t.dataset.menuId:null;C.textContent="",U().forEach((L,H)=>{if(H){let q=document.createElement("div");q.className="clay-menu-sep",q.setAttribute("role","separator"),C.append(q)}for(let q of L)C.append(M(q))});let m=y.querySelector(".clay-menu-dot"),S=[...i.values()].some(L=>L.badge);if(S&&!m){let L=document.createElement("span");L.className="clay-menu-dot",L.setAttribute("aria-hidden","true"),y.append(L)}else!S&&m&&m.remove();if(p){let L=d().find(H=>H.dataset.menuId===p);L?L.focus():E(0)}}let W=({id:t,label:p,run:m,badge:S,keys:L,disabled:H,href:q})=>({id:t,href:typeof q=="string"?q:"",label:String(p??""),run:typeof m=="function"?m:null,badge:!!S,keys:L?String(L):"",disabled:!!H});function P({id:t,label:p,run:m,badge:S,keys:L,disabled:H,text:q,pair:ce,href:De}={}){if(!t)return null;let ee=W({id:t,label:p,run:m,badge:S,keys:L,disabled:H,href:De});return q&&(ee.text=!0),Array.isArray(ce)&&(ee.pair=ce.map(W)),i.set(t,ee),T(),t}function B(t){i.delete(t)&&T()}function w(t){t&&(R.textContent=t,R.hidden=!1,clearTimeout(g),g=setTimeout(()=>{R.hidden=!0,R.textContent=""},et))}let g=0,v=!1,$=()=>{e.hidden=!ne&&j()!=="edit"};function f(){c.setAttribute("aria-checked",j()==="edit"?"true":"false")}f(),document.addEventListener("clay:modechange",f),c.addEventListener("click",async()=>{if(v)return;let t=c.getAttribute("aria-checked"),p=o()===c,m=j()==="edit"?"view":"edit";v=!0,c.setAttribute("aria-busy","true"),c.disabled=!0;let S;try{S=await window.clay?.setMode?.(m)}catch(L){S={ok:!1,message:L&&L.message}}if(!(S&&S.reloading))if(v=!1,c.removeAttribute("aria-busy"),c.disabled=!1,p&&c.isConnected&&!o()&&document.activeElement===document.body&&c.focus(),S&&S.ok===!1){c.setAttribute("aria-checked",t);let L=K(S);L&&w(L)}else f()}),y.addEventListener("click",()=>{h()?k():Q()}),document.addEventListener("click",t=>{h()&&!t.composedPath().includes(e)&&k()}),e.addEventListener("keydown",t=>{if(t.key==="Escape"){if(!h())return;t.preventDefault(),k(),y.focus();return}if(t.target===y&&(t.key==="Enter"||t.key===" ")){t.preventDefault(),h()?k():(Q(),E(0));return}if(!h())return;if(t.key==="Enter"&&C.contains(t.target)){t.preventDefault(),t.target.click();return}let p=d();if(!p.length)return;let m=p.indexOf(o());t.key==="ArrowDown"?(t.preventDefault(),E(m<0?0:m+1)):t.key==="ArrowUp"&&(t.preventDefault(),E(m<0?p.length-1:m-1))});let x=document,l=null,a=null;function b(t){e.dataset.corner.startsWith("top")?e.style.top=`${Math.round(t.getBoundingClientRect().bottom)+tt}px`:e.style.removeProperty("top")}let N=()=>{a?b(a):e.style.removeProperty("top")};function Y(){if(!e.isConnected)return;let t=x.querySelector(".clay-intro");if(t!==a){if(l&&(l.disconnect(),l=null),a=t,!t){e.style.removeProperty("top");return}typeof ResizeObserver=="function"&&(l=new ResizeObserver(()=>b(t)),l.observe(t)),b(t)}}let _=document.createElement("style");_.id="clay-menu-vars",_.setAttribute("clay","editor-ui"),document.head.append(_);function se(){let t=e.getBoundingClientRect();_.textContent=`:root { --clay-menu-width: ${Math.ceil(t.width)}px; --clay-menu-height: ${Math.ceil(t.height)}px; }`}let qe=ye({name:"menu",content:e,css:[we],attributes:{"clay-mode-toggle":""}});ke({dock:e,container:qe.shadow,grip:n,storage:window.clay.storage&&window.clay.storage.local,onMove:N,onDragStart:()=>{k(),u?.close({restore:!1})}}),se(),typeof ResizeObserver=="function"&&new ResizeObserver(se).observe(e),new MutationObserver(Y).observe(x.body,{childList:!0}),Y(),me(e,e.querySelector(".clay-menu"),be);let le=()=>import("../c-Z32V4MHK.js").then(t=>t.open({returnFocus:y}));if(s=Qe({addItem:P,note:w,currentMode:j}),u=Ne({root:e,capsule:e.querySelector(".clay-menu"),addItem:P,removeItem:B,closeMenu:k,note:w}),$e({root:e,capsule:e.querySelector(".clay-menu"),addItem:P,removeItem:B,note:w,currentMode:j}),Je){P({id:"seo",label:"SEO settings\u2026",run:le});let t=window.clay.storage&&window.clay.storage.session;t&&t.get("reopen-seo")===!0&&(t.remove("reopen-seo"),le().catch(()=>{}))}Te=$,j()!=="edit"&&import("../core/host-permission-6EVJGNPL.js").then(t=>t.checkHostPermission()).catch(()=>{}),window.clay.menu={addItem:P,removeItem:B,open:Q,close:k,note:w},document.dispatchEvent(new CustomEvent("clay:menu-ready"))}var Pe=!1,Te=null,rt=()=>(ne||ie)&&!te;function Me(){Pe||!rt()||(Pe=!0,at())}te||(de(Me),document.addEventListener("clay:capabilitychange",()=>{Me(),Te?.()}));
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{a as Ce}from"../c-3GJ4SDE2.js";import{a as vt,b as bt,c as St}from"../c-EXEDYU4H.js";import{a as wt}from"../c-BYTKL6UX.js";import{a as mt,b as B,c as R}from"../c-WCXLG3MV.js";import{a as Ee,b as Re}from"../c-MCOOHCSG.js";import{a as kt}from"../c-L4WQSC27.js";import{d as it,e as ut,i as dt,j as Pe,n as V,o as pt,q as ce,r as ft,s as gt,t as xe,u as yt,v as ht}from"../c-ZS4US2XV.js";import"../c-JKZJIUIP.js";import{a as se}from"../c-TCCA5BZN.js";import{k as Oe}from"../c-3LDGIBMN.js";import"../c-57XDY6HC.js";import"../c-LZJPNR2W.js";import{b as ct}from"../c-QTTJYJMA.js";import{a as rt}from"../c-NUHP2XDB.js";import{A as lt,E as st,d as at,e as ne,g as nt,m as je,n as le}from"../c-ZKNBMNN3.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import{a as ot}from"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-FWKHM4E7.js";import"../c-5JLFROUB.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-ZWIOJGMT.js";import{d as ae}from"../c-B7J4K2AE.js";import{a as et}from"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import{a as Te,c as tt,d as Ae}from"../c-NQJRVJ56.js";import{d as ke}from"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import{k as Ze}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{D as q}from"../c-7MG5RU63.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var gr=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","page-full":"blocked","compaction-failed":"blocked"}),Tt=({unavailable:e,pending:t,journaled:r,acknowledged:a,checkpointed:n}={})=>e?"unavailable":t>0?"pending":r>0?"journaled":a>0?"acknowledged":n?"checkpointed":null,ie="Can't save here. Your edits are still in this tab.",ue="Still trying to save. Your edits are safe in this tab.";function G({ok:e=!1,code:t=null,offline:r=!1}={}){return e?"saved":r?"retrying":gr[t]??"error"}function At(e){let t;try{t=new DOMParser().parseFromString(e,"text/html")}catch{return e}let r=[...t.querySelectorAll('script[type="application/json"][merge="page"][clay~="live"]')].filter(u=>!u.closest("template")&&!u.closest("noscript"));if(r.length!==1)return e;let a=r[0].outerHTML,n=e.indexOf(a);return n<0||e.indexOf(a,n+1)!==-1?e:e.slice(0,n)+e.slice(n+a.length)}function de(){let{forSave:e}=q({emitForSync:!1});return Re({html:At(e),name:`${Ee()}.html`})}function Ie(e){return Re({html:At(e),name:`${Ee()}.html`})}async function Et(){try{let{forSave:e}=q({emitForSync:!1}),r=new DOMParser().parseFromString(e,"text/html").querySelectorAll("article[data-page]");return r.length!==1?!1:(await navigator.clipboard.writeText(r[0].textContent),!0)}catch{return!1}}var Rt="clay.page.author",Le="clay.page.author.owned.",jt=()=>globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;function Ot(e=globalThis.localStorage){try{let t=[];for(let a=0;a<e.length;a++){let n=e.key(a);n&&n.startsWith(Le)&&t.push(n.slice(Le.length))}let r=e.getItem(Rt);return(!r||!t.includes(r))&&(r=jt(),e.setItem(Le+r,"1"),e.setItem(Rt,r),t.push(r)),{token:r,owned:t.sort()}}catch{let t=jt();return{token:t,owned:[t]}}}var P=Object.freeze({loading:"loading",joining:"joining",adopting:"adopting",ready:"ready",blocked:"blocked",error:"error"}),yr=new Set([P.ready,P.blocked,P.error]),Pt=0,Ct=()=>globalThis.performance?.now?.()??Date.now();function It({gen:e=0,isCurrent:t=()=>!0,onPhase:r=null}={}){return Pt+=1,{installId:Pt,gen:e,isCurrent:t,onPhase:typeof r=="function"?r:null,phase:P.loading,result:null,at:Ct(),controller:new AbortController,disposers:[],disposed:!1,steps:null,deferred:null}}function f(e){return!e.disposed&&!e.controller.signal.aborted&&e.isCurrent()!==!1}function Fe(e,t){return f(e)&&!!t?.view&&e.mounted===t.view}function D(e,t,r=null){if(yr.has(e.phase)&&e.result)return e.result;e.phase=t,e.at=Ct(),e.result=Object.freeze({phase:t,reason:r??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 De(e,t){let r=D(e,P.blocked,t);return e.editorReadyResolve?.(),r}function Lt(e,t){return D(e,P.error,t)}function W(e,t){return typeof t=="function"&&e.disposers.push(t),t}function He(e){if(e.disposed)return;e.disposed=!0,e.mounted=null;try{e.controller.abort()}catch(r){console.error("clayjs: page boot abort failed",r)}let t=e.disposers.splice(0).reverse();for(let r of t)try{r()}catch(a){console.error("clayjs: a page boot disposer failed",a)}}function pe(e,t){let r=globalThis.performance;if(typeof r?.mark=="function")try{r.mark(e,{detail:{installId:t.installId}})}catch{try{r.mark(e)}catch{return}}}function hr(e,t){try{t.release?.(e)}catch(r){console.error("clayjs: page boot release failed",r)}}function Y(e,t,r){return t.cancelled?null:(hr(e,r),De(e,t.reason??"boot-incomplete"))}function xt(e,t,r,a=null){return Promise.resolve(e).then(n=>n??{ok:!1,reason:r},n=>(console.error(`clayjs: page boot ${r}`,n),{ok:!1,reason:r})).then(n=>(n.ok&&a&&f(t)&&pe(a,t),n))}function mr(e,t){return new Promise(r=>{let a=e.controller.signal,n=!1,u=S=>{n||(n=!0,r(S))};if(a.aborted)return u({cancelled:!0});a.addEventListener("abort",()=>u({cancelled:!0}),{once:!0});let y=new Array(t.length),b=t.length;t.forEach((S,E)=>{S.then(j=>{if(!n){if(!j.ok)return u({result:j,branch:S});y[E]=j,b-=1,b===0&&u({results:y})}})})})}async function Ft(e,t,{activate:r=!0}={}){pe("document:boot",e),D(e,P.loading);let a=t.readSource(e);if(!f(e))return null;if(!a.ok)return De(e,a.reason);let n=a.source;D(e,P.joining);let u=await mr(e,[xt(t.loadEditorAssets(e,n),e,"editor-assets-failed","document:assets-ready"),xt(t.prepareAuthority(e,n),e,"authority-failed","document:authority-ready")]);if(u.cancelled||!f(e))return null;if(!u.results){try{e.controller.abort()}catch(x){console.error("clayjs: page boot abort failed",x)}return Y(e,u.result,t)}let[y,b]=u.results,S=t.mountAndAttach(e,n,y,b);if(!f(e))return null;if(!S.ok)return Y(e,S,t);e.mounted=S.view??null,D(e,P.adopting);let E=await t.adoptSource(e,n,S);if(!f(e))return null;if(!E.ok)return Y(e,E,t);if(!r){if(t.prepareInput){let x=await t.prepareInput(e,S);if(!f(e))return null;if(!x.ok)return Y(e,x,t)}return e.deferred=S,{phase:e.phase,view:S.view,deferred:!0}}let j=await t.enableInput(e,S);return f(e)?j.ok?(pe("document:input-ready",e),D(e,P.ready)):Y(e,j,t):null}function Dt(e){let t=e.deferred;if(e.deferred=null,!t||!f(e))return e.result??null;let r=e.steps?.openInput?.(e,t);return r?.ok?(pe("document:input-ready",e),D(e,P.ready)):De(e,r?.reason??"input-refused")}var X="article[data-page]",z='script[type="application/json"][merge="page"][clay~="live"]',Ht={state:"blocked",code:"unsupported-host",message:"This host does not support page editing"},Ve="Changes cannot be stored on this device. Download a copy to keep them.",wr=45e3,vr="Couldn't save",br="Offline, not saved",Bt="This page was changed outside the editor. Reload to see it.",Sr="That change is too large to share, so it was not saved. Reload the page to keep editing.",kr=/^[ur][0-9a-z]+(-[0-9a-z]+){2}$/,Nt="This document is full, though your changes are still here to download. To edit again, reload this tab after another editor, or the owner in another browser, deletes content.",Tr="Some changes you made were replaced by a change made outside the editor.",Gt="The page was changed outside the editor; reload to see it.",Ar=150,Er="Loading the editor\u2026",Be="the page session has not committed yet",_t=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function Ne(e){return _t(e)?e.v!==1||!_t(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,Mt=null;function H(){return Mt??=import("../c-F6G2OGYG.js").then(e=>N=e),Mt}function Rr(e){let t=new Set;return e.forEach(r=>{let a=St(r);a&&t.add(a)}),[...t]}function _(e){e.statusTimer&&(clearTimeout(e.statusTimer),e.statusTimer=null),e.statusNote?.remove(),e.statusNote=null}function jr(e,t){_(e),e.statusTimer=setTimeout(()=>{if(e.statusTimer=null,!f(e))return;let r=t.ownerDocument.createElement("div");r.className="page-boot-status",r.setAttribute("clay","editor-ui"),r.setAttribute("sap-ignore",""),r.setAttribute("role","status"),rt(r,["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"]),r.textContent=Er,t.prepend(r),e.statusNote=r},Ar)}var ye=0,A=null,fe=null,Or=8e3;function Pr(e,t=globalThis.location){let r=t?.hash?.slice(1);if(!r)return;let a;try{a=decodeURIComponent(r)}catch{return}let n=-1;e.state.doc.forEach((u,y)=>{n<0&&u.attrs.id===a&&(n=y)}),!(n<0)&&globalThis.requestAnimationFrame?.(()=>e.nodeDOM(n)?.scrollIntoView?.({block:"start"}))}function K(e,t=null,r=""){document.dispatchEvent(new CustomEvent("clay:page-save-state",{detail:{state:e,code:t,message:r}}))}function Wt(){R(vr),R(br)}function $t(e){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.retryShown=!1,R(ue)}function xr(e,t,r){Wt(),K("retrying",t,r),!(e.retryTimer||e.retryShown)&&(e.retryTimer=setTimeout(()=>{e.retryTimer=null,e.retryShown=!0,B(ue,"warning")},wr))}function Jt(e,t=!1){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),R(ue,{now:t}),R(ie,{now:t}),R(Ve,{now:t})}function Ge(e,t,r,a="blocked"){$t(e),Wt(),K(a,t,r),B(a==="unavailable"?Ve:ie,"error",{detail:r,actions:[{label:"Download a copy",onClick:de},{label:"Copy text",onClick:Et}]})}function Cr(e){$t(e),R(ie),R(Ve),K("saved",null,"")}function Ir(e,t,r=!1){if(typeof e!="string"||!e)return!1;let a;try{a=new DOMParser().parseFromString(e,"text/html")}catch{return!1}let n=a.querySelectorAll(X);return r?n.length!==1&&!a.querySelector(z):n.length!==1||a.querySelector(z)?!1:n[0].getAttribute("data-rev")!==t}function Lr(e){if(!e.store||!N)return e.savedRev;try{return N.renderFromTags([JSON.stringify(e.store.value)]).rev}catch{return e.savedRev}}function Yt(e){let t=e.view;t&&(t.setProps({editable:()=>!1}),t.setProps({dispatchTransaction:r=>t.updateState(t.state.apply(r))}));try{e.binding?.dispose()}catch(r){console.error("clayjs: page plugin binding failed to dispose",r)}e.savesHeld||(e.savesHeld=!0,je(Gt))}function Fr(e){if(!e.tabValue)return de();let{forSave:t}=q({emitForSync:!1}),r=new DOMParser().parseFromString(t,"text/html"),a=r.querySelectorAll(X);if(a.length!==1)return de();let n=N.renderFromTags([JSON.stringify(e.tabValue)]);return a[0].innerHTML=n.html,n.rev==null?a[0].removeAttribute("data-rev"):a[0].setAttribute("data-rev",n.rev),Ie(`<!DOCTYPE html>
|
|
2
|
-
${r.documentElement.outerHTML}`)}function We(e,t,{reload:r=!0}={}){if(e.replaced)return;e.replaced=!0,Yt(e);let a={label:"Download your copy",onClick:()=>Fr(e)};B(t,"warning",{actions:r?[{label:"Reload",onClick:()=>window.location.reload()},a]:[a]})}var Me=e=>We(e,Bt),Dr=e=>We(e,Sr),Hr=(e,t)=>{K("blocked",t,Nt),We(e,Nt,{reload:!1})};function U(e,t,r,a){t==="saved"?Cr(e):t==="retrying"?xr(e,r,a):t==="blocked"&&Ge(e,r,a)}function C(e,t,r){document.addEventListener(t,r),e.listeners.push([t,r])}function Nr(e){C(e,"clay:save-error",r=>{let a=r.detail?.code??null;a!=="page-nothing-to-write"&&U(e,G({code:a}),a,r.detail?.msg??"")}),C(e,"clay:save-offline",r=>{let a=r.detail?.code??null;U(e,G({code:a,offline:!0}),a,r.detail?.msg??"")}),C(e,"clay:save-conflict",r=>{let a=r.detail?.code??null;U(e,G({code:a}),a,r.detail?.msg??"")});let t=r=>{_r(e,r)};C(e,"clay:save-conflict",t),C(e,"clay:save-error",t),C(e,"clay:save-saved",r=>{U(e,G({ok:!0}),null,r.detail?.msg??""),e.savedRev=Lr(e),e.adoption?.saved(lt())}),C(e,"clay:live-notice",r=>{if(r.detail?.name!=="page"||r.detail?.code==="op-too-large")return;if(r.detail?.code==="unknown-store"){Me(e);return}let a=r.detail?.code??null;U(e,G({code:a}),a,r.detail?.message??"")})}async function Ut(){let e=await fetch(new URL(globalThis.location.href).href,{cache:"no-store"});if(!e?.ok)return null;let t=await e.text(),r=new DOMParser().parseFromString(t,"text/html"),a=r.querySelector(X);if(!a)return null;let n=r.querySelector(z),u=e.headers?.get?.("etag")||null,y=r.documentElement.getAttribute("documentetag")||(u&&!/^W\//.test(u)?u:null);return{article:a,value:n?se(n.textContent):null,etag:y}}async function _r(e,t){let r=e.staged;if(!r||e.staleRetry||e.replaced)return;let a=t?.detail?.code??null;if(!(a!=="page-lineage-stale"&&a!=="conflict")&&!(!e.store||!r.isPending())){e.staleRetry=!0;try{let n=await Ut();if(!n||!f(e))return;let u=await H();if(!f(e))return;let y=n.value??u.seedPageFromArticle(n.article.cloneNode(!0)),b=n.etag??t?.detail?.etag??null;b&&tt(b),e.store.rebase(y,{source:"state"}),await st()}catch(n){console.warn("clayjs: page plugin could not offer the refused first write again",n)}}}function $e(e){let t=e.article;if(!t)return;let r=e.bootHtml,a=e.bootRev;if(e.store&&N)try{let n=N.renderFromTags([JSON.stringify(e.store.value)]);r=n.html,a=n.rev}catch(n){console.error("clayjs: page plugin could not render the saved article",n)}t.innerHTML=r,a==null?t.removeAttribute("data-rev"):t.setAttribute("data-rev",a)}function Je(e){for(let[t,r]of e.listeners)document.removeEventListener(t,r);e.listeners=[];try{e.adoption?.dispose()}catch(t){console.error("clayjs: page plugin adoption failed to dispose",t)}e.adoption=null;try{e.recover?.destroy()}catch(t){console.error("clayjs: page plugin recover list failed to dispose",t)}if(e.recover=null,e.aiTool?.dispose(),e.aiTool=null,e.awareness?.dispose(),e.awareness=null,e.toolHost?.dispose(),e.toolHost=null,e.view&&wt.delete(e.view),e.article){let t=e.article.querySelector(".page-shell");t&&t.remove()}try{e.binding?.dispose()}catch(t){console.error("clayjs: page plugin binding failed to dispose",t)}try{e.binding?.ydoc?.destroy()}catch(t){console.error("clayjs: page plugin document failed to destroy",t)}try{e.staged?.close()}catch(t){console.error("clayjs: page plugin staged store failed to close",t)}if(e.staged=null,e.pageStore){try{pt("page",e.pageStore)}catch(t){console.error("clayjs: page plugin store failed to close",t)}e.pageStore=null}e.binding=null,e.flush=null,e.releaseArticle?.(),e.releaseArticle=null}function qt(e){let t=e.view;if(t&&!t.isDestroyed&&typeof t.destroy=="function")try{t.destroy()}catch(r){console.error("clayjs: page plugin view failed to destroy",r)}e.titleObserver?.dispose(),e.titleObserver=null,_(e),Je(e),$e(e)}function qe(){ye+=1;let e=A;if(A=null,ae("Page-Write",null),Pe(null),!!e){He(e),Jt(e),R(Bt);for(let t of e.notices?.values()??[])R(t);if(e.savesHeld&&(e.savesHeld=!1,le({replay:!1,reason:Gt})),e.titleObserver?.dispose(),e.titleObserver=null,_(e),e.sessionHeld&&le({replay:!1,reason:Be}),e.autosaveSuspended&&ne(),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}Je(e),$e(e)}}var _e=null;function Ye(){return _e||(_e=Promise.all([import("../c-OKXI52N7.js"),import("../c-7PRJCA3E.js"),import("../c-YBSS55KU.js")]).then(([e,t,r])=>({replay:e,proof:t,ui:r})).catch(e=>(console.warn("clayjs: page journal could not load",e),null))),_e}async function Mr(e,t){let r=globalThis.window?.clay?.recovery??null;if(!r||!t)return null;let a=await Ye();if(!a)return null;try{return a.replay.openPageJournal({meta:e,service:r,base:a.replay.journalBase(t.value)})}catch(n){return console.warn("clayjs: page journal could not open",n),null}}async function Vt(e){let t=e.binding?.journal;if(!t||!e.store)return{replayed:[],review:[]};let r=await Ye();if(!r)return{replayed:[],review:[]};let a=await r.replay.replayInto({journal:t,state:e.store.value,into:e.binding.ydoc});return Br(e,r),a.replayed.length&&e.binding.provider.settle(),a.review.length&&(e.recoveryReview=a.review),qr(e,r.ui)?.update({rows:r.replay.describeReview(a.review)}),a}function qr(e,t){if(e.recoveryPanel)return e.recoveryPanel;let r=e.view,a=r?.dom.closest(".page-shell")??e.article;if(!a)return null;let n=t.createRecoveryReview({mount:a,getView:()=>e.view&&!e.view.isDestroyed?e.view:null,getJournal:()=>e.binding?.journal??null,isCurrent:()=>f(e)&&e.inputOpen&&!!e.view&&!e.view.isDestroyed}),u=n.watch(r?.dom??null);return W(e,()=>{u(),n.destroy()}),e.recoveryPanel=n,n}function Vr(e){Pe(async({capture:t,state:r,article:a,etag:n})=>{let u=e.binding?.journal;if(!u)return;let y=await Ye(),b=y?await u.context():null;if(!b)return;let{hostPageStateHref:S}=await import("../c-ZRXJD4G6.js"),E=await y.proof.checkpointAccepted({channel:u.channel,records:u.records(),capture:t,accepted:b,article:a,state:r,etag:n,href:await S()});E.ok&&(u.retire(E.retired),e.pageStatus?.checkpoint(),await u.rebase?.(y.replay.journalBase(E.proof.state)))})}function Br(e,t){let r=e.binding?.journal;return!r||e.pageStatus?e.pageStatus??null:(e.pageStatus=t.replay.watchJournal({journal:r,store:e.store,reduce:Tt,onState:a=>K(a),onUnavailable:a=>Ge(e,a,"","unavailable")}),W(e,()=>e.pageStatus?.dispose()),e.pageStatus)}function Gr(e,t){let r=null,a=null,n=null,u=null,y=null,b=null,S=null,E=[],j=null,x=null,$=null,Q=null,Z=null,Qt=new Promise(o=>{u=o});e.editorReadyResolve=u,W(e,()=>u?.()),W(e,()=>_(e));let ee=null,me=null;e.loadFormatGate=()=>ee?Promise.resolve(ee):(me??=Promise.all([import("../c-E3ZXARWA.js"),import("../c-K72SY2TL.js")]).then(([{createFormatGate:o},{createFormatHost:l}])=>{let s=l();return ee=o({host:s,supported:s.supported,installed:()=>y?.token??null,revision:()=>null,lane:{switchScope:(c,d)=>{let i=gt();return i?i.switchScope(c,{...d,covered:!!d?.covered||!ft()}):{status:"refused",code:"lane-unavailable"}}}}),ee}).catch(o=>{throw me=null,o}),me);let Ue='script[type="application/json"][merge="page.tools"][clay~="live"]',Zt=()=>$||($=(async()=>{if(!document.querySelector(Ue)){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(Ue))try{j=window.clay.live("page.tools"),await j.ready}catch(c){console.warn("clayjs: page plugin could not open the tool store",c)}if(!f(e))return null;let[{createToolHost:o},{tablesFromDoc:l}]=await Promise.all([import("../c-GRWMD6O5.js"),import("../c-A6L3FMUS.js")]);if(!f(e))return null;let s=o({store:j,mode:"edit",tables:()=>l(n?.state.doc??a.doc()).map(({id:c,cols:d,rows:i})=>({id:c,cols:d,rows:i}))});if(e.toolHost=s,Ce(r)){let{createAiTool:c}=await import("../c-2Y4DOHSY.js");if(!f(e))return null;let d=window.clay?.wire?.pageTool??t.transport??null;x=c({getView:()=>e.view,store:j,transport:d,acceptState:t.acceptState}),e.aiTool=x}return s})().catch(o=>{throw $=null,o}),$),te='script[type="application/json"][merge="page.settings"][clay~="live"]',Xe=["assignees","dates"],M=null,we={assignees:!0,dates:!0},re=o=>({assignees:o?.assignees!==!1,dates:o?.dates!==!1});function er(){let o=document.querySelector(te);if(!o)return re(null);let l=null;try{l=JSON.parse(o.textContent)}catch{l=null}return re(l)}function oe(o){we=re(o);let l=e.view&&!e.view.isDestroyed?e.view.dom:null;if(l)for(let s of Xe)we[s]?l.removeAttribute(`data-${s}`):l.setAttribute(`data-${s}`,"false")}let ve=()=>M||(M=(async()=>{if(!document.querySelector(te)){let l=document.createElement("script");l.setAttribute("type","application/json"),l.setAttribute("merge","page.settings"),l.setAttribute("clay","live"),l.textContent="{}",document.head.appendChild(l)}let o=null;try{o=window.clay.live("page.settings"),await o.ready}catch(l){return console.warn("clayjs: page plugin could not open the settings store",l),M=null,null}return f(e)?(oe(o.data),o.on("change",()=>oe(o.data)),o):null})(),M);e.settings={read:()=>({...we}),set:async(o,l)=>{if(!Xe.includes(o))throw new TypeError(`clayjs: "${o}" is not a page setting`);let s=await ve();if(!s)throw new Error("clayjs: the page settings store could not be opened");let c={...re(s.data),[o]:l!==!1};s.set([o],c[o]),oe(c)}};let J=new Map,tr=o=>{if(J.has(o))return;let l=`The ${o} controls could not load. Reload the page after saving.`;J.set(o,l),B(l,"warning",{actions:[{label:"Retry",onClick:()=>{b.ensure(o).then(()=>{let s=J.get(o);s&&(J.delete(o),R(s))},()=>{})}}]})};e.notices=J;let be=async({target:o=null,remove:l=null}={})=>{Q&&n&&l&&Q.holdSlashRange(n,l),await b.ensure("tool").catch(()=>{}),!(!f(e)||!x||!n)&&x.open({target:o,remove:l?Q.heldSlashRange(n.state):null})},Se=()=>Ce(r);function rr(o){let l=document.querySelectorAll(X),s=typeof o.context?.represented?.bytes=="string"?new DOMParser().parseFromString(o.context.represented.bytes,"text/html"):null,c=s?s.querySelectorAll(X):l,d=s?s.querySelectorAll(z):document.querySelectorAll(z);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 m=l[0];if(!m)return{ok:!1,reason:"no-page"};let p=c[0],v=d[0],w=null;if(!i){try{w=se(v?.textContent)}catch{w=null}let T=Ne(w);if(T)return{ok:!1,reason:T}}let h={article:p.cloneNode(!0),tags:w?[w]:null,element:m,blocks:null,seeded:i,seedValue:null};return h.ready=(async()=>{let T=await H();if(!f(o))return{ok:!1,cancelled:!0};if(i){try{let g=await ke(),O=g?.extensions?.includes("page-recovery-v1")&&g.document?.pageState?.href,I=o.context?.represented?o.context.represented.etag:Ae()??Te();if(O&&I){let{readPageState:L}=await import("../c-7PRJCA3E.js"),F=await L({href:O,etag:I});if(!f(o))return{ok:!1,cancelled:!0};if(F.ok){if(F.etag!==I)return{ok:!1,reason:"etag-mismatch"};w=se(F.tag),h.persisted=!0}else if(F.code!=="no-page-state")return{ok:!1,reason:F.code}}else if(O){let L=await Ut();if(!f(o))return{ok:!1,cancelled:!0};if(!L||!L.article.isEqualNode(h.article))return{ok:!1,reason:"stale-document"};w=L.value,h.persisted=w!==null}w=h.seedValue=w??T.seedPageFromArticle(h.article.cloneNode(!0))}catch(g){return console.warn("clayjs: page plugin could not rebuild the page it found, leaving the page as saved HTML",g),{ok:!1,reason:"invalid-page-source"}}let k=Ne(w);if(k)return{ok:!1,reason:k};h.tags=[w]}try{h.blocks=T.blocksFromYValue(w)}catch(k){return console.warn("clayjs: page plugin: the page tag is not a valid Yjs page, leaving the page as saved HTML",k),{ok:!1,reason:"invalid-page-json"}}return{ok:!0}})(),jr(o,m),{ok:!0,source:h}}function or(o,l){if(Ne(l))return!1;if(Oe(o.authoritative)===Oe(l))return!0;try{return o.rebase(l,{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 ar(o,l){let s=H();s.catch(()=>null);let c=await l.ready;if(!c.ok)return c;if(!f(o))return{ok:!1,cancelled:!0};let d=await s,i=[...new Set(Object.values(l.blocks).map(p=>bt(p.t)).filter(Boolean))];b=d.createFeatureLoader({load:p=>vt[p].load(),install:async(p,v)=>{if(n||await Qt,!f(o)||!n)return null;let w={view:n,upload:t.upload,board:a.board,undo:a.undo,redo:a.redo,revise:Se()?(h,T)=>{be({target:{toolId:h,rev:T}})}:null};return p==="tool"&&(w.toolHost=await Zt(),!f(o))?null:m.installPageFeature(w,p,v)},reportError:(p,v)=>{console.error("clayjs: an editor feature failed to load",p),tr(v)}});for(let p of i)b.prepare(p).catch(()=>null);let m=null;try{m=await import("../page/editor-WRQGHDSG.js"),Z=m.setEditorActive,Q={holdSlashRange:d.holdSlashRange,heldSlashRange:d.heldSlashRange}}catch(p){return console.error("clayjs: page plugin could not load the editor",p),{ok:!1,reason:"editor-assets-failed"}}return f(o)?{ok:!0,editor:m.createPageEditor,refreshView:m.refreshMountedView,featureIds:i,code:d}:{ok:!1,cancelled:!0}}async function nr(o,l){let s=H();try{r=await ke()}catch{r=null}if(!f(o))return{ok:!1,cancelled:!0};if(!r||!Array.isArray(r.extensions)||!r.extensions.includes("page"))return Ge(o,Ht.code,Ht.message),{ok:!1,reason:"missing-capability"};o.mergeTagless=!r.extensions.includes("live-data"),ae("Page-Write","v1");let c=null,d=null;if(l.seeded){if(c=await l.ready,!c.ok)return c;if(d=await s,!f(o))return{ok:!1,cancelled:!0}}let i,m=!0;try{if(l.seeded){let g=dt("page",{value:l.seedValue,represented:t.represented??{bytes:l.article.outerHTML,etag:Ae()??Te()},persisted:l.persisted});o.staged=g,i=g.handle}else{let g=V("page")===null;m=g,i=window.clay.live("page"),g&&(o.pageStore=V("page"))}}catch(g){return console.warn("clayjs: page plugin could not open the page store",g),{ok:!1,reason:"missing-page-store"}}try{await i.ready}catch(g){return console.warn("clayjs: page plugin could not join the page room",g),{ok:!1,reason:"admission-failed"}}if(!f(o))return{ok:!1,cancelled:!0};if(c??=await l.ready,!c.ok)return c;let p=V("page")?.handle?.status?.mode==="fast";if(!m&&!p&&!or(V("page"),l.tags?.[0]))return{ok:!1,reason:"stale-store"};if(d??=await s,!f(o))return{ok:!1,cancelled:!0};let v=V("page");if(!v)return{ok:!1,reason:"missing-page-store"};o.store=v;let w=!1,h=null,T=async g=>{let O=await g();return w=O?.ok===!1,h?.changed(),O};y=Ot();let k=await Mr(r,v);return f(o)?(a=d.createYPageBinding({store:v,onStopped:g=>{o.tabValue=d.yValueOf(a.ydoc),g==="lineage"?(ce()?.abandon?.("page"),Me(o)):g==="page-full"||g==="compaction-failed"?Hr(o,g):Dr(o)},authorToken:y.token,ownedTokens:y.owned,checkpointWithin:xe,requestCheckpoint:ht,requestExitCheckpoint:g=>yt({name:v.name,...g}),journal:k,exitClosed:()=>!nt(),registerUnsavedState:g=>(h=ot({id:g.id,isPending:()=>w||g.isPending(),flush:O=>T(()=>g.flush(O))}),h)}),o.binding=a,k&&Vr(o),o.flush=g=>T(()=>a.flush(g)),Nr(o),{ok:!0,store:v,handle:i}):{ok:!1,cancelled:!0}}function lr(o,l){import("../c-V52FE5FI.js").then(async s=>{if(o.view!==l)return;let c=await s.installPageAwareness({binding:o.binding,view:l});if(c){if(o.view!==l||l.isDestroyed){c.dispose();return}o.awareness=c}}).catch(s=>console.error("clayjs: page plugin remote carets failed to load",s))}function sr(o,l,s){let c=l.element;o.context?.reader?.yieldArticle?.();try{o.releaseArticle=kt(c,"editor")}catch(p){return console.error("clayjs: page plugin could not claim the article",p),{ok:!1,reason:"article-owned"}}o.source=l,o.article=c,o.bootHtml=l.article.innerHTML,o.bootRev=l.article.getAttribute("data-rev"),o.savedRev=o.bootRev,C(o,"clay:sync-applied",p=>{o.replaced||Ir(p.detail?.html,o.savedRev,o.mergeTagless)&&Me(o)}),E=[...c.childNodes].filter(p=>p!==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:b,onAiTool:Se()?(p,v)=>{be({remove:v})}:null,reviseTool:Se()?(p,v)=>{be({target:{toolId:p,rev:v}})}:null,formatGate:o.loadFormatGate})}catch(p){return console.error("clayjs: page plugin could not mount the editor",p),d.replaceChildren(),o.releaseArticle?.(),o.releaseArticle=null,o.article=null,{ok:!1,reason:"mount-failed"}}n=i,o.view=i,oe(er()),document.querySelector(te)?ve().catch(()=>null):C(o,"clay:sync-applied",()=>{!M&&document.querySelector(te)&&ve().catch(()=>null)});let m=i.dom.closest(".page-shell");if(m&&(m.inert=!0),s.featureIds.length&&m&&(m.style.visibility="hidden"),!s.featureIds.length)for(let p of E)p.remove();return m&&c.appendChild(m),s.refreshView?.(i),a.attach(i),lr(o,i),u(),S=Promise.allSettled(s.featureIds.map(p=>b.ensure(p))),Pr(i),o.recover=s.code.createRecoverList({binding:a,mount:i.dom.closest(".page-shell")??c,ownTokens:[y.token,...y.owned],onRestored:p=>s.code.focusBlock(i,p),onStale:()=>mt("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 cr(o,l){try{let s=await H(),{HyperMorph:c}=await ct(),d=s.blocksFromYValue(o.store.authoritative),i=s.readBack(d,document),m=s.mergePageModels(l.baseItems,i,l.parsed,{doc:document,merge3:c.merge3,mergeJson:c.mergeJson});return s.canon(m.items)===s.canon(i)}catch{return!1}}async function ir(o,l){let s=await H();return await cr(o,l)?{ok:!0,outcome:"writer-adopts"}:new Promise(c=>{let d=null,i=null,m=!1,p=v=>{m||(m=!0,i&&clearTimeout(i),i=null,d?.(),d=null,c(v))};W(o,()=>p({ok:!1,cancelled:!0})),d=o.store.onRebase(v=>{v.source==="remote"&&p({ok:!0,outcome:"writer-adopts"})}),i=setTimeout(()=>{console.warn("page: gave up waiting for the writer's adoption; the hand edit was not adopted"),p({ok:!1,reason:"adoption-timeout"})},s.ADOPTION_TIMEOUT_MS)})}async function ur(o,l,s){let c=await H(),d=l.seeded?{kind:"untouched"}:c.classifyFile(l.article,l.tags),i=d.kind==="adopt",m=async()=>{let h=await it();if(!h||!f(o))return;if(h.status.writer===null){let k=o.store.value.y,g=Object.keys(k),O=a.ydoc.clientID.toString(36),I=o.store.room?.compaction?.v===1?g.find(F=>kr.test(F))??`u${O}-claim-0`:g.length?g[0]:`claim-${O}`,L=Object.hasOwn(k,I)?k[I]:c.yValueOf(a.ydoc).y.seed;o.store.handle.set(["y",I],L),h.release("page")}let T;await Promise.race([ut(),new Promise(k=>{T=setTimeout(k,Or)})]),clearTimeout(T)},p=i?m():Promise.resolve(),v=c.installAdoption({view:s.view,source:l,ready:p,isAdopter:()=>{let h=ce();return!h||h.status.writer===null?!0:h.isWriter()},requestCheckpoint:()=>xe(0),snapshot:()=>q({emitForSync:!1}).forSave,mergeTagless:o.mergeTagless,seeded:l.seeded,writerReady:m,adopted:h=>ce()?.adopted?.("page",h,o.store.mark),notice:h=>{h.copy&&B(Tr,"warning",{actions:[{label:"Download your copy",onClick:()=>Ie(h.copy)}]})}});o.adoption=v;let w=await v.idle();return w?(w.outcome==="writer-adopts"&&(w=await ir(o,d)),!w.ok&&f(o)?qt(o):f(o)&&await Vt(o),w):(await Vt(o),{ok:!0,outcome:"unchanged"})}async function ze(o,l){if(o.replaced)return{ok:!1,reason:"page-replaced"};if(await S,!f(o))return{ok:!1,cancelled:!0};let s=l.view.dom.closest(".page-shell");if(!Fe(o,l)||!s||!s.isConnected||l.view.isDestroyed)return{ok:!1,reason:"view-detached"};let c=new Set(l.featureIds??[]),d=Rr(l.view.state.doc).filter(i=>!c.has(i));return d.length&&(await Promise.allSettled(d.map(i=>b.ensure(i))),!f(o))?{ok:!1,cancelled:!0}:{ok:!0}}function Ke(o,l){let s=l.view.dom.closest(".page-shell"),c=()=>{for(let d of E)d.remove();s&&(s.style.visibility="")};return o.replaced?(c(),Yt(o),{ok:!1,reason:"page-replaced"}):o.inputOpen?{ok:!0}:!Fe(o,l)||!s||!s.isConnected||l.view.isDestroyed?{ok:!1,reason:"view-detached"}:(c(),s.inert=!1,Z?.(l.view,!0),o.inputOpen=!0,_(o),{ok:!0})}function dr(o){return o.inputOpen?(Z?.(o.view,!1,{quiesce:!0}),!0):!1}function pr(o){return o.inputOpen?(Z?.(o.view,!0),!0):!1}async function fr(o,l){let s=await ze(o,l);return s.ok?Ke(o,l):s}let Qe={readSource:rr,loadEditorAssets:ar,prepareAuthority:nr,mountAndAttach:sr,adoptSource:ur,prepareInput:ze,openInput:Ke,closeInput:dr,resumeInput:pr,enableInput:fr,release:o=>{o.view||qt(o)}};return e.steps=Qe,Qe}async function Wr(e,t={},{activate:r=!0}={}){return Ft(e,Gr(e,t),{activate:r})}function Xt(e={},{activate:t=!0,context:r=null}={}){qe(),fe=null;let a=++ye,n={...It({gen:a,isCurrent:()=>a===ye&&(r?.isCurrent?.()??!0),onPhase:y=>{(y.phase==="ready"||y.phase==="blocked"||y.phase==="error")&&_(n),e.onPhase?.(y)}}),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,loadFormatGate:null,listeners:[],retryTimer:null,retryShown:!1,statusTimer:null,statusNote:null,notices:null,editorReadyResolve:null,context:r,inputOpen:!1,sessionHeld:!1,autosaveSuspended:!1,staleRetry:!1};A=n;let u=Wr(n,e,{activate:t}).catch(y=>(console.error("clayjs: page plugin failed to install",y),fe=Lt(n,"boot-failed"),A===n&&qe(),fe));return{inst:n,boot:u}}function zt(e={}){return Xt(e).boot}function $r(e){if(A===e&&(A=null,ye+=1),ae("Page-Write",null),He(e),Jt(e,!0),e.titleObserver?.dispose(),e.titleObserver=null,_(e),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}e.view=null,Je(e),$e(e)}function ge(e){e.sessionHeld&&(e.sessionHeld=!1,le({replay:!1,reason:Be}))}function Kt(e,{held:t=!0}={}){return{enable(){t&&(ge(e),Dt(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,at())},resume(){ge(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),e.steps?.resumeInput?.(e)},dispose(){ge(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),$r(e)}}}function Jr(e=null,t={}){je(Be);let{inst:r,boot:a}=Xt(t,{activate:!1,context:e});r.sessionHeld=!0;let n=Kt(r,{held:!0});he.ready=a.then(()=>he.status);let u=a.then(y=>{if(!y?.deferred)throw Object.assign(new Error("clayjs: the page session could not prepare"),{code:y?.reason??"load-failed"})});return u.catch(()=>{ge(r);try{e?.reader?.reclaimArticle?.()}catch(y){console.error("clayjs: the reader could not take the article back",y)}}),{ready:u,...n}}function bo(e={}){return{id:"clay:page",order:400,prepare(t={}){return t.initial===!0?A?Kt(A,{held:!1}):{enable(){},quiesce(){},resume(){},dispose(){}}:Jr(t,e)}}}var he={ready:null,install:zt,get status(){return A?.result??fe},flush(e={}){let t=A;return!t||!t.flush?Promise.resolve({ok:!1,code:"disposed"}):t.flush(e)},dispose:qe,get view(){return A?.view??null},get settings(){return A?.settings??null}};et(e=>{let t=A?.binding;if(!t?.filePending())return;let r=N?.acceptedPageState(e);r&&t.acceptFile(r)});he.ready=Ze()?zt():null;var So=he;export{Nt as PAGE_FULL_MESSAGE,Or as WRITER_WAIT_MS,Gr as createSteps,So as default,bo as modeParticipant,he as page,bo as pageParticipant,Jr as preparePageSession};
|
|
1
|
+
import{a as Ce}from"../c-3GJ4SDE2.js";import{a as vt,b as bt,c as St}from"../c-LPUJXRXW.js";import{a as wt}from"../c-BYTKL6UX.js";import{a as mt,b as B,c as R}from"../c-E4IBSAQM.js";import{a as Ee,b as Re}from"../c-RHMPKZZ7.js";import{a as kt}from"../c-L4WQSC27.js";import{d as it,e as ut,i as dt,j as Pe,n as V,o as pt,q as ce,r as ft,s as gt,t as xe,u as yt,v as ht}from"../c-UXEVJ63W.js";import"../c-JKZJIUIP.js";import{a as se}from"../c-TCCA5BZN.js";import{k as Oe}from"../c-3LDGIBMN.js";import"../c-57XDY6HC.js";import"../c-LZJPNR2W.js";import{b as ct}from"../c-FILLTJA7.js";import{a as rt}from"../c-NUHP2XDB.js";import{A as lt,E as st,d as at,e as ne,g as nt,m as je,n as le}from"../c-NLZ5AN4L.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import{a as ot}from"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-GSRLXYWL.js";import"../c-X5LNHET5.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-LA2BW7UY.js";import{d as ae}from"../c-GVPNDIKJ.js";import{a as et}from"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import{a as Te,c as tt,d as Ae}from"../c-NQJRVJ56.js";import{d as ke}from"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import{k as Ze}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{D as q}from"../c-EGTIAL6P.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var gr=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","page-full":"blocked","compaction-failed":"blocked"}),Tt=({unavailable:e,pending:t,journaled:r,acknowledged:a,checkpointed:n}={})=>e?"unavailable":t>0?"pending":r>0?"journaled":a>0?"acknowledged":n?"checkpointed":null,ie="Can't save here. Your edits are still in this tab.",ue="Still trying to save. Your edits are safe in this tab.";function G({ok:e=!1,code:t=null,offline:r=!1}={}){return e?"saved":r?"retrying":gr[t]??"error"}function At(e){let t;try{t=new DOMParser().parseFromString(e,"text/html")}catch{return e}let r=[...t.querySelectorAll('script[type="application/json"][merge="page"][clay~="live"]')].filter(u=>!u.closest("template")&&!u.closest("noscript"));if(r.length!==1)return e;let a=r[0].outerHTML,n=e.indexOf(a);return n<0||e.indexOf(a,n+1)!==-1?e:e.slice(0,n)+e.slice(n+a.length)}async function de(){let{forSave:e}=q({emitForSync:!1});return await Re({html:At(e),name:`${Ee()}.html`})}async function Ie(e){return await Re({html:At(e),name:`${Ee()}.html`})}async function Et(){try{let{forSave:e}=q({emitForSync:!1}),r=new DOMParser().parseFromString(e,"text/html").querySelectorAll("article[data-page]");return r.length!==1?!1:(await navigator.clipboard.writeText(r[0].textContent),!0)}catch{return!1}}var Rt="clay.page.author",Le="clay.page.author.owned.",jt=()=>globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;function Ot(e=globalThis.localStorage){try{let t=[];for(let a=0;a<e.length;a++){let n=e.key(a);n&&n.startsWith(Le)&&t.push(n.slice(Le.length))}let r=e.getItem(Rt);return(!r||!t.includes(r))&&(r=jt(),e.setItem(Le+r,"1"),e.setItem(Rt,r),t.push(r)),{token:r,owned:t.sort()}}catch{let t=jt();return{token:t,owned:[t]}}}var P=Object.freeze({loading:"loading",joining:"joining",adopting:"adopting",ready:"ready",blocked:"blocked",error:"error"}),yr=new Set([P.ready,P.blocked,P.error]),Pt=0,Ct=()=>globalThis.performance?.now?.()??Date.now();function It({gen:e=0,isCurrent:t=()=>!0,onPhase:r=null}={}){return Pt+=1,{installId:Pt,gen:e,isCurrent:t,onPhase:typeof r=="function"?r:null,phase:P.loading,result:null,at:Ct(),controller:new AbortController,disposers:[],disposed:!1,steps:null,deferred:null}}function f(e){return!e.disposed&&!e.controller.signal.aborted&&e.isCurrent()!==!1}function Fe(e,t){return f(e)&&!!t?.view&&e.mounted===t.view}function D(e,t,r=null){if(yr.has(e.phase)&&e.result)return e.result;e.phase=t,e.at=Ct(),e.result=Object.freeze({phase:t,reason:r??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 De(e,t){let r=D(e,P.blocked,t);return e.editorReadyResolve?.(),r}function Lt(e,t){return D(e,P.error,t)}function W(e,t){return typeof t=="function"&&e.disposers.push(t),t}function He(e){if(e.disposed)return;e.disposed=!0,e.mounted=null;try{e.controller.abort()}catch(r){console.error("clayjs: page boot abort failed",r)}let t=e.disposers.splice(0).reverse();for(let r of t)try{r()}catch(a){console.error("clayjs: a page boot disposer failed",a)}}function pe(e,t){let r=globalThis.performance;if(typeof r?.mark=="function")try{r.mark(e,{detail:{installId:t.installId}})}catch{try{r.mark(e)}catch{return}}}function hr(e,t){try{t.release?.(e)}catch(r){console.error("clayjs: page boot release failed",r)}}function Y(e,t,r){return t.cancelled?null:(hr(e,r),De(e,t.reason??"boot-incomplete"))}function xt(e,t,r,a=null){return Promise.resolve(e).then(n=>n??{ok:!1,reason:r},n=>(console.error(`clayjs: page boot ${r}`,n),{ok:!1,reason:r})).then(n=>(n.ok&&a&&f(t)&&pe(a,t),n))}function mr(e,t){return new Promise(r=>{let a=e.controller.signal,n=!1,u=S=>{n||(n=!0,r(S))};if(a.aborted)return u({cancelled:!0});a.addEventListener("abort",()=>u({cancelled:!0}),{once:!0});let y=new Array(t.length),b=t.length;t.forEach((S,E)=>{S.then(j=>{if(!n){if(!j.ok)return u({result:j,branch:S});y[E]=j,b-=1,b===0&&u({results:y})}})})})}async function Ft(e,t,{activate:r=!0}={}){pe("document:boot",e),D(e,P.loading);let a=t.readSource(e);if(!f(e))return null;if(!a.ok)return De(e,a.reason);let n=a.source;D(e,P.joining);let u=await mr(e,[xt(t.loadEditorAssets(e,n),e,"editor-assets-failed","document:assets-ready"),xt(t.prepareAuthority(e,n),e,"authority-failed","document:authority-ready")]);if(u.cancelled||!f(e))return null;if(!u.results){try{e.controller.abort()}catch(x){console.error("clayjs: page boot abort failed",x)}return Y(e,u.result,t)}let[y,b]=u.results,S=t.mountAndAttach(e,n,y,b);if(!f(e))return null;if(!S.ok)return Y(e,S,t);e.mounted=S.view??null,D(e,P.adopting);let E=await t.adoptSource(e,n,S);if(!f(e))return null;if(!E.ok)return Y(e,E,t);if(!r){if(t.prepareInput){let x=await t.prepareInput(e,S);if(!f(e))return null;if(!x.ok)return Y(e,x,t)}return e.deferred=S,{phase:e.phase,view:S.view,deferred:!0}}let j=await t.enableInput(e,S);return f(e)?j.ok?(pe("document:input-ready",e),D(e,P.ready)):Y(e,j,t):null}function Dt(e){let t=e.deferred;if(e.deferred=null,!t||!f(e))return e.result??null;let r=e.steps?.openInput?.(e,t);return r?.ok?(pe("document:input-ready",e),D(e,P.ready)):De(e,r?.reason??"input-refused")}var X="article[data-page]",z='script[type="application/json"][merge="page"][clay~="live"]',Ht={state:"blocked",code:"unsupported-host",message:"This host does not support page editing"},Ve="Changes cannot be stored on this device. Download a copy to keep them.",wr=45e3,vr="Couldn't save",br="Offline, not saved",Bt="This page was changed outside the editor. Reload to see it.",Sr="That change is too large to share, so it was not saved. Reload the page to keep editing.",kr=/^[ur][0-9a-z]+(-[0-9a-z]+){2}$/,Nt="This document is full, though your changes are still here to download. To edit again, reload this tab after another editor, or the owner in another browser, deletes content.",Tr="Some changes you made were replaced by a change made outside the editor.",Gt="The page was changed outside the editor; reload to see it.",Ar=150,Er="Loading the editor\u2026",Be="the page session has not committed yet",_t=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function Ne(e){return _t(e)?e.v!==1||!_t(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,Mt=null;function H(){return Mt??=import("../c-YSB6JKV2.js").then(e=>N=e),Mt}function Rr(e){let t=new Set;return e.forEach(r=>{let a=St(r);a&&t.add(a)}),[...t]}function _(e){e.statusTimer&&(clearTimeout(e.statusTimer),e.statusTimer=null),e.statusNote?.remove(),e.statusNote=null}function jr(e,t){_(e),e.statusTimer=setTimeout(()=>{if(e.statusTimer=null,!f(e))return;let r=t.ownerDocument.createElement("div");r.className="page-boot-status",r.setAttribute("clay","editor-ui"),r.setAttribute("sap-ignore",""),r.setAttribute("role","status"),rt(r,["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"]),r.textContent=Er,t.prepend(r),e.statusNote=r},Ar)}var ye=0,A=null,fe=null,Or=8e3;function Pr(e,t=globalThis.location){let r=t?.hash?.slice(1);if(!r)return;let a;try{a=decodeURIComponent(r)}catch{return}let n=-1;e.state.doc.forEach((u,y)=>{n<0&&u.attrs.id===a&&(n=y)}),!(n<0)&&globalThis.requestAnimationFrame?.(()=>e.nodeDOM(n)?.scrollIntoView?.({block:"start"}))}function K(e,t=null,r=""){document.dispatchEvent(new CustomEvent("clay:page-save-state",{detail:{state:e,code:t,message:r}}))}function Wt(){R(vr),R(br)}function $t(e){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.retryShown=!1,R(ue)}function xr(e,t,r){Wt(),K("retrying",t,r),!(e.retryTimer||e.retryShown)&&(e.retryTimer=setTimeout(()=>{e.retryTimer=null,e.retryShown=!0,B(ue,"warning")},wr))}function Jt(e,t=!1){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),R(ue,{now:t}),R(ie,{now:t}),R(Ve,{now:t})}function Ge(e,t,r,a="blocked"){$t(e),Wt(),K(a,t,r),B(a==="unavailable"?Ve:ie,"error",{detail:r,actions:[{label:"Download a copy",onClick:de},{label:"Copy text",onClick:Et}]})}function Cr(e){$t(e),R(ie),R(Ve),K("saved",null,"")}function Ir(e,t,r=!1){if(typeof e!="string"||!e)return!1;let a;try{a=new DOMParser().parseFromString(e,"text/html")}catch{return!1}let n=a.querySelectorAll(X);return r?n.length!==1&&!a.querySelector(z):n.length!==1||a.querySelector(z)?!1:n[0].getAttribute("data-rev")!==t}function Lr(e){if(!e.store||!N)return e.savedRev;try{return N.renderFromTags([JSON.stringify(e.store.value)]).rev}catch{return e.savedRev}}function Yt(e){let t=e.view;t&&(t.setProps({editable:()=>!1}),t.setProps({dispatchTransaction:r=>t.updateState(t.state.apply(r))}));try{e.binding?.dispose()}catch(r){console.error("clayjs: page plugin binding failed to dispose",r)}e.savesHeld||(e.savesHeld=!0,je(Gt))}async function Fr(e){if(!e.tabValue)return await de();let{forSave:t}=q({emitForSync:!1}),r=new DOMParser().parseFromString(t,"text/html"),a=r.querySelectorAll(X);if(a.length!==1)return await de();let n=N.renderFromTags([JSON.stringify(e.tabValue)]);return a[0].innerHTML=n.html,n.rev==null?a[0].removeAttribute("data-rev"):a[0].setAttribute("data-rev",n.rev),await Ie(`<!DOCTYPE html>
|
|
2
|
+
${r.documentElement.outerHTML}`)}function We(e,t,{reload:r=!0}={}){if(e.replaced)return;e.replaced=!0,Yt(e);let a={label:"Download your copy",onClick:()=>Fr(e)};B(t,"warning",{actions:r?[{label:"Reload",onClick:()=>window.location.reload()},a]:[a]})}var Me=e=>We(e,Bt),Dr=e=>We(e,Sr),Hr=(e,t)=>{K("blocked",t,Nt),We(e,Nt,{reload:!1})};function U(e,t,r,a){t==="saved"?Cr(e):t==="retrying"?xr(e,r,a):t==="blocked"&&Ge(e,r,a)}function C(e,t,r){document.addEventListener(t,r),e.listeners.push([t,r])}function Nr(e){C(e,"clay:save-error",r=>{let a=r.detail?.code??null;a!=="page-nothing-to-write"&&U(e,G({code:a}),a,r.detail?.msg??"")}),C(e,"clay:save-offline",r=>{let a=r.detail?.code??null;U(e,G({code:a,offline:!0}),a,r.detail?.msg??"")}),C(e,"clay:save-conflict",r=>{let a=r.detail?.code??null;U(e,G({code:a}),a,r.detail?.msg??"")});let t=r=>{_r(e,r)};C(e,"clay:save-conflict",t),C(e,"clay:save-error",t),C(e,"clay:save-saved",r=>{U(e,G({ok:!0}),null,r.detail?.msg??""),e.savedRev=Lr(e),e.adoption?.saved(lt())}),C(e,"clay:live-notice",r=>{if(r.detail?.name!=="page"||r.detail?.code==="op-too-large")return;if(r.detail?.code==="unknown-store"){Me(e);return}let a=r.detail?.code??null;U(e,G({code:a}),a,r.detail?.message??"")})}async function Ut(){let e=await fetch(new URL(globalThis.location.href).href,{cache:"no-store"});if(!e?.ok)return null;let t=await e.text(),r=new DOMParser().parseFromString(t,"text/html"),a=r.querySelector(X);if(!a)return null;let n=r.querySelector(z),u=e.headers?.get?.("etag")||null,y=r.documentElement.getAttribute("documentetag")||(u&&!/^W\//.test(u)?u:null);return{article:a,value:n?se(n.textContent):null,etag:y}}async function _r(e,t){let r=e.staged;if(!r||e.staleRetry||e.replaced)return;let a=t?.detail?.code??null;if(!(a!=="page-lineage-stale"&&a!=="conflict")&&!(!e.store||!r.isPending())){e.staleRetry=!0;try{let n=await Ut();if(!n||!f(e))return;let u=await H();if(!f(e))return;let y=n.value??u.seedPageFromArticle(n.article.cloneNode(!0)),b=n.etag??t?.detail?.etag??null;b&&tt(b),e.store.rebase(y,{source:"state"}),await st()}catch(n){console.warn("clayjs: page plugin could not offer the refused first write again",n)}}}function $e(e){let t=e.article;if(!t)return;let r=e.bootHtml,a=e.bootRev;if(e.store&&N)try{let n=N.renderFromTags([JSON.stringify(e.store.value)]);r=n.html,a=n.rev}catch(n){console.error("clayjs: page plugin could not render the saved article",n)}t.innerHTML=r,a==null?t.removeAttribute("data-rev"):t.setAttribute("data-rev",a)}function Je(e){for(let[t,r]of e.listeners)document.removeEventListener(t,r);e.listeners=[];try{e.adoption?.dispose()}catch(t){console.error("clayjs: page plugin adoption failed to dispose",t)}e.adoption=null;try{e.recover?.destroy()}catch(t){console.error("clayjs: page plugin recover list failed to dispose",t)}if(e.recover=null,e.aiTool?.dispose(),e.aiTool=null,e.awareness?.dispose(),e.awareness=null,e.toolHost?.dispose(),e.toolHost=null,e.view&&wt.delete(e.view),e.article){let t=e.article.querySelector(".page-shell");t&&t.remove()}try{e.binding?.dispose()}catch(t){console.error("clayjs: page plugin binding failed to dispose",t)}try{e.binding?.ydoc?.destroy()}catch(t){console.error("clayjs: page plugin document failed to destroy",t)}try{e.staged?.close()}catch(t){console.error("clayjs: page plugin staged store failed to close",t)}if(e.staged=null,e.pageStore){try{pt("page",e.pageStore)}catch(t){console.error("clayjs: page plugin store failed to close",t)}e.pageStore=null}e.binding=null,e.flush=null,e.releaseArticle?.(),e.releaseArticle=null}function qt(e){let t=e.view;if(t&&!t.isDestroyed&&typeof t.destroy=="function")try{t.destroy()}catch(r){console.error("clayjs: page plugin view failed to destroy",r)}e.titleObserver?.dispose(),e.titleObserver=null,_(e),Je(e),$e(e)}function qe(){ye+=1;let e=A;if(A=null,ae("Page-Write",null),Pe(null),!!e){He(e),Jt(e),R(Bt);for(let t of e.notices?.values()??[])R(t);if(e.savesHeld&&(e.savesHeld=!1,le({replay:!1,reason:Gt})),e.titleObserver?.dispose(),e.titleObserver=null,_(e),e.sessionHeld&&le({replay:!1,reason:Be}),e.autosaveSuspended&&ne(),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}Je(e),$e(e)}}var _e=null;function Ye(){return _e||(_e=Promise.all([import("../c-OKXI52N7.js"),import("../c-BJPZCWAV.js"),import("../c-67LGZ52V.js")]).then(([e,t,r])=>({replay:e,proof:t,ui:r})).catch(e=>(console.warn("clayjs: page journal could not load",e),null))),_e}async function Mr(e,t){let r=globalThis.window?.clay?.recovery??null;if(!r||!t)return null;let a=await Ye();if(!a)return null;try{return a.replay.openPageJournal({meta:e,service:r,base:a.replay.journalBase(t.value)})}catch(n){return console.warn("clayjs: page journal could not open",n),null}}async function Vt(e){let t=e.binding?.journal;if(!t||!e.store)return{replayed:[],review:[]};let r=await Ye();if(!r)return{replayed:[],review:[]};let a=await r.replay.replayInto({journal:t,state:e.store.value,into:e.binding.ydoc});return Br(e,r),a.replayed.length&&e.binding.provider.settle(),a.review.length&&(e.recoveryReview=a.review),qr(e,r.ui)?.update({rows:r.replay.describeReview(a.review)}),a}function qr(e,t){if(e.recoveryPanel)return e.recoveryPanel;let r=e.view,a=r?.dom.closest(".page-shell")??e.article;if(!a)return null;let n=t.createRecoveryReview({mount:a,getView:()=>e.view&&!e.view.isDestroyed?e.view:null,getJournal:()=>e.binding?.journal??null,isCurrent:()=>f(e)&&e.inputOpen&&!!e.view&&!e.view.isDestroyed}),u=n.watch(r?.dom??null);return W(e,()=>{u(),n.destroy()}),e.recoveryPanel=n,n}function Vr(e){Pe(async({capture:t,state:r,article:a,etag:n})=>{let u=e.binding?.journal;if(!u)return;let y=await Ye(),b=y?await u.context():null;if(!b)return;let{hostPageStateHref:S}=await import("../c-ZRXJD4G6.js"),E=await y.proof.checkpointAccepted({channel:u.channel,records:u.records(),capture:t,accepted:b,article:a,state:r,etag:n,href:await S()});E.ok&&(u.retire(E.retired),e.pageStatus?.checkpoint(),await u.rebase?.(y.replay.journalBase(E.proof.state)))})}function Br(e,t){let r=e.binding?.journal;return!r||e.pageStatus?e.pageStatus??null:(e.pageStatus=t.replay.watchJournal({journal:r,store:e.store,reduce:Tt,onState:a=>K(a),onUnavailable:a=>Ge(e,a,"","unavailable")}),W(e,()=>e.pageStatus?.dispose()),e.pageStatus)}function Gr(e,t){let r=null,a=null,n=null,u=null,y=null,b=null,S=null,E=[],j=null,x=null,$=null,Q=null,Z=null,Qt=new Promise(o=>{u=o});e.editorReadyResolve=u,W(e,()=>u?.()),W(e,()=>_(e));let ee=null,me=null;e.loadFormatGate=()=>ee?Promise.resolve(ee):(me??=Promise.all([import("../c-E3ZXARWA.js"),import("../c-EZ7B5AZT.js")]).then(([{createFormatGate:o},{createFormatHost:l}])=>{let s=l();return ee=o({host:s,supported:s.supported,installed:()=>y?.token??null,revision:()=>null,lane:{switchScope:(c,d)=>{let i=gt();return i?i.switchScope(c,{...d,covered:!!d?.covered||!ft()}):{status:"refused",code:"lane-unavailable"}}}}),ee}).catch(o=>{throw me=null,o}),me);let Ue='script[type="application/json"][merge="page.tools"][clay~="live"]',Zt=()=>$||($=(async()=>{if(!document.querySelector(Ue)){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(Ue))try{j=window.clay.live("page.tools"),await j.ready}catch(c){console.warn("clayjs: page plugin could not open the tool store",c)}if(!f(e))return null;let[{createToolHost:o},{tablesFromDoc:l}]=await Promise.all([import("../c-GRWMD6O5.js"),import("../c-A6L3FMUS.js")]);if(!f(e))return null;let s=o({store:j,mode:"edit",tables:()=>l(n?.state.doc??a.doc()).map(({id:c,cols:d,rows:i})=>({id:c,cols:d,rows:i}))});if(e.toolHost=s,Ce(r)){let{createAiTool:c}=await import("../c-EFD6QNTE.js");if(!f(e))return null;let d=window.clay?.wire?.pageTool??t.transport??null;x=c({getView:()=>e.view,store:j,transport:d,acceptState:t.acceptState}),e.aiTool=x}return s})().catch(o=>{throw $=null,o}),$),te='script[type="application/json"][merge="page.settings"][clay~="live"]',Xe=["assignees","dates"],M=null,we={assignees:!0,dates:!0},re=o=>({assignees:o?.assignees!==!1,dates:o?.dates!==!1});function er(){let o=document.querySelector(te);if(!o)return re(null);let l=null;try{l=JSON.parse(o.textContent)}catch{l=null}return re(l)}function oe(o){we=re(o);let l=e.view&&!e.view.isDestroyed?e.view.dom:null;if(l)for(let s of Xe)we[s]?l.removeAttribute(`data-${s}`):l.setAttribute(`data-${s}`,"false")}let ve=()=>M||(M=(async()=>{if(!document.querySelector(te)){let l=document.createElement("script");l.setAttribute("type","application/json"),l.setAttribute("merge","page.settings"),l.setAttribute("clay","live"),l.textContent="{}",document.head.appendChild(l)}let o=null;try{o=window.clay.live("page.settings"),await o.ready}catch(l){return console.warn("clayjs: page plugin could not open the settings store",l),M=null,null}return f(e)?(oe(o.data),o.on("change",()=>oe(o.data)),o):null})(),M);e.settings={read:()=>({...we}),set:async(o,l)=>{if(!Xe.includes(o))throw new TypeError(`clayjs: "${o}" is not a page setting`);let s=await ve();if(!s)throw new Error("clayjs: the page settings store could not be opened");let c={...re(s.data),[o]:l!==!1};s.set([o],c[o]),oe(c)}};let J=new Map,tr=o=>{if(J.has(o))return;let l=`The ${o} controls could not load. Reload the page after saving.`;J.set(o,l),B(l,"warning",{actions:[{label:"Retry",onClick:()=>{b.ensure(o).then(()=>{let s=J.get(o);s&&(J.delete(o),R(s))},()=>{})}}]})};e.notices=J;let be=async({target:o=null,remove:l=null}={})=>{Q&&n&&l&&Q.holdSlashRange(n,l),await b.ensure("tool").catch(()=>{}),!(!f(e)||!x||!n)&&x.open({target:o,remove:l?Q.heldSlashRange(n.state):null})},Se=()=>Ce(r);function rr(o){let l=document.querySelectorAll(X),s=typeof o.context?.represented?.bytes=="string"?new DOMParser().parseFromString(o.context.represented.bytes,"text/html"):null,c=s?s.querySelectorAll(X):l,d=s?s.querySelectorAll(z):document.querySelectorAll(z);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 m=l[0];if(!m)return{ok:!1,reason:"no-page"};let p=c[0],v=d[0],w=null;if(!i){try{w=se(v?.textContent)}catch{w=null}let T=Ne(w);if(T)return{ok:!1,reason:T}}let h={article:p.cloneNode(!0),tags:w?[w]:null,element:m,blocks:null,seeded:i,seedValue:null};return h.ready=(async()=>{let T=await H();if(!f(o))return{ok:!1,cancelled:!0};if(i){try{let g=await ke(),O=g?.extensions?.includes("page-recovery-v1")&&g.document?.pageState?.href,I=o.context?.represented?o.context.represented.etag:Ae()??Te();if(O&&I){let{readPageState:L}=await import("../c-BJPZCWAV.js"),F=await L({href:O,etag:I});if(!f(o))return{ok:!1,cancelled:!0};if(F.ok){if(F.etag!==I)return{ok:!1,reason:"etag-mismatch"};w=se(F.tag),h.persisted=!0}else if(F.code!=="no-page-state")return{ok:!1,reason:F.code}}else if(O){let L=await Ut();if(!f(o))return{ok:!1,cancelled:!0};if(!L||!L.article.isEqualNode(h.article))return{ok:!1,reason:"stale-document"};w=L.value,h.persisted=w!==null}w=h.seedValue=w??T.seedPageFromArticle(h.article.cloneNode(!0))}catch(g){return console.warn("clayjs: page plugin could not rebuild the page it found, leaving the page as saved HTML",g),{ok:!1,reason:"invalid-page-source"}}let k=Ne(w);if(k)return{ok:!1,reason:k};h.tags=[w]}try{h.blocks=T.blocksFromYValue(w)}catch(k){return console.warn("clayjs: page plugin: the page tag is not a valid Yjs page, leaving the page as saved HTML",k),{ok:!1,reason:"invalid-page-json"}}return{ok:!0}})(),jr(o,m),{ok:!0,source:h}}function or(o,l){if(Ne(l))return!1;if(Oe(o.authoritative)===Oe(l))return!0;try{return o.rebase(l,{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 ar(o,l){let s=H();s.catch(()=>null);let c=await l.ready;if(!c.ok)return c;if(!f(o))return{ok:!1,cancelled:!0};let d=await s,i=[...new Set(Object.values(l.blocks).map(p=>bt(p.t)).filter(Boolean))];b=d.createFeatureLoader({load:p=>vt[p].load(),install:async(p,v)=>{if(n||await Qt,!f(o)||!n)return null;let w={view:n,upload:t.upload,board:a.board,undo:a.undo,redo:a.redo,revise:Se()?(h,T)=>{be({target:{toolId:h,rev:T}})}:null};return p==="tool"&&(w.toolHost=await Zt(),!f(o))?null:m.installPageFeature(w,p,v)},reportError:(p,v)=>{console.error("clayjs: an editor feature failed to load",p),tr(v)}});for(let p of i)b.prepare(p).catch(()=>null);let m=null;try{m=await import("../page/editor-EY2WAAGB.js"),Z=m.setEditorActive,Q={holdSlashRange:d.holdSlashRange,heldSlashRange:d.heldSlashRange}}catch(p){return console.error("clayjs: page plugin could not load the editor",p),{ok:!1,reason:"editor-assets-failed"}}return f(o)?{ok:!0,editor:m.createPageEditor,refreshView:m.refreshMountedView,featureIds:i,code:d}:{ok:!1,cancelled:!0}}async function nr(o,l){let s=H();try{r=await ke()}catch{r=null}if(!f(o))return{ok:!1,cancelled:!0};if(!r||!Array.isArray(r.extensions)||!r.extensions.includes("page"))return Ge(o,Ht.code,Ht.message),{ok:!1,reason:"missing-capability"};o.mergeTagless=!r.extensions.includes("live-data"),ae("Page-Write","v1");let c=null,d=null;if(l.seeded){if(c=await l.ready,!c.ok)return c;if(d=await s,!f(o))return{ok:!1,cancelled:!0}}let i,m=!0;try{if(l.seeded){let g=dt("page",{value:l.seedValue,represented:t.represented??{bytes:l.article.outerHTML,etag:Ae()??Te()},persisted:l.persisted});o.staged=g,i=g.handle}else{let g=V("page")===null;m=g,i=window.clay.live("page"),g&&(o.pageStore=V("page"))}}catch(g){return console.warn("clayjs: page plugin could not open the page store",g),{ok:!1,reason:"missing-page-store"}}try{await i.ready}catch(g){return console.warn("clayjs: page plugin could not join the page room",g),{ok:!1,reason:"admission-failed"}}if(!f(o))return{ok:!1,cancelled:!0};if(c??=await l.ready,!c.ok)return c;let p=V("page")?.handle?.status?.mode==="fast";if(!m&&!p&&!or(V("page"),l.tags?.[0]))return{ok:!1,reason:"stale-store"};if(d??=await s,!f(o))return{ok:!1,cancelled:!0};let v=V("page");if(!v)return{ok:!1,reason:"missing-page-store"};o.store=v;let w=!1,h=null,T=async g=>{let O=await g();return w=O?.ok===!1,h?.changed(),O};y=Ot();let k=await Mr(r,v);return f(o)?(a=d.createYPageBinding({store:v,onStopped:g=>{o.tabValue=d.yValueOf(a.ydoc),g==="lineage"?(ce()?.abandon?.("page"),Me(o)):g==="page-full"||g==="compaction-failed"?Hr(o,g):Dr(o)},authorToken:y.token,ownedTokens:y.owned,checkpointWithin:xe,requestCheckpoint:ht,requestExitCheckpoint:g=>yt({name:v.name,...g}),journal:k,exitClosed:()=>!nt(),registerUnsavedState:g=>(h=ot({id:g.id,isPending:()=>w||g.isPending(),flush:O=>T(()=>g.flush(O))}),h)}),o.binding=a,k&&Vr(o),o.flush=g=>T(()=>a.flush(g)),Nr(o),{ok:!0,store:v,handle:i}):{ok:!1,cancelled:!0}}function lr(o,l){import("../c-BTLFLLML.js").then(async s=>{if(o.view!==l)return;let c=await s.installPageAwareness({binding:o.binding,view:l});if(c){if(o.view!==l||l.isDestroyed){c.dispose();return}o.awareness=c}}).catch(s=>console.error("clayjs: page plugin remote carets failed to load",s))}function sr(o,l,s){let c=l.element;o.context?.reader?.yieldArticle?.();try{o.releaseArticle=kt(c,"editor")}catch(p){return console.error("clayjs: page plugin could not claim the article",p),{ok:!1,reason:"article-owned"}}o.source=l,o.article=c,o.bootHtml=l.article.innerHTML,o.bootRev=l.article.getAttribute("data-rev"),o.savedRev=o.bootRev,C(o,"clay:sync-applied",p=>{o.replaced||Ir(p.detail?.html,o.savedRev,o.mergeTagless)&&Me(o)}),E=[...c.childNodes].filter(p=>p!==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:b,onAiTool:Se()?(p,v)=>{be({remove:v})}:null,reviseTool:Se()?(p,v)=>{be({target:{toolId:p,rev:v}})}:null,formatGate:o.loadFormatGate})}catch(p){return console.error("clayjs: page plugin could not mount the editor",p),d.replaceChildren(),o.releaseArticle?.(),o.releaseArticle=null,o.article=null,{ok:!1,reason:"mount-failed"}}n=i,o.view=i,oe(er()),document.querySelector(te)?ve().catch(()=>null):C(o,"clay:sync-applied",()=>{!M&&document.querySelector(te)&&ve().catch(()=>null)});let m=i.dom.closest(".page-shell");if(m&&(m.inert=!0),s.featureIds.length&&m&&(m.style.visibility="hidden"),!s.featureIds.length)for(let p of E)p.remove();return m&&c.appendChild(m),s.refreshView?.(i),a.attach(i),lr(o,i),u(),S=Promise.allSettled(s.featureIds.map(p=>b.ensure(p))),Pr(i),o.recover=s.code.createRecoverList({binding:a,mount:i.dom.closest(".page-shell")??c,ownTokens:[y.token,...y.owned],onRestored:p=>s.code.focusBlock(i,p),onStale:()=>mt("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 cr(o,l){try{let s=await H(),{HyperMorph:c}=await ct(),d=s.blocksFromYValue(o.store.authoritative),i=s.readBack(d,document),m=s.mergePageModels(l.baseItems,i,l.parsed,{doc:document,merge3:c.merge3,mergeJson:c.mergeJson});return s.canon(m.items)===s.canon(i)}catch{return!1}}async function ir(o,l){let s=await H();return await cr(o,l)?{ok:!0,outcome:"writer-adopts"}:new Promise(c=>{let d=null,i=null,m=!1,p=v=>{m||(m=!0,i&&clearTimeout(i),i=null,d?.(),d=null,c(v))};W(o,()=>p({ok:!1,cancelled:!0})),d=o.store.onRebase(v=>{v.source==="remote"&&p({ok:!0,outcome:"writer-adopts"})}),i=setTimeout(()=>{console.warn("page: gave up waiting for the writer's adoption; the hand edit was not adopted"),p({ok:!1,reason:"adoption-timeout"})},s.ADOPTION_TIMEOUT_MS)})}async function ur(o,l,s){let c=await H(),d=l.seeded?{kind:"untouched"}:c.classifyFile(l.article,l.tags),i=d.kind==="adopt",m=async()=>{let h=await it();if(!h||!f(o))return;if(h.status.writer===null){let k=o.store.value.y,g=Object.keys(k),O=a.ydoc.clientID.toString(36),I=o.store.room?.compaction?.v===1?g.find(F=>kr.test(F))??`u${O}-claim-0`:g.length?g[0]:`claim-${O}`,L=Object.hasOwn(k,I)?k[I]:c.yValueOf(a.ydoc).y.seed;o.store.handle.set(["y",I],L),h.release("page")}let T;await Promise.race([ut(),new Promise(k=>{T=setTimeout(k,Or)})]),clearTimeout(T)},p=i?m():Promise.resolve(),v=c.installAdoption({view:s.view,source:l,ready:p,isAdopter:()=>{let h=ce();return!h||h.status.writer===null?!0:h.isWriter()},requestCheckpoint:()=>xe(0),snapshot:()=>q({emitForSync:!1}).forSave,mergeTagless:o.mergeTagless,seeded:l.seeded,writerReady:m,adopted:h=>ce()?.adopted?.("page",h,o.store.mark),notice:h=>{h.copy&&B(Tr,"warning",{actions:[{label:"Download your copy",onClick:()=>Ie(h.copy)}]})}});o.adoption=v;let w=await v.idle();return w?(w.outcome==="writer-adopts"&&(w=await ir(o,d)),!w.ok&&f(o)?qt(o):f(o)&&await Vt(o),w):(await Vt(o),{ok:!0,outcome:"unchanged"})}async function ze(o,l){if(o.replaced)return{ok:!1,reason:"page-replaced"};if(await S,!f(o))return{ok:!1,cancelled:!0};let s=l.view.dom.closest(".page-shell");if(!Fe(o,l)||!s||!s.isConnected||l.view.isDestroyed)return{ok:!1,reason:"view-detached"};let c=new Set(l.featureIds??[]),d=Rr(l.view.state.doc).filter(i=>!c.has(i));return d.length&&(await Promise.allSettled(d.map(i=>b.ensure(i))),!f(o))?{ok:!1,cancelled:!0}:{ok:!0}}function Ke(o,l){let s=l.view.dom.closest(".page-shell"),c=()=>{for(let d of E)d.remove();s&&(s.style.visibility="")};return o.replaced?(c(),Yt(o),{ok:!1,reason:"page-replaced"}):o.inputOpen?{ok:!0}:!Fe(o,l)||!s||!s.isConnected||l.view.isDestroyed?{ok:!1,reason:"view-detached"}:(c(),s.inert=!1,Z?.(l.view,!0),o.inputOpen=!0,_(o),{ok:!0})}function dr(o){return o.inputOpen?(Z?.(o.view,!1,{quiesce:!0}),!0):!1}function pr(o){return o.inputOpen?(Z?.(o.view,!0),!0):!1}async function fr(o,l){let s=await ze(o,l);return s.ok?Ke(o,l):s}let Qe={readSource:rr,loadEditorAssets:ar,prepareAuthority:nr,mountAndAttach:sr,adoptSource:ur,prepareInput:ze,openInput:Ke,closeInput:dr,resumeInput:pr,enableInput:fr,release:o=>{o.view||qt(o)}};return e.steps=Qe,Qe}async function Wr(e,t={},{activate:r=!0}={}){return Ft(e,Gr(e,t),{activate:r})}function Xt(e={},{activate:t=!0,context:r=null}={}){qe(),fe=null;let a=++ye,n={...It({gen:a,isCurrent:()=>a===ye&&(r?.isCurrent?.()??!0),onPhase:y=>{(y.phase==="ready"||y.phase==="blocked"||y.phase==="error")&&_(n),e.onPhase?.(y)}}),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,loadFormatGate:null,listeners:[],retryTimer:null,retryShown:!1,statusTimer:null,statusNote:null,notices:null,editorReadyResolve:null,context:r,inputOpen:!1,sessionHeld:!1,autosaveSuspended:!1,staleRetry:!1};A=n;let u=Wr(n,e,{activate:t}).catch(y=>(console.error("clayjs: page plugin failed to install",y),fe=Lt(n,"boot-failed"),A===n&&qe(),fe));return{inst:n,boot:u}}function zt(e={}){return Xt(e).boot}function $r(e){if(A===e&&(A=null,ye+=1),ae("Page-Write",null),He(e),Jt(e,!0),e.titleObserver?.dispose(),e.titleObserver=null,_(e),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}e.view=null,Je(e),$e(e)}function ge(e){e.sessionHeld&&(e.sessionHeld=!1,le({replay:!1,reason:Be}))}function Kt(e,{held:t=!0}={}){return{enable(){t&&(ge(e),Dt(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,at())},resume(){ge(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),e.steps?.resumeInput?.(e)},dispose(){ge(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),$r(e)}}}function Jr(e=null,t={}){je(Be);let{inst:r,boot:a}=Xt(t,{activate:!1,context:e});r.sessionHeld=!0;let n=Kt(r,{held:!0});he.ready=a.then(()=>he.status);let u=a.then(y=>{if(!y?.deferred)throw Object.assign(new Error("clayjs: the page session could not prepare"),{code:y?.reason??"load-failed"})});return u.catch(()=>{ge(r);try{e?.reader?.reclaimArticle?.()}catch(y){console.error("clayjs: the reader could not take the article back",y)}}),{ready:u,...n}}function bo(e={}){return{id:"clay:page",order:400,prepare(t={}){return t.initial===!0?A?Kt(A,{held:!1}):{enable(){},quiesce(){},resume(){},dispose(){}}:Jr(t,e)}}}var he={ready:null,install:zt,get status(){return A?.result??fe},flush(e={}){let t=A;return!t||!t.flush?Promise.resolve({ok:!1,code:"disposed"}):t.flush(e)},dispose:qe,get view(){return A?.view??null},get settings(){return A?.settings??null}};et(e=>{let t=A?.binding;if(!t?.filePending())return;let r=N?.acceptedPageState(e);r&&t.acceptFile(r)});he.ready=Ze()?zt():null;var So=he;export{Nt as PAGE_FULL_MESSAGE,Or as WRITER_WAIT_MS,Gr as createSteps,So as default,bo as modeParticipant,he as page,bo as pageParticipant,Jr as preparePageSession};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as be,b as me,c as ve,d as le,f as Se}from"../c-2RARVIAK.js";import{a as ie}from"../c-L4WQSC27.js";import"../c-XGH4GS2T.js";import"../c-3O7OBDCM.js";import{a as ye}from"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var we="saved",Re=2;function Ie(){return Math.random().toString(36).slice(2,11)+Date.now().toString(36)}function Ce(){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 Me(e){return typeof e!="string"||e===""?null:new DOMParser().parseFromString(e,"text/html").documentElement?.getAttribute("documentetag")||null}var _=e=>typeof e=="string"&&e?e:null;function De(e){let r=window.location.origin;if(typeof r!="string"||r===""||r==="null")return null;let u=new URL(e||window.location.href,r);return u.protocol==="http:"||u.protocol==="https:"?u.href:null}var Y=e=>Number.isSafeInteger(e)?e:null;function ze(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:_(e.etag),seq:Y(e.seq)})}function Ae({documentURL:e,servedEtag:r=null,represented:u=null,onSnapshot:f,onStatus:v}={}){if(typeof f!="function")throw new TypeError("createSavedStream: onSnapshot must be a function");let y=De(e),m=!!_(r),s=ze(u);if(y===null){let n={ready:null,get represented(){return s},adopt(){return n},start(){return n.ready=Promise.resolve(n),n},stop(){}};return n}let S=!0,q=s.seq??0,L=0,P=0,z=f,x=v,C=0,T=!1,E=null,A=null,t=null,a=!1,h=null,d=null,c=null,b=null,k=[],O=n=>!T&&n===C;function N(n,l={}){T||typeof x!="function"||x({state:n,...l})}function $(){k.length=0,b&&(!d||d.active)&&b.clear(),d&&(d.detach(),d=null),h=null,b=null,c=null}function se(n,l){if(b){b.update(n);return}k.push(n),!c&&(c=Promise.all([import("../c-VR2BJ4AN.js"),import("../c-BHZYSHW4.js")]).then(([i,w])=>{if(!O(l))return null;h=i.presence,b=w.presence,d=h.attachTransport({send:()=>Promise.resolve(!1)});for(let G of k.splice(0))b.update(G);return b}).catch(()=>(c=null,null)))}function K(){if($(),!E)return;let n=E;E=null,n.onopen=null,n.onerror=null,n.onmessage=null,n.close()}function F(){if(!A)return;let n=A;A=null,n.controller.abort()}function re(n){if(T)return!1;let l={bytes:n.bytes,etag:_(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===s.bytes&&l.etag===s.etag&&l.seq===s.seq)return!0;let i=!1;try{i=z(Object.freeze(l))===!0}catch{i=!1}return i?(s=Object.freeze(l),N("applied",{seq:s.seq,etag:s.etag}),!0):(N("recoverable",{reason:"refused",seq:l.seq,etag:l.etag}),!1)}function H(n,l){if(l==="startup")return null;let i=Math.max(n.seq??0,q);return i>0?i:null}function ae(n,l){t=n,a=!0,N("recoverable",{reason:l,seq:n.seq??null})}function U(n){T||(t={kind:n.kind,seq:Y(n.seq)},a=!1,B())}function B(){if(T||A||a||!t)return;let n=C,l=t;t=null;let i=new AbortController;A={controller:i};let w=L,G=q,D=j=>{if(A&&A.controller===i&&(A=null),!(!O(n)||i.signal.aborted)){if(j==null){ae(l,"repair-failed");return}if(L!==w||q!==G){if(P+=1,P<=Re){t=t??{kind:l.kind,seq:H(l,l.kind)},B();return}V(j.text,{kind:l.kind,seq:H(l,l.kind)},j.etag),B();return}V(j.text,l,j.etag),B()}};fetch(y,{cache:"no-store",signal:i.signal}).then(j=>j.ok?j.text().then(W=>({text:W,etag:_(j.headers?.get?.("etag"))})):null).then(D).catch(()=>D(null))}function V(n,l,i){let G=Me(n)??(/^W\//.test(i??"")?null:_(i))??(n===s.bytes?s.etag:null),D=l.kind==="startup"?s.seq:l.seq??s.seq;re({bytes:n,etag:G,seq:D})&&(S=!1,P=0,a=!1,N("current",{seq:s.seq,etag:s.etag}))}function o(n,l){let i={bytes:s.bytes,etag:n??s.etag,seq:l??s.seq};i.etag===s.etag&&i.seq===s.seq||(s=Object.freeze(i),N("current",{seq:s.seq,etag:s.etag}))}function p(n,l,i){let w=_(l);if(!(i!==null&&s.seq!==null&&i<=s.seq)){if(!S&&w!==null&&s.etag!==null){if(w!==s.etag){U({kind:"unmatched",seq:i});return}S=!0}if(n===s.bytes){o(w,i);return}re({bytes:n,etag:w,seq:i})&&(S=!0)}}function g(n,l){let i=n.data;if(i&&i.kind==="external-change"){typeof i.html=="string"?p(i.html,i.etag,l):U({kind:"notice",seq:l});return}typeof n.msg=="string"&&n.msg.endsWith("changed on disk outside this tab")&&U({kind:"notice",seq:l})}function R(n,l){if(!O(l))return;L++;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>q&&(q=w),i.type==="notification"){g(i,w);return}if(i.error){N("recoverable",{reason:"server-error",seq:w});return}if(typeof i.html!="string"){_(i.etag)?U({kind:"notice",seq:w}):N("recoverable",{reason:"bad-frame",seq:w});return}p(i.html,i.etag,w)}function Q(n,l){if(!O(l))return;L++;let i;try{i=JSON.parse(n)}catch{return}if(!i||typeof i!="object")return;let w=Y(i.seq);if(w!==null&&w>q&&(q=w),i.resync===!0){U({kind:"resync",seq:w});return}i.startup===!0&&U({kind:"startup",seq:null})}function M(n){if(O(n)){if(N("open",{seq:s.seq,etag:s.etag}),a){a=!1,B();return}s.bytes===null&&!m&&U({kind:"startup",seq:null})}}let I={ready:null,get represented(){return s},adopt({onSnapshot:n,onStatus:l}={}){return typeof n=="function"&&(z=n),typeof l=="function"&&(x=l),I},start(){T=!1;let n=++C;return K(),F(),t=null,a=!1,L=0,P=0,q=s.seq??0,I.ready=Se().then(l=>{if(!O(n))return I;let i=Ce(),w=Ie(),G=l.profile.streamPath(y,we,i,w),D=new be(new URL(G,window.location.origin).href,{shared:l.sharedSync,sharedData:l.sharedData,documentURL:y,lane:we,clientId:w,startupCheck:m});return E=D,D.onopen=()=>M(n),D.onerror=()=>{O(n)&&N("reconnecting")},D.onmessage=j=>R(j.data,n),D.addEventListener("cursor",j=>Q(j.data,n)),D.addEventListener("presence",j=>{if(!O(n))return;let W;try{W=JSON.parse(j.data)}catch{return}W&&typeof W=="object"&&!Array.isArray(W)&&se(W,n)}),I}),I},stop(){T||(T=!0,C++,K(),F(),t=null,a=!1)}};return I}var Ue="article[data-page]",Ve='section[data-type="tool"][data-id]',Ne=new Set(["UL","OL","LI","DETAILS"]),qe=new Set(["UL","OL"]),ke=e=>e.tagName==="SECTION"&&e.getAttribute("data-type")==="tool"&&e.hasAttribute("data-id");function Le(e){return ne(e)}function ne(e){let r=e.querySelector(':scope > script[type="application/json"][data-tool]'),u={};try{u=r?JSON.parse(r.textContent):{}}catch(f){return{rev:null,artifact:null,state:{},signature:null,invalid:!0,error:f}}return{rev:u.rev??null,artifact:u.artifact??null,state:u.state??{},signature:JSON.stringify(u.artifact??null),invalid:!1}}function ue(e){let r=new Map,u=new Set;for(let f of e.querySelectorAll(Ve)){let v=f.getAttribute("data-id");if(!u.has(v)){if(r.has(v)){r.delete(v),u.add(v);continue}r.set(v,ne(f))}}return r}function ce(e){let r=e.querySelector('script[type="application/json"][merge="page.tools"]');if(!r)return{};try{return JSON.parse(r.textContent)}catch{return{}}}function Je(e){let r=new Map,u=new Set,f=v=>{for(let y of v.children){let m=y.getAttribute("data-id");if(m){if(u.has(m))continue;if(r.has(m)){r.delete(m),u.add(m);continue}r.set(m,y)}Ne.has(y.tagName)&&f(y)}};return f(e),r}function xe(e){let r=new Set,u=f=>{for(let v of f.children){let y=v.getAttribute("data-id");y&&r.add(y),Ne.has(v.tagName)&&u(v)}};return u(e),r}function X(e,r=document){if(typeof e!="string"||e==="")return{ok:!1,reason:"bytes"};let u=(r.defaultView??globalThis).DOMParser;if(typeof u!="function")return{ok:!1,reason:"parser"};let f=new u().parseFromString(e,"text/html"),v=[...f.querySelectorAll(Ue)];if(v.length!==1)return{ok:!1,reason:"article"};let y=v[0],m=new Map;for(let S of y.querySelectorAll("details[data-id]"))m.set(S.getAttribute("data-id"),S.hasAttribute("open"));let s=ue(y);return{ok:!0,article:y,source:f,rev:y.getAttribute("data-rev"),title:f.title||null,savedOpen:m,tools:s,toolState:s.size?ce(f):{}}}var fe=(e,r)=>{let u=ne(e),f=ne(r);return!u.invalid&&!f.invalid&&u.rev===f.rev&&u.signature===f.signature};function Te(e,{article:r,readerOpen:u=new Map,savedOpen:f=null,keepTool:v=fe}={}){if(!e?.ok||!r)return{changed:!1};for(let t of e.article.querySelectorAll("details[data-id]")){let a=t.getAttribute("data-id");u.has(a)&&t.hasAttribute("open")!==u.get(a)&&t.toggleAttribute("open",u.get(a))}let y=Je(r),m=new Set,s=!1,S=t=>(s=!0,t.cloneNode(!0)),q=(t,a)=>{let h=xe(t);for(let d of a.children){if(m.has(d)||d.hasAttribute("data-id")||d.tagName!==t.tagName)continue;if(!h.size)return d;let c=xe(d);for(let b of h)if(c.has(b))return d}return null},L=(t,a)=>{for(let h of a.children)if(!(m.has(h)||h.hasAttribute("data-id"))&&h.tagName===t.tagName)return h;return null},P=(t,a,h=null)=>{for(let{name:d,value:c}of[...a.attributes])d===h||t.getAttribute(d)===c||(t.setAttribute(d,c),s=!0);for(let{name:d}of[...t.attributes])d===h||a.hasAttribute(d)||(t.removeAttribute(d),s=!0)},z=(t,a,h)=>{let d=b=>b&&b.nodeType===t.nodeType&&b.nodeValue===t.nodeValue&&!m.has(b),c=d(a.childNodes[h])?a.childNodes[h]:[...a.childNodes].find(d);return c?(m.add(c),c):t.cloneNode(!0)},x=(t,a)=>{let h=[],d=[...a.childNodes];for(let k=0;k<d.length;k++){let O=d[k];if(O.nodeType!==1){h.push(z(O,t,k));continue}let N=A(O,t);m.add(N),h.push(N)}let c=new Set(h),b=t.firstChild;for(let k of h){for(;b&&!c.has(b);)b=b.nextSibling;if(b===k){b=b.nextSibling;continue}t.insertBefore(k,b),s=!0}for(let k of[...t.childNodes])c.has(k)||(k.remove(),s=!0)},C=t=>{s=!0;let a=t.cloneNode(!1);return x(a,t),a},T=(t,a)=>{s=!0;let h=t.getAttribute("data-id"),d=u.has(h)?u.get(h):a.hasAttribute("open");P(t,a,"open"),t.hasAttribute("open")!==d&&t.toggleAttribute("open",d),x(t,a)},E=(t,a)=>{s=!0,P(t,a),x(t,a)};function A(t,a){let h=t.getAttribute("data-id");if(h){let c=y.get(h);return!c||m.has(c)||c===a||c.contains(a)?S(t):(m.add(c),ke(c)&&ke(t)?v(c,t)?c:S(t):c.tagName!==t.tagName?S(t):c.isEqualNode(t)?c:t.tagName==="DETAILS"?(T(c,t),c):t.tagName==="LI"?(E(c,t),c):qe.has(t.tagName)?(P(c,t),x(c,t),c):S(t))}if(qe.has(t.tagName)){let c=q(t,a);return c?(m.add(c),P(c,t),x(c,t),c):C(t)}let d=L(t,a);return d?(m.add(d),d.isEqualNode(t)?d:(s=!0,S(t))):S(t)}if(x(r,e.article),f){f.clear();for(let[t,a]of e.savedOpen)f.set(t,a)}for(let t of[...u.keys()])e.savedOpen.has(t)||u.delete(t);return{changed:s}}var je="article[data-page]",Be='section[data-type="tool"][data-id]',Ee='script[type="application/json"][merge="page"]',de=["live-at","live-by"];var Fe=(e,r)=>import("../c-WBGWGOM7.js").then(u=>u.followTocLink(e,r)),He=e=>{import("../c-R27DWQKX.js").then(({recordEtag:r})=>r(e)).catch(()=>{})},pe=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}),Ge=(e,r)=>{let u=e.source.querySelector(Ee),f=r.querySelector(Ee);if(!u)return f?(f.remove(),!0):!1;if(f){let y=de.map(s=>u.getAttribute(s));return f.textContent===u.textContent&&de.every((s,S)=>f.getAttribute(s)===y[S])?!1:(f.textContent!==u.textContent&&(f.textContent=u.textContent),de.forEach((s,S)=>{y[S]===null?f.removeAttribute(s):f.setAttribute(s,y[S])}),!0)}let v=r.querySelector(je);return v?.parentNode?(v.parentNode.insertBefore(r.importNode(u,!0),v),!0):!1};function We({doc:e,article:r,represented:u=null,feed:f=null,documentURL:v,servedEtag:y=null,stream:m=null,release:s=()=>{}}){let S=new Map,q=new Map,L=new Map,P={data:{}},z=[],x=null,C=null,T=0,E=!1,A=m,t=null,a=pe(u),h=null,d=s,c=!1,b=(o,p)=>{let g=e.defaultView??globalThis;e.dispatchEvent(new g.CustomEvent(o,{detail:p}))},k=()=>{for(let o of L.values())try{o.instance?.dispose?.()}catch{}L.clear()},O=()=>x?Promise.resolve(x):(C||(C=import("../c-GRWMD6O5.js").then(({createToolHost:o})=>E?null:(x=o({store:P,mode:"view"}),x)).catch(o=>(C=null,console.warn("clayjs: could not load the reader tool host",o),null))),C),N=o=>{for(let[p,g]of L){let R=o.get(p);if(!R||R.invalid||R.rev!==g.rev||R.signature!==g.signature){try{g.instance?.dispose?.()}catch{}L.delete(p)}}},$=(o,p)=>{let g=[];for(let[Q,M]of o)M.invalid?console.warn("clayjs: could not decode saved tools",M.error):g.push([Q,M]);if(!g.length)return;P.data=p??{};let R=++T;O().then(Q=>{if(!(E||!Q||R!==T))for(let[M,I]of g){if(L.has(M))continue;let n=[...r.querySelectorAll(Be)].find(l=>l.getAttribute("data-id")===M);if(n)try{let l=Q.mount(n,{id:M,artifact:I.artifact,rev:I.rev,seed:I.state??{}});L.set(M,{rev:I.rev,signature:I.signature,instance:l})}catch(l){console.warn(`clayjs: tool ${M} could not mount`,l)}}})},se=(o,p)=>{let g=L.get(o.getAttribute("data-id"));if(!g)return fe(o,p);let R=Le(p);return!R.invalid&&R.rev===g.rev&&R.signature===g.signature},K=o=>{o?.state==="current"&&(a=pe({bytes:a.bytes,etag:o.etag??null,seq:o.seq??null})),o?.state&&o.state!=="applied"&&b("clay:reader-status",o)},F=o=>{Te(o,{article:r,readerOpen:S,savedOpen:q,keepTool:se}),o.rev===null?r.removeAttribute("data-rev"):r.setAttribute("data-rev",o.rev),o.title&&(e.title=o.title),Ge(o,e)},re=o=>{console.warn("clayjs: the reader could not apply a saved file",o),A?.stop(),A=null,k();let p=a.bytes?X(a.bytes,e):null;if(p?.ok)try{F(p)}catch(g){console.warn("clayjs: the reader could not restore the previous file",g)}b("clay:reader-status",{state:"blocked"})};function H(o){if(E||c)return!1;let p=X(o.bytes,e);if(!p.ok||r.querySelector(".page-editor"))return!1;if(me(o.bytes))return A?.stop(),A=null,le(),b("clay:reader-status",{state:"blocked",reason:"upgraded"}),!1;N(p.tools);try{F(p)}catch(g){return re(g),!1}return a=pe(o),a.etag&&He(a.etag),$(p.tools,p.toolState),b("clay:reader-status",{state:"applied",etag:a.etag,seq:a.seq}),!0}let ae=()=>a.bytes===null?!1:(V.stop(),!0),U=o=>{let p=o.target;if(p.tagName!=="DETAILS"||!r.contains(p))return;let g=p.getAttribute("data-id");g&&(p.open===q.get(g)?S.delete(g):S.set(g,p.open))};e.addEventListener("toggle",U,!0),z.push(["toggle",U,!0]);let B=o=>{let p=o.target.closest?.('a[href^="#page-block-"], a[href^="#"]');!p||!r.contains(p)||!p.closest('nav[aria-label="Table of contents"]')||(o.preventDefault(),Fe(r,p.getAttribute("href")))};if(e.addEventListener("click",B),z.push(["click",B]),u){let o=X(u.bytes,e);if(!o.ok)throw new Error(`clayjs: the saved file is not a readable page (${o.reason})`);F(o),$(o.tools,o.toolState)}else{for(let o of r.querySelectorAll("details[data-id]"))q.set(o.getAttribute("data-id"),o.hasAttribute("open"));$(ue(r),ce(e))}let V={ready:null,get represented(){return a},yieldArticle(){return E||c?!1:(T++,k(),c=!0,d(),!0)},reclaimArticle(){if(E||!c)return!1;if(d=ie(r,"reader"),c=!1,a.bytes!==null){let o=X(a.bytes,e);o.ok&&(F(o),$(o.tools,o.toolState))}return!0},prepareHandoff(o={}){return h?Promise.resolve(h):E?Promise.reject(new Error("clayjs: the reader is stopped")):(h=import("../c-I4MQHOEY.js").then(({readerHandoff:p})=>p({stream:A,options:o,apply:H,retire:ae,yieldArticle:V.yieldArticle,reclaimArticle:V.reclaimArticle})),h)},stop(){if(E)return t;E=!0,h=null,T++,A?.stop(),A=null;for(let[o,p,g]of z)e.removeEventListener(o,p,g);z.length=0,k();try{x?.dispose()}catch{}return x=null,c||d(),c=!1,d=()=>!1,t=Object.freeze({...a}),t}};if(V.ready=Promise.resolve(V),f){let o=p=>{let g=p.detail;typeof g?.html=="string"&&(g.source&&g.source!=="disk"&&g.lane!=="saved"||H({bytes:g.html,etag:g.etag??null,seq:g.seq??null}))};f.addEventListener("clay:sync-applied",o),z.push(["clay:sync-applied",o])}else A?A.adopt({onSnapshot:H,onStatus:K}):(A=Ae({documentURL:v,servedEtag:y,represented:a.bytes?a:null,onSnapshot:H,onStatus:K}),A.start());return V}function oe({represented:e=null,documentURL:r,servedEtag:u=null,stream:f=null,feed:v=null,doc:y=document}={}){if(e&&(typeof e.bytes!="string"||e.bytes===""))throw new TypeError("clayjs: the reader needs the full saved bytes to start");if(!v&&!f&&!e&&!r)throw new TypeError("clayjs: the reader needs a file, a stream or a page to follow");let m=y.querySelectorAll(je);if(m.length!==1)throw new Error("clayjs: the reader needs exactly one article[data-page]");let s=m[0];if(s.querySelector(".page-editor"))throw new Error("clayjs: the reader will not start over a mounted editor");if(e){let q=X(e.bytes,y);if(!q.ok)throw new Error("clayjs: the saved file is not a readable page");if(ve(q.source))throw le(),new Error("clayjs: the saved file was published at another version of this document")}let S=ie(s,"reader");try{return We({doc:y,article:s,represented:e,feed:v,documentURL:r,servedEtag:u,stream:f,release:S})}catch(q){throw S(),q}}var J=null,te=null,ge=!1,Oe=!1,ee=null,Z=null,he=null,Pe=()=>document.querySelectorAll("article[data-page]").length===1;function _e(){ee=e=>{if(ge)return;let r=e.detail;r?.state==="applied"?te?.(J):(r?.state==="blocked"||r?.state==="recoverable"||r?.state==="reconnecting")&&te?.(null)},document.addEventListener("clay:reader-status",ee)}function $e(){ee&&document.removeEventListener("clay:reader-status",ee),ee=null,te=null}function Qe(e=null){if(!Pe())return Promise.resolve(null);try{J=e?oe({represented:e}):oe({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(J.represented):new Promise(r=>{te=r})}function Xe(e=null){if(!Pe())return Promise.resolve(null);try{J=oe({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(J)}function Ke({sync:e=!1,represented:r=null}={}){return Z||(ge=!1,Oe=e,_e(),he=e?Xe(r):Qe(r),Z=e?he:Promise.resolve(null),Z)}function ct(e={}){return Ye(),Ke(e)}function ft(e){return J?J.prepareHandoff(e):Promise.reject(new Error("clayjs: the reader has not started"))}function Ye(){ge=!0,Oe||te?.(null),$e(),J?.stop(),J=null,he=null,Z=null}export{he as acquired,ft as prepareHandoff,Z as ready,ct as restart,Ke as start,Ye as stop};
|
|
1
|
+
import{a as be,b as me,c as ve,d as le,f as Se}from"../c-DHXPDLW6.js";import{a as ie}from"../c-L4WQSC27.js";import"../c-XGH4GS2T.js";import"../c-3O7OBDCM.js";import{a as ye}from"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var we="saved",Re=2;function Ie(){return Math.random().toString(36).slice(2,11)+Date.now().toString(36)}function Ce(){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 Me(e){return typeof e!="string"||e===""?null:new DOMParser().parseFromString(e,"text/html").documentElement?.getAttribute("documentetag")||null}var _=e=>typeof e=="string"&&e?e:null;function De(e){let r=window.location.origin;if(typeof r!="string"||r===""||r==="null")return null;let u=new URL(e||window.location.href,r);return u.protocol==="http:"||u.protocol==="https:"?u.href:null}var Y=e=>Number.isSafeInteger(e)?e:null;function ze(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:_(e.etag),seq:Y(e.seq)})}function Ae({documentURL:e,servedEtag:r=null,represented:u=null,onSnapshot:f,onStatus:v}={}){if(typeof f!="function")throw new TypeError("createSavedStream: onSnapshot must be a function");let y=De(e),m=!!_(r),s=ze(u);if(y===null){let n={ready:null,get represented(){return s},adopt(){return n},start(){return n.ready=Promise.resolve(n),n},stop(){}};return n}let S=!0,q=s.seq??0,L=0,P=0,z=f,x=v,C=0,T=!1,E=null,A=null,t=null,a=!1,h=null,d=null,c=null,b=null,k=[],O=n=>!T&&n===C;function N(n,l={}){T||typeof x!="function"||x({state:n,...l})}function $(){k.length=0,b&&(!d||d.active)&&b.clear(),d&&(d.detach(),d=null),h=null,b=null,c=null}function se(n,l){if(b){b.update(n);return}k.push(n),!c&&(c=Promise.all([import("../c-FTWGYI5E.js"),import("../c-ZJLU56DV.js")]).then(([i,w])=>{if(!O(l))return null;h=i.presence,b=w.presence,d=h.attachTransport({send:()=>Promise.resolve(!1)});for(let G of k.splice(0))b.update(G);return b}).catch(()=>(c=null,null)))}function K(){if($(),!E)return;let n=E;E=null,n.onopen=null,n.onerror=null,n.onmessage=null,n.close()}function F(){if(!A)return;let n=A;A=null,n.controller.abort()}function re(n){if(T)return!1;let l={bytes:n.bytes,etag:_(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===s.bytes&&l.etag===s.etag&&l.seq===s.seq)return!0;let i=!1;try{i=z(Object.freeze(l))===!0}catch{i=!1}return i?(s=Object.freeze(l),N("applied",{seq:s.seq,etag:s.etag}),!0):(N("recoverable",{reason:"refused",seq:l.seq,etag:l.etag}),!1)}function H(n,l){if(l==="startup")return null;let i=Math.max(n.seq??0,q);return i>0?i:null}function ae(n,l){t=n,a=!0,N("recoverable",{reason:l,seq:n.seq??null})}function U(n){T||(t={kind:n.kind,seq:Y(n.seq)},a=!1,B())}function B(){if(T||A||a||!t)return;let n=C,l=t;t=null;let i=new AbortController;A={controller:i};let w=L,G=q,D=j=>{if(A&&A.controller===i&&(A=null),!(!O(n)||i.signal.aborted)){if(j==null){ae(l,"repair-failed");return}if(L!==w||q!==G){if(P+=1,P<=Re){t=t??{kind:l.kind,seq:H(l,l.kind)},B();return}V(j.text,{kind:l.kind,seq:H(l,l.kind)},j.etag),B();return}V(j.text,l,j.etag),B()}};fetch(y,{cache:"no-store",signal:i.signal}).then(j=>j.ok?j.text().then(W=>({text:W,etag:_(j.headers?.get?.("etag"))})):null).then(D).catch(()=>D(null))}function V(n,l,i){let G=Me(n)??(/^W\//.test(i??"")?null:_(i))??(n===s.bytes?s.etag:null),D=l.kind==="startup"?s.seq:l.seq??s.seq;re({bytes:n,etag:G,seq:D})&&(S=!1,P=0,a=!1,N("current",{seq:s.seq,etag:s.etag}))}function o(n,l){let i={bytes:s.bytes,etag:n??s.etag,seq:l??s.seq};i.etag===s.etag&&i.seq===s.seq||(s=Object.freeze(i),N("current",{seq:s.seq,etag:s.etag}))}function p(n,l,i){let w=_(l);if(!(i!==null&&s.seq!==null&&i<=s.seq)){if(!S&&w!==null&&s.etag!==null){if(w!==s.etag){U({kind:"unmatched",seq:i});return}S=!0}if(n===s.bytes){o(w,i);return}re({bytes:n,etag:w,seq:i})&&(S=!0)}}function g(n,l){let i=n.data;if(i&&i.kind==="external-change"){typeof i.html=="string"?p(i.html,i.etag,l):U({kind:"notice",seq:l});return}typeof n.msg=="string"&&n.msg.endsWith("changed on disk outside this tab")&&U({kind:"notice",seq:l})}function R(n,l){if(!O(l))return;L++;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>q&&(q=w),i.type==="notification"){g(i,w);return}if(i.error){N("recoverable",{reason:"server-error",seq:w});return}if(typeof i.html!="string"){_(i.etag)?U({kind:"notice",seq:w}):N("recoverable",{reason:"bad-frame",seq:w});return}p(i.html,i.etag,w)}function Q(n,l){if(!O(l))return;L++;let i;try{i=JSON.parse(n)}catch{return}if(!i||typeof i!="object")return;let w=Y(i.seq);if(w!==null&&w>q&&(q=w),i.resync===!0){U({kind:"resync",seq:w});return}i.startup===!0&&U({kind:"startup",seq:null})}function M(n){if(O(n)){if(N("open",{seq:s.seq,etag:s.etag}),a){a=!1,B();return}s.bytes===null&&!m&&U({kind:"startup",seq:null})}}let I={ready:null,get represented(){return s},adopt({onSnapshot:n,onStatus:l}={}){return typeof n=="function"&&(z=n),typeof l=="function"&&(x=l),I},start(){T=!1;let n=++C;return K(),F(),t=null,a=!1,L=0,P=0,q=s.seq??0,I.ready=Se().then(l=>{if(!O(n))return I;let i=Ce(),w=Ie(),G=l.profile.streamPath(y,we,i,w),D=new be(new URL(G,window.location.origin).href,{shared:l.sharedSync,sharedData:l.sharedData,documentURL:y,lane:we,clientId:w,startupCheck:m});return E=D,D.onopen=()=>M(n),D.onerror=()=>{O(n)&&N("reconnecting")},D.onmessage=j=>R(j.data,n),D.addEventListener("cursor",j=>Q(j.data,n)),D.addEventListener("presence",j=>{if(!O(n))return;let W;try{W=JSON.parse(j.data)}catch{return}W&&typeof W=="object"&&!Array.isArray(W)&&se(W,n)}),I}),I},stop(){T||(T=!0,C++,K(),F(),t=null,a=!1)}};return I}var Ue="article[data-page]",Ve='section[data-type="tool"][data-id]',Ne=new Set(["UL","OL","LI","DETAILS"]),qe=new Set(["UL","OL"]),ke=e=>e.tagName==="SECTION"&&e.getAttribute("data-type")==="tool"&&e.hasAttribute("data-id");function Le(e){return ne(e)}function ne(e){let r=e.querySelector(':scope > script[type="application/json"][data-tool]'),u={};try{u=r?JSON.parse(r.textContent):{}}catch(f){return{rev:null,artifact:null,state:{},signature:null,invalid:!0,error:f}}return{rev:u.rev??null,artifact:u.artifact??null,state:u.state??{},signature:JSON.stringify(u.artifact??null),invalid:!1}}function ue(e){let r=new Map,u=new Set;for(let f of e.querySelectorAll(Ve)){let v=f.getAttribute("data-id");if(!u.has(v)){if(r.has(v)){r.delete(v),u.add(v);continue}r.set(v,ne(f))}}return r}function ce(e){let r=e.querySelector('script[type="application/json"][merge="page.tools"]');if(!r)return{};try{return JSON.parse(r.textContent)}catch{return{}}}function Je(e){let r=new Map,u=new Set,f=v=>{for(let y of v.children){let m=y.getAttribute("data-id");if(m){if(u.has(m))continue;if(r.has(m)){r.delete(m),u.add(m);continue}r.set(m,y)}Ne.has(y.tagName)&&f(y)}};return f(e),r}function xe(e){let r=new Set,u=f=>{for(let v of f.children){let y=v.getAttribute("data-id");y&&r.add(y),Ne.has(v.tagName)&&u(v)}};return u(e),r}function X(e,r=document){if(typeof e!="string"||e==="")return{ok:!1,reason:"bytes"};let u=(r.defaultView??globalThis).DOMParser;if(typeof u!="function")return{ok:!1,reason:"parser"};let f=new u().parseFromString(e,"text/html"),v=[...f.querySelectorAll(Ue)];if(v.length!==1)return{ok:!1,reason:"article"};let y=v[0],m=new Map;for(let S of y.querySelectorAll("details[data-id]"))m.set(S.getAttribute("data-id"),S.hasAttribute("open"));let s=ue(y);return{ok:!0,article:y,source:f,rev:y.getAttribute("data-rev"),title:f.title||null,savedOpen:m,tools:s,toolState:s.size?ce(f):{}}}var fe=(e,r)=>{let u=ne(e),f=ne(r);return!u.invalid&&!f.invalid&&u.rev===f.rev&&u.signature===f.signature};function Te(e,{article:r,readerOpen:u=new Map,savedOpen:f=null,keepTool:v=fe}={}){if(!e?.ok||!r)return{changed:!1};for(let t of e.article.querySelectorAll("details[data-id]")){let a=t.getAttribute("data-id");u.has(a)&&t.hasAttribute("open")!==u.get(a)&&t.toggleAttribute("open",u.get(a))}let y=Je(r),m=new Set,s=!1,S=t=>(s=!0,t.cloneNode(!0)),q=(t,a)=>{let h=xe(t);for(let d of a.children){if(m.has(d)||d.hasAttribute("data-id")||d.tagName!==t.tagName)continue;if(!h.size)return d;let c=xe(d);for(let b of h)if(c.has(b))return d}return null},L=(t,a)=>{for(let h of a.children)if(!(m.has(h)||h.hasAttribute("data-id"))&&h.tagName===t.tagName)return h;return null},P=(t,a,h=null)=>{for(let{name:d,value:c}of[...a.attributes])d===h||t.getAttribute(d)===c||(t.setAttribute(d,c),s=!0);for(let{name:d}of[...t.attributes])d===h||a.hasAttribute(d)||(t.removeAttribute(d),s=!0)},z=(t,a,h)=>{let d=b=>b&&b.nodeType===t.nodeType&&b.nodeValue===t.nodeValue&&!m.has(b),c=d(a.childNodes[h])?a.childNodes[h]:[...a.childNodes].find(d);return c?(m.add(c),c):t.cloneNode(!0)},x=(t,a)=>{let h=[],d=[...a.childNodes];for(let k=0;k<d.length;k++){let O=d[k];if(O.nodeType!==1){h.push(z(O,t,k));continue}let N=A(O,t);m.add(N),h.push(N)}let c=new Set(h),b=t.firstChild;for(let k of h){for(;b&&!c.has(b);)b=b.nextSibling;if(b===k){b=b.nextSibling;continue}t.insertBefore(k,b),s=!0}for(let k of[...t.childNodes])c.has(k)||(k.remove(),s=!0)},C=t=>{s=!0;let a=t.cloneNode(!1);return x(a,t),a},T=(t,a)=>{s=!0;let h=t.getAttribute("data-id"),d=u.has(h)?u.get(h):a.hasAttribute("open");P(t,a,"open"),t.hasAttribute("open")!==d&&t.toggleAttribute("open",d),x(t,a)},E=(t,a)=>{s=!0,P(t,a),x(t,a)};function A(t,a){let h=t.getAttribute("data-id");if(h){let c=y.get(h);return!c||m.has(c)||c===a||c.contains(a)?S(t):(m.add(c),ke(c)&&ke(t)?v(c,t)?c:S(t):c.tagName!==t.tagName?S(t):c.isEqualNode(t)?c:t.tagName==="DETAILS"?(T(c,t),c):t.tagName==="LI"?(E(c,t),c):qe.has(t.tagName)?(P(c,t),x(c,t),c):S(t))}if(qe.has(t.tagName)){let c=q(t,a);return c?(m.add(c),P(c,t),x(c,t),c):C(t)}let d=L(t,a);return d?(m.add(d),d.isEqualNode(t)?d:(s=!0,S(t))):S(t)}if(x(r,e.article),f){f.clear();for(let[t,a]of e.savedOpen)f.set(t,a)}for(let t of[...u.keys()])e.savedOpen.has(t)||u.delete(t);return{changed:s}}var je="article[data-page]",Be='section[data-type="tool"][data-id]',Ee='script[type="application/json"][merge="page"]',de=["live-at","live-by"];var Fe=(e,r)=>import("../c-WBGWGOM7.js").then(u=>u.followTocLink(e,r)),He=e=>{import("../c-R27DWQKX.js").then(({recordEtag:r})=>r(e)).catch(()=>{})},pe=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}),Ge=(e,r)=>{let u=e.source.querySelector(Ee),f=r.querySelector(Ee);if(!u)return f?(f.remove(),!0):!1;if(f){let y=de.map(s=>u.getAttribute(s));return f.textContent===u.textContent&&de.every((s,S)=>f.getAttribute(s)===y[S])?!1:(f.textContent!==u.textContent&&(f.textContent=u.textContent),de.forEach((s,S)=>{y[S]===null?f.removeAttribute(s):f.setAttribute(s,y[S])}),!0)}let v=r.querySelector(je);return v?.parentNode?(v.parentNode.insertBefore(r.importNode(u,!0),v),!0):!1};function We({doc:e,article:r,represented:u=null,feed:f=null,documentURL:v,servedEtag:y=null,stream:m=null,release:s=()=>{}}){let S=new Map,q=new Map,L=new Map,P={data:{}},z=[],x=null,C=null,T=0,E=!1,A=m,t=null,a=pe(u),h=null,d=s,c=!1,b=(o,p)=>{let g=e.defaultView??globalThis;e.dispatchEvent(new g.CustomEvent(o,{detail:p}))},k=()=>{for(let o of L.values())try{o.instance?.dispose?.()}catch{}L.clear()},O=()=>x?Promise.resolve(x):(C||(C=import("../c-GRWMD6O5.js").then(({createToolHost:o})=>E?null:(x=o({store:P,mode:"view"}),x)).catch(o=>(C=null,console.warn("clayjs: could not load the reader tool host",o),null))),C),N=o=>{for(let[p,g]of L){let R=o.get(p);if(!R||R.invalid||R.rev!==g.rev||R.signature!==g.signature){try{g.instance?.dispose?.()}catch{}L.delete(p)}}},$=(o,p)=>{let g=[];for(let[Q,M]of o)M.invalid?console.warn("clayjs: could not decode saved tools",M.error):g.push([Q,M]);if(!g.length)return;P.data=p??{};let R=++T;O().then(Q=>{if(!(E||!Q||R!==T))for(let[M,I]of g){if(L.has(M))continue;let n=[...r.querySelectorAll(Be)].find(l=>l.getAttribute("data-id")===M);if(n)try{let l=Q.mount(n,{id:M,artifact:I.artifact,rev:I.rev,seed:I.state??{}});L.set(M,{rev:I.rev,signature:I.signature,instance:l})}catch(l){console.warn(`clayjs: tool ${M} could not mount`,l)}}})},se=(o,p)=>{let g=L.get(o.getAttribute("data-id"));if(!g)return fe(o,p);let R=Le(p);return!R.invalid&&R.rev===g.rev&&R.signature===g.signature},K=o=>{o?.state==="current"&&(a=pe({bytes:a.bytes,etag:o.etag??null,seq:o.seq??null})),o?.state&&o.state!=="applied"&&b("clay:reader-status",o)},F=o=>{Te(o,{article:r,readerOpen:S,savedOpen:q,keepTool:se}),o.rev===null?r.removeAttribute("data-rev"):r.setAttribute("data-rev",o.rev),o.title&&(e.title=o.title),Ge(o,e)},re=o=>{console.warn("clayjs: the reader could not apply a saved file",o),A?.stop(),A=null,k();let p=a.bytes?X(a.bytes,e):null;if(p?.ok)try{F(p)}catch(g){console.warn("clayjs: the reader could not restore the previous file",g)}b("clay:reader-status",{state:"blocked"})};function H(o){if(E||c)return!1;let p=X(o.bytes,e);if(!p.ok||r.querySelector(".page-editor"))return!1;if(me(o.bytes))return A?.stop(),A=null,le(),b("clay:reader-status",{state:"blocked",reason:"upgraded"}),!1;N(p.tools);try{F(p)}catch(g){return re(g),!1}return a=pe(o),a.etag&&He(a.etag),$(p.tools,p.toolState),b("clay:reader-status",{state:"applied",etag:a.etag,seq:a.seq}),!0}let ae=()=>a.bytes===null?!1:(V.stop(),!0),U=o=>{let p=o.target;if(p.tagName!=="DETAILS"||!r.contains(p))return;let g=p.getAttribute("data-id");g&&(p.open===q.get(g)?S.delete(g):S.set(g,p.open))};e.addEventListener("toggle",U,!0),z.push(["toggle",U,!0]);let B=o=>{let p=o.target.closest?.('a[href^="#page-block-"], a[href^="#"]');!p||!r.contains(p)||!p.closest('nav[aria-label="Table of contents"]')||(o.preventDefault(),Fe(r,p.getAttribute("href")))};if(e.addEventListener("click",B),z.push(["click",B]),u){let o=X(u.bytes,e);if(!o.ok)throw new Error(`clayjs: the saved file is not a readable page (${o.reason})`);F(o),$(o.tools,o.toolState)}else{for(let o of r.querySelectorAll("details[data-id]"))q.set(o.getAttribute("data-id"),o.hasAttribute("open"));$(ue(r),ce(e))}let V={ready:null,get represented(){return a},yieldArticle(){return E||c?!1:(T++,k(),c=!0,d(),!0)},reclaimArticle(){if(E||!c)return!1;if(d=ie(r,"reader"),c=!1,a.bytes!==null){let o=X(a.bytes,e);o.ok&&(F(o),$(o.tools,o.toolState))}return!0},prepareHandoff(o={}){return h?Promise.resolve(h):E?Promise.reject(new Error("clayjs: the reader is stopped")):(h=import("../c-Y33LUUIQ.js").then(({readerHandoff:p})=>p({stream:A,options:o,apply:H,retire:ae,yieldArticle:V.yieldArticle,reclaimArticle:V.reclaimArticle})),h)},stop(){if(E)return t;E=!0,h=null,T++,A?.stop(),A=null;for(let[o,p,g]of z)e.removeEventListener(o,p,g);z.length=0,k();try{x?.dispose()}catch{}return x=null,c||d(),c=!1,d=()=>!1,t=Object.freeze({...a}),t}};if(V.ready=Promise.resolve(V),f){let o=p=>{let g=p.detail;typeof g?.html=="string"&&(g.source&&g.source!=="disk"&&g.lane!=="saved"||H({bytes:g.html,etag:g.etag??null,seq:g.seq??null}))};f.addEventListener("clay:sync-applied",o),z.push(["clay:sync-applied",o])}else A?A.adopt({onSnapshot:H,onStatus:K}):(A=Ae({documentURL:v,servedEtag:y,represented:a.bytes?a:null,onSnapshot:H,onStatus:K}),A.start());return V}function oe({represented:e=null,documentURL:r,servedEtag:u=null,stream:f=null,feed:v=null,doc:y=document}={}){if(e&&(typeof e.bytes!="string"||e.bytes===""))throw new TypeError("clayjs: the reader needs the full saved bytes to start");if(!v&&!f&&!e&&!r)throw new TypeError("clayjs: the reader needs a file, a stream or a page to follow");let m=y.querySelectorAll(je);if(m.length!==1)throw new Error("clayjs: the reader needs exactly one article[data-page]");let s=m[0];if(s.querySelector(".page-editor"))throw new Error("clayjs: the reader will not start over a mounted editor");if(e){let q=X(e.bytes,y);if(!q.ok)throw new Error("clayjs: the saved file is not a readable page");if(ve(q.source))throw le(),new Error("clayjs: the saved file was published at another version of this document")}let S=ie(s,"reader");try{return We({doc:y,article:s,represented:e,feed:v,documentURL:r,servedEtag:u,stream:f,release:S})}catch(q){throw S(),q}}var J=null,te=null,ge=!1,Oe=!1,ee=null,Z=null,he=null,Pe=()=>document.querySelectorAll("article[data-page]").length===1;function _e(){ee=e=>{if(ge)return;let r=e.detail;r?.state==="applied"?te?.(J):(r?.state==="blocked"||r?.state==="recoverable"||r?.state==="reconnecting")&&te?.(null)},document.addEventListener("clay:reader-status",ee)}function $e(){ee&&document.removeEventListener("clay:reader-status",ee),ee=null,te=null}function Qe(e=null){if(!Pe())return Promise.resolve(null);try{J=e?oe({represented:e}):oe({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(J.represented):new Promise(r=>{te=r})}function Xe(e=null){if(!Pe())return Promise.resolve(null);try{J=oe({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(J)}function Ke({sync:e=!1,represented:r=null}={}){return Z||(ge=!1,Oe=e,_e(),he=e?Xe(r):Qe(r),Z=e?he:Promise.resolve(null),Z)}function ct(e={}){return Ye(),Ke(e)}function ft(e){return J?J.prepareHandoff(e):Promise.reject(new Error("clayjs: the reader has not started"))}function Ye(){ge=!0,Oe||te?.(null),$e(),J?.stop(),J=null,he=null,Z=null}export{he as acquired,ft as prepareHandoff,Z as ready,ct as restart,Ke as start,Ye as stop};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{a as x,d as I,e as g,f as U,g as M}from"../c-7DJDKPGL.js";import{a as $}from"../c-
|
|
1
|
+
import{a as x,d as I,e as g,f as U,g as M}from"../c-7DJDKPGL.js";import{a as $}from"../c-LA2BW7UY.js";import"../c-IJUK2GPW.js";import{f as F,k as R}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{k as N}from"../c-EGTIAL6P.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import{e as D}from"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var L=D("history"),W="[cms-template]",O=["draggable","style"],X=["pointerup","pointercancel","dragend","drop"],y=new Set,h=null,E=null,p=null;function T(e,t,n,r,i){let s={target:t,type:n,handler:r,options:i};return t.addEventListener(n,r,i),e.listeners.push(s),s}function H(e,t){t.target.removeEventListener(t.type,t.handler,t.options);let n=e.listeners.indexOf(t);n!==-1&&e.listeners.splice(n,1)}function _(e,t){let n=setTimeout(()=>{e.timers.delete(n),t()},0);return e.timers.add(n),n}function Y(e,t){return{Sortable:e,root:t,admitted:!1,instances:new Set,listeners:[],timers:new Set,presses:new Set,stop:null}}var Z={admitted:!0,instances:new Set,listeners:[],timers:new Set,presses:new Set};function C(e){return[e,...e.querySelectorAll("*")].filter(t=>!t.closest(L)).map(t=>[t,O.map(n=>t.getAttribute(n))])}function P(e){for(let[t,n]of e)O.forEach((r,i)=>{let s=n[i],a=t.getAttribute(r);if(a!==s)if(s===null){if(r==="style"&&a)return;t.removeAttribute(r)}else t.setAttribute(r,s)})}function B(e){return/^(UL|OL)$/.test(e.tagName)?"li":"*"}function ee(e){return`> ${B(e)}:not(${L})`}function V(e,t){return!e||!t||t.nodeType!==1||!t.matches(B(e))?!1:!t.closest(L)&&!t.closest(W)}function q(e,t){return!e||!t||t.parentElement!==e?!1:V(e,t)}function te(e,t){let n=t.nextElementSibling;for(;n&&!q(e,n);)n=n.nextElementSibling;return n}function j(e,t){return Array.prototype.indexOf.call(e.children,t)}function G(e,t){if(t)try{new Function(`return (async function(evt) { ${t} })`)().call(e.from,e)}catch(n){console.error("Error in onsorted execution:",n)}e.from.dispatchEvent(new CustomEvent("clay:sorted",{bubbles:!0,detail:{item:e.item,from:e.from,to:e.to,oldIndex:e.oldIndex,newIndex:e.newIndex}})),e.from.dispatchEvent(new Event("input",{bubbles:!0}))}function z(e,t,n=Z){let r={};if(r.draggable=ee(e),t.get(e))return;let i=e.getAttribute("sortable");i&&(r.group=i);let s=e.querySelectorAll("[sortable-handle]"),a=e.querySelectorAll("[sortable]");Array.from(s).some(o=>!Array.from(a).some(l=>l.contains(o)))&&(r.handle="[sortable-handle]");let c=e.getAttribute("onsorting");c&&(r.onMove=function(o){if(n.admitted)try{new Function(`return (async function(evt) { ${c} })`)().call(e,o)}catch(l){console.error("Error in onsorting execution:",l)}});let f=e.getAttribute("onsorted");r.onEnd=function(o){if(!n.admitted)return;let l={item:o.item,from:o.from,to:o.to,oldIndex:o.oldIndex,newIndex:o.newIndex},b=u;u=null,m&&(P(m),m=null),b&&(M(b,l),g(b)),G(l,f)};let d=null,u=null,m=null,w=!1,A=!1,v=[],K=()=>{let o=u;u=null,m=null,g(o)},k=()=>{let o=d;d=null,o&&(n.presses.delete(o),y.delete(o),m=o),v.forEach(l=>H(n,l)),v=[],o&&_(n,()=>P(o))},Q=o=>{A&&o?.type==="pointercancel"||(A=!1,w?I(u):(g(u),u=null),w=!1,k(),_(n,K))};T(n,e,"pointerdown",o=>{let l=o.target instanceof Element?o.target:null;for(;l&&l.parentElement!==e;)l=l.parentElement;!l||d||(d=C(l),u=x(l),w=!1,A=!1,n.presses.add(d),y.add(d),v=X.map(b=>T(n,document,b,Q,!0)),v.push(T(n,document,"dragstart",()=>{A=!0},!0)))},!0),r.onUnchoose=k,r.onStart=()=>{w=!0},t.create(e,r),n.instances.add(e)}function ne(e,t,n=null){let r=f=>({ok:!1,code:f});if(!F||p&&!p.admitted)return r("not-editable");let i=document;if(!e||e.nodeType!==1||!e.isConnected||e.ownerDocument!==i)return r("detached");let s=e.parentElement;if(!s||!s.isConnected||!t||t.nodeType!==1||!t.isConnected||t.ownerDocument!==i)return r("detached");if(!s.hasAttribute("sortable")||!q(s,e)||!t.hasAttribute("sortable")||!V(t,e)||e===t||e.contains(t))return r("item");if(s!==t){let f=s.getAttribute("sortable");if(!f||f!==t.getAttribute("sortable"))return r("group")}if(n===e)return{ok:!0,moved:!1};if(n!==null&&!q(t,n))return r("anchor");if(s===t&&te(s,e)===n)return{ok:!0,moved:!1};let a=j(s,e),S=x(e);I(S);let c;try{t.insertBefore(e,n),c={item:e,from:s,to:t,oldIndex:a,newIndex:j(t,e)},M(S,c)}finally{g(S)}return G(c,s.getAttribute("onsorted")),{ok:!0,moved:!0,...c}}function re(){return h||(h=import("../vendor/Sortable.vendor-A755ITLN.js").then(e=>window.Sortable||e.default),h.catch(()=>{h=null})),h}function se(){return E||(N((e,{original:t})=>{for(let r of e.querySelectorAll("[sortable] .sortable-chosen, [sortable] .sortable-ghost, [sortable] .sortable-drag"))r.classList.remove("sortable-chosen","sortable-ghost","sortable-drag"),r.classList.length||r.removeAttribute("class");if(!y.size)return;let n=new Map;for(let r of y)for(let[i,s]of r)n.set(i,s);for(let r of e.querySelectorAll("[sortable] *")){let i=n.get(t(r));i&&O.forEach((s,a)=>{i[a]===null?r.removeAttribute(s):r.setAttribute(s,i[a])})}}),E=!0,E)}function oe(e){return{enable(){if(!e.admitted){e.admitted=!0;for(let t of e.root.querySelectorAll("[sortable]"))z(t,e.Sortable,e);e.stop=$.onAddElement({selectorFilter:"[sortable]",debounce:200,require:"observed",pausable:!1},t=>{e.admitted&&t.forEach(({element:n})=>{z(n,e.Sortable,e)})})}},quiesce(){e.admitted=!1},resume(){e.admitted=!0},dispose(){e.admitted=!1,e.stop&&(e.stop(),e.stop=null);for(let t of[...e.listeners])H(e,t);for(let t of e.timers)clearTimeout(t);e.timers.clear();for(let t of e.presses)y.delete(t);e.presses.clear(),U();for(let t of e.instances)e.Sortable?.get?.(t)?.destroy?.();e.instances.clear(),p===e&&(p=null)}}}var le=e=>e?e.signal?.aborted?!0:typeof e.isCurrent=="function"&&!e.isCurrent():!1;function ie(e=document){return{id:"clay:sortable",order:300,async prepare(t={}){if(t.initial===!0)return ae();let n=await re();if(le(t))throw Object.assign(new Error("clay:sortable prepared for a stale generation"),{code:"stale-document"});return se(),oe(p||(p=Y(n,e)))}}}async function ae(){let e=await ue;return{enable(){},quiesce:()=>e?.quiesce(),resume:()=>e?.resume(),dispose:()=>e?.dispose()}}async function J(){if(!R())return null;let e=await ie().prepare();return e.enable(),e}var ue=J(),be=Object.freeze({move:ne});var ge=J;export{ge as default,J as init,z as makeSortable,ie as modeParticipant,ne as move,ue as ready,be as sortable,ie as sortableParticipant};
|