@panphora/clayjs 1.24.0 → 1.24.1

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 (136) 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 +15016 -13603
  11. package/dist/m/c-277QP5ET.js +1 -0
  12. package/dist/m/{c-BULK5J4M.js → c-3UW5EJ77.js} +1 -1
  13. package/dist/m/{c-GM7OA6EJ.js → c-42ZNV7LI.js} +1 -1
  14. package/dist/m/{c-RXTPKCMC.js → c-6IJEVE6B.js} +1 -1
  15. package/dist/m/{c-2R4OBWIP.js → c-6LEYVQJK.js} +1 -1
  16. package/dist/m/{c-LO4C4J77.js → c-6Q6RGFBF.js} +1 -1
  17. package/dist/m/{c-PD5AKHY3.js → c-7CM4GMTS.js} +1 -1
  18. package/dist/m/c-APGHGDZM.js +1 -0
  19. package/dist/m/{c-Q6VNQDJE.js → c-B7GOFGQR.js} +1 -1
  20. package/dist/m/{c-RJKKRWHW.js → c-BGN7RCTJ.js} +1 -1
  21. package/dist/m/{c-A7N5TNSL.js → c-C5AKJVRH.js} +1 -1
  22. package/dist/m/{c-SNVDWMM3.js → c-CJ7QYEWI.js} +1 -1
  23. package/dist/m/{c-PVJMJL3P.js → c-CZHTXGJS.js} +1 -1
  24. package/dist/m/{c-KJHVB2KG.js → c-DDS23EY6.js} +1 -1
  25. package/dist/m/{c-VSEUFJAO.js → c-DFKBGSN2.js} +1 -1
  26. package/dist/m/{c-DLBX4JCJ.js → c-EDE45NM7.js} +1 -1
  27. package/dist/m/c-EILLN2H2.js +1 -0
  28. package/dist/m/{c-EY5KDUZF.js → c-FEC6LGFF.js} +1 -1
  29. package/dist/m/{c-PMRRMT72.js → c-HDVH3MVC.js} +1 -1
  30. package/dist/m/c-HKSLOVU4.js +1 -0
  31. package/dist/m/{c-GNIVHLEJ.js → c-HL6BLJNA.js} +1 -1
  32. package/dist/m/c-HTLYXCUH.js +1 -0
  33. package/dist/m/{c-RTSRGGTP.js → c-JQF2EUCG.js} +1 -1
  34. package/dist/m/{c-O5ARALMJ.js → c-JWDCQL6J.js} +1 -1
  35. package/dist/m/{c-WOELSNWS.js → c-LATNQ6Q5.js} +1 -1
  36. package/dist/m/{c-UM7VZDTW.js → c-LSVN3OLG.js} +1 -1
  37. package/dist/m/{c-HSNGLIFB.js → c-MFOSMAVM.js} +2 -2
  38. package/dist/m/{c-FZRZPIFS.js → c-MQYEDF3Q.js} +1 -1
  39. package/dist/m/{c-2OIKXOY6.js → c-ND3Q2G2I.js} +1 -1
  40. package/dist/m/{c-PZRWZZRO.js → c-OCYG4NBQ.js} +1 -1
  41. package/dist/m/{c-54ZZZYUN.js → c-P2HKMJAW.js} +1 -1
  42. package/dist/m/{c-VI3BJHCM.js → c-PCNJETUA.js} +1 -1
  43. package/dist/m/{c-7YETSAVY.js → c-PDBNCJCT.js} +1 -1
  44. package/dist/m/{c-A5ZBFICF.js → c-PYG2NGWU.js} +1 -1
  45. package/dist/m/{c-RBPZNU2D.js → c-QQFHEODI.js} +1 -1
  46. package/dist/m/{c-YINHPF4V.js → c-SGH3UTF3.js} +1 -1
  47. package/dist/m/{c-FV46ZKGX.js → c-SKMIR5HQ.js} +1 -1
  48. package/dist/m/{c-TWOXQQKV.js → c-STRI73GQ.js} +1 -1
  49. package/dist/m/{c-75N3KG35.js → c-T3P3AXEW.js} +1 -1
  50. package/dist/m/c-U4NTUVDZ.js +1 -0
  51. package/dist/m/{c-P5NKFRL4.js → c-UOOIF2AL.js} +1 -1
  52. package/dist/m/c-VHSMPITY.js +1 -0
  53. package/dist/m/{c-6UPEKW6O.js → c-X75G43SZ.js} +1 -1
  54. package/dist/m/{c-YGGO2G2L.js → c-XW5TIYYB.js} +1 -1
  55. package/dist/m/{c-DZPO22O3.js → c-YDW4VCHP.js} +1 -1
  56. package/dist/m/{c-YB3CDTDZ.js → c-YLHTD3KX.js} +1 -1
  57. package/dist/m/c-Z4G2UK6T.js +4 -0
  58. package/dist/m/{c-VNAYHV2J.js → c-ZGCO4J3H.js} +1 -1
  59. package/dist/m/core/{admin-attrs-5UGMYCKW.js → admin-attrs-ONRWVXPK.js} +1 -1
  60. package/dist/m/core/{autosave-4P66VXX7.js → autosave-TBKAAAFB.js} +1 -1
  61. package/dist/m/core/{conflict-notice-BAR23OWH.js → conflict-notice-FOEE6I7E.js} +1 -1
  62. package/dist/m/core/draft-mode-4MCL3LYI.js +1 -0
  63. package/dist/m/core/{host-permission-3HE4CFD6.js → host-permission-X4BENZEU.js} +1 -1
  64. package/dist/m/core/{is-edit-mode-GK7IFFMT.js → is-edit-mode-FFHCQ5DR.js} +1 -1
  65. package/dist/m/core/{persist-AIJGTKKI.js → persist-6ILUR34S.js} +1 -1
  66. package/dist/m/core/{recovery-LPB6X72P.js → recovery-APWADU4K.js} +1 -1
  67. package/dist/m/core/{save-FV4ZCKBI.js → save-6HT2LABE.js} +1 -1
  68. package/dist/m/core/{save-core-K7XFAWQ4.js → save-core-EVMNZQ4V.js} +1 -1
  69. package/dist/m/core/{site-edits-TEQORBJU.js → site-edits-G4BOZMV4.js} +1 -1
  70. package/dist/m/core/{unsaved-warning-FF63QGKI.js → unsaved-warning-ITZDIZ2I.js} +1 -1
  71. package/dist/m/internals/{index-AX4CG7B2.js → index-HS3CQDFW.js} +1 -1
  72. package/dist/m/loader-GLLVDUZA.js +1 -0
  73. package/dist/m/manifest-50FF1C45.js +1 -0
  74. package/dist/m/manifest-edit-BE1A621D.js +1 -0
  75. package/dist/m/manifest.json +710 -674
  76. package/dist/m/plugins/{ai-edit-CUKQQWJX.js → ai-edit-LABECCSN.js} +1 -1
  77. package/dist/m/plugins/{cms-JANMGPHM.js → cms-T2HLI7JG.js} +16 -16
  78. package/dist/m/plugins/{demo-JIR7DXJA.js → demo-T7B4RIKL.js} +1 -1
  79. package/dist/m/plugins/{derive-QVI3LI3A.js → derive-6LPJOCAV.js} +1 -1
  80. package/dist/m/plugins/{indicator-DAKZGAWI.js → indicator-J4ABFARX.js} +1 -1
  81. package/dist/m/plugins/{live-UAJGWRNP.js → live-PGBIEMGB.js} +1 -1
  82. package/dist/m/plugins/{menu-BFJ644YX.js → menu-YZL3X2AJ.js} +1 -1
  83. package/dist/m/plugins/page-WOCNX2IN.js +2 -0
  84. package/dist/m/plugins/{page-view-OYN7Z5TS.js → page-view-SJODOOGE.js} +1 -1
  85. package/dist/m/plugins/{people-VBDR5Y22.js → people-C4TCWFOQ.js} +1 -1
  86. package/dist/m/plugins/{richclay-CBLZRFB4.js → richclay-Y2NV44NA.js} +3 -3
  87. package/dist/m/plugins/sortable-XCHQG65Z.js +1 -0
  88. package/dist/m/plugins/{source-ZXDD7F6X.js → source-YK7MO23W.js} +1 -1
  89. package/dist/m/plugins/{undo-5JI5G7CQ.js → undo-VLRBQNPN.js} +1 -1
  90. package/dist/m/plugins/{upgrade-6B6QS3NR.js → upgrade-NNTJBSK2.js} +1 -1
  91. package/dist/m/plugins/{upload-DNJNW6H3.js → upload-ZKKJV76X.js} +1 -1
  92. package/dist/m/plugins/visitor-drafts-RTZNONHT.js +20 -0
  93. package/dist/m/plugins/{visitor-drafts-owner-VIAZC3CF.js → visitor-drafts-owner-LHUHFU3L.js} +1 -1
  94. package/dist/m/plugins/{visitor-menu-ZHKWIKKY.js → visitor-menu-FY4KM2SW.js} +1 -1
  95. package/dist/m/plugins/wire-M2NR354P.js +1 -0
  96. package/dist/m/{reader-core-F6RY3V64.js → reader-core-T2S3JC4E.js} +2 -2
  97. package/dist/m/sync/{live-sync-M2PP2IWY.js → live-sync-Z64YREWQ.js} +1 -1
  98. package/dist/m/vendor/{sap-core.vendor-OA5SKL7Q.js → sap-core.vendor-QAEPMETX.js} +1 -1
  99. package/dist/offline-manifest.json +455 -425
  100. package/entries/clay-data.js +1 -1
  101. package/entries/sap.js +1 -1
  102. package/package.json +2 -2
  103. package/src/core/draft-mode.js +6 -0
  104. package/src/core/save-core.js +7 -8
  105. package/src/core/unsaved-warning.js +2 -2
  106. package/src/lib/idb-error-code.js +20 -0
  107. package/src/loader.js +2 -0
  108. package/src/plugins/page.js +19 -5
  109. package/src/plugins/sortable.js +7 -0
  110. package/src/plugins/visitor-drafts/commit.js +303 -0
  111. package/src/plugins/visitor-drafts/idb.js +221 -0
  112. package/src/plugins/visitor-drafts/prompt.js +23 -3
  113. package/src/plugins/visitor-drafts/session.js +345 -0
  114. package/src/plugins/visitor-drafts/store.js +210 -26
  115. package/src/plugins/visitor-drafts.js +148 -28
  116. package/src/vendor/hyper-html-api-data.vendor.js +1 -1
  117. package/src/vendor/hyper-html-api-upgrade.vendor.js +2 -2
  118. package/src/vendor/hypercms.vendor.js +16 -16
  119. package/src/vendor/richclay.vendor.js +1 -1
  120. package/src/vendor/sap-core.vendor.js +1 -1
  121. package/dist/m/c-234RSEIW.js +0 -1
  122. package/dist/m/c-2YIJ6ZA6.js +0 -1
  123. package/dist/m/c-H2H7TI6O.js +0 -1
  124. package/dist/m/c-JMDKPBMC.js +0 -4
  125. package/dist/m/c-N7JPUPGC.js +0 -1
  126. package/dist/m/c-NEXFVJIT.js +0 -1
  127. package/dist/m/c-T527QHOB.js +0 -1
  128. package/dist/m/core/draft-mode-WSQAT67S.js +0 -1
  129. package/dist/m/loader-5IA5OJ3J.js +0 -1
  130. package/dist/m/manifest-98258645.js +0 -1
  131. package/dist/m/manifest-edit-ABF56000.js +0 -1
  132. package/dist/m/plugins/page-ZBIYHGK4.js +0 -2
  133. package/dist/m/plugins/sortable-HDOQ6GAC.js +0 -1
  134. package/dist/m/plugins/visitor-drafts-A5FDQ2G7.js +0 -20
  135. package/dist/m/plugins/wire-XOT7XKJL.js +0 -1
  136. /package/dist/m/plugins/{richclay-CBLZRFB4.js.LEGAL.txt → richclay-Y2NV44NA.js.LEGAL.txt} +0 -0
