@panphora/clayjs 1.25.1 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (105) hide show
  1. package/dist/all.js +1 -1
  2. package/dist/clay-dom.js +1 -1
  3. package/dist/clay-events.js +1 -1
  4. package/dist/clay-internals.js +1 -1
  5. package/dist/clay-options.js +1 -1
  6. package/dist/clay-router.js +1 -1
  7. package/dist/clay-ui.js +1 -1
  8. package/dist/clay-utils.js +1 -1
  9. package/dist/clay.js +1 -1
  10. package/dist/clay.standalone.js +1141 -345
  11. package/dist/m/c-2EPHRF47.js +1 -0
  12. package/dist/m/{c-2GB34XL4.js → c-2SUFMUZX.js} +2 -2
  13. package/dist/m/{c-BHLYQGTA.js → c-3S3647J6.js} +1 -1
  14. package/dist/m/{c-QL4NYM2L.js → c-3S5TNRZA.js} +1 -1
  15. package/dist/m/{c-3Y234AUB.js → c-3XGLJAS7.js} +2 -2
  16. package/dist/m/{c-O4YIDULY.js → c-42WBOKFM.js} +1 -1
  17. package/dist/m/{c-42RLKGEY.js → c-4TP3UXBT.js} +1 -1
  18. package/dist/m/{c-ASGHHLFX.js → c-5ELELG2F.js} +1 -1
  19. package/dist/m/{c-T5IWJOMW.js → c-5ZYLTN3Q.js} +1 -1
  20. package/dist/m/{c-DDCYVLGG.js → c-67TBU56I.js} +1 -1
  21. package/dist/m/{c-WNOLMHI2.js → c-6BGJAJ67.js} +1 -1
  22. package/dist/m/{c-XS7G6U3Z.js → c-ABOBD7F3.js} +1 -1
  23. package/dist/m/{c-5IIEOPIV.js → c-ARO6CPMA.js} +1 -1
  24. package/dist/m/{c-XUZMRQ7O.js → c-BCS3AZQZ.js} +1 -1
  25. package/dist/m/c-BOS7GONO.js +1 -0
  26. package/dist/m/{c-NICICT4P.js → c-DEYHCYJB.js} +1 -1
  27. package/dist/m/{c-T7LOTEWO.js → c-DZT6W2NG.js} +1 -1
  28. package/dist/m/c-EHJWIGWN.js +1 -0
  29. package/dist/m/{c-V2V5FKXX.js → c-EIUKME3W.js} +1 -1
  30. package/dist/m/{c-ASMLERFA.js → c-EXZOA6XY.js} +1 -1
  31. package/dist/m/{c-STAPQ2X6.js → c-EYFMAR3M.js} +1 -1
  32. package/dist/m/{c-DVMDYRAE.js → c-FUN6AKFE.js} +1 -1
  33. package/dist/m/{c-XMIDHEKF.js → c-GY36NO7C.js} +1 -1
  34. package/dist/m/{c-TWB5ZQU4.js → c-H47C6PJZ.js} +1 -1
  35. package/dist/m/c-KD2ME5UN.js +2 -0
  36. package/dist/m/{c-GO635CRU.js → c-LAKBBJOU.js} +2 -2
  37. package/dist/m/{c-GNFDX6SU.js → c-LETPPG2F.js} +1 -1
  38. package/dist/m/{c-LS7IVQVW.js → c-MMV5JULA.js} +1 -1
  39. package/dist/m/{c-NEQRFC4O.js → c-MVVEIJUU.js} +1 -1
  40. package/dist/m/{c-XCOQNISP.js → c-N362HNGO.js} +1 -1
  41. package/dist/m/{c-7K4SCQB7.js → c-ND3W7D5U.js} +1 -1
  42. package/dist/m/{c-4NAYDOWH.js → c-NNHNXD6M.js} +1 -1
  43. package/dist/m/{c-DAUQ6JZ3.js → c-NYJ577NL.js} +1 -1
  44. package/dist/m/{c-3AAQJAKJ.js → c-PWILUN4T.js} +1 -1
  45. package/dist/m/{c-7Z2625LX.js → c-QA3Q3MDI.js} +1 -1
  46. package/dist/m/{c-2A2ATCIH.js → c-QKOKMQXA.js} +1 -1
  47. package/dist/m/{c-TGIMBAWE.js → c-RBWVF4N5.js} +1 -1
  48. package/dist/m/{c-A5IYL7JI.js → c-SPOEDIMP.js} +1 -1
  49. package/dist/m/{c-ZJ7726FO.js → c-SRW5OBCF.js} +1 -1
  50. package/dist/m/{c-A3OKSYRI.js → c-SYOA4T7V.js} +1 -1
  51. package/dist/m/{c-MHTO3QAD.js → c-TJ5PFOJ2.js} +1 -1
  52. package/dist/m/{c-NW4ZFKCY.js → c-TKV273YU.js} +1 -1
  53. package/dist/m/{c-D4N4UJCQ.js → c-UEKJWXCB.js} +2 -2
  54. package/dist/m/{c-44WITKWQ.js → c-V4DBV5ZV.js} +1 -1
  55. package/dist/m/c-WHMZCRQD.js +6 -0
  56. package/dist/m/{c-WMRJKQ2V.js → c-WHQUZM2V.js} +1 -1
  57. package/dist/m/{c-C27EVUQ6.js → c-XHD7XJTE.js} +1 -1
  58. package/dist/m/{c-PP3CUF3U.js → c-XONFK3WC.js} +1 -1
  59. package/dist/m/c-YYIN4NAF.js +30 -0
  60. package/dist/m/c-ZFAPQQIB.js +1 -0
  61. package/dist/m/core/{conflict-notice-Y2NTMDGJ.js → conflict-notice-UNDOD4BL.js} +1 -1
  62. package/dist/m/core/site-edits-C22O53GS.js +1 -0
  63. package/dist/m/loader-DCKCZKY6.js +1 -0
  64. package/dist/m/{manifest-A27A4278.js → manifest-7954CBE3.js} +1 -1
  65. package/dist/m/{manifest-edit-E8A61EB4.js → manifest-edit-93AA79D7.js} +1 -1
  66. package/dist/m/manifest.json +442 -441
  67. package/dist/m/page/{editor-HS2CAV3W.js → editor-UF3CIA6V.js} +2 -2
  68. package/dist/m/plugins/{cms-4KET6RZT.js → cms-KG6TCTR3.js} +1 -1
  69. package/dist/m/plugins/{live-CO4VJS46.js → live-DF5YS5AH.js} +1 -1
  70. package/dist/m/plugins/page-GZSU77JS.js +2 -0
  71. package/dist/m/plugins/{page-view-6KNTXABH.js → page-view-7MM3FEAR.js} +1 -1
  72. package/dist/m/plugins/{quickcrop-VNRXGRPC.js → quickcrop-UHURKA2F.js} +2 -2
  73. package/dist/m/plugins/richclay-MXH2GFAZ.js +549 -0
  74. package/dist/m/plugins/undo-KLHAGV75.js +1 -0
  75. package/dist/m/sync/{live-sync-DX4K5GDB.js → live-sync-RZQSDMZW.js} +1 -1
  76. package/dist/offline-manifest.json +360 -360
  77. package/package.json +1 -1
  78. package/src/core/site-edits.js +1 -1
  79. package/src/loader-logic.js +0 -13
  80. package/src/page/boot-pack.js +1 -0
  81. package/src/page/history-intent.js +111 -4
  82. package/src/page/ybind/bridge.js +14 -7
  83. package/src/page/ybind/moves.js +437 -3
  84. package/src/page/ybind/origins.js +1 -1
  85. package/src/page/ybind/recovery.js +1 -1
  86. package/src/plugins/page.js +48 -4
  87. package/src/plugins/richclay.js +136 -0
  88. package/src/plugins/undo.js +169 -7
  89. package/src/recovery/undo.js +14 -7
  90. package/src/sync/live-sync.js +24 -0
  91. package/src/ui/vendor-skin.js +9 -4
  92. package/dist/m/c-3XNTQQEJ.js +0 -1
  93. package/dist/m/c-4OZZ7ENT.js +0 -30
  94. package/dist/m/c-D2OPWOWO.js +0 -2
  95. package/dist/m/c-LUBZU4AZ.js +0 -6
  96. package/dist/m/c-LYNLY3MR.js +0 -1
  97. package/dist/m/c-MLMJUNRV.js +0 -1
  98. package/dist/m/c-V5L6HWVL.js +0 -1
  99. package/dist/m/core/site-edits-TIJDPG6H.js +0 -1
  100. package/dist/m/loader-7ORQVRCK.js +0 -1
  101. package/dist/m/plugins/page-L3VKIQU2.js +0 -2
  102. package/dist/m/plugins/richclay-V6WKJTUF.js +0 -549
  103. package/dist/m/plugins/undo-WUK2NLBA.js +0 -1
  104. /package/dist/m/plugins/{quickcrop-VNRXGRPC.js.LEGAL.txt → quickcrop-UHURKA2F.js.LEGAL.txt} +0 -0
  105. /package/dist/m/plugins/{richclay-V6WKJTUF.js.LEGAL.txt → richclay-MXH2GFAZ.js.LEGAL.txt} +0 -0
@@ -1,2 +0,0 @@
1
- import{a as jt}from"../c-VPXCXBDT.js";import{a as Tt,b as At,c as Et}from"../c-XCOQNISP.js";import{e as ue}from"../c-Z6MROEQ4.js";import{a as St}from"../c-Q26XHBLQ.js";import{c as kt}from"../c-FSQXFG5T.js";import"../c-RETTCOWO.js";import{a as Ie,b as G,d as E}from"../c-JC4RZW4E.js";import{a as Oe,b as Pe}from"../c-RHMPKZZ7.js";import{a as Rt}from"../c-L4WQSC27.js";import{d as pt,e as gt,i as yt,j as De,n as _,o as ht,q as ie,r as mt,s as wt,t as Fe,u as vt,v as bt}from"../c-ZJ7726FO.js";import"../c-JKZJIUIP.js";import{a as ce}from"../c-TCCA5BZN.js";import{k as Le}from"../c-3LDGIBMN.js";import"../c-57XDY6HC.js";import"../c-LZJPNR2W.js";import{b as ft}from"../c-FILLTJA7.js";import{a as lt}from"../c-NUHP2XDB.js";import{B as ut,F as dt,d as xe,e as ct,f as le,h as it,n as Ce,o as se}from"../c-FC5RUFPR.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import{a as st}from"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-P73XPAOA.js";import"../c-ZPI7M5U5.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import{a as Y}from"../c-MZCOGNZL.js";import{d as ne}from"../c-EHAR4RJJ.js";import{a as at}from"../c-LD6UVV5R.js";import"../c-PGSBXHUE.js";import{a as Re,c as nt,d as je}from"../c-KU3PX7LL.js";import{d as Ee}from"../c-EQ5NBOGA.js";import"../c-IJUK2GPW.js";import{b as x,k as ot}from"../c-C7SUMNMI.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-U4TWEIKZ.js";import{E as W}from"../c-UW6MMZ4V.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-MOP5KBWZ.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var Tr=Object.freeze({"blockeditor-converting":"retrying","blockeditor-capacity":"retrying",busy:"retrying","rate-limited":"retrying",offline:"retrying",network:"retrying","network-error":"retrying",timeout:"retrying","save-history-pending":"retrying","blockeditor-condition-required":"blocked","blockeditor-conversion-refused":"blocked","blockeditor-conversion-required":"blocked","blockeditor-conversion-stale":"blocked","save-id-reused":"blocked","too-large":"blocked","unsupported-host":"blocked","save-history-refresh-required":"blocked","provenance-unsupported":"blocked","receipt-expired":"blocked","blockeditor-full":"blocked","compaction-failed":"blocked"}),Ot=({unavailable:e,pending:t,journaled:o,acknowledged:a,checkpointed:n}={})=>e?"unavailable":t>0?"pending":o>0?"journaled":a>0?"acknowledged":n?"checkpointed":null,de="Can't save here. Your edits are still in this tab.",fe="Still trying to save. Your edits are safe in this tab.";function U({ok:e=!1,code:t=null,offline:o=!1}={}){return e?"saved":o?"retrying":Tr[t]??"error"}function Pt(e){let t;try{t=new DOMParser().parseFromString(e,"text/html")}catch{return e}let o=[...t.querySelectorAll('script[type="application/json"][merge="blockeditor"][clay~="live"]')].filter(d=>!d.closest("template")&&!d.closest("noscript"));if(o.length!==1)return e;let a=o[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 pe(){let{forSave:e}=W({emitForSync:!1});return await Pe({html:Pt(e),name:`${Oe()}.html`})}async function He(e){return await Pe({html:Pt(e),name:`${Oe()}.html`})}async function It(){try{let{forSave:e}=W({emitForSync:!1}),o=new DOMParser().parseFromString(e,"text/html").querySelectorAll("article[data-blockeditor]");return o.length!==1?!1:(await navigator.clipboard.writeText(o[0].textContent),!0)}catch{return!1}}var xt="clay.page.author",_e="clay.page.author.owned.",Ct=()=>globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;function Lt(e=globalThis.localStorage){try{let t=[];for(let a=0;a<e.length;a++){let n=e.key(a);n&&n.startsWith(_e)&&t.push(n.slice(_e.length))}let o=e.getItem(xt);return(!o||!t.includes(o))&&(o=Ct(),e.setItem(_e+o,"1"),e.setItem(xt,o),t.push(o)),{token:o,owned:t.sort()}}catch{let t=Ct();return{token:t,owned:[t]}}}var P=Object.freeze({loading:"loading",joining:"joining",adopting:"adopting",ready:"ready",blocked:"blocked",error:"error"}),Ar=new Set([P.ready,P.blocked,P.error]),Dt=0,Ht=()=>globalThis.performance?.now?.()??Date.now();function _t({gen:e=0,isCurrent:t=()=>!0,onPhase:o=null}={}){return Dt+=1,{installId:Dt,gen:e,isCurrent:t,onPhase:typeof o=="function"?o:null,phase:P.loading,result:null,at:Ht(),controller:new AbortController,disposers:[],disposed:!1,steps:null,deferred:null}}function p(e){return!e.disposed&&!e.controller.signal.aborted&&e.isCurrent()!==!1}function Ne(e,t){return p(e)&&!!t?.view&&e.mounted===t.view}function N(e,t,o=null){if(Ar.has(e.phase)&&e.result)return e.result;e.phase=t,e.at=Ht(),e.result=Object.freeze({phase:t,reason:o??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 Me(e,t){let o=N(e,P.blocked,t);return e.editorReadyResolve?.(),o}function Nt(e,t){return N(e,P.error,t)}function C(e,t){return typeof t=="function"&&e.disposers.push(t),t}function qe(e){if(e.disposed)return;e.disposed=!0,e.mounted=null;try{e.controller.abort()}catch(o){console.error("clayjs: page boot abort failed",o)}let t=e.disposers.splice(0).reverse();for(let o of t)try{o()}catch(a){console.error("clayjs: a page boot disposer failed",a)}}function ge(e,t){let o=globalThis.performance;if(typeof o?.mark=="function")try{o.mark(e,{detail:{installId:t.installId}})}catch{try{o.mark(e)}catch{return}}}function Er(e,t){try{t.release?.(e)}catch(o){console.error("clayjs: page boot release failed",o)}}function X(e,t,o){return t.cancelled?null:(Er(e,o),Me(e,t.reason??"boot-incomplete"))}function Ft(e,t,o,a=null){return Promise.resolve(e).then(n=>n??{ok:!1,reason:o},n=>(console.error(`clayjs: page boot ${o}`,n),{ok:!1,reason:o})).then(n=>(n.ok&&a&&p(t)&&ge(a,t),n))}function Rr(e,t){return new Promise(o=>{let a=e.controller.signal,n=!1,d=k=>{n||(n=!0,o(k))};if(a.aborted)return d({cancelled:!0});a.addEventListener("abort",()=>d({cancelled:!0}),{once:!0});let g=new Array(t.length),b=t.length;t.forEach((k,A)=>{k.then(R=>{if(!n){if(!R.ok)return d({result:R,branch:k});g[A]=R,b-=1,b===0&&d({results:g})}})})})}async function Mt(e,t,{activate:o=!0}={}){ge("document:boot",e),N(e,P.loading);let a=t.readSource(e);if(!p(e))return null;if(!a.ok)return Me(e,a.reason);let n=a.source;N(e,P.joining);let d=await Rr(e,[Ft(t.loadEditorAssets(e,n),e,"editor-assets-failed","document:assets-ready"),Ft(t.prepareAuthority(e,n),e,"authority-failed","document:authority-ready")]);if(d.cancelled||!p(e))return null;if(!d.results){try{e.controller.abort()}catch(L){console.error("clayjs: page boot abort failed",L)}return X(e,d.result,t)}let[g,b]=d.results,k=t.mountAndAttach(e,n,g,b);if(!p(e))return null;if(!k.ok)return X(e,k,t);e.mounted=k.view??null,N(e,P.adopting);let A=await t.adoptSource(e,n,k);if(!p(e))return null;if(!A.ok)return X(e,A,t);if(!o){if(t.prepareInput){let L=await t.prepareInput(e,k);if(!p(e))return null;if(!L.ok)return X(e,L,t)}return e.deferred=k,{phase:e.phase,view:k.view,deferred:!0}}let R=await t.enableInput(e,k);return p(e)?R.ok?(ge("document:input-ready",e),N(e,P.ready)):X(e,R,t):null}function qt(e){let t=e.deferred;if(e.deferred=null,!t||!p(e))return e.result??null;let o=e.steps?.openInput?.(e,t);return o?.ok?(ge("document:input-ready",e),N(e,P.ready)):Me(e,o?.reason??"input-refused")}var z="article[data-blockeditor]",K='script[type="application/json"][merge="blockeditor"][clay~="live"]',Vt={state:"blocked",code:"unsupported-host",message:"This host does not support page editing"},Ue="Changes cannot be stored on this device. Download a copy to keep them.",jr=45e3,Or="Couldn't save",Pr="Offline, will retry",Xt="This page was changed outside the editor. Reload to see it.",Ir="That change is too large to share, so it was not saved. Reload the page to keep editing.",zt="Download your copy to add pictures and files.",Bt=(e,t)=>Promise.resolve({ok:!1,code:"draft",msg:zt}),xr=/^[ur][0-9a-z]+(-[0-9a-z]+){2}$/,Wt="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.",Cr="Some changes you made were replaced by a change made outside the editor.",Kt="The page was changed outside the editor; reload to see it.",Lr=150,Dr="Loading the editor\u2026",$e="the page session has not committed yet",Gt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function Be(e){return Gt(e)?e.v!==1||!Gt(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-blockeditor-format"):null:(console.warn("clayjs: page plugin: the page tag is not JSON, leaving the page as saved HTML"),"invalid-blockeditor-json")}var q=null,Ut=null;function M(){return Ut??=import("../c-4OZZ7ENT.js").then(e=>q=e),Ut}function Fr(e){let t=new Set;return e.forEach(o=>{let a=Et(o);a&&t.add(a)}),[...t]}function V(e){e.statusTimer&&(clearTimeout(e.statusTimer),e.statusTimer=null),e.statusNote?.remove(),e.statusNote=null}function Hr(e,t){V(e),e.statusTimer=setTimeout(()=>{if(e.statusTimer=null,!p(e))return;let o=t.ownerDocument.createElement("div");o.className="blockeditor-boot-status",o.setAttribute("clay","editor-ui"),o.setAttribute("sap-ignore",""),o.setAttribute("role","status"),lt(o,["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"]),o.textContent=Dr,t.prepend(o),e.statusNote=o},Lr)}var we=0,S=null,he=null,_r=8e3,Nr=8e3,Mr="AI tool making isn't available on this page right now.";function qr(e,t){return new Promise(o=>{let a=Date.now(),n=()=>{let d=e();d||Date.now()-a>=t?o(d||null):setTimeout(n,50)};n()})}function Vr(e,t=globalThis.location){let o=t?.hash?.slice(1);if(!o)return;let a;try{a=decodeURIComponent(o)}catch{return}let n=-1;e.state.doc.forEach((d,g)=>{n<0&&d.attrs.id===a&&(n=g)}),!(n<0)&&globalThis.requestAnimationFrame?.(()=>e.nodeDOM(n)?.scrollIntoView?.({block:"start"}))}function Q(e,t=null,o=""){document.dispatchEvent(new CustomEvent("clay:blockeditor-save-state",{detail:{state:e,code:t,message:o}}))}function Qt(){E(Or),E(Pr)}function Zt(e){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.retryShown=!1,E(fe)}function Br(e,t,o){Qt(),Q("retrying",t,o),!(e.retryTimer||e.retryShown)&&(e.retryTimer=setTimeout(()=>{e.retryTimer=null,e.retryShown=!0,G(fe,"warning")},jr))}function er(e,t=!1){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),E(fe,{now:t}),E(de,{now:t}),E(Ue,{now:t})}function Je(e,t,o,a="blocked"){Zt(e),Qt(),Q(a,t,o),G(a==="unavailable"?Ue:de,"error",{detail:o,actions:[{label:"Download copy",onClick:pe},{label:"Copy text",onClick:It}]})}function Wr(e){Zt(e),E(de),E(Ue),Q("saved",null,"")}function Gr(e,t,o=!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(z);return o?n.length!==1&&!a.querySelector(K):n.length!==1||a.querySelector(K)?!1:n[0].getAttribute("data-rev")!==t}function Ur(e){if(!e.store||!q)return e.savedRev;try{return q.renderFromTags([JSON.stringify(e.store.value)]).rev}catch{return e.savedRev}}function tr(e){let t=e.view;t&&(t.setProps({editable:()=>!1}),t.setProps({dispatchTransaction:o=>t.updateState(t.state.apply(o))}));try{e.binding?.dispose()}catch(o){console.error("clayjs: page plugin binding failed to dispose",o)}e.savesHeld||(e.savesHeld=!0,Ce(Kt))}async function $r(e){if(!e.tabValue)return await pe();let{forSave:t}=W({emitForSync:!1}),o=new DOMParser().parseFromString(t,"text/html"),a=o.querySelectorAll(z);if(a.length!==1)return await pe();let n=q.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 He(`<!DOCTYPE html>
2
- ${o.documentElement.outerHTML}`)}function Ye(e,t,{reload:o=!0}={}){if(e.replaced)return;e.replaced=!0,tr(e);let a={label:"Download your copy",onClick:()=>$r(e)};G(t,"warning",{actions:o?[{label:"Reload",onClick:()=>window.location.reload()},a]:[a]})}var We=e=>Ye(e,Xt),Jr=e=>Ye(e,Ir),Yr=(e,t)=>{Q("blocked",t,Wt),Ye(e,Wt,{reload:!1})};function ye(e,t,o,a){t==="saved"?Wr(e):t==="retrying"?Br(e,o,a):t==="blocked"&&Je(e,o,a)}function I(e,t,o){document.addEventListener(t,o),e.listeners.push([t,o])}function rr(e){let t=e?.binding,o=t?.bridge?.um;if(!t||!o)return null;let a=()=>{let d=e.view;return!!(d&&!d.isDestroyed&&ue(d.state))},n=()=>e.view?.focus?.();return{undo:()=>{t.undo()&&n()},redo:()=>{t.redo()&&n()},get canUndo(){return o.undoStack.length>0&&!a()},get canRedo(){return o.redoStack.length>0&&!a()}}}function $t(e){let t=rr(e);document.dispatchEvent(new CustomEvent("clay:undo-change",{detail:{canUndo:!!t?.canUndo,canRedo:!!t?.canRedo}}))}function Xr(e){let t=(a,n)=>{n!=="error"&&xe(a),ye(e,n,a.detail?.code??null,a.detail?.msg??"")};I(e,"clay:save-error",a=>{let n=a.detail?.code??null;if(n==="blockeditor-nothing-to-write")return xe(a);t(a,U({code:n}))}),I(e,"clay:save-offline",a=>{t(a,U({code:a.detail?.code??null,offline:!0}))}),I(e,"clay:save-conflict",a=>{let n=a.detail?.code??null;ye(e,U({code:n}),n,a.detail?.msg??"")});let o=a=>{zr(e,a)};I(e,"clay:save-conflict",o),I(e,"clay:save-error",o),I(e,"clay:save-saved",a=>{ye(e,U({ok:!0}),null,a.detail?.msg??""),e.savedRev=Ur(e),e.adoption?.saved(ut())}),I(e,"clay:live-notice",a=>{if(a.detail?.name!=="blockeditor"||a.detail?.code==="op-too-large")return;if(a.detail?.code==="unknown-store"){We(e);return}let n=a.detail?.code??null;ye(e,U({code:n}),n,a.detail?.message??"")})}async function or(){if(x)return null;let e=await fetch(new URL(globalThis.location.href).href,{cache:"no-store"});if(!e?.ok)return null;let t=await e.text(),o=new DOMParser().parseFromString(t,"text/html"),a=o.querySelector(z);if(!a)return null;let n=o.querySelector(K),d=e.headers?.get?.("etag")||null,g=o.documentElement.getAttribute("documentetag")||(d&&!/^W\//.test(d)?d:null);return{article:a,value:n?ce(n.textContent):null,etag:g}}async function zr(e,t){let o=e.staged;if(!o||e.staleRetry||e.replaced)return;let a=t?.detail?.code??null;if(!(a!=="blockeditor-lineage-stale"&&a!=="conflict")&&!(!e.store||!o.isPending())){e.staleRetry=!0;try{let n=await or();if(!n||!p(e))return;let d=await M();if(!p(e))return;let g=n.value??d.seedPageFromArticle(n.article.cloneNode(!0)),b=n.etag??t?.detail?.etag??null;b&&nt(b),e.store.rebase(g,{source:"state"}),await dt()}catch(n){console.warn("clayjs: page plugin could not offer the refused first write again",n)}}}function Xe(e){let t=e.article;if(!t)return;let o=e.bootHtml,a=e.bootRev;if(e.store&&q)try{let n=q.renderFromTags([JSON.stringify(e.store.value)]);o=n.html,a=n.rev}catch(n){console.error("clayjs: page plugin could not render the saved article",n)}t.innerHTML=o,a==null?t.removeAttribute("data-rev"):t.setAttribute("data-rev",a)}function ze(e){for(let[t,o]of e.listeners)document.removeEventListener(t,o);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.awareness?.dispose(),e.awareness=null,e.toolHost?.dispose(),e.toolHost=null,e.view&&St.delete(e.view),e.article){let t=e.article.querySelector(".blockeditor-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{ht("blockeditor",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 Jt(e){let t=e.view;if(t&&!t.isDestroyed&&typeof t.destroy=="function")try{t.destroy()}catch(o){console.error("clayjs: page plugin view failed to destroy",o)}e.titleObserver?.dispose(),e.titleObserver=null,V(e),ze(e),Xe(e)}function Ge(){we+=1;let e=S;if(S=null,ne("Blockeditor-Write",null),De(null),!!e){qe(e),er(e),E(Xt);for(let t of e.notices?.values()??[])E(t);if(e.savesHeld&&(e.savesHeld=!1,se({replay:!1,reason:Kt})),e.titleObserver?.dispose(),e.titleObserver=null,V(e),e.sessionHeld&&se({replay:!1,reason:$e}),e.autosaveSuspended&&le(),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}ze(e),Xe(e)}}var Ve=null;function Ke(){return Ve||(Ve=Promise.all([import("../c-XMIDHEKF.js"),import("../c-LYNLY3MR.js"),import("../c-DVMDYRAE.js")]).then(([e,t,o])=>({replay:e,proof:t,ui:o})).catch(e=>(console.warn("clayjs: page journal could not load",e),null))),Ve}async function Kr(e,t){let o=globalThis.window?.clay?.recovery??null;if(x||!o||!t)return null;let a=await Ke();if(!a)return null;try{return a.replay.openPageJournal({meta:e,service:o,base:a.replay.journalBase(t.value)})}catch(n){return console.warn("clayjs: page journal could not open",n),null}}async function Yt(e){let t=e.binding?.journal;if(!t||!e.store)return{replayed:[],review:[]};let o=await Ke();if(!o)return{replayed:[],review:[]};let a=await o.replay.replayInto({journal:t,state:e.store.value,into:e.binding.ydoc});return eo(e,o),a.replayed.length&&e.binding.provider.settle(),a.review.length&&(e.recoveryReview=a.review),Qr(e,o.ui)?.update({rows:o.replay.describeReview(a.review)}),a}function Qr(e,t){if(e.recoveryPanel)return e.recoveryPanel;let o=e.view,a=o?.dom.closest(".blockeditor-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:()=>p(e)&&e.inputOpen&&!!e.view&&!e.view.isDestroyed}),d=n.watch(o?.dom??null);return C(e,()=>{d(),n.destroy()}),e.recoveryPanel=n,n}function Zr(e){De(async({capture:t,state:o,article:a,etag:n})=>{let d=e.binding?.journal;if(!d)return;let g=await Ke(),b=g?await d.context():null;if(!b)return;let{hostPageStateHref:k}=await import("../c-Q2CB57UG.js"),A=await g.proof.checkpointAccepted({channel:d.channel,records:d.records(),capture:t,accepted:b,article:a,state:o,etag:n,href:await k()});A.ok&&(d.retire(A.retired),e.pageStatus?.checkpoint(),await d.rebase?.(g.replay.journalBase(A.proof.state)))})}function eo(e,t){let o=e.binding?.journal;return!o||e.pageStatus?e.pageStatus??null:(e.pageStatus=t.replay.watchJournal({journal:o,store:e.store,reduce:Ot,onState:a=>Q(a),onUnavailable:a=>Je(e,a,"","unavailable")}),C(e,()=>e.pageStatus?.dispose()),e.pageStatus)}function ar(e,t){if(Be(t))return!1;if(Le(e.authoritative)===Le(t))return!0;try{return e.rebase(t,{source:"state"})}catch(o){return console.warn("clayjs: page plugin could not reconcile the open page store with the saved file",o),!1}}function to(e,t){let o=null,a=null,n=null,d=null,g=null,b=null,k=null,A=[],R=null,L=null,$=null,Z=null,ee=null,cr=new Promise(r=>{d=r});e.editorReadyResolve=d,C(e,()=>d?.()),C(e,()=>V(e));let te=null,be=null;e.loadFormatGate=()=>te?Promise.resolve(te):(be??=Promise.all([import("../c-D7NT5S4F.js"),import("../c-GFASNR55.js")]).then(([{createFormatGate:r},{createFormatHost:l}])=>{let s=l();return te=r({host:s,supported:s.supported,installed:()=>g?.token??null,revision:()=>null,lane:{switchScope:(c,f)=>{let u=wt();return u?u.switchScope(c,{...f,covered:!!f?.covered||!mt()}):{status:"refused",code:"lane-unavailable"}}}}),te}).catch(r=>{throw be=null,r}),be);let Qe='script[type="application/json"][merge="blockeditor.tools"][clay~="live"]',ir=()=>$||($=(async()=>{if(!document.querySelector(Qe)){let c=document.createElement("script");c.setAttribute("type","application/json"),c.setAttribute("merge","blockeditor.tools"),c.setAttribute("clay","live"),c.textContent="{}",document.head.appendChild(c)}if(document.querySelector(Qe))try{R=window.clay.live("blockeditor.tools"),await R.ready}catch(c){console.warn("clayjs: page plugin could not open the tool store",c)}if(!p(e))return null;let[{createToolHost:r},{tablesFromDoc:l}]=await Promise.all([import("../c-FQAQRXGK.js"),import("../c-YNIEIPBS.js")]);if(!p(e))return null;let s=r({store:R,mode:"edit",tables:()=>l(n?.state.doc??a.doc()).map(({id:c,cols:f,rows:u})=>({id:c,cols:f,rows:u}))});return e.toolHost=s,s})().catch(r=>{throw $=null,r}),$),re='script[type="application/json"][merge="blockeditor.settings"][clay~="live"]',Ze=["assignees","dates"],B=null,ke={assignees:!0,dates:!0},oe=r=>({assignees:r?.assignees!==!1,dates:r?.dates!==!1});function ur(){let r=document.querySelector(re);if(!r)return oe(null);let l=null;try{l=JSON.parse(r.textContent)}catch{l=null}return oe(l)}function ae(r){ke=oe(r);let l=e.view&&!e.view.isDestroyed?e.view.dom:null;if(l)for(let s of Ze)ke[s]?l.removeAttribute(`data-${s}`):l.setAttribute(`data-${s}`,"false")}let Se=()=>B||(B=(async()=>{if(!document.querySelector(re)){let l=document.createElement("script");l.setAttribute("type","application/json"),l.setAttribute("merge","blockeditor.settings"),l.setAttribute("clay","live"),l.textContent="{}",document.head.appendChild(l)}let r=null;try{r=window.clay.live("blockeditor.settings"),await r.ready}catch(l){return console.warn("clayjs: page plugin could not open the settings store",l),B=null,null}return p(e)?(ae(r.data),r.on("change",()=>ae(r.data)),r):null})(),B);e.settings={read:()=>({...ke}),set:async(r,l)=>{if(!Ze.includes(r))throw new TypeError(`clayjs: "${r}" is not a page setting`);let s=await Se();if(!s)throw new Error("clayjs: the page settings store could not be opened");let c={...oe(s.data),[r]:l!==!1};s.set([r],c[r]),ae(c)}};let J=new Map,dr=r=>{if(J.has(r))return;let l=`The ${r} controls could not load. Reload the page after saving.`;J.set(r,l),G(l,"warning",{actions:[{label:"Retry",onClick:()=>{b.ensure(r).then(()=>{let s=J.get(r);s&&(J.delete(r),E(s))},()=>{})}}]})};e.notices=J;let Te=async({target:r=null,remove:l=null}={})=>{if(Z&&n&&l&&Z.holdSlashRange(n,l),await b.ensure("tool").catch(()=>{}),!p(e)||!n)return;let s=l?Z.heldSlashRange(n.state):null,c=await(L??Promise.resolve(null));if(!c||!p(e))return;let f=r?c.reviseTool(r.toolId):c.newTool(s),u=window.clay?.aiEdit||await qr(()=>window.clay?.aiEdit,Nr);if(p(e)){if(!u?.openTarget){Ie(Mr,"warning");return}u.openTarget(f)}},Ae=()=>jt(o);function fr(r){let l=document.querySelectorAll(z),s=typeof r.context?.represented?.bytes=="string"?new DOMParser().parseFromString(r.context.represented.bytes,"text/html"):null,c=s?s.querySelectorAll(z):l,f=s?s.querySelectorAll(K):document.querySelectorAll(K);if(!c.length&&!f.length)return{ok:!1,reason:"no-blockeditor"};let u=c.length===1&&f.length===0;if(c.length!==1||!u&&f.length!==1)return console.warn(`clayjs: page plugin needs exactly one article[data-blockeditor] and one merge="blockeditor" live tag; found ${c.length} article(s) and ${f.length} tag(s), leaving the page as saved HTML`),{ok:!1,reason:"ambiguous-blockeditor"};let w=l[0];if(!w)return{ok:!1,reason:"no-blockeditor"};let m=c[0],v=f[0],i=null;if(!u){try{i=ce(v?.textContent)}catch{i=null}let j=Be(i);if(j)return{ok:!1,reason:j}}let h={article:m.cloneNode(!0),tags:i?[i]:null,element:w,blocks:null,seeded:u,seedValue:null};return h.ready=(async()=>{let j=await M();if(!p(r))return{ok:!1,cancelled:!0};if(u){try{let y=await Ee(),O=y?.extensions?.includes("blockeditor-recovery-v1")&&y.document?.blockeditorState?.href,D=r.context?.represented?r.context.represented.etag:je()??Re();if(O&&D){let{readPageState:F}=await import("../c-LYNLY3MR.js"),H=await F({href:O,etag:D});if(!p(r))return{ok:!1,cancelled:!0};if(H.ok){if(H.etag!==D)return{ok:!1,reason:"etag-mismatch"};i=ce(H.tag),h.persisted=!0}else if(H.code!=="no-blockeditor-state")return{ok:!1,reason:H.code}}else if(O){let F=await or();if(!p(r))return{ok:!1,cancelled:!0};if(!F||!F.article.isEqualNode(h.article))return{ok:!1,reason:"stale-document"};i=F.value,h.persisted=i!==null}i=h.seedValue=i??j.seedPageFromArticle(h.article.cloneNode(!0))}catch(y){return console.warn("clayjs: page plugin could not rebuild the page it found, leaving the page as saved HTML",y),{ok:!1,reason:"invalid-blockeditor-source"}}let T=Be(i);if(T)return{ok:!1,reason:T};h.tags=[i]}try{h.blocks=j.blocksFromYValue(i)}catch(T){return console.warn("clayjs: page plugin: the page tag is not a valid Yjs page, leaving the page as saved HTML",T),{ok:!1,reason:"invalid-blockeditor-json"}}return{ok:!0}})(),Hr(r,w),{ok:!0,source:h}}async function pr(r,l){let s=M();s.catch(()=>null);let c=await l.ready;if(!c.ok)return c;if(!p(r))return{ok:!1,cancelled:!0};let f=await s,u=[...new Set(Object.values(l.blocks).map(m=>At(m.t)).filter(Boolean))];b=f.createFeatureLoader({load:m=>Tt[m].load(),install:async(m,v)=>{if(n||await cr,!p(r)||!n)return null;let i={view:n,upload:x?Bt:t.upload,board:a.board,undo:a.undo,redo:a.redo,revise:Ae()?h=>{Te({target:{toolId:h}})}:null};return m==="tool"&&(i.toolHost=await ir(),!p(r))?null:w.installPageFeature(i,m,v)},reportError:(m,v)=>{console.error("clayjs: an editor feature failed to load",m),dr(v)}});for(let m of u)b.prepare(m).catch(()=>null);let w=null;try{w=await import("../page/editor-HS2CAV3W.js"),ee=w.setEditorActive,Z={holdSlashRange:f.holdSlashRange,heldSlashRange:f.heldSlashRange}}catch(m){return console.error("clayjs: page plugin could not load the editor",m),{ok:!1,reason:"editor-assets-failed"}}return p(r)?{ok:!0,editor:w.createPageEditor,refreshView:w.refreshMountedView,featureIds:u,code:f}:{ok:!1,cancelled:!0}}async function gr(r,l){let s=M();try{o=x?{spec:null,extensions:["blockeditor"],document:null}:await Ee()}catch{o=null}if(!p(r))return{ok:!1,cancelled:!0};if(!o||!Array.isArray(o.extensions)||!o.extensions.includes("blockeditor"))return Je(r,Vt.code,Vt.message),{ok:!1,reason:"missing-capability"};r.mergeTagless=!o.extensions.includes("live-data"),ne("Blockeditor-Write","v1");let c=null,f=null;if(l.seeded){if(c=await l.ready,!c.ok)return c;if(f=await s,!p(r))return{ok:!1,cancelled:!0}}let u,w=!0;try{if(l.seeded){let y=yt("blockeditor",{value:l.seedValue,represented:t.represented??{bytes:l.article.outerHTML,etag:je()??Re()},persisted:l.persisted});r.staged=y,u=y.handle}else{let y=_("blockeditor")===null;w=y,u=window.clay.live("blockeditor"),y&&(r.pageStore=_("blockeditor"))}}catch(y){return console.warn("clayjs: page plugin could not open the page store",y),{ok:!1,reason:"missing-blockeditor-store"}}try{await u.ready}catch(y){return console.warn("clayjs: page plugin could not join the page room",y),{ok:!1,reason:"admission-failed"}}if(!p(r))return{ok:!1,cancelled:!0};if(c??=await l.ready,!c.ok)return c;let m=_("blockeditor")?.handle?.status?.mode==="fast";if(!w&&!m&&!ar(_("blockeditor"),l.tags?.[0]))return{ok:!1,reason:"stale-store"};if(f??=await s,!p(r))return{ok:!1,cancelled:!0};let v=_("blockeditor");if(!v)return{ok:!1,reason:"missing-blockeditor-store"};r.store=v;let i=!1,h=null,j=async y=>{let O=await y();return i=O?.ok===!1,h?.changed(),O};g=Lt();let T=await Kr(o,v);return p(r)?(a=f.createYPageBinding({store:v,onStopped:y=>{r.tabValue=f.yValueOf(a.ydoc),y==="lineage"?(ie()?.abandon?.("blockeditor"),We(r)):y==="blockeditor-full"||y==="compaction-failed"?Yr(r,y):Jr(r)},authorToken:g.token,ownedTokens:g.owned,checkpointWithin:Fe,requestCheckpoint:bt,requestExitCheckpoint:y=>vt({name:v.name,...y}),journal:T,exitClosed:()=>!it(),registerUnsavedState:y=>(h=st({id:y.id,isPending:()=>i||y.isPending(),flush:O=>j(()=>y.flush(O))}),h)}),r.binding=a,T&&Zr(r),r.flush=y=>j(()=>a.flush(y)),Xr(r),{ok:!0,store:v,handle:u}):{ok:!1,cancelled:!0}}function yr(r,l){import("../c-DDCYVLGG.js").then(async s=>{if(r.view!==l)return;let c=await s.installPageAwareness({binding:r.binding,view:l});if(c){if(r.view!==l||l.isDestroyed){c.dispose();return}r.awareness=c}}).catch(s=>console.error("clayjs: page plugin remote carets failed to load",s))}function hr(r,l,s){let c=l.element;r.context?.reader?.yieldArticle?.();try{r.releaseArticle=Rt(c,"editor")}catch(i){return console.error("clayjs: page plugin could not claim the article",i),{ok:!1,reason:"article-owned"}}r.source=l,r.article=c,r.bootHtml=l.article.innerHTML,r.bootRev=l.article.getAttribute("data-rev"),r.savedRev=r.bootRev,I(r,"clay:sync-applied",i=>{r.replaced||Gr(i.detail?.html,r.savedRev,r.mergeTagless)&&We(r)}),A=[...c.childNodes].filter(i=>i!==r.statusNote);let f=c.ownerDocument.createElement("div"),u=null;try{u=s.editor(f,{doc:a.doc(),dispatch:a.dispatch,history:!1,undo:a.undo,redo:a.redo,board:a.board,editable:!1,features:b,upload:x?Bt:t.upload,onAiTool:Ae()?(i,h)=>{Te({remove:h})}:null,mediaNote:x?zt:null,reviseTool:Ae()?i=>{Te({target:{toolId:i}})}:null,formatGate:r.loadFormatGate})}catch(i){return console.error("clayjs: page plugin could not mount the editor",i),f.replaceChildren(),r.releaseArticle?.(),r.releaseArticle=null,r.article=null,{ok:!1,reason:"mount-failed"}}n=u,r.view=u,L=import("../c-D4N4UJCQ.js").then(({createPageAi:i})=>!p(r)||r.view!==u?null:(r.pageAi=i({getView:()=>r.view,store:()=>R,acceptState:t.acceptState}),r.pageAi)).catch(i=>(console.warn("clayjs: page plugin could not load the AI surface",i),null)),ae(ur()),document.querySelector(re)?Se().catch(()=>null):I(r,"clay:sync-applied",()=>{!B&&document.querySelector(re)&&Se().catch(()=>null)});let w=u.dom.closest(".blockeditor-shell");w&&(w.inert=!0),s.featureIds.length&&w&&(w.style.visibility="hidden"),Y.pause();try{if(!s.featureIds.length)for(let i of A)i.remove();w&&c.appendChild(w)}finally{Y.resume()}s.refreshView?.(u),a.attach(u);let m=a.bridge?.um;if(m){let i=()=>$t(r);m.on("stack-item-added",i),m.on("stack-item-popped",i),m.on("stack-cleared",i),C(r,()=>{m.off("stack-item-added",i),m.off("stack-item-popped",i),m.off("stack-cleared",i)}),i()}let v=ue(u.state);return C(r,kt(u,{update:i=>{let h=ue(i.state);h!==v&&(v=h,$t(r))}})),yr(r,u),d(),k=Promise.allSettled(s.featureIds.map(i=>b.ensure(i))),Vr(u),r.recover=s.code.createRecoverList({binding:a,mount:u.dom.closest(".blockeditor-shell")??c,ownTokens:[g.token,...g.owned],onRestored:i=>s.code.focusBlock(u,i),onStale:()=>Ie("That change was updated. The list now shows the latest version.","warning")}),r.titleObserver=s.code.observeDocumentTitle(u),{ok:!0,view:u,featureIds:s.featureIds}}async function mr(r,l){try{let s=await M(),{HyperMorph:c}=await ft(),f=s.blocksFromYValue(r.store.authoritative),u=s.readBack(f,document),w=s.mergePageModels(l.baseItems,u,l.parsed,{doc:document,merge3:c.merge3,mergeJson:c.mergeJson});return s.canon(w.items)===s.canon(u)}catch{return!1}}async function wr(r,l){let s=await M();return await mr(r,l)?{ok:!0,outcome:"writer-adopts"}:new Promise(c=>{let f=null,u=null,w=!1,m=v=>{w||(w=!0,u&&clearTimeout(u),u=null,f?.(),f=null,c(v))};C(r,()=>m({ok:!1,cancelled:!0})),f=r.store.onRebase(v=>{v.source==="remote"&&m({ok:!0,outcome:"writer-adopts"})}),u=setTimeout(()=>{console.warn("page: gave up waiting for the writer's adoption; the hand edit was not adopted"),m({ok:!1,reason:"adoption-timeout"})},s.ADOPTION_TIMEOUT_MS)})}async function vr(r,l,s){let c=await M(),f=l.seeded?{kind:"untouched"}:c.classifyFile(l.article,l.tags),u=f.kind==="adopt",w=async()=>{let h=await pt();if(!h||!p(r))return;if(h.status.writer===null){let T=r.store.value.y,y=Object.keys(T),O=a.ydoc.clientID.toString(36),D=r.store.room?.compaction?.v===1?y.find(H=>xr.test(H))??`u${O}-claim-0`:y.length?y[0]:`claim-${O}`,F=Object.hasOwn(T,D)?T[D]:c.yValueOf(a.ydoc).y.seed;r.store.handle.set(["y",D],F),h.release("blockeditor")}let j;await Promise.race([gt(),new Promise(T=>{j=setTimeout(T,_r)})]),clearTimeout(j)},m=u?w():Promise.resolve(),v=c.installAdoption({view:s.view,source:l,ready:m,isAdopter:()=>{let h=ie();return!h||h.status.writer===null?!0:h.isWriter()},requestCheckpoint:()=>Fe(0),snapshot:()=>W({emitForSync:!1}).forSave,mergeTagless:r.mergeTagless,seeded:l.seeded,writerReady:w,adopted:h=>ie()?.adopted?.("blockeditor",h,r.store.mark),notice:h=>{h.copy&&G(Cr,"warning",{actions:[{label:"Download your copy",onClick:()=>He(h.copy)}]})}});r.adoption=v;let i=await v.idle();return i?(i.outcome==="writer-adopts"&&(i=await wr(r,f)),!i.ok&&p(r)?Jt(r):p(r)&&await Yt(r),i):(await Yt(r),{ok:!0,outcome:"unchanged"})}async function et(r,l){if(r.replaced)return{ok:!1,reason:"blockeditor-replaced"};if(await k,!p(r))return{ok:!1,cancelled:!0};let s=l.view.dom.closest(".blockeditor-shell");if(!Ne(r,l)||!s||!s.isConnected||l.view.isDestroyed)return{ok:!1,reason:"view-detached"};let c=new Set(l.featureIds??[]),f=Fr(l.view.state.doc).filter(u=>!c.has(u));return f.length&&(await Promise.allSettled(f.map(u=>b.ensure(u))),!p(r))?{ok:!1,cancelled:!0}:{ok:!0}}function tt(r,l){let s=l.view.dom.closest(".blockeditor-shell"),c=()=>{Y.pause();try{for(let f of A)f.remove();s&&(s.style.visibility="")}finally{Y.resume()}};return r.replaced?(c(),tr(r),{ok:!1,reason:"blockeditor-replaced"}):r.inputOpen?{ok:!0}:!Ne(r,l)||!s||!s.isConnected||l.view.isDestroyed?{ok:!1,reason:"view-detached"}:(c(),s.inert=!1,ee?.(l.view,!0),r.inputOpen=!0,V(r),{ok:!0})}function br(r){return r.inputOpen?(ee?.(r.view,!1,{quiesce:!0}),!0):!1}function kr(r){return r.inputOpen?(ee?.(r.view,!0),!0):!1}async function Sr(r,l){let s=await et(r,l);return s.ok?tt(r,l):s}let rt={readSource:fr,loadEditorAssets:pr,prepareAuthority:gr,mountAndAttach:hr,adoptSource:vr,prepareInput:et,openInput:tt,closeInput:br,resumeInput:kr,enableInput:Sr,release:r=>{r.view||Jt(r)}};return e.steps=rt,rt}async function ro(e,t={},{activate:o=!0}={}){return Mt(e,to(e,t),{activate:o})}function nr(e={},{activate:t=!0,context:o=null}={}){Ge(),he=null;let a=++we,n={..._t({gen:a,isCurrent:()=>a===we&&(o?.isCurrent?.()??!0),onPhase:g=>{(g.phase==="ready"||g.phase==="blocked"||g.phase==="error")&&V(n),e.onPhase?.(g)}}),article:null,view:null,binding:null,adoption:null,source:null,store:null,toolHost:null,pageAi: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:o,inputOpen:!1,sessionHeld:!1,autosaveSuspended:!1,staleRetry:!1};S=n;let d=ro(n,e,{activate:t}).catch(g=>(console.error("clayjs: page plugin failed to install",g),he=Nt(n,"boot-failed"),S===n&&Ge(),he));return{inst:n,boot:d}}function lr(e={}){return nr(e).boot}function oo(e){if(S===e&&(S=null,we+=1),ne("Blockeditor-Write",null),qe(e),er(e,!0),e.titleObserver?.dispose(),e.titleObserver=null,V(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,ze(e),Xe(e)}function me(e){e.sessionHeld&&(e.sessionHeld=!1,se({replay:!1,reason:$e}))}function sr(e,{held:t=!0}={}){return{enable(){t&&(me(e),qt(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,ct())},resume(){me(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,le()),e.steps?.resumeInput?.(e)},dispose(){me(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,le()),oo(e)}}}function ao(e=null,t={}){Ce($e);let{inst:o,boot:a}=nr(t,{activate:!1,context:e});o.sessionHeld=!0;let n=sr(o,{held:!0});ve.ready=a.then(()=>ve.status);let d=a.then(g=>{if(!g?.deferred)throw Object.assign(new Error("clayjs: the page session could not prepare"),{code:g?.reason??"load-failed"})});return d.catch(()=>{me(o);try{e?.reader?.reclaimArticle?.()}catch(g){console.error("clayjs: the reader could not take the article back",g)}}),{ready:d,...n}}function Fo(e={}){return{id:"clay:blockeditor",order:400,prepare(t={}){return t.initial===!0?S?sr(S,{held:!1}):{enable(){},quiesce(){},resume(){},dispose(){}}:ao(t,e)}}}var ve={ready:null,install:lr,get status(){return S?.result??he},flush(e={}){let t=S;return!t||!t.flush?Promise.resolve({ok:!1,code:"disposed"}):t.flush(e)},dispose:Ge,get view(){return S?.view??null},get ai(){return S?.pageAi??null},get history(){return S?rr(S):null},get settings(){return S?.settings??null}};at(e=>{let t=S?.binding;if(!t?.filePending())return;let o=q?.acceptedPageState(e);o&&t.acceptFile(o)});x&&(document.addEventListener("clay:drafts-blockeditor-external",e=>{let{live:t,adopted:o}=e.detail||{};if(!t||typeof t!="object")return;let a=!0;for(let[n,d]of Object.entries(t)){let g=_(n);if(g)try{(n==="blockeditor"?ar(g,d):g.rebase(d,{source:"state"}))===!1&&(a=!1)}catch(b){console.warn("clayjs: another tab's page could not join this one",b),a=!1}}a&&S?.binding?.provider?.settle?.(),a&&o?.()}),document.dispatchEvent(new CustomEvent("clay:drafts-blockeditor-listening")));ve.ready=ot()?lr():null;var Ho=ve;export{Wt as PAGE_FULL_MESSAGE,_r as WRITER_WAIT_MS,to as createSteps,Ho as default,Fo as modeParticipant,ve as page,Fo as pageParticipant,ao as preparePageSession};