@@ -1,2 +0,0 @@
1
- import{a as Rt}from"../c-VPXCXBDT.js";import{a as St,b as Tt,c as At}from"../c-6RGEQNVV.js";import{e as ie}from"../c-Z6MROEQ4.js";import{a as kt}from"../c-Q26XHBLQ.js";import{c as bt}from"../c-FSQXFG5T.js";import"../c-RETTCOWO.js";import{a as Pe,b as G,d as E}from"../c-WCG6AKA7.js";import{a as je,b as Oe}from"../c-RHMPKZZ7.js";import{a as Et}from"../c-L4WQSC27.js";import{d as ft,e as pt,i as gt,j as Le,n as _,o as yt,q as ce,r as ht,s as mt,t as De,u as wt,v as vt}from"../c-PD5AKHY3.js";import"../c-JKZJIUIP.js";import{a as se}from"../c-TCCA5BZN.js";import{k as Ce}from"../c-3LDGIBMN.js";import"../c-57XDY6HC.js";import"../c-LZJPNR2W.js";import{b as dt}from"../c-QTTJYJMA.js";import{a as nt}from"../c-NUHP2XDB.js";import{B as it,F as ut,d as Ie,e as st,f as ne,h as ct,n as xe,o as le}from"../c-2YIJ6ZA6.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import{a as lt}from"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-LO4C4J77.js";import"../c-FV46ZKGX.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-LA2BW7UY.js";import{d as ae}from"../c-HSNGLIFB.js";import{a as ot}from"../c-LD6UVV5R.js";import"../c-PGSBXHUE.js";import{a as Ee,c as at,d as Re}from"../c-RXTPKCMC.js";import{d as Ae}from"../c-RBPZNU2D.js";import"../c-IJUK2GPW.js";import{b as x,k as rt}from"../c-DLBX4JCJ.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{E as W}from"../c-PWJSJEJU.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 Sr=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"}),jt=({unavailable:e,pending:t,journaled:o,acknowledged:a,checkpointed:n}={})=>e?"unavailable":t>0?"pending":o>0?"journaled":a>0?"acknowledged":n?"checkpointed":null,ue="Can't save here. Your edits are still in this tab.",de="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":Sr[t]??"error"}function Ot(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 fe(){let{forSave:e}=W({emitForSync:!1});return await Oe({html:Ot(e),name:`${je()}.html`})}async function Fe(e){return await Oe({html:Ot(e),name:`${je()}.html`})}async function Pt(){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 It="clay.page.author",He="clay.page.author.owned.",xt=()=>globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;function Ct(e=globalThis.localStorage){try{let t=[];for(let a=0;a<e.length;a++){let n=e.key(a);n&&n.startsWith(He)&&t.push(n.slice(He.length))}let o=e.getItem(It);return(!o||!t.includes(o))&&(o=xt(),e.setItem(He+o,"1"),e.setItem(It,o),t.push(o)),{token:o,owned:t.sort()}}catch{let t=xt();return{token:t,owned:[t]}}}var P=Object.freeze({loading:"loading",joining:"joining",adopting:"adopting",ready:"ready",blocked:"blocked",error:"error"}),Tr=new Set([P.ready,P.blocked,P.error]),Lt=0,Ft=()=>globalThis.performance?.now?.()??Date.now();function Ht({gen:e=0,isCurrent:t=()=>!0,onPhase:o=null}={}){return Lt+=1,{installId:Lt,gen:e,isCurrent:t,onPhase:typeof o=="function"?o:null,phase:P.loading,result:null,at:Ft(),controller:new AbortController,disposers:[],disposed:!1,steps:null,deferred:null}}function p(e){return!e.disposed&&!e.controller.signal.aborted&&e.isCurrent()!==!1}function _e(e,t){return p(e)&&!!t?.view&&e.mounted===t.view}function N(e,t,o=null){if(Tr.has(e.phase)&&e.result)return e.result;e.phase=t,e.at=Ft(),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 Ne(e,t){let o=N(e,P.blocked,t);return e.editorReadyResolve?.(),o}function _t(e,t){return N(e,P.error,t)}function C(e,t){return typeof t=="function"&&e.disposers.push(t),t}function Me(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 pe(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 Ar(e,t){try{t.release?.(e)}catch(o){console.error("clayjs: page boot release failed",o)}}function Y(e,t,o){return t.cancelled?null:(Ar(e,o),Ne(e,t.reason??"boot-incomplete"))}function Dt(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)&&pe(a,t),n))}function Er(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 Nt(e,t,{activate:o=!0}={}){pe("document:boot",e),N(e,P.loading);let a=t.readSource(e);if(!p(e))return null;if(!a.ok)return Ne(e,a.reason);let n=a.source;N(e,P.joining);let d=await Er(e,[Dt(t.loadEditorAssets(e,n),e,"editor-assets-failed","document:assets-ready"),Dt(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 Y(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 Y(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 Y(e,A,t);if(!o){if(t.prepareInput){let L=await t.prepareInput(e,k);if(!p(e))return null;if(!L.ok)return Y(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?(pe("document:input-ready",e),N(e,P.ready)):Y(e,R,t):null}function Mt(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?(pe("document:input-ready",e),N(e,P.ready)):Ne(e,o?.reason??"input-refused")}var X="article[data-blockeditor]",z='script[type="application/json"][merge="blockeditor"][clay~="live"]',qt={state:"blocked",code:"unsupported-host",message:"This host does not support page editing"},Ge="Changes cannot be stored on this device. Download a copy to keep them.",Rr=45e3,jr="Couldn't save",Or="Offline, will retry",Yt="This page was changed outside the editor. Reload to see it.",Pr="That change is too large to share, so it was not saved. Reload the page to keep editing.",Xt="Download your copy to add pictures and files.",Vt=(e,t)=>Promise.resolve({ok:!1,code:"draft",msg:Xt}),Ir=/^[ur][0-9a-z]+(-[0-9a-z]+){2}$/,Bt="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.",xr="Some changes you made were replaced by a change made outside the editor.",zt="The page was changed outside the editor; reload to see it.",Cr=150,Lr="Loading the editor\u2026",Ue="the page session has not committed yet",Wt=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function Ve(e){return Wt(e)?e.v!==1||!Wt(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,Gt=null;function M(){return Gt??=import("../c-PZRWZZRO.js").then(e=>q=e),Gt}function Dr(e){let t=new Set;return e.forEach(o=>{let a=At(o);a&&t.add(a)}),[...t]}function V(e){e.statusTimer&&(clearTimeout(e.statusTimer),e.statusTimer=null),e.statusNote?.remove(),e.statusNote=null}function Fr(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"),nt(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=Lr,t.prepend(o),e.statusNote=o},Cr)}var me=0,S=null,ye=null,Hr=8e3,_r=8e3,Nr="AI tool making isn't available on this page right now.";function Mr(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 qr(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 K(e,t=null,o=""){document.dispatchEvent(new CustomEvent("clay:blockeditor-save-state",{detail:{state:e,code:t,message:o}}))}function Kt(){E(jr),E(Or)}function Qt(e){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.retryShown=!1,E(de)}function Vr(e,t,o){Kt(),K("retrying",t,o),!(e.retryTimer||e.retryShown)&&(e.retryTimer=setTimeout(()=>{e.retryTimer=null,e.retryShown=!0,G(de,"warning")},Rr))}function Zt(e,t=!1){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),E(de,{now:t}),E(ue,{now:t}),E(Ge,{now:t})}function $e(e,t,o,a="blocked"){Qt(e),Kt(),K(a,t,o),G(a==="unavailable"?Ge:ue,"error",{detail:o,actions:[{label:"Download copy",onClick:fe},{label:"Copy text",onClick:Pt}]})}function Br(e){Qt(e),E(ue),E(Ge),K("saved",null,"")}function Wr(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(X);return o?n.length!==1&&!a.querySelector(z):n.length!==1||a.querySelector(z)?!1:n[0].getAttribute("data-rev")!==t}function Gr(e){if(!e.store||!q)return e.savedRev;try{return q.renderFromTags([JSON.stringify(e.store.value)]).rev}catch{return e.savedRev}}function er(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,xe(zt))}async function Ur(e){if(!e.tabValue)return await fe();let{forSave:t}=W({emitForSync:!1}),o=new DOMParser().parseFromString(t,"text/html"),a=o.querySelectorAll(X);if(a.length!==1)return await fe();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 Fe(`<!DOCTYPE html>
2
- ${o.documentElement.outerHTML}`)}function Je(e,t,{reload:o=!0}={}){if(e.replaced)return;e.replaced=!0,er(e);let a={label:"Download your copy",onClick:()=>Ur(e)};G(t,"warning",{actions:o?[{label:"Reload",onClick:()=>window.location.reload()},a]:[a]})}var Be=e=>Je(e,Yt),$r=e=>Je(e,Pr),Jr=(e,t)=>{K("blocked",t,Bt),Je(e,Bt,{reload:!1})};function ge(e,t,o,a){t==="saved"?Br(e):t==="retrying"?Vr(e,o,a):t==="blocked"&&$e(e,o,a)}function I(e,t,o){document.addEventListener(t,o),e.listeners.push([t,o])}function tr(e){let t=e?.binding,o=t?.bridge?.um;if(!t||!o)return null;let a=()=>{let d=e.view;return!!(d&&!d.isDestroyed&&ie(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 Ut(e){let t=tr(e);document.dispatchEvent(new CustomEvent("clay:undo-change",{detail:{canUndo:!!t?.canUndo,canRedo:!!t?.canRedo}}))}function Yr(e){let t=(a,n)=>{n!=="error"&&Ie(a),ge(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 Ie(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;ge(e,U({code:n}),n,a.detail?.msg??"")});let o=a=>{Xr(e,a)};I(e,"clay:save-conflict",o),I(e,"clay:save-error",o),I(e,"clay:save-saved",a=>{ge(e,U({ok:!0}),null,a.detail?.msg??""),e.savedRev=Gr(e),e.adoption?.saved(it())}),I(e,"clay:live-notice",a=>{if(a.detail?.name!=="blockeditor"||a.detail?.code==="op-too-large")return;if(a.detail?.code==="unknown-store"){Be(e);return}let n=a.detail?.code??null;ge(e,U({code:n}),n,a.detail?.message??"")})}async function rr(){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(X);if(!a)return null;let n=o.querySelector(z),d=e.headers?.get?.("etag")||null,g=o.documentElement.getAttribute("documentetag")||(d&&!/^W\//.test(d)?d:null);return{article:a,value:n?se(n.textContent):null,etag:g}}async function Xr(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 rr();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&&at(b),e.store.rebase(g,{source:"state"}),await ut()}catch(n){console.warn("clayjs: page plugin could not offer the refused first write again",n)}}}function Ye(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 Xe(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&&kt.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{yt("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 $t(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),Xe(e),Ye(e)}function We(){me+=1;let e=S;if(S=null,ae("Blockeditor-Write",null),Le(null),!!e){Me(e),Zt(e),E(Yt);for(let t of e.notices?.values()??[])E(t);if(e.savesHeld&&(e.savesHeld=!1,le({replay:!1,reason:zt})),e.titleObserver?.dispose(),e.titleObserver=null,V(e),e.sessionHeld&&le({replay:!1,reason:Ue}),e.autosaveSuspended&&ne(),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}Xe(e),Ye(e)}}var qe=null;function ze(){return qe||(qe=Promise.all([import("../c-XMIDHEKF.js"),import("../c-5FXEKU4Y.js"),import("../c-KQKKIVLW.js")]).then(([e,t,o])=>({replay:e,proof:t,ui:o})).catch(e=>(console.warn("clayjs: page journal could not load",e),null))),qe}async function zr(e,t){let o=globalThis.window?.clay?.recovery??null;if(x||!o||!t)return null;let a=await ze();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 Jt(e){let t=e.binding?.journal;if(!t||!e.store)return{replayed:[],review:[]};let o=await ze();if(!o)return{replayed:[],review:[]};let a=await o.replay.replayInto({journal:t,state:e.store.value,into:e.binding.ydoc});return Zr(e,o),a.replayed.length&&e.binding.provider.settle(),a.review.length&&(e.recoveryReview=a.review),Kr(e,o.ui)?.update({rows:o.replay.describeReview(a.review)}),a}function Kr(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 Qr(e){Le(async({capture:t,state:o,article:a,etag:n})=>{let d=e.binding?.journal;if(!d)return;let g=await ze(),b=g?await d.context():null;if(!b)return;let{hostPageStateHref:k}=await import("../c-Q6VNQDJE.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 Zr(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:jt,onState:a=>K(a),onUnavailable:a=>$e(e,a,"","unavailable")}),C(e,()=>e.pageStatus?.dispose()),e.pageStatus)}function or(e,t){if(Ve(t))return!1;if(Ce(e.authoritative)===Ce(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 eo(e,t){let o=null,a=null,n=null,d=null,g=null,b=null,k=null,A=[],R=null,L=null,$=null,Q=null,Z=null,sr=new Promise(r=>{d=r});e.editorReadyResolve=d,C(e,()=>d?.()),C(e,()=>V(e));let ee=null,ve=null;e.loadFormatGate=()=>ee?Promise.resolve(ee):(ve??=Promise.all([import("../c-D7NT5S4F.js"),import("../c-2OIKXOY6.js")]).then(([{createFormatGate:r},{createFormatHost:l}])=>{let s=l();return ee=r({host:s,supported:s.supported,installed:()=>g?.token??null,revision:()=>null,lane:{switchScope:(c,f)=>{let u=mt();return u?u.switchScope(c,{...f,covered:!!f?.covered||!ht()}):{status:"refused",code:"lane-unavailable"}}}}),ee}).catch(r=>{throw ve=null,r}),ve);let Ke='script[type="application/json"][merge="blockeditor.tools"][clay~="live"]',cr=()=>$||($=(async()=>{if(!document.querySelector(Ke)){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(Ke))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}),$),te='script[type="application/json"][merge="blockeditor.settings"][clay~="live"]',Qe=["assignees","dates"],B=null,be={assignees:!0,dates:!0},re=r=>({assignees:r?.assignees!==!1,dates:r?.dates!==!1});function ir(){let r=document.querySelector(te);if(!r)return re(null);let l=null;try{l=JSON.parse(r.textContent)}catch{l=null}return re(l)}function oe(r){be=re(r);let l=e.view&&!e.view.isDestroyed?e.view.dom:null;if(l)for(let s of Qe)be[s]?l.removeAttribute(`data-${s}`):l.setAttribute(`data-${s}`,"false")}let ke=()=>B||(B=(async()=>{if(!document.querySelector(te)){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)?(oe(r.data),r.on("change",()=>oe(r.data)),r):null})(),B);e.settings={read:()=>({...be}),set:async(r,l)=>{if(!Qe.includes(r))throw new TypeError(`clayjs: "${r}" is not a page setting`);let s=await ke();if(!s)throw new Error("clayjs: the page settings store could not be opened");let c={...re(s.data),[r]:l!==!1};s.set([r],c[r]),oe(c)}};let J=new Map,ur=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 Se=async({target:r=null,remove:l=null}={})=>{if(Q&&n&&l&&Q.holdSlashRange(n,l),await b.ensure("tool").catch(()=>{}),!p(e)||!n)return;let s=l?Q.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 Mr(()=>window.clay?.aiEdit,_r);if(p(e)){if(!u?.openTarget){Pe(Nr,"warning");return}u.openTarget(f)}},Te=()=>Rt(o);function dr(r){let l=document.querySelectorAll(X),s=typeof r.context?.represented?.bytes=="string"?new DOMParser().parseFromString(r.context.represented.bytes,"text/html"):null,c=s?s.querySelectorAll(X):l,f=s?s.querySelectorAll(z):document.querySelectorAll(z);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=se(v?.textContent)}catch{i=null}let j=Ve(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 Ae(),O=y?.extensions?.includes("blockeditor-recovery-v1")&&y.document?.blockeditorState?.href,D=r.context?.represented?r.context.represented.etag:Re()??Ee();if(O&&D){let{readPageState:F}=await import("../c-5FXEKU4Y.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=se(H.tag),h.persisted=!0}else if(H.code!=="no-blockeditor-state")return{ok:!1,reason:H.code}}else if(O){let F=await rr();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=Ve(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}})(),Fr(r,w),{ok:!0,source:h}}async function fr(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=>Tt(m.t)).filter(Boolean))];b=f.createFeatureLoader({load:m=>St[m].load(),install:async(m,v)=>{if(n||await sr,!p(r)||!n)return null;let i={view:n,upload:x?Vt:t.upload,board:a.board,undo:a.undo,redo:a.redo,revise:Te()?h=>{Se({target:{toolId:h}})}:null};return m==="tool"&&(i.toolHost=await cr(),!p(r))?null:w.installPageFeature(i,m,v)},reportError:(m,v)=>{console.error("clayjs: an editor feature failed to load",m),ur(v)}});for(let m of u)b.prepare(m).catch(()=>null);let w=null;try{w=await import("../page/editor-KAZDJNND.js"),Z=w.setEditorActive,Q={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 pr(r,l){let s=M();try{o=x?{spec:null,extensions:["blockeditor"],document:null}:await Ae()}catch{o=null}if(!p(r))return{ok:!1,cancelled:!0};if(!o||!Array.isArray(o.extensions)||!o.extensions.includes("blockeditor"))return $e(r,qt.code,qt.message),{ok:!1,reason:"missing-capability"};r.mergeTagless=!o.extensions.includes("live-data"),ae("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=gt("blockeditor",{value:l.seedValue,represented:t.represented??{bytes:l.article.outerHTML,etag:Re()??Ee()},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&&!or(_("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=Ct();let T=await zr(o,v);return p(r)?(a=f.createYPageBinding({store:v,onStopped:y=>{r.tabValue=f.yValueOf(a.ydoc),y==="lineage"?(ce()?.abandon?.("blockeditor"),Be(r)):y==="blockeditor-full"||y==="compaction-failed"?Jr(r,y):$r(r)},authorToken:g.token,ownedTokens:g.owned,checkpointWithin:De,requestCheckpoint:vt,requestExitCheckpoint:y=>wt({name:v.name,...y}),journal:T,exitClosed:()=>!ct(),registerUnsavedState:y=>(h=lt({id:y.id,isPending:()=>i||y.isPending(),flush:O=>j(()=>y.flush(O))}),h)}),r.binding=a,T&&Qr(r),r.flush=y=>j(()=>a.flush(y)),Yr(r),{ok:!0,store:v,handle:u}):{ok:!1,cancelled:!0}}function gr(r,l){import("../c-VNAYHV2J.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 yr(r,l,s){let c=l.element;r.context?.reader?.yieldArticle?.();try{r.releaseArticle=Et(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||Wr(i.detail?.html,r.savedRev,r.mergeTagless)&&Be(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?Vt:t.upload,onAiTool:Te()?(i,h)=>{Se({remove:h})}:null,mediaNote:x?Xt:null,reviseTool:Te()?i=>{Se({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-ZKKAF4UT.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)),oe(ir()),document.querySelector(te)?ke().catch(()=>null):I(r,"clay:sync-applied",()=>{!B&&document.querySelector(te)&&ke().catch(()=>null)});let w=u.dom.closest(".blockeditor-shell");if(w&&(w.inert=!0),s.featureIds.length&&w&&(w.style.visibility="hidden"),!s.featureIds.length)for(let i of A)i.remove();w&&c.appendChild(w),s.refreshView?.(u),a.attach(u);let m=a.bridge?.um;if(m){let i=()=>Ut(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=ie(u.state);return C(r,bt(u,{update:i=>{let h=ie(i.state);h!==v&&(v=h,Ut(r))}})),gr(r,u),d(),k=Promise.allSettled(s.featureIds.map(i=>b.ensure(i))),qr(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:()=>Pe("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 hr(r,l){try{let s=await M(),{HyperMorph:c}=await dt(),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 mr(r,l){let s=await M();return await hr(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 wr(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 ft();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=>Ir.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([pt(),new Promise(T=>{j=setTimeout(T,Hr)})]),clearTimeout(j)},m=u?w():Promise.resolve(),v=c.installAdoption({view:s.view,source:l,ready:m,isAdopter:()=>{let h=ce();return!h||h.status.writer===null?!0:h.isWriter()},requestCheckpoint:()=>De(0),snapshot:()=>W({emitForSync:!1}).forSave,mergeTagless:r.mergeTagless,seeded:l.seeded,writerReady:w,adopted:h=>ce()?.adopted?.("blockeditor",h,r.store.mark),notice:h=>{h.copy&&G(xr,"warning",{actions:[{label:"Download your copy",onClick:()=>Fe(h.copy)}]})}});r.adoption=v;let i=await v.idle();return i?(i.outcome==="writer-adopts"&&(i=await mr(r,f)),!i.ok&&p(r)?$t(r):p(r)&&await Jt(r),i):(await Jt(r),{ok:!0,outcome:"unchanged"})}async function Ze(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(!_e(r,l)||!s||!s.isConnected||l.view.isDestroyed)return{ok:!1,reason:"view-detached"};let c=new Set(l.featureIds??[]),f=Dr(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 et(r,l){let s=l.view.dom.closest(".blockeditor-shell"),c=()=>{for(let f of A)f.remove();s&&(s.style.visibility="")};return r.replaced?(c(),er(r),{ok:!1,reason:"blockeditor-replaced"}):r.inputOpen?{ok:!0}:!_e(r,l)||!s||!s.isConnected||l.view.isDestroyed?{ok:!1,reason:"view-detached"}:(c(),s.inert=!1,Z?.(l.view,!0),r.inputOpen=!0,V(r),{ok:!0})}function vr(r){return r.inputOpen?(Z?.(r.view,!1,{quiesce:!0}),!0):!1}function br(r){return r.inputOpen?(Z?.(r.view,!0),!0):!1}async function kr(r,l){let s=await Ze(r,l);return s.ok?et(r,l):s}let tt={readSource:dr,loadEditorAssets:fr,prepareAuthority:pr,mountAndAttach:yr,adoptSource:wr,prepareInput:Ze,openInput:et,closeInput:vr,resumeInput:br,enableInput:kr,release:r=>{r.view||$t(r)}};return e.steps=tt,tt}async function to(e,t={},{activate:o=!0}={}){return Nt(e,eo(e,t),{activate:o})}function ar(e={},{activate:t=!0,context:o=null}={}){We(),ye=null;let a=++me,n={...Ht({gen:a,isCurrent:()=>a===me&&(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=to(n,e,{activate:t}).catch(g=>(console.error("clayjs: page plugin failed to install",g),ye=_t(n,"boot-failed"),S===n&&We(),ye));return{inst:n,boot:d}}function nr(e={}){return ar(e).boot}function ro(e){if(S===e&&(S=null,me+=1),ae("Blockeditor-Write",null),Me(e),Zt(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,Xe(e),Ye(e)}function he(e){e.sessionHeld&&(e.sessionHeld=!1,le({replay:!1,reason:Ue}))}function lr(e,{held:t=!0}={}){return{enable(){t&&(he(e),Mt(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,st())},resume(){he(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),e.steps?.resumeInput?.(e)},dispose(){he(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),ro(e)}}}function oo(e=null,t={}){xe(Ue);let{inst:o,boot:a}=ar(t,{activate:!1,context:e});o.sessionHeld=!0;let n=lr(o,{held:!0});we.ready=a.then(()=>we.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(()=>{he(o);try{e?.reader?.reclaimArticle?.()}catch(g){console.error("clayjs: the reader could not take the article back",g)}}),{ready:d,...n}}function Lo(e={}){return{id:"clay:blockeditor",order:400,prepare(t={}){return t.initial===!0?S?lr(S,{held:!1}):{enable(){},quiesce(){},resume(){},dispose(){}}:oo(t,e)}}}var we={ready:null,install:nr,get status(){return S?.result??ye},flush(e={}){let t=S;return!t||!t.flush?Promise.resolve({ok:!1,code:"disposed"}):t.flush(e)},dispose:We,get view(){return S?.view??null},get ai(){return S?.pageAi??null},get history(){return S?tr(S):null},get settings(){return S?.settings??null}};ot(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"?or(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")));we.ready=rt()?nr():null;var Do=we;export{Bt as PAGE_FULL_MESSAGE,Hr as WRITER_WAIT_MS,eo as createSteps,Do as default,Lo as modeParticipant,we as page,Lo as pageParticipant,oo as preparePageSession};
@@ -1 +0,0 @@
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-DLBX4JCJ.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{k as N}from"../c-PWJSJEJU.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};
@@ -1,20 +0,0 @@
1
- import{a as Ht,b as Bt,c as _t}from"../c-Y6F2FORL.js";import{a as Pt,b as B,c as Y}from"../c-234RSEIW.js";import{a as qt,b as Kt,c as Ft,d as Jt}from"../c-OKEGUICD.js";import{b as Rt}from"../c-QY7F6EN6.js";import{b as jt,f as Nt,h as yt}from"../c-DLBX4JCJ.js";import{d as Tt}from"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import{d as it,f as Ct,h as Ut,j as Z}from"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var Xt="clay:visitor-drafts:",Vt=1,$t=32;function P(t=window.location.pathname){let n=String(t||"/").replace(/\/{2,}/g,"/").match(/^(.*?\/[^/]+\.(?:html|htmlclay))(?:\/|$)/i),s=n?n[1]:"/";return s.toLowerCase()==="/index.html"?"/":s}var bt=t=>Xt+t,Gt=(t,e=P())=>`${Xt}${t}@${e}`;function ut(){try{return window.localStorage}catch{return null}}var I=t=>t!==null&&typeof t=="object"&&!Array.isArray(t);function he(t){let e=[];for(let n of t.matchAll(/([^.[\]]+)|\[(\d+)\]/g))e.push(n[2]!==void 0?Number(n[2]):n[1]);return e}function me(t,e){let n=he(e),s=t;for(let a=0;a<n.length-1;a++)if(s=s?.[n[a]],s==null||typeof s!="object")return;s&&typeof s=="object"&&delete s[n[n.length-1]]}function M(t,e){return Array.isArray(t)?Array.isArray(e)&&e.length===t.length&&t.every((n,s)=>M(n,e[s])):I(t)?I(e)&&Object.keys(t).every(n=>M(t[n],e[n])):t===e}function q(t,e){return M(t,e)&&M(e,t)}var Qt='script[type="application/json"][merge][clay~="live"]',wt="article[data-blockeditor]",zt=t=>t==="blockeditor"||/^blockeditor\.\d+$/.test(t),Wt=t=>JSON.stringify(Object.keys(t).sort().map(e=>[e,t[e]]));function vt(t){let e=t.querySelectorAll(wt);if(e.length!==1)return null;let n={};for(let s of t.querySelectorAll(Qt))try{n[s.getAttribute("merge")]=JSON.parse(s.textContent)}catch{return null}return{live:n,blockeditor:{rev:e[0].getAttribute("data-rev")||"",html:e[0].innerHTML}}}var _=(t,e)=>!t||!e?t===e:t.blockeditor.rev===e.blockeditor.rev&&Wt(t.live)===Wt(e.live);function st(t){if(!I(t?.live)||!I(t?.blockeditor))return null;let{live:e,blockeditor:n}=t;return!Object.keys(e).length||typeof n.rev!="string"||typeof n.html!="string"?null:{live:e,blockeditor:n}}var K=t=>Array.isArray(t)&&t.every(e=>I(e)&&(typeof e.id=="string"||typeof e.id=="number"))&&new Set(t.map(e=>e.id)).size===t.length;function ct(t,e,n=!1){if(I(t)&&I(e)){let s={...t};for(let a of Object.keys(e))a in t?s[a]=ct(t[a],e[a]):n||(s[a]=e[a]);return s}if(K(t)&&K(e)){let s=new Map(e.map(a=>[a.id,a]));return t.map(a=>s.has(a.id)?ct(a,s.get(a.id)):a)}return t}var Zt=(t,e)=>t.length===e.length&&t.every((n,s)=>n===e[s]);function ye(t,e,n){let s=u=>new Map(u.map(m=>[m.id,m])),a=s(t),i=s(e),p=s(n),l=u=>u.filter(m=>a.has(m.id)&&i.has(m.id)&&p.has(m.id)).map(m=>m.id),v=l(t);if(!Zt(v,l(e))||!Zt(v,l(n)))return null;for(let[u,m]of a)if(i.has(u)&&!p.has(u)&&!q(i.get(u),m)||!i.has(u)&&p.has(u)&&!q(p.get(u),m))return null;let f=!1,w=[];for(let u of e){if(a.has(u.id)&&!p.has(u.id))continue;if(!p.has(u.id)){w.push(u);continue}let m=lt(a.get(u.id),u,p.get(u.id),!0);f||=m.conflict,w.push(m.value)}return n.forEach((u,m)=>{if(a.has(u.id)||i.has(u.id))return;let L=0;for(let g=m-1;g>=0;g--){let S=w.findIndex(T=>T.id===n[g].id);if(S!==-1){L=S+1;break}}w.splice(L,0,u)}),{value:w,conflict:f}}function lt(t,e,n,s){if(q(e,n)||q(n,t))return{value:e,conflict:!1};if(q(e,t))return{value:n,conflict:!1};if(I(e)&&I(n)){let a={},i=!1;for(let p of new Set([...Object.keys(e),...Object.keys(n)])){let l=lt(I(t)?t[p]:void 0,e[p],n[p],s);i||=l.conflict,l.value!==void 0&&(a[p]=l.value)}return{value:a,conflict:i}}if(s&&K(t)&&K(e)&&K(n)){let a=ye(t,e,n);if(a)return a}return{value:e,conflict:!0}}function dt(t,e=new Map){if(Array.isArray(t)){if(K(t))for(let n of t)e.set(n.id,(e.get(n.id)||0)+1);for(let n of t)dt(n,e)}else if(I(t))for(let n of Object.values(t))dt(n,e);return e}function ve(t,e,n){let s=lt(t,e,n,!0),a=dt(e);for(let[i,p]of dt(s.value))if(p>1&&p>(a.get(i)||0))return lt(t,e,n,!1);return s}function gt(t,e){Z(!0),t.dispatchEvent(new CustomEvent("clay:drafts-store-failed",{detail:{error:e}}));let n=new Error("Couldn't save in this browser. Storage is full or turned off.");return n.code="draft-storage",n}var Yt=t=>{try{return String(JSON.parse(t)?.savedAt??"")}catch{return""}};function te(t,{path:e=P(),storage:n=ut()}={}){let s=bt(t),a=Gt(t,e),i=a+":legacy";try{let p=n?.getItem(a),l=n?.getItem(s);if(l==null){let u=n?.getItem(s+":ui");return u!=null&&n.getItem(a+":ui")==null&&n.getItem(a+":ui-legacy")==null&&(n.setItem(a+":ui",u),n.setItem(a+":ui-legacy","1")),"none"}let v=Yt(l),f=n.getItem(i);if(f===v)return"none";let w=n.getItem(a);if(w!==p)return"none";if(w==null||f!=null&&Yt(w)===f?n.setItem(a,l):w!==l&&(n.setItem(a+":conflict",l),console.warn("visitor-drafts: an older tab changed this draft after it moved; its copy was kept under",a+":conflict")),f==null){let u=n.getItem(s+":ui");u!=null&&n.getItem(a+":ui")==null&&n.setItem(a+":ui",u)}return n.setItem(i,v),"copied"}catch{return"failed"}}function ge(t){if(!I(t)||!("site"in t))return t;let{site:e,...n}=t;return n}function ee({doc:t=document,storage:e=ut(),now:n=()=>new Date,path:s=P(),fallback:a=null}={}){let i=it(t),p=Gt(i,s),l=ge(Pt.findRulesIn(t,"api").rules),v=null,f=null,w=null,u=!1,m=null,L,g=null,S=null,T=()=>{L===void 0&&(L=vt(t))};function F(r){return r?(T(),L?r.blockeditor.rev!==L.blockeditor.rev||Object.keys(r.live).some(c=>!zt(c)&&JSON.stringify(r.live[c])!==JSON.stringify(L.live[c]))||g||S?r:null:r):null}function U(r){if(t.querySelector(wt)||t.readyState!=="loading")return r();t.addEventListener("DOMContentLoaded",r,{once:!0})}function Q(r){T();let o=t.querySelector(wt);if(!o)return!1;let c=new Map([...t.querySelectorAll(Qt)].map(h=>[h.getAttribute("merge"),h]));for(let[h,y]of c)zt(h)&&!(h in r.live)&&y.remove();for(let[h,y]of Object.entries(r.live)){let b=c.get(h);b||(b=t.createElement("script"),b.setAttribute("type","application/json"),b.setAttribute("merge",h),b.setAttribute("clay","live"),o.parentNode.insertBefore(b,o)),b.textContent=JSON.stringify(y).replace(/</g,"\\u003c")}return!0}let tt=()=>Math.random().toString(36).slice(2,10)+Math.random().toString(36).slice(2,6),et=p+":reset";function J(){try{return"root:"+(e?.getItem(et)??"")}catch{return"root:"}}function V(r){let o=2166136261;for(let c=0;c<r.length;c++)o=Math.imul(o^r.charCodeAt(c),16777619);return"legacy:"+(o>>>0).toString(36)+"."+r.length.toString(36)}function C(r,o){return r?r.id?Array.isArray(r.ancestry)?[r.id,...r.ancestry].slice(0,$t):null:[V(o)]:null}function nt(r){if(!m||m.raw!==v||!m.ancestry||!r?.id||r.id===m.id)return!1;let o=r.ancestry;return!Array.isArray(o)||o.includes(m.id)?!1:o.includes(m.ancestry[0])||o.length>=$t}function j(){try{if(!e)return null;let r=e.getItem(p);return r==null&&a?e.getItem(a):r}catch{return null}}function N(r){try{let o=JSON.parse(r);if(I(o)&&o.v===Vt&&I(o.data))return o}catch{}return null}function rt(){let r=j();return r==null?null:{raw:r,record:N(r)}}function d(){return B(t,l)}function E(){let r=window.clay?.getHTML;return typeof r!="function"?d():B(new DOMParser().parseFromString(r.call(window.clay),"text/html"),l)}function O(){try{if(typeof e.keys=="function")return e.keys();let r=[];for(let o=0;o<e.length;o++)r.push(e.key(o));return r}catch{return[]}}function ft(){try{return JSON.stringify(E())}catch{return null}}function $(r,{keepSlot:o=!1}={}){let c=O().find(y=>y.startsWith(p+":unreadable:")&&e.getItem(y)===r);if(c){if(w=null,!o)try{e.removeItem(p)}catch{}return c}let h=p+":unreadable:"+n().toISOString();try{e.setItem(h,r)}catch{return w=r,console.warn("visitor-drafts: this browser's saved copy no longer fits the page, and there is no room to keep it aside; nothing will be saved over it"),null}if(w=null,!o)try{e.removeItem(p)}catch{}return console.warn(o?"visitor-drafts: part of this browser's saved copy no longer fits the page; the original was kept under":"visitor-drafts: this browser's saved copy no longer fits the page; it was kept under",h),h}function It(r){let o=ct(JSON.parse(JSON.stringify(r)),d(),!0),c=[];for(let h=0;h<4;h++){let y=t.cloneNode(!0);try{Y(y,o,l)}catch(A){let H=A?.details?.unknownKeys??A?.unknownKeys;if(Array.isArray(H)&&H.length){for(let x of H)me(o,x);continue}let z=Object.keys(o).filter(x=>{try{return Y(t.cloneNode(!0),{[x]:o[x]},l),!1}catch{return!0}});if(!z.length)return null;for(let x of z)delete o[x];c.push(...z);continue}let b=B(y,l),D=Object.keys(o).filter(A=>!M(o[A],b[A]));if(!D.length)return{data:o,dropped:c};for(let A of D)delete o[A];c.push(...D)}return null}function pt(r){let o=$(r);return o||(v=r),f=d(),o?{restored:!1,hadDraft:!0,parked:!0}:{restored:!1,hadDraft:!0,parked:!1,blocked:!0}}function se(){let r=rt();if(!r)return f=d(),U(T),{restored:!1,hadDraft:!1};if(!r.record)return pt(r.raw);let o=st(r.record),c=Object.keys(r.record.data).length>0,h=c?It(r.record.data):{data:{},dropped:[]},y=!!h&&(!c||Object.keys(h.data).length>0);if(!o&&!y||!o&&!c)return pt(r.raw);if(c&&y&&Y(t,h.data,l),o&&(U(()=>{Q(o)||(console.warn("visitor-drafts: this browser's saved page has no page to go into; it was kept aside"),$(r.raw,{keepSlot:!0}))}),g=o,S=o),v=r.raw,f=d(),!y||h.dropped.length){let b=$(r.raw,{keepSlot:!0});return{restored:!0,hadDraft:!0,data:y?h.data:{},partial:!0,parked:!!b,blocked:!b}}return{restored:!0,hadDraft:!0,data:h.data}}function ot(){if(u)return!1;try{let r=window.clay?.getHTML;if(typeof r!="function")return!M(d(),f);let o=new DOMParser().parseFromString(r.call(window.clay),"text/html"),c=F(vt(o));return!M(B(o,l),f)||!_(c,g)&&!_(c,S)}catch{return!0}}function Ot(r){let o=p+":conflict";try{e.setItem(o,r)}catch(c){throw gt(t,c)}console.warn("visitor-drafts: another tab changed the same thing; its copy was kept under",o)}function ce(r){let o=j(),c=o==null?null:N(o);if(!c)return{data:r,stored:null,ancestry:[J()],parentData:f};let h=r;if(o!==v){let y=ve(nt(c)?m.parentData:f,r,c.data);y.conflict&&Ot(o),h=y.value}return h=ct(h,c.data),{data:h,stored:q(h,c.data)?o:null,ancestry:C(c,o),parentData:c.data}}function At(r){let o=It(r);if(!o||!Object.keys(o.data).length)return null;Y(t,o.data,l);try{window.Sap?.refresh?.()}catch{}return t.dispatchEvent(new CustomEvent("clay:drafts-restored",{detail:{restored:!0,hadDraft:!0,parked:!1,external:!0}})),o.data}function xt(r){if(u)return null;if(w!=null&&$(w,{keepSlot:!0})===null)throw gt(t,new Error("an earlier saved copy could not be kept aside"));let o=new DOMParser().parseFromString(r,"text/html"),c=B(o,l),h=F(vt(o)),y=!_(h,g),b=j();if(M(c,f)&&!y&&(b===v||b==null))return Z(!1),t.dispatchEvent(new CustomEvent("clay:drafts-saved",{detail:{data:c,unchanged:!0}})),c;let{data:D,stored:A,ancestry:H,parentData:z}=ce(c),x=b==null?null:N(b),mt=st(x),W=y?h:x?mt:h;y&&x&&!_(mt,S)&&Ot(b);let Dt=tt(),at=A&&_(W,mt)?A:JSON.stringify({v:Vt,savedAt:n().toISOString(),id:Dt,ancestry:H,data:D,...W&&{live:W.live,blockeditor:W.blockeditor}});if(at!==A){try{if(!e)throw new Error("no storage");e.setItem(p,at)}catch(R){throw gt(t,R)}m={id:Dt,ancestry:H,parentData:z,raw:at}}let Mt=Object.keys(c).filter(R=>!M(c[R],D[R]));return Mt.length&&At(Object.fromEntries(Mt.map(R=>[R,D[R]]))),v=at,f=D,y&&(g=h),(y||!x)&&(S=W),Z(!1),t.dispatchEvent(new CustomEvent("clay:drafts-saved",{detail:{data:D}})),D}function ht(){try{return xt(window.clay.getHTML()),!0}catch{return!1}}function le(){return u||!ot()?!0:ht()}function de(){if(u)return!1;let r=j();if(r==null&&v!=null&&!ot())return u=!0,window.location.reload(),!0;if(r==null||r===v||ot())return!1;let o=N(r);if(nt(o)&&typeof window.clay?.getHTML=="function")return ht();let c=o&&At(o.data);return!c&&!st(o)?!1:(v=r,f={...f,...c||{}},!0)}function ue(){if(u)return null;let r=j(),o=r==null?null:st(N(r));return o&&!_(o,S)?o:null}function fe(r){S=r}function pe(){u=!0,w=null,Z(!1);try{e.removeItem(p)}catch{}try{e.setItem(et,tt())}catch{}}return{slot:i,key:p,rules:l,read:rt,restore:se,write:xt,writeLive:ht,flush:le,changed:ot,adoptExternal:de,externalUnit:ue,adoptedUnit:fe,park:$,clear:pe,snapshot:ft}}function ne(t,e){let n=`${t}:ui`,s=()=>({v:1,prompt:{},intro:{done:null},src:null}),a=s();try{let i=JSON.parse(e?.getItem(n)||"null");i&&typeof i=="object"&&i.v===1&&(a={...s(),...i})}catch{}return{get:()=>a,save(){try{e?.setItem(n,JSON.stringify(a))}catch{}},reset(){a=s();try{e?.removeItem(n)}catch{}}}}var we=/^[a-z0-9][a-z0-9-]{0,39}$/;function re(t,e=window.location.search){let n=t.get(),s=null;try{s=new URLSearchParams(e).get("src")}catch{}return!n.src&&s&&we.test(s)&&(n.src=s,t.save()),n.src}function oe(t,e=window.location){let n=P(e.pathname);return`/_/download${n==="/"?"":n}?as=htmlclay${t?`&src=${encodeURIComponent(t)}`:""}`}var be=`<aside class="hcp" id="hcp" hidden aria-label="Download this app" data-hcp-state="tab" data-hcp-reason="open" sap-ignore clay="editor-ui">
2
- <section class="hcp-card" id="hcp-card" role="dialog" aria-modal="false" aria-labelledby="hcp-title">
3
- <button type="button" class="hcp-x" data-hcp="minimize" aria-label="Minimize"><svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="square" aria-hidden="true"><path d="M5 12h14"/></svg></button>
4
- <div class="hcp-kicker">Free download</div>
5
- <h2 class="hcp-title" id="hcp-title"><span data-hcp-for="use">Your work is saved in this browser only.</span><span data-hcp-for="open">This app is free to keep.</span><span data-hcp-for="return">Your work is saved in this browser only.</span><span data-hcp-for="error">Your work isn't being saved in this browser.</span></h2>
6
- <p class="hcp-body"><span data-hcp-for="open">Download it as one file and use it on your computer, no account needed.</span><span data-hcp-for="use">Download the file to keep it on your computer for good.</span><span data-hcp-for="return">Download the file to keep it on your computer for good.</span><span data-hcp-for="error">Storage is full or turned off here. Download the file to keep what you've done.</span></p>
7
- <div class="hcp-file">
8
- <svg width="20" height="20" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"/></svg>
9
- <div><b class="hcp-name" data-hcp-name>This app</b><small>One file with the whole app and your work in it</small></div>
10
- </div>
11
- <div class="hcp-actions">
12
- <a class="hcp-btn hcp-btn--primary" data-hcp-link href="/_/download?as=htmlclay"><span><svg width="16" height="16" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"/></svg>Download free</span></a>
13
- </div>
14
- <div class="hcp-foot"><button type="button" class="hcp-quiet" data-hcp="dismiss">Don&rsquo;t show again</button></div>
15
- </section>
16
- <div class="hcp-dock">
17
- <button type="button" class="hcp-btn hcp-tab" data-hcp="open" aria-controls="hcp-card" aria-expanded="false" aria-label="This app is free to keep"><span><svg width="16" height="16" viewBox="0 0 256 256" fill="currentColor" aria-hidden="true"><path d="M224,144v64a8,8,0,0,1-8,8H40a8,8,0,0,1-8-8V144a8,8,0,0,1,16,0v56H208V144a8,8,0,0,1,16,0Zm-101.66,5.66a8,8,0,0,0,11.32,0l40-40a8,8,0,0,0-11.32-11.32L136,124.69V32a8,8,0,0,0-16,0v92.69L93.66,98.34a8,8,0,0,0-11.32,11.32Z"/></svg><span class="hcp-tab__label">This app is free to keep</span><span class="hcp-tab__mini">Keep</span></span></button>
18
- <button type="button" class="hcp-x" data-hcp="minimize" aria-label="Minimize download notice"><svg width="12" height="12" viewBox="0 0 12 12" fill="currentColor" aria-hidden="true"><path d="M1.4 0 6 4.6 10.6 0 12 1.4 7.4 6 12 10.6 10.6 12 6 7.4 1.4 12 0 10.6 4.6 6 0 1.4z"/></svg></button>
19
- </div>
20
- </aside>`;async function ae({memory:t,appName:e,link:n}){let{PROMPT_CSS:s}=await import("../c-SGIA4IEQ.js"),i=document.querySelector('clay-editor-ui[data-clay-ui="download-prompt"]')?.shadowRoot.getElementById("hcp");if(!i){let d=document.createElement("template");d.innerHTML=be,i=d.content.firstElementChild,Rt({name:"download-prompt",content:i,css:[s],attributes:{"sap-ignore":""}})}let p=t.get();(!p.prompt||typeof p.prompt!="object")&&(p.prompt={});let l=p.prompt,v=3,f=2500,w=/^(INPUT|TEXTAREA|SELECT)$/,u="#hcp, .clay-intro, .clay-owner",m=i.querySelector("[data-hcp-link]");m.href=n,e&&(i.querySelector("[data-hcp-name]").textContent=e);let L=i.querySelector("[data-hcp=open]");function g(d,E){i.hidden=!1,i.setAttribute("data-hcp-state",d),E&&i.setAttribute("data-hcp-reason",E),L.setAttribute("aria-expanded",d==="card"?"true":"false"),(d==="card"||d==="mini")&&(l.shown=!0,t.save(),i.setAttribute("data-hcp-arrived","")),C()}function S(d){return d&&!i.contains(d)&&!d.closest(u)&&(w.test(d.tagName)||d.isContentEditable)}let T=null;function F(d){clearTimeout(T),T=setTimeout(()=>{if(l.shown||l.dismissed||i.getAttribute("data-hcp-state")!=="tab")return;let E=document.activeElement;if(S(E)){let O=E.getBoundingClientRect(),ft=Math.min(360,innerWidth-32);if(innerWidth<700||O.right>innerWidth-ft-32&&O.bottom>innerHeight-380)return}g("card",d)},f)}let U=[];function Q(d){i.contains(d.target)||!S(d.target)||(U.indexOf(d.target)<0&&U.push(d.target),l.uses=Math.max(l.uses||0,U.length),l.shown||t.save(),U.length>=v&&F("use"))}function tt(d){S(d.target)&&(i.getAttribute("data-hcp-state")==="card"&&g(l.shown?"mini":"tab"),innerWidth<700&&i.setAttribute("data-hcp-typing",""))}function et(){setTimeout(()=>{S(document.activeElement)||i.removeAttribute("data-hcp-typing")},50)}let J=0,V=!1;function C(){J||(J=requestAnimationFrame(()=>{J=0;let E=_t(innerWidth-24,O=>i.contains(O)||O.closest("[data-hcp-preview], .clay-owner"))+"px";i.style.getPropertyValue("--hcp-lift")!==E&&i.style.setProperty("--hcp-lift",E),V=!0,Bt(),V=!1}))}async function nt(){let d=window.clay&&window.clay.getHTML;if(typeof d!="function"||typeof URL>"u"||typeof URL.createObjectURL!="function")return!1;let E=location.pathname.split("/").filter(Boolean).pop()||"index.html";try{let{downloadHtml:O}=await import("../c-3TWCKFOP.js");return await O({html:d(),name:E.replace(/\.html$/,".htmlclay")})}catch{return!1}}i.addEventListener("click",async d=>{let E=d.target.closest("[data-hcp]");if(E){let O=E.getAttribute("data-hcp");O==="open"?(g("card",i.getAttribute("data-hcp-reason")==="error"?void 0:"open"),m.focus()):O==="minimize"?(g("mini"),L.focus()):O==="dismiss"&&(i.getAttribute("data-hcp-reason")==="error"?(g("mini"),L.focus()):(l.dismissed=!0,g("mini"),L.focus()));return}if(d.target.closest("[data-hcp-link]")){if(i.getAttribute("data-hcp-reason")==="error"&&(d.preventDefault(),!await nt())){i.querySelector(".hcp-body [data-hcp-for='error']").textContent="The download could not be made. Keep this page open and try Download free again.";return}l.downloaded=!0,l.shown=!0,t.save()}}),i.addEventListener("animationend",d=>{(d.animationName==="hcp-arrive"||d.animationName==="hcp-arrive-fade")&&i.setAttribute("data-hcp-arrived","")}),i.addEventListener("keydown",d=>{d.key==="Escape"&&i.getAttribute("data-hcp-state")==="card"&&(g("mini"),L.focus())});function j(){g("card","error")}function N(){i.getAttribute("data-hcp-reason")==="error"&&i.setAttribute("data-hcp-reason","use")}let rt={set:g,root:i,showError:j,clearError:N,download:()=>m.click()};return document.addEventListener("input",Q,!0),document.addEventListener("change",Q,!0),document.addEventListener("focusin",tt),document.addEventListener("focusout",et),addEventListener("scroll",C,{passive:!0}),addEventListener("resize",C),document.addEventListener(Ht,()=>{V||C()}),document.addEventListener("transitionend",C,!0),i.addEventListener("transitionend",C),g(l.shown||l.dismissed?"mini":"tab"),!l.shown&&(l.uses||0)>=v&&F("return"),rt}var k=null,G=null,St=qt,Et=null,Lt=Promise.resolve();function ie(){return import("../c-YGGO2G2L.js").then(t=>t.mountOwnerChip()).catch(t=>(console.warn("visitor-drafts: the owner chip did not load",t),null))}function ke(t){return t.template?import("../c-VBXRXTVS.js").then(e=>e.mountIntro(t)).catch(e=>(console.warn("visitor-drafts: the intro did not load",e),null)):Promise.resolve(null)}var X=it(),kt=document.querySelector('script[data-rules-name~="api"]');if(jt&&X&&kt){let t=P(),e=te(X,{path:t});k=ee({path:t,fallback:e==="failed"?bt(X):null}),Ct(f=>k.write(f));let n=k.restore();G={restored:n.restored,hadDraft:n.hadDraft,parked:!!n.parked,...n.partial&&{partial:!0},...n.blocked&&{blocked:!0}},document.dispatchEvent(new CustomEvent("clay:drafts-restored",{detail:G}));let s=ne(k.key,ut());Et=re(s),St=oe(Et);let a=document.querySelector('meta[name="application-name"]')?.content?.trim()||document.title.split(/:|\s\|\s/)[0].trim()||"This app",i=document.querySelector("template[visitor-intro]"),p=()=>{Lt=ae({memory:s,appName:a,link:St}).then(f=>ke({memory:s,template:i,appName:a,hadDraft:n.hadDraft}).then(()=>f)).then(f=>(document.addEventListener("clay:drafts-store-failed",()=>f.showError()),document.addEventListener("clay:drafts-saved",()=>f.clearError()),(yt?ie():Promise.resolve(null)).then(()=>f)))};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",p,{once:!0}):p(),Ut(()=>k.flush());let l=()=>{let f=k.externalUnit();f&&document.dispatchEvent(new CustomEvent("clay:drafts-blockeditor-external",{detail:{live:f.live,adopted:()=>k.adoptedUnit(f)}})),k.adoptExternal()};window.addEventListener("storage",f=>{f.key===k.key&&l()}),document.addEventListener("clay:drafts-blockeditor-listening",l),window.addEventListener("pageshow",f=>{f.persisted&&l()});let v=()=>k.flush();document.addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&v()}),window.addEventListener("pagehide",v)}else if(!X||!kt){let t=[];X||t.push('a visitor-drafts="<slot>" attribute on <html>'),kt||t.push('a <script data-rules-name~="api"> rules tag'),console.warn(`visitor-drafts: this page keeps no draft (missing ${t.join(" and ")})`)}else yt&&Nt&&!Tt()&&(Lt=ie());var Be=k?{active:!0,slot:k.slot,key:k.key,hasDraft:()=>!!k.read(),restored:()=>G,saveNow:()=>k.writeLive(),reset(){return k.clear(),window.location.reload(),!0},onRestore(t){return G?(t(G),!0):(document.addEventListener("clay:drafts-restored",e=>t(e.detail),{once:!0}),!1)},editOriginal:Kt,backToDraft:Ft,downloadUrl:()=>St,download:()=>Lt.then(t=>(k.flush(),t?.download())),source:Et}:Jt();export{Lt as ready,Be as visitorDrafts};
@@ -1 +0,0 @@
1
- import{a,b,c}from"../c-VSEUFJAO.js";import"../c-RBPZNU2D.js";import"../c-DLBX4JCJ.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";export{c as default,a as modeParticipant,b as wire,a as wireParticipant};