@panphora/clayjs 1.19.0 → 1.21.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 (183) 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 +8349 -8125
  11. package/dist/m/attrs/{refetch-on-save-ZUE7PSCI.js → refetch-on-save-DPGJJMGN.js} +1 -1
  12. package/dist/m/attrs/save-freeze-MTFVVYV5.js +1 -0
  13. package/dist/m/{c-DHUCEMXE.js → c-2VB555FG.js} +1 -1
  14. package/dist/m/{c-KGHVFRR3.js → c-3AXJDL2P.js} +1 -1
  15. package/dist/m/{c-FOOE4GML.js → c-3GJ4XARY.js} +1 -1
  16. package/dist/m/c-3TWCKFOP.js +1 -0
  17. package/dist/m/{c-LPCZOYTX.js → c-3YH6JSIL.js} +1 -1
  18. package/dist/m/{c-AIWN4QN4.js → c-44B5ODN7.js} +2 -2
  19. package/dist/m/{c-WQWIRWO3.js → c-5FEU5MMY.js} +1 -1
  20. package/dist/m/{c-S2U6NJU4.js → c-62HZW5DH.js} +1 -1
  21. package/dist/m/{c-ZGDYHKG3.js → c-67ILSNPR.js} +1 -1
  22. package/dist/m/c-67LGZ52V.js +20 -0
  23. package/dist/m/{c-ZRUQ5FSU.js → c-7SXYQCN4.js} +1 -1
  24. package/dist/m/{c-LACAAQFB.js → c-AL4RBJF2.js} +1 -1
  25. package/dist/m/{c-L42OLXWM.js → c-ANNFZFLN.js} +1 -1
  26. package/dist/m/{c-QO4HNGCQ.js → c-B4VYNXTQ.js} +1 -1
  27. package/dist/m/{c-7PRJCA3E.js → c-BJPZCWAV.js} +1 -1
  28. package/dist/m/{c-V52FE5FI.js → c-BTLFLLML.js} +1 -1
  29. package/dist/m/c-C4IIQZGJ.js +1 -0
  30. package/dist/m/{c-5T6NZHNM.js → c-CAWNFER6.js} +1 -1
  31. package/dist/m/c-CSNE5EIF.js +1 -0
  32. package/dist/m/{c-DVYGFTSK.js → c-DDDOKPI6.js} +2 -2
  33. package/dist/m/{c-2RARVIAK.js → c-DHXPDLW6.js} +1 -1
  34. package/dist/m/{c-WCXLG3MV.js → c-E4IBSAQM.js} +1 -1
  35. package/dist/m/{c-IVTRVENZ.js → c-EDSPKYMA.js} +1 -1
  36. package/dist/m/{c-2Y4DOHSY.js → c-EFD6QNTE.js} +1 -1
  37. package/dist/m/{c-7MG5RU63.js → c-EGTIAL6P.js} +1 -1
  38. package/dist/m/{c-FCNAO2MI.js → c-EOCKLMKX.js} +1 -1
  39. package/dist/m/{c-UXFUJEZO.js → c-EOCZ2YVL.js} +1 -1
  40. package/dist/m/{c-K72SY2TL.js → c-EZ7B5AZT.js} +1 -1
  41. package/dist/m/{c-UPD33ZPE.js → c-FDAXZ2PM.js} +1 -1
  42. package/dist/m/{c-P3CK66NT.js → c-FNVQAACK.js} +1 -1
  43. package/dist/m/c-FSWRGBVQ.js +1 -0
  44. package/dist/m/c-FTWGYI5E.js +1 -0
  45. package/dist/m/{c-WKNRJX3C.js → c-GKEATME6.js} +1 -1
  46. package/dist/m/{c-QINHDETP.js → c-GPGYKER7.js} +1 -1
  47. package/dist/m/{c-FWKHM4E7.js → c-GSRLXYWL.js} +1 -1
  48. package/dist/m/{c-B7J4K2AE.js → c-GVPNDIKJ.js} +2 -2
  49. package/dist/m/{c-D3E4WJ4M.js → c-HDWZEJHM.js} +49 -32
  50. package/dist/m/{c-FTQKI7SP.js → c-I2IFKJX2.js} +1 -1
  51. package/dist/m/c-ICMAOOGK.js +1 -0
  52. package/dist/m/{c-HUISJXHF.js → c-J3BXFTZS.js} +1 -1
  53. package/dist/m/{c-BIJALSRD.js → c-JDZDF2QM.js} +1 -1
  54. package/dist/m/{c-UDHIVLYH.js → c-JH5FF4NL.js} +1 -1
  55. package/dist/m/{c-OYRZ7XG2.js → c-JHJR5BQX.js} +1 -1
  56. package/dist/m/{c-V44KWI2L.js → c-JOH753EJ.js} +2 -2
  57. package/dist/m/{c-P3OFYUMA.js → c-JUE7B4OX.js} +1 -1
  58. package/dist/m/c-K76AUL4I.js +7 -0
  59. package/dist/m/{c-ZWIOJGMT.js → c-LA2BW7UY.js} +1 -1
  60. package/dist/m/{c-ICJYHABF.js → c-LDUNOR57.js} +1 -1
  61. package/dist/m/{c-XSZKP646.js → c-LIBE4HPD.js} +1 -1
  62. package/dist/m/c-LPUJXRXW.js +1 -0
  63. package/dist/m/{c-JK3PHE7J.js → c-LQU7TXIH.js} +1 -1
  64. package/dist/m/{c-5ZQV7KC4.js → c-LV5MABYD.js} +1 -1
  65. package/dist/m/{c-GWNC3UGL.js → c-M4FSPNQ2.js} +1 -1
  66. package/dist/m/{c-2KIEGNC4.js → c-MEWUGR4D.js} +1 -1
  67. package/dist/m/c-MIL4B2JQ.js +1 -0
  68. package/dist/m/{c-IVMD3FEM.js → c-N7Y52HJH.js} +1 -1
  69. package/dist/m/{c-O4JMKN6U.js → c-NFR673TL.js} +2 -2
  70. package/dist/m/{c-ZKNBMNN3.js → c-NLZ5AN4L.js} +1 -1
  71. package/dist/m/{c-RRZJWFLE.js → c-OABVRYOT.js} +1 -1
  72. package/dist/m/c-PIVIYLTY.js +1 -0
  73. package/dist/m/{c-L7JL5TL3.js → c-QY7F6EN6.js} +1 -1
  74. package/dist/m/{c-UY4QX42B.js → c-RG6XUZFA.js} +1 -1
  75. package/dist/m/c-RHMPKZZ7.js +1 -0
  76. package/dist/m/{c-TJAXGIRV.js → c-RQRMPZXD.js} +1 -1
  77. package/dist/m/{c-GY422N3Q.js → c-RS77ODLY.js} +1 -1
  78. package/dist/m/{c-BAUBNYXK.js → c-RT3C74GY.js} +1 -1
  79. package/dist/m/{c-CAS3NND4.js → c-S5IEIZCN.js} +1 -1
  80. package/dist/m/{c-HXPHZN7Q.js → c-SBSMJIPC.js} +1 -1
  81. package/dist/m/c-SFKI6OLM.js +2 -0
  82. package/dist/m/{c-4FJTBE6I.js → c-SJPD46ZO.js} +4 -4
  83. package/dist/m/{c-JCP3XDSJ.js → c-SO63UGPQ.js} +1 -1
  84. package/dist/m/{c-PLP4JKFC.js → c-TUGVINJR.js} +1 -1
  85. package/dist/m/{c-Q26MME6N.js → c-TWCXBWS3.js} +1 -1
  86. package/dist/m/{c-GNDL3TKB.js → c-U5X57T4L.js} +1 -1
  87. package/dist/m/{c-ZS4US2XV.js → c-UXEVJ63W.js} +1 -1
  88. package/dist/m/{c-KJJPV77R.js → c-V2J5C5MT.js} +1 -1
  89. package/dist/m/{c-7PYNAULW.js → c-VBLFAQD2.js} +1 -1
  90. package/dist/m/{c-ERQSNR6K.js → c-VQCEOGKH.js} +2 -2
  91. package/dist/m/{c-YVZ2L7CE.js → c-VSPAFOKU.js} +1 -1
  92. package/dist/m/{c-L6FLIUXP.js → c-VY6XRBOW.js} +1 -1
  93. package/dist/m/{c-2KL3BD52.js → c-W23KVGUO.js} +1 -1
  94. package/dist/m/{c-AXGY2WTB.js → c-W3K23S72.js} +1 -1
  95. package/dist/m/c-WFMRX5RZ.js +1 -0
  96. package/dist/m/{c-BWFVSBDF.js → c-WN3MXOLT.js} +1 -1
  97. package/dist/m/{c-MIKZEG5I.js → c-XD5MOROJ.js} +1 -1
  98. package/dist/m/{c-CQQDL6O4.js → c-XQSXKIKM.js} +1 -1
  99. package/dist/m/{c-I4MQHOEY.js → c-Y33LUUIQ.js} +1 -1
  100. package/dist/m/{c-JDARJDOT.js → c-YQUJ74R3.js} +1 -1
  101. package/dist/m/{c-F6G2OGYG.js → c-YSB6JKV2.js} +2 -2
  102. package/dist/m/{c-BHZYSHW4.js → c-ZJLU56DV.js} +1 -1
  103. package/dist/m/{c-DKLS74XB.js → c-ZQXNHZZT.js} +2 -2
  104. package/dist/m/{c-TNEM3RNM.js → c-ZSCBEB7I.js} +1 -1
  105. package/dist/m/core/{admin-attrs-YY7T5FGU.js → admin-attrs-ZG7R5V3E.js} +1 -1
  106. package/dist/m/core/{autosave-RVJPYLRT.js → autosave-VPORYJSE.js} +1 -1
  107. package/dist/m/core/{conflict-notice-2WGT52LH.js → conflict-notice-JMAZLVRX.js} +1 -1
  108. package/dist/m/core/{persist-UKXV5KLA.js → persist-3OPWJKZS.js} +1 -1
  109. package/dist/m/core/{recovery-ZOUOJVIX.js → recovery-DRFZRJED.js} +1 -1
  110. package/dist/m/core/{save-A5JXV6ME.js → save-AOJBDSOK.js} +1 -1
  111. package/dist/m/core/{save-core-MKRPSEEO.js → save-core-IOCMXO5L.js} +1 -1
  112. package/dist/m/core/{snapshot-NU3YM6GR.js → snapshot-O7II2AGG.js} +1 -1
  113. package/dist/m/core/unsaved-warning-U5VUJFOE.js +1 -0
  114. package/dist/m/events/{index-RN2JNGBV.js → index-B6TGDYMG.js} +1 -1
  115. package/dist/m/internals/{index-TGLQINN3.js → index-HDRANDWE.js} +1 -1
  116. package/dist/m/lib/{cache-bust-MUMFXZK6.js → cache-bust-NH7VBWHO.js} +1 -1
  117. package/dist/m/lib/{region-policy-SB2AWVG5.js → region-policy-KWBPROWF.js} +1 -1
  118. package/dist/m/{loader-34YPFKOH.js → loader-ZVPK4ZN3.js} +1 -1
  119. package/dist/m/manifest-5498AFD3.js +1 -0
  120. package/dist/m/manifest-edit-62A5A00F.js +1 -0
  121. package/dist/m/manifest.json +1215 -1171
  122. package/dist/m/options/{options-EJMS3K24.js → options-55LQHSJ4.js} +1 -1
  123. package/dist/m/page/{editor-WRQGHDSG.js → editor-EY2WAAGB.js} +2 -2
  124. package/dist/m/plugins/{ai-edit-X2L2KIEP.js → ai-edit-J5VLSW5I.js} +1 -1
  125. package/dist/m/plugins/{demo-OYO5GCAO.js → demo-42BSYQ7T.js} +1 -1
  126. package/dist/m/plugins/{derive-FRE5JJQE.js → derive-QVI3LI3A.js} +1 -1
  127. package/dist/m/plugins/{live-7C36XEI2.js → live-5EZN2EYP.js} +1 -1
  128. package/dist/m/plugins/menu-DM2JHPSR.js +1 -0
  129. package/dist/m/plugins/{page-BSW6MGDO.js → page-LVW5DWA4.js} +2 -2
  130. package/dist/m/plugins/{page-view-WFZVTPQK.js → page-view-5KQ76IJB.js} +1 -1
  131. package/dist/m/plugins/{sortable-4S6SQC3D.js → sortable-WJZZBM7R.js} +1 -1
  132. package/dist/m/plugins/{source-TJXOIOYY.js → source-CCEUM3OR.js} +1 -1
  133. package/dist/m/plugins/{undo-NLPGCJQY.js → undo-3JEYK5QY.js} +1 -1
  134. package/dist/m/plugins/{upgrade-HSUNDNJD.js → upgrade-NW556WJD.js} +1 -1
  135. package/dist/m/plugins/{upload-NHGJXZK2.js → upload-TTCQRIM5.js} +1 -1
  136. package/dist/m/plugins/{visitor-drafts-BW43DGY3.js → visitor-drafts-2AWNT23K.js} +2 -2
  137. package/dist/m/plugins/{visitor-drafts-owner-7ODQG7JX.js → visitor-drafts-owner-MZP45XSG.js} +1 -1
  138. package/dist/m/plugins/{wire-6OSIL3I7.js → wire-VRYPY6EJ.js} +1 -1
  139. package/dist/m/{reader-core-PLZYLYLT.js → reader-core-2GXY7SHY.js} +2 -2
  140. package/dist/m/sync/{live-sync-UXNI6ZF6.js → live-sync-SKPMFYOO.js} +1 -1
  141. package/dist/m/ui/{index-IVWN2QC4.js → index-QNIPDHXQ.js} +1 -1
  142. package/dist/m/vendor/{sap-core.vendor-RN4ZVY4X.js → sap-core.vendor-OA5SKL7Q.js} +1 -1
  143. package/dist/offline-manifest.json +650 -626
  144. package/docs/guide.md +38 -14
  145. package/entries/sap.js +1 -1
  146. package/package.json +3 -2
  147. package/src/core/conflict-download.js +8 -7
  148. package/src/core/conflict-notice-ui.js +4 -4
  149. package/src/core/copy-content.js +103 -0
  150. package/src/core/download.js +14 -2
  151. package/src/core/save-size-notice.js +2 -2
  152. package/src/core/upgrade-run.js +5 -1
  153. package/src/lib/region-policy.js +1 -1
  154. package/src/page/features/export-html.js +4 -4
  155. package/src/page/features/export-markdown.js +2 -2
  156. package/src/page/recovery-ui.js +2 -2
  157. package/src/page/save-states.js +4 -4
  158. package/src/plugins/menu/actions.js +1 -1
  159. package/src/plugins/menu/style.js +59 -31
  160. package/src/plugins/menu.js +131 -28
  161. package/src/plugins/page.js +4 -4
  162. package/src/plugins/visitor-drafts/prompt.js +12 -12
  163. package/src/plugins/wire.js +3 -1
  164. package/src/vendor/sap-core.vendor.js +1 -1
  165. package/dist/m/attrs/save-freeze-LWGF6XUN.js +0 -1
  166. package/dist/m/c-DCFSEJZG.js +0 -1
  167. package/dist/m/c-EXEDYU4H.js +0 -1
  168. package/dist/m/c-GRXHHFPO.js +0 -1
  169. package/dist/m/c-HT2DKBV2.js +0 -1
  170. package/dist/m/c-MCOOHCSG.js +0 -1
  171. package/dist/m/c-MMXKAX2W.js +0 -1
  172. package/dist/m/c-VE7RKNKZ.js +0 -7
  173. package/dist/m/c-VR2BJ4AN.js +0 -1
  174. package/dist/m/c-WGW764WX.js +0 -1
  175. package/dist/m/c-WNTYKCDG.js +0 -1
  176. package/dist/m/c-YBSS55KU.js +0 -20
  177. package/dist/m/core/unsaved-warning-4ZPEV7BF.js +0 -1
  178. package/dist/m/manifest-0D166F4F.js +0 -1
  179. package/dist/m/manifest-edit-3877153E.js +0 -1
  180. package/dist/m/plugins/menu-MFC4DI5E.js +0 -1
  181. /package/dist/m/{c-QTTJYJMA.js → c-FILLTJA7.js} +0 -0
  182. /package/dist/m/{c-5JLFROUB.js → c-X5LNHET5.js} +0 -0
  183. /package/dist/m/plugins/{people-JCHVPF7P.js → people-C7TVBBMR.js} +0 -0
@@ -1 +1 @@
1
- import{c as m}from"../c-7SWMYKAI.js";import{a as f}from"../c-ZWIOJGMT.js";import"../c-IJUK2GPW.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var w="option-visibility",y=[{prefix:"option-not",kind:"show-not"},{prefix:"option",kind:"show"},{prefix:"show-when",kind:"show"},{prefix:"hide-when",kind:"hide"}];function x(t,e){let n=null;for(let o of y)if(t.startsWith(o.prefix+":")){n=o;break}if(!n)return null;let r=t.slice(n.prefix.length+1),i=e,s=i.split("|");return{name:r,rawValue:i,values:s,kind:n.kind,prefix:n.prefix,negated:n.kind==="show-not"}}var h={debug:!1,_started:!1,_unsubscribe:null,log(...t){this.debug&&console.log("[OptionVisibility]",...t)},findOptionAttributes(){let t=new Map;try{let e=document.evaluate('//*[@*[starts-with(name(), "option:") or starts-with(name(), "option-not:") or starts-with(name(), "show-when:") or starts-with(name(), "hide-when:")]]',document.documentElement,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for(let n=0;n<e.snapshotLength;n++){let r=e.snapshotItem(n);for(let i of r.attributes){let s=x(i.name,i.value);if(!s)continue;let o=`${s.prefix}:${s.name}=${s.rawValue}`;t.has(o)||t.set(o,s)}}}catch(e){this.log("XPath error, falling back to empty",e)}return[...t.values()]},generateCSS(t){return t.length?t.map(e=>{let{name:n,rawValue:r,values:i}=e,s=e.kind||(e.negated?"show-not":"show"),o=e.prefix||(s==="show-not"?"option-not":s==="hide"?"hide-when":"option"),a=CSS.escape(n),b=CSS.escape(r),u=`[${CSS.escape(o)}\\:${a}="${b}"]`,S=i.map(c=>`[${a}="${CSS.escape(c)}"]`),g=i.map(c=>`[${a}="${CSS.escape(c)}"] *`),p=[...S,...g].join(",");if(s==="hide")return`${u}:is(${p}){display:none!important}`;let l;if(s==="show-not"){let c=i.map($=>`[${a}="${CSS.escape($)}"]`).join(","),d=`[${a}]:not(${c})`;l=`${d},${d} *`}else l=p;return`${u}:not(:is(${l})){display:none!important}`}).join(""):""},update(){try{let t=this.findOptionAttributes(),e=this.generateCSS(t);m(w,e,n=>{n.setAttribute("clay","no-watch")}),this.log(`Generated ${t.length} rules`)}catch(t){console.error("[OptionVisibility] Error generating rules:",t)}},start(){if(!this._started){if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",()=>this.start(),{once:!0});return}this._started=!0,this.update(),this._unsubscribe=f.onAnyChange({debounce:200,selectorFilter:t=>[...t.attributes].some(e=>e.name.startsWith("option:")||e.name.startsWith("option-not:")||e.name.startsWith("show-when:")||e.name.startsWith("hide-when:")),omitChangeDetails:!0,require:"observed",pausable:!1},()=>this.update()),this.log("Started")}},stop(){if(!this._started)return;this._started=!1,this._unsubscribe&&(this._unsubscribe(),this._unsubscribe=null);let t=document.querySelector(`style[data-name="${w}"]`);t&&t.remove(),this.log("Stopped")}};window.clay.optionVisibility=h;var O=h;function _(){h.start()}_();export{O as default,_ as init,x as parseOptionAttribute};
1
+ import{c as m}from"../c-7SWMYKAI.js";import{a as f}from"../c-LA2BW7UY.js";import"../c-IJUK2GPW.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var w="option-visibility",y=[{prefix:"option-not",kind:"show-not"},{prefix:"option",kind:"show"},{prefix:"show-when",kind:"show"},{prefix:"hide-when",kind:"hide"}];function x(t,e){let n=null;for(let o of y)if(t.startsWith(o.prefix+":")){n=o;break}if(!n)return null;let r=t.slice(n.prefix.length+1),i=e,s=i.split("|");return{name:r,rawValue:i,values:s,kind:n.kind,prefix:n.prefix,negated:n.kind==="show-not"}}var h={debug:!1,_started:!1,_unsubscribe:null,log(...t){this.debug&&console.log("[OptionVisibility]",...t)},findOptionAttributes(){let t=new Map;try{let e=document.evaluate('//*[@*[starts-with(name(), "option:") or starts-with(name(), "option-not:") or starts-with(name(), "show-when:") or starts-with(name(), "hide-when:")]]',document.documentElement,null,XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,null);for(let n=0;n<e.snapshotLength;n++){let r=e.snapshotItem(n);for(let i of r.attributes){let s=x(i.name,i.value);if(!s)continue;let o=`${s.prefix}:${s.name}=${s.rawValue}`;t.has(o)||t.set(o,s)}}}catch(e){this.log("XPath error, falling back to empty",e)}return[...t.values()]},generateCSS(t){return t.length?t.map(e=>{let{name:n,rawValue:r,values:i}=e,s=e.kind||(e.negated?"show-not":"show"),o=e.prefix||(s==="show-not"?"option-not":s==="hide"?"hide-when":"option"),a=CSS.escape(n),b=CSS.escape(r),u=`[${CSS.escape(o)}\\:${a}="${b}"]`,S=i.map(c=>`[${a}="${CSS.escape(c)}"]`),g=i.map(c=>`[${a}="${CSS.escape(c)}"] *`),p=[...S,...g].join(",");if(s==="hide")return`${u}:is(${p}){display:none!important}`;let l;if(s==="show-not"){let c=i.map($=>`[${a}="${CSS.escape($)}"]`).join(","),d=`[${a}]:not(${c})`;l=`${d},${d} *`}else l=p;return`${u}:not(:is(${l})){display:none!important}`}).join(""):""},update(){try{let t=this.findOptionAttributes(),e=this.generateCSS(t);m(w,e,n=>{n.setAttribute("clay","no-watch")}),this.log(`Generated ${t.length} rules`)}catch(t){console.error("[OptionVisibility] Error generating rules:",t)}},start(){if(!this._started){if(document.readyState==="loading"){document.addEventListener("DOMContentLoaded",()=>this.start(),{once:!0});return}this._started=!0,this.update(),this._unsubscribe=f.onAnyChange({debounce:200,selectorFilter:t=>[...t.attributes].some(e=>e.name.startsWith("option:")||e.name.startsWith("option-not:")||e.name.startsWith("show-when:")||e.name.startsWith("hide-when:")),omitChangeDetails:!0,require:"observed",pausable:!1},()=>this.update()),this.log("Started")}},stop(){if(!this._started)return;this._started=!1,this._unsubscribe&&(this._unsubscribe(),this._unsubscribe=null);let t=document.querySelector(`style[data-name="${w}"]`);t&&t.remove(),this.log("Stopped")}};window.clay.optionVisibility=h;var O=h;function _(){h.start()}_();export{O as default,_ as init,x as parseOptionAttribute};
@@ -1,4 +1,4 @@
1
- import{a as se,c as L}from"../c-BIJALSRD.js";import"../c-IW6GGOU2.js";import"../c-HAWFNBYG.js";import{b as he}from"../c-VJYEVRYK.js";import{P as Pe,Q as Ce,f as te,j as ge,k as de,l as le,m as ce,o as ue,r as be,t as fe,y as me}from"../c-4FJTBE6I.js";import"../c-EXKHPOVC.js";import"../c-L5VFATT6.js";import{n as oe}from"../c-CQQDL6O4.js";import"../c-ZGDYHKG3.js";import{a as pe,b as ie,d as ne}from"../c-W4JCVLAB.js";import"../c-7K4SCQB7.js";import"../c-WMRJKQ2V.js";import{A as ze,B as Ee,H as Ae,b as ae,c as re,f as R,k as ve,o as ke,w as we,z as ye}from"../c-AIWN4QN4.js";import{G as Y,J,N as Q,P as Z,S as ee,a as W,b as u,d as v,e as B,f as D,g as w,h as U,i as X,m as b,w as G}from"../c-QIXT3Q7C.js";import{a as q,c as Be,d as F}from"../c-EXEDYU4H.js";import{a as xe}from"../c-BYTKL6UX.js";import"../c-WCXLG3MV.js";import"../c-57XDY6HC.js";import{b as I}from"../c-GY422N3Q.js";import"../c-7SWMYKAI.js";import"../c-UGHH4MB3.js";import"../c-ZWIOJGMT.js";import"../c-IJUK2GPW.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var{Decoration:V,DecorationSet:qe}=v,Ve="Type / for blocks",$e="Untitled",He="To do";function _e(e){let a=!1,r=null;return e.forEach((o,t)=>{a||o.type!==b.nodes.heading||o.attrs.level!==1||(o.attrs.parent??null)!==null||(a=!0,o.content.size||(r=V.node(t,t+o.nodeSize,{class:"page-title-placeholder","data-placeholder":$e})))}),r}function Ne(e){let a=[];return e.forEach((r,o)=>{r.type!==b.nodes.list_item||r.attrs.kind!=="check"||r.content.size||r.attrs.checked||a.push(V.node(o,o+r.nodeSize,{class:"page-check-placeholder","data-placeholder":He}))}),a}function Se(e=Ve){return new u.Plugin({props:{decorations(a){let r=Ne(a.doc),o=_e(a.doc);o&&r.push(o);let{selection:t}=a;if(t.empty){let p=t.$from;if(p.depth===1){let n=p.parent;if(n.type===b.nodes.paragraph&&!n.content.size){let d=p.before(1);r.push(V.node(d,d+n.nodeSize,{class:"page-placeholder","data-placeholder":e}))}}}return r.length?qe.create(a.doc,r):null}}})}var De=new u.Plugin({props:{handleKeyDown(e,a){if(!(a.metaKey||a.ctrlKey)||!a.shiftKey||a.altKey)return!1;let r=a.key.toLowerCase()==="o"?"owner":a.key.toLowerCase()==="d"?"date":null;if(!r||e.dom.getAttribute(r==="owner"?"data-assignees":"data-dates")==="false")return!1;for(let o of pe.get(e)??[])if(o.focusControl?.(e,r))return!0;return!1}}});var Me="page-editor-style",We=[1,2,3,4,5,6,7,8],Ue=`
1
+ import{a as se,c as L}from"../c-JDZDF2QM.js";import"../c-IW6GGOU2.js";import"../c-HAWFNBYG.js";import{b as he}from"../c-VJYEVRYK.js";import{P as Pe,Q as Ce,f as te,j as ge,k as de,l as le,m as ce,o as ue,r as be,t as fe,y as me}from"../c-SJPD46ZO.js";import"../c-EXKHPOVC.js";import"../c-L5VFATT6.js";import{n as oe}from"../c-XQSXKIKM.js";import"../c-67ILSNPR.js";import{a as pe,b as ie,d as ne}from"../c-W4JCVLAB.js";import"../c-7K4SCQB7.js";import"../c-WMRJKQ2V.js";import{A as ze,B as Ee,H as Ae,b as ae,c as re,f as R,k as ve,o as ke,w as we,z as ye}from"../c-44B5ODN7.js";import{G as Y,J,N as Q,P as Z,S as ee,a as W,b as u,d as v,e as B,f as D,g as w,h as U,i as X,m as b,w as G}from"../c-QIXT3Q7C.js";import{a as q,c as Be,d as F}from"../c-LPUJXRXW.js";import{a as xe}from"../c-BYTKL6UX.js";import"../c-E4IBSAQM.js";import"../c-57XDY6HC.js";import{b as I}from"../c-RS77ODLY.js";import"../c-7SWMYKAI.js";import"../c-UGHH4MB3.js";import"../c-LA2BW7UY.js";import"../c-IJUK2GPW.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var{Decoration:V,DecorationSet:qe}=v,Ve="Type / for blocks",$e="Untitled",He="To do";function _e(e){let a=!1,r=null;return e.forEach((o,t)=>{a||o.type!==b.nodes.heading||o.attrs.level!==1||(o.attrs.parent??null)!==null||(a=!0,o.content.size||(r=V.node(t,t+o.nodeSize,{class:"page-title-placeholder","data-placeholder":$e})))}),r}function Ne(e){let a=[];return e.forEach((r,o)=>{r.type!==b.nodes.list_item||r.attrs.kind!=="check"||r.content.size||r.attrs.checked||a.push(V.node(o,o+r.nodeSize,{class:"page-check-placeholder","data-placeholder":He}))}),a}function Se(e=Ve){return new u.Plugin({props:{decorations(a){let r=Ne(a.doc),o=_e(a.doc);o&&r.push(o);let{selection:t}=a;if(t.empty){let p=t.$from;if(p.depth===1){let n=p.parent;if(n.type===b.nodes.paragraph&&!n.content.size){let d=p.before(1);r.push(V.node(d,d+n.nodeSize,{class:"page-placeholder","data-placeholder":e}))}}}return r.length?qe.create(a.doc,r):null}}})}var De=new u.Plugin({props:{handleKeyDown(e,a){if(!(a.metaKey||a.ctrlKey)||!a.shiftKey||a.altKey)return!1;let r=a.key.toLowerCase()==="o"?"owner":a.key.toLowerCase()==="d"?"date":null;if(!r||e.dom.getAttribute(r==="owner"?"data-assignees":"data-dates")==="false")return!1;for(let o of pe.get(e)??[])if(o.focusControl?.(e,r))return!0;return!1}}});var Me="page-editor-style",We=[1,2,3,4,5,6,7,8],Ue=`
2
2
  --page-bg: #F7F6F2; --page-ink: #23221F; --page-ink-soft: #6B6862; --page-ink-faint: #9B968C;
3
3
  --page-rule: rgba(35, 34, 31, 0.10); --page-accent: #2F5E9E; --page-link: #164583; --page-selection: rgba(88, 120, 170, 0.20);
4
4
  --page-check-border: rgba(35, 34, 31, 0.35); --page-check-fill: #23221F; --page-check-ink: #F7F6F2;
@@ -301,4 +301,4 @@ ${We.map(e=>`:where(article[data-page], .page-editor) .page-li[data-indent="${e}
301
301
  .page-dock, .page-plus, .page-grip, .page-toggle-button, .page-image-handle, .page-upload-bar > span, .page-board-person { transition: none; }
302
302
  }
303
303
  }
304
- `,Ge=(e,a)=>(a&&a(e.tr.replaceSelectionWith(b.nodes.hard_break.create()).scrollIntoView()),!0),Ye=(e,a,r)=>!a||!r?.editable||!G(e,b.marks.underline)?!1:(import("../c-7PYNAULW.js").then(({formatMark:o,refuse:t})=>o(r,"underline").then(p=>{p?.status!=="applied"&&t(r,p?.message??"That format isn\u2019t available here.")}),()=>null),!0),Je=({history:e=!0,undo:a,redo:r}={})=>({"Mod-z":e?B.undo:()=>(a?.(),!0),"Shift-Mod-z":e?B.redo:()=>(r?.(),!0),"Mod-y":e?B.redo:()=>(r?.(),!0),"Shift-Enter":Ge,"Mod-b":w.toggleMark(b.marks.strong),"Mod-i":w.toggleMark(b.marks.em),"Mod-u":Ye}),Qe=(e,a,r)=>ge(null,r)?!1:U.undoInputRule(e,a&&(o=>a(Ee(o)))),Ze={Backspace:w.chainCommands(Qe,ce),"Mod-e":w.toggleMark(b.marks.code),"Mod-Shift-s":w.toggleMark(b.marks.strike)},ea=(e,a)=>globalThis.clay?.upload?.(e,a)??Promise.resolve({ok:!1,code:"unavailable",msg:"File uploads are not available in this editor"}),Te=new WeakMap,T=new u.PluginKey("lazyViews"),$=class{constructor(a,r){this.node=a,this.type=a.type,this.registry=r;let{dom:o,contentDOM:t}=W.DOMSerializer.renderSpec(document,a.type.spec.toDOM(a));this.dom=o,this.contentDOM=t??null}update(a){return a.type===this.type&&!this.registry.has(a.type.name)}};function aa(){return new u.Plugin({key:T,state:{init:()=>v.DecorationSet.empty,apply(e){let a=e.getMeta(T);if(!a)return v.DecorationSet.empty;let r=[];return e.doc.forEach((o,t)=>{a.types.includes(o.type.name)&&r.push(v.Decoration.node(t,t+o.nodeSize,{},{lazyView:r.length+1}))}),v.DecorationSet.create(e.doc,r)}},props:{decorations:e=>T.getState(e)}})}function ra({view:e,upload:a,toolHost:r,board:o=null,undo:t=null,redo:p=null,revise:n=null,highlight:d},s,m){let x=m.createFeature({view:e,upload:a,toolHost:r,board:o,undo:t,redo:p,revise:n,highlight:d}),y=Te.get(e),z=()=>{if(x.css&&I(`page-feature-${s}`,x.css,`page-feature-${s}`,["editor-ui"]),!x.nodeViews)return;let A=Object.keys(x.nodeViews);for(let k of A)y.set(k,x.nodeViews[k]);e.dispatch(e.state.tr.setMeta(T,{types:A}).setMeta("addToHistory",!1))},E=()=>{e.isDestroyed||(e.composing?setTimeout(E,25):z())};return e.composing?e.dom.addEventListener("compositionend",()=>setTimeout(E,25),{once:!0}):z(),x}function oa(e){return new u.Plugin({view(a){let r=new Set,o=()=>{for(let p of r)e.has(p)&&r.delete(p);a.state.doc.forEach(p=>{let n=Be(p);!n||e.has(n)||r.has(n)||e.ensure(n).catch(()=>{r.add(n)})})},t=a.state.doc;return o(),{update(){a.state.doc!==t&&(t=a.state.doc,o())}}}})}function ta({load:e=()=>Promise.reject(new Error("page: this editor has no command module")),context:a=()=>({}),reportError:r}={}){let o=new Map,t=new Set,p=null,n=null,d=!0,s=!1,m=0,x=l=>{let g=o.get(l);return g||(g=Promise.resolve(e(l)),o.set(l,g),g.catch(()=>{o.get(l)===g&&o.delete(l)})),g},y=()=>(n??=L({load:x,install:(l,g)=>g.createFeature(a(p)),reportError:r??((l,g)=>console.error(`clayjs: the ${g} command failed to load`,l))}),n),z=()=>{let l=m,g=p.state.selection;return{revision:l,selection:g,valid:()=>d&&!s&&!p.isDestroyed&&m===l&&p.state.selection.eq(g)}};function E(l,g){l.doc!==g.doc&&(m+=1);for(let h of t)h.lease.valid()||(t.delete(h),h.controller.abort({ok:!1,code:"stale-target"}))}async function A(l,g){if(!d||s||!p||p.isDestroyed)return{ok:!1,code:"not-editing"};let h={lease:z(),controller:new AbortController};t.add(h);try{let c=await y().ensure(l,{signal:h.controller.signal});return c?h.lease.valid()?await c.run(g):{ok:!1,code:"stale-target"}:{ok:!1,code:"not-editing"}}catch(c){return h.controller.signal.aborted?h.controller.signal.reason:{ok:!1,code:"unavailable",error:c}}finally{t.delete(h)}}function k(){if(d){d=!1;for(let l of t)l.controller.abort({ok:!1,code:"not-editing"});t.clear()}}function S(){k(),n?.dispose(),n=null}return{attach(l){p=l},observe:E,run:A,enter(){s||(d=!0)},quiesce:k,leave:S,dispose(){S(),s=!0,d=!1,o.clear()}}}var H=new WeakMap;function pa(e){return new u.Plugin({view:()=>({update:(a,r)=>e.observe(a.state,r)}),props:{handleTextInput(a,r,o,t){return t!=="@"||a.composing||!Object.hasOwn(F,"mentions")?!1:(a.dispatch(a.state.tr.insertText("@",r,o)),e.run("mentions",{from:r,to:r+1}),!0)}}})}function qa(e,a,r){let o=e?H.get(e):null;return o?Object.hasOwn(F,a)?o.run(a,r):Promise.resolve({ok:!1,code:"unknown-command"}):Promise.resolve({ok:!1,code:"not-editing"})}function ia(e){return new u.Plugin({view(a){let r=e?()=>e.tablesChanged():()=>xe.get(a)?.tablesChanged?.(),o=a.state.doc;return{update(t){t.state.doc!==o&&(o=t.state.doc,r())}}}})}function na({upload:e=ea,highlight:a,history:r=!0,undo:o,redo:t,onAiTool:p=null,toolHost:n=null,features:d=null,commandHost:s=null}={}){return[re(),me({onAiTool:p}),s?pa(s):null,fe(),ia(n),ae(),ue(),Ae(),de(),le(),Se(),se(),D.keymap(Ze),Pe,De,D.keymap(ze),D.keymap(Je({history:r,undo:o,redo:t})),D.keymap(w.baseKeymap),ve(),ee(),Ce(),ne(),te({upload:e}),we(),oe({upload:e,features:d}),he(),ye(),be(),r?B.history():null,X.gapCursor(),aa(),d?oa(d):null].filter(Boolean)}function ga(e,a={}){let r=e&&Object.keys(e).length?e:{[J()]:{t:"paragraph",pos:Y(),c:""}},o=a.doc??Z(b,r);return u.EditorState.create({doc:o,plugins:na(a)})}function Va(e){!e||e.isDestroyed||e.updateState(e.state)}function $a(e,a,{quiesce:r=!1}={}){if(!e||e.isDestroyed)return!1;let o=a===!0;e.setProps({editable:()=>o});let t=H.get(e);return o?t?.enter():r?t?.quiesce():t?.leave(),o}function da(e,a){let r=a.target.closest?.('.page-li[data-kind="check"]');if(!r||!e.dom.contains(r))return!1;let o=r.getBoundingClientRect(),t=parseFloat(getComputedStyle(r).paddingInlineStart)||0,p=getComputedStyle(r).direction==="rtl"?o.right-a.clientX:a.clientX-o.left;if(p<0||p>t)return!1;let n=e.posAtDOM(r,0)-1,d=e.state.doc.nodeAt(n);return d?(a.preventDefault(),e.dispatch(e.state.tr.setNodeMarkup(n,null,{...d.attrs,checked:!d.attrs.checked})),!0):!1}function Ha(e,{blocks:a=null,onChange:r=null,upload:o,highlight:t,doc:p,dispatch:n,history:d=!0,undo:s,redo:m,editable:x=!0,toolHost:y=null,onAiTool:z=null,reviseTool:E=null,board:A=null,features:k=null,formatGate:S=null}={}){let l=e.ownerDocument;I(Me,Xe,Me,["editor-ui"]);let g=l.createElement("div");g.className="page-shell",g.setAttribute("clay","editor-ui"),g.setAttribute("sap-ignore",""),e.appendChild(g);let h=!1,c=null,O=k??L({load:i=>q[i].load(),install:(i,f)=>ra({view:c,upload:o,toolHost:y,board:A,undo:s,redo:m,revise:E,highlight:t},i,f)}),M=ta({load:i=>F[i].load(),context:i=>({view:i,upload:o})}),j=new Map,_={};for(let i of Object.values(q))for(let f of i.views??i.types)_[f]=(C,Ke,Ie,Le,Re)=>{let N=j.get(C.type.name);return N?N(C,Ke,Ie,Le,Re):new $(C,j)};c=new v.EditorView(g,{state:ga(a,{upload:o,highlight:t,doc:p,history:d,undo:s,redo:m,onAiTool:z,toolHost:y,features:O,commandHost:M}),attributes:{class:"page-editor"},scrollMargin:{top:16,bottom:96,left:5,right:5},scrollThreshold:{top:16,bottom:96,left:0,right:0},editable:()=>x,nodeViews:_,handleDOMEvents:{mousedown:da,dragstart(i,f){let C=i.state.selection;return C instanceof u.NodeSelection||C instanceof ke?(f.preventDefault(),!0):!1}},dispatchTransaction(i){if(n){n(i);return}h&&i.docChanged&&!i.getMeta(R)&&B.closeHistory(i),i.docChanged&&(h=!!i.getMeta(R));let f=c.state.doc;c.updateState(c.state.apply(i)),r&&c.state.doc!==f&&r(Q(c.state.doc))}}),Te.set(c,j),ie.set(c,O),M.attach(c),H.set(c,M);let Oe=c.destroy.bind(c),P=null,K=!1,je=()=>(P||(P=Promise.resolve().then(()=>S()).catch(i=>{throw P=null,i})),P);return c.runFormatCommand=async i=>{if(K)return{status:"disposed",retry:!1};if(!S)return{status:"unsupported-host",code:"page-format-unsupported",retry:!1};let f=await je();return K?(f.dispose?.(),{status:"disposed",retry:!1}):f.run({apply:i})},c.destroy=()=>{K=!0,P&&P.then(i=>i?.dispose?.(),()=>{}),M.dispose(),O.dispose(),Oe()},c}export{Xe as PAGE_EDITOR_CSS,Ha as createPageEditor,ra as installPageFeature,T as lazyViewsKey,aa as lazyViewsPlugin,na as pagePlugins,ga as pageState,Va as refreshMountedView,qa as runPageCommand,$a as setEditorActive};
304
+ `,Ge=(e,a)=>(a&&a(e.tr.replaceSelectionWith(b.nodes.hard_break.create()).scrollIntoView()),!0),Ye=(e,a,r)=>!a||!r?.editable||!G(e,b.marks.underline)?!1:(import("../c-VBLFAQD2.js").then(({formatMark:o,refuse:t})=>o(r,"underline").then(p=>{p?.status!=="applied"&&t(r,p?.message??"That format isn\u2019t available here.")}),()=>null),!0),Je=({history:e=!0,undo:a,redo:r}={})=>({"Mod-z":e?B.undo:()=>(a?.(),!0),"Shift-Mod-z":e?B.redo:()=>(r?.(),!0),"Mod-y":e?B.redo:()=>(r?.(),!0),"Shift-Enter":Ge,"Mod-b":w.toggleMark(b.marks.strong),"Mod-i":w.toggleMark(b.marks.em),"Mod-u":Ye}),Qe=(e,a,r)=>ge(null,r)?!1:U.undoInputRule(e,a&&(o=>a(Ee(o)))),Ze={Backspace:w.chainCommands(Qe,ce),"Mod-e":w.toggleMark(b.marks.code),"Mod-Shift-s":w.toggleMark(b.marks.strike)},ea=(e,a)=>globalThis.clay?.upload?.(e,a)??Promise.resolve({ok:!1,code:"unavailable",msg:"File uploads are not available in this editor"}),Te=new WeakMap,T=new u.PluginKey("lazyViews"),$=class{constructor(a,r){this.node=a,this.type=a.type,this.registry=r;let{dom:o,contentDOM:t}=W.DOMSerializer.renderSpec(document,a.type.spec.toDOM(a));this.dom=o,this.contentDOM=t??null}update(a){return a.type===this.type&&!this.registry.has(a.type.name)}};function aa(){return new u.Plugin({key:T,state:{init:()=>v.DecorationSet.empty,apply(e){let a=e.getMeta(T);if(!a)return v.DecorationSet.empty;let r=[];return e.doc.forEach((o,t)=>{a.types.includes(o.type.name)&&r.push(v.Decoration.node(t,t+o.nodeSize,{},{lazyView:r.length+1}))}),v.DecorationSet.create(e.doc,r)}},props:{decorations:e=>T.getState(e)}})}function ra({view:e,upload:a,toolHost:r,board:o=null,undo:t=null,redo:p=null,revise:n=null,highlight:d},s,m){let x=m.createFeature({view:e,upload:a,toolHost:r,board:o,undo:t,redo:p,revise:n,highlight:d}),y=Te.get(e),z=()=>{if(x.css&&I(`page-feature-${s}`,x.css,`page-feature-${s}`,["editor-ui"]),!x.nodeViews)return;let A=Object.keys(x.nodeViews);for(let k of A)y.set(k,x.nodeViews[k]);e.dispatch(e.state.tr.setMeta(T,{types:A}).setMeta("addToHistory",!1))},E=()=>{e.isDestroyed||(e.composing?setTimeout(E,25):z())};return e.composing?e.dom.addEventListener("compositionend",()=>setTimeout(E,25),{once:!0}):z(),x}function oa(e){return new u.Plugin({view(a){let r=new Set,o=()=>{for(let p of r)e.has(p)&&r.delete(p);a.state.doc.forEach(p=>{let n=Be(p);!n||e.has(n)||r.has(n)||e.ensure(n).catch(()=>{r.add(n)})})},t=a.state.doc;return o(),{update(){a.state.doc!==t&&(t=a.state.doc,o())}}}})}function ta({load:e=()=>Promise.reject(new Error("page: this editor has no command module")),context:a=()=>({}),reportError:r}={}){let o=new Map,t=new Set,p=null,n=null,d=!0,s=!1,m=0,x=l=>{let g=o.get(l);return g||(g=Promise.resolve(e(l)),o.set(l,g),g.catch(()=>{o.get(l)===g&&o.delete(l)})),g},y=()=>(n??=L({load:x,install:(l,g)=>g.createFeature(a(p)),reportError:r??((l,g)=>console.error(`clayjs: the ${g} command failed to load`,l))}),n),z=()=>{let l=m,g=p.state.selection;return{revision:l,selection:g,valid:()=>d&&!s&&!p.isDestroyed&&m===l&&p.state.selection.eq(g)}};function E(l,g){l.doc!==g.doc&&(m+=1);for(let h of t)h.lease.valid()||(t.delete(h),h.controller.abort({ok:!1,code:"stale-target"}))}async function A(l,g){if(!d||s||!p||p.isDestroyed)return{ok:!1,code:"not-editing"};let h={lease:z(),controller:new AbortController};t.add(h);try{let c=await y().ensure(l,{signal:h.controller.signal});return c?h.lease.valid()?await c.run(g):{ok:!1,code:"stale-target"}:{ok:!1,code:"not-editing"}}catch(c){return h.controller.signal.aborted?h.controller.signal.reason:{ok:!1,code:"unavailable",error:c}}finally{t.delete(h)}}function k(){if(d){d=!1;for(let l of t)l.controller.abort({ok:!1,code:"not-editing"});t.clear()}}function S(){k(),n?.dispose(),n=null}return{attach(l){p=l},observe:E,run:A,enter(){s||(d=!0)},quiesce:k,leave:S,dispose(){S(),s=!0,d=!1,o.clear()}}}var H=new WeakMap;function pa(e){return new u.Plugin({view:()=>({update:(a,r)=>e.observe(a.state,r)}),props:{handleTextInput(a,r,o,t){return t!=="@"||a.composing||!Object.hasOwn(F,"mentions")?!1:(a.dispatch(a.state.tr.insertText("@",r,o)),e.run("mentions",{from:r,to:r+1}),!0)}}})}function qa(e,a,r){let o=e?H.get(e):null;return o?Object.hasOwn(F,a)?o.run(a,r):Promise.resolve({ok:!1,code:"unknown-command"}):Promise.resolve({ok:!1,code:"not-editing"})}function ia(e){return new u.Plugin({view(a){let r=e?()=>e.tablesChanged():()=>xe.get(a)?.tablesChanged?.(),o=a.state.doc;return{update(t){t.state.doc!==o&&(o=t.state.doc,r())}}}})}function na({upload:e=ea,highlight:a,history:r=!0,undo:o,redo:t,onAiTool:p=null,toolHost:n=null,features:d=null,commandHost:s=null}={}){return[re(),me({onAiTool:p}),s?pa(s):null,fe(),ia(n),ae(),ue(),Ae(),de(),le(),Se(),se(),D.keymap(Ze),Pe,De,D.keymap(ze),D.keymap(Je({history:r,undo:o,redo:t})),D.keymap(w.baseKeymap),ve(),ee(),Ce(),ne(),te({upload:e}),we(),oe({upload:e,features:d}),he(),ye(),be(),r?B.history():null,X.gapCursor(),aa(),d?oa(d):null].filter(Boolean)}function ga(e,a={}){let r=e&&Object.keys(e).length?e:{[J()]:{t:"paragraph",pos:Y(),c:""}},o=a.doc??Z(b,r);return u.EditorState.create({doc:o,plugins:na(a)})}function Va(e){!e||e.isDestroyed||e.updateState(e.state)}function $a(e,a,{quiesce:r=!1}={}){if(!e||e.isDestroyed)return!1;let o=a===!0;e.setProps({editable:()=>o});let t=H.get(e);return o?t?.enter():r?t?.quiesce():t?.leave(),o}function da(e,a){let r=a.target.closest?.('.page-li[data-kind="check"]');if(!r||!e.dom.contains(r))return!1;let o=r.getBoundingClientRect(),t=parseFloat(getComputedStyle(r).paddingInlineStart)||0,p=getComputedStyle(r).direction==="rtl"?o.right-a.clientX:a.clientX-o.left;if(p<0||p>t)return!1;let n=e.posAtDOM(r,0)-1,d=e.state.doc.nodeAt(n);return d?(a.preventDefault(),e.dispatch(e.state.tr.setNodeMarkup(n,null,{...d.attrs,checked:!d.attrs.checked})),!0):!1}function Ha(e,{blocks:a=null,onChange:r=null,upload:o,highlight:t,doc:p,dispatch:n,history:d=!0,undo:s,redo:m,editable:x=!0,toolHost:y=null,onAiTool:z=null,reviseTool:E=null,board:A=null,features:k=null,formatGate:S=null}={}){let l=e.ownerDocument;I(Me,Xe,Me,["editor-ui"]);let g=l.createElement("div");g.className="page-shell",g.setAttribute("clay","editor-ui"),g.setAttribute("sap-ignore",""),e.appendChild(g);let h=!1,c=null,O=k??L({load:i=>q[i].load(),install:(i,f)=>ra({view:c,upload:o,toolHost:y,board:A,undo:s,redo:m,revise:E,highlight:t},i,f)}),M=ta({load:i=>F[i].load(),context:i=>({view:i,upload:o})}),j=new Map,_={};for(let i of Object.values(q))for(let f of i.views??i.types)_[f]=(C,Ke,Ie,Le,Re)=>{let N=j.get(C.type.name);return N?N(C,Ke,Ie,Le,Re):new $(C,j)};c=new v.EditorView(g,{state:ga(a,{upload:o,highlight:t,doc:p,history:d,undo:s,redo:m,onAiTool:z,toolHost:y,features:O,commandHost:M}),attributes:{class:"page-editor"},scrollMargin:{top:16,bottom:96,left:5,right:5},scrollThreshold:{top:16,bottom:96,left:0,right:0},editable:()=>x,nodeViews:_,handleDOMEvents:{mousedown:da,dragstart(i,f){let C=i.state.selection;return C instanceof u.NodeSelection||C instanceof ke?(f.preventDefault(),!0):!1}},dispatchTransaction(i){if(n){n(i);return}h&&i.docChanged&&!i.getMeta(R)&&B.closeHistory(i),i.docChanged&&(h=!!i.getMeta(R));let f=c.state.doc;c.updateState(c.state.apply(i)),r&&c.state.doc!==f&&r(Q(c.state.doc))}}),Te.set(c,j),ie.set(c,O),M.attach(c),H.set(c,M);let Oe=c.destroy.bind(c),P=null,K=!1,je=()=>(P||(P=Promise.resolve().then(()=>S()).catch(i=>{throw P=null,i})),P);return c.runFormatCommand=async i=>{if(K)return{status:"disposed",retry:!1};if(!S)return{status:"unsupported-host",code:"page-format-unsupported",retry:!1};let f=await je();return K?(f.dispose?.(),{status:"disposed",retry:!1}):f.run({apply:i})},c.destroy=()=>{K=!0,P&&P.then(i=>i?.dispose?.(),()=>{}),M.dispose(),O.dispose(),Oe()},c}export{Xe as PAGE_EDITOR_CSS,Ha as createPageEditor,ra as installPageFeature,T as lazyViewsKey,aa as lazyViewsPlugin,na as pagePlugins,ga as pageState,Va as refreshMountedView,qa as runPageCommand,$a as setEditorActive};
@@ -1,4 +1,4 @@
1
- import{a as Ce}from"../c-AQYCG7QW.js";import{c as Se}from"../c-FTQKI7SP.js";import{e as $e,g as N,h as Be,j as ae,l as ve,n as Ee,p as Pe,q as d}from"../c-BJ7YQ5QZ.js";import{a as De}from"../c-4JZDZFF6.js";import{b as W,c as ye,d as re,e as w,f as Fe}from"../c-VAK7SG37.js";import{b as T}from"../c-MHI3GYKF.js";import{b as Ke}from"../c-PLP4JKFC.js";import{a as le,b as We}from"../c-QTTJYJMA.js";import{b as m}from"../c-NUHP2XDB.js";import"../c-Q26MME6N.js";import{a as Ne}from"../c-VKEDWYDF.js";import{m as _e,n as se}from"../c-ZKNBMNN3.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-FWKHM4E7.js";import"../c-5JLFROUB.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import{a as xe}from"../c-ZWIOJGMT.js";import"../c-B7J4K2AE.js";import"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import"../c-NQJRVJ56.js";import"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import{k as He}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-7MG5RU63.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import{h as J,o as Ie}from"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var Ye="ai-edit",ft="h1,h2,h3,h4,h5,h6,p,figure",pt="p,h1,h2,h3,h4,h5,h6,li,dt,dd,blockquote,pre,figcaption,td,th",ht="section,article,aside,header,footer,nav,main,div,ul,ol,dl,table,figure,form",Je="script,style,template,textarea,input,select,button,iframe,svg,math",mt=900*1024,gt="This section is too large for AI editing; select a smaller part.",bt="The save did not finish; the edit is still on the page.",wt=0,a=null,r,g,c,y,E,h,b,v,L,D,$,B,R,F={},p=null,k=null,H=null,de=!1,ie=new WeakMap,ge=new Set,f=null,U=null,x=null,_,P,ue=null,C=null,z=null,A=null,Z=null,fe=[],q=null,Ae=0;function Xe(e){ie.delete(e),ge.delete(e)}function Me(e,t){if(!t){Xe(e);return}ie.set(e,t),ge.add(e)}var Qe="clay-ai-edit",qe="AI editing is turned off. Turn it on from the app\u2019s menu.";async function Ze(){let t=(await Se.helpers()).find(n=>n.name===Ye);return t&&(t.state==="ready"||t.state==="unavailable")?t.state:null}function xt(){xe.pause()}function Re(){xe.resume()}function ce(e){if(!(e instanceof Element))return null;let t=e.closest("[data-edit-id]");if(!t)return null;let n=e.closest(ft);return n&&t.contains(n)?n:t}function yt(e){if(e===document.body)return"document";let t=e.getAttribute("data-edit-id");if(t)return t;let n=e.closest("[data-edit-id]");return n?n.getAttribute("data-edit-id")+" \u203A "+e.tagName.toLowerCase():e.id?"#"+e.id:e.tagName.toLowerCase()}function be(){let e=window.getSelection();return!e||e.rangeCount===0||e.isCollapsed?null:e.getRangeAt(0)}function et(e){let t=e.commonAncestorContainer;if(t.nodeType!==1&&(t=t.parentElement),!t||!document.body.contains(t))return null;if(t===document.body)return document.body;if(t.closest("[data-clay-ai-edit]")||t.closest(J)||t.closest(Je))return null;if(t.closest("[data-edit-id]"))return ce(t);let n=t.closest(pt)||t.closest(ht);return n&&n!==document.body?n:null}function tt(e,t){if(!e||!t||!t.contains(e.commonAncestorContainer))return;let n=e.toString();if(!n.trim())return;let i=document.createRange();i.selectNodeContents(t),i.setEnd(e.startContainer,e.startOffset);let o=i.toString().length;return{text:n,start:o,end:o+n.length}}function pe(e){let t=be();if(t){if(e===document.body){let n=t.toString();return n.trim()?{text:n,start:void 0,end:void 0}:void 0}return tt(t,e)}}function nt(){let e=document.body.cloneNode(!0);return e.querySelectorAll(J).forEach(t=>t.remove()),e.outerHTML}function vt(e,t,n){let{HyperMorph:i}=le();return i.morph(e,t,{morphStyle:"outerHTML",restoreFocus:!0,scripts:n})}function he(e,t,{rewind:n=!1}={}){let{HyperMorph:i,mergeTagRecognizers:o}=le(),s=n?{merge:!1,handle:!1}:{mergeBase:e.snapshot,mergeTags:o,handle:!1};e.docMode?(typeof t=="string"&&(t=new DOMParser().parseFromString(t,"text/html").body),i.morph(document.body,t,{morphStyle:"outerHTML",restoreFocus:document.activeElement?.localName!=="clay-editor-ui",scripts:s,callbacks:{beforeNodeRemoved:l=>!(l.nodeType===1&&l.matches(J))}})):vt(e.el,t,s),Ke()}function Et(e,t){let n=e.search(new RegExp("<"+t+"(\\s|>)","i"));if(n===-1)return null;let i=e.slice(n).replace(/\s*`{1,3}\s*$/,"");if(t.toLowerCase()==="body")return new DOMParser().parseFromString(i,"text/html").body;let o=document.createElement("template");o.innerHTML=i;let s=o.content.firstElementChild;return!s||s.tagName.toLowerCase()!==t.toLowerCase()?null:s}function Ct(e,t,n){let i=e===document.body,o=[...t.matchAll(/(?<![\w\u00C0-\u024F.@\/:-])@([\w.-]*[/.][\w./-]*)/g)].map(u=>u[1].replace(/\.+$/,"")).filter(u=>u!=="page").filter(u=>/[/.]/.test(u)),s=i?nt():e.outerHTML,l={id:"req-"+Date.now().toString(36)+"-"+ ++wt,editId:yt(e),tag:e.tagName.toLowerCase(),elementHTML:s,comment:t,contextRefs:o};return n&&(l.quote=n.text,Number.isInteger(n.start)&&(l.selection={start:n.start,end:n.end})),!i&&/(?<![\w\u00C0-\u024F.@\/:-])@page(?![\w\/-]|\.\w)/.test(t)&&(l.page=!0),{id:l.id,el:e,docMode:i,tag:l.tag,reassertId:i?null:e.getAttribute("data-edit-id"),snapshot:s,payload:l,state:"requesting",paused:!1,handle:null,finalCandidate:null}}async function St(e,t,n){if(a=Ct(e,t,n),new Blob([JSON.stringify(a.payload)]).size>mt){a=null,me(gt,"warn");return}if(Me(e,t),Pt(),a.paused=!0,xt(),k={},te("working"),O("Sending\u2026"),a.payload.page&&await window.clay.save(),!a)return;let i=Se.send(a.payload,{helper:Ye,onStatus:({text:s})=>{a?.handle===i&&O(s)}});a.handle=i;let o=await i.done;!a||a.handle!==i||(await We(),!(!a||a.handle!==i)&&(o.state==="done"?kt(o.result||{}):o.state==="cancelled"?Q("HTML Clay stopped this edit."):Q(o.error||"the helper reported an error")))}var Tt=/^(on|hx-on|x-|@|:|v-on:|v-bind:|data-on[-:])/,Lt=new Set(["iframe","frame","object","embed","base","link"]);function At(e){let t=e.replace(/[\t\n\r]/g,"").replace(/^[\u0000- ]+/,"").toLowerCase();return t.startsWith("javascript:")||t.startsWith("vbscript:")}function Mt(e){let t=(e.getAttribute("type")||"").trim().toLowerCase();return!t||/javascript|ecmascript/.test(t)||["module","importmap","speculationrules"].includes(t)}function Te(e){return[...e.attributes].map(t=>t.name.toLowerCase()+"="+t.value).sort().join(" ")}function ze(e){let t=new Map,n=i=>t.set(i,(t.get(i)||0)+1);for(let i of[e,...e.querySelectorAll("*")]){let o=i.tagName.toLowerCase();o==="script"?Mt(i)&&n("script "+Te(i)+"|"+i.textContent.trim()):(Lt.has(o)||o==="meta"&&i.hasAttribute("http-equiv")||(o==="animate"||o==="set")&&/href/i.test(i.getAttribute("attributeName")||""))&&n(o+" "+Te(i));for(let s of i.attributes){let l=s.name.toLowerCase();Tt.test(l)?n(o+" "+l+"="+s.value.trim()):l==="srcdoc"?n(o+" srcdoc="+s.value):At(s.value)&&n(o+" "+l+"="+s.value)}}return t}function Rt(e,t,n){let i=n?new DOMParser().parseFromString(t,"text/html").body:(()=>{let s=document.createElement("template");return s.innerHTML=t,s.content.firstElementChild})(),o=i?ze(i):new Map;for(let[s,l]of ze(e))if(l>(o.get(s)||0))return!0;return!1}var Ot="The reply adds a script or event handler, so it was not applied. AI editing changes content, not code.";function kt(e){if(!a||a.state!=="requesting")return;a.state="deciding";let t=[],n=Et(e.html||"",a.tag);if(!n){Q(`reply is not a single <${a.tag}> element`);return}if(!a.docMode){let i=document.createElement("template");i.innerHTML=e.html||"",i.content.children.length>1&&t.push("reply had extra root elements \u2014 kept the first")}if(a.reassertId&&n.setAttribute("data-edit-id",a.reassertId),Rt(n,a.snapshot,a.docMode)){Q(Ot);return}_e(),a.held=!0,a.finalCandidate=n;try{he(a,n)}catch(i){Q("the reply could not be applied: "+(i?.message||i));return}S(),Xe(a.el),te("ready"),O(Ht(t,e.model),t.length?"warn":"")}function Ht(e,t){let n=["Edit ready.",...e.map(i=>"\u26A0 "+i)];return t&&n.push(`(${t})`),n.join(" ")}function Q(e){a&&(oe(),te("error"),O(e,"warn"))}function oe(){let e=a;if(a=null,!!e)try{(e.state==="requesting"||e.state==="deciding")&&le()&&he(e,e.snapshot,{rewind:!0})}finally{e.paused&&Re(),e.held&&se(),S()}}async function it(){let e=a;if(!e)return;a=null;let t=e.docMode?nt():e.el.outerHTML;try{he(e,e.snapshot,{rewind:!0})}finally{e.paused&&Re(),e.held&&se({replay:!1})}he(e,t),S(),te("saving"),O("Saving\u2026");let n=k,i=await window.clay.save();if(n===k){if(i&&i.ok===!1){te("error"),O(i.msg||bt,"warn");return}O(i&&i.msg||"Saved",i&&i.msgType==="error"?"warn":""),Bt()}}function ot(){a?.handle?.cancel(),oe(),V()}var Ge=["z-index:99999","padding:0","display:inline-grid","place-items:center","line-height:1",`box-shadow:${re}`];function K(e,t,n){return e.setAttribute(t,n),e}function It(){let{signal:e}=Z;q=document.createElement("style"),q.setAttribute("clay",$e),q.textContent=`
1
+ import{a as Ce}from"../c-AQYCG7QW.js";import{c as Se}from"../c-I2IFKJX2.js";import{e as $e,g as N,h as Be,j as ae,l as ve,n as Ee,p as Pe,q as d}from"../c-BJ7YQ5QZ.js";import{a as De}from"../c-4JZDZFF6.js";import{b as W,c as ye,d as re,e as w,f as Fe}from"../c-VAK7SG37.js";import{b as T}from"../c-MHI3GYKF.js";import{b as Ke}from"../c-TUGVINJR.js";import{a as le,b as We}from"../c-FILLTJA7.js";import{b as m}from"../c-NUHP2XDB.js";import"../c-TWCXBWS3.js";import{a as Ne}from"../c-VKEDWYDF.js";import{m as _e,n as se}from"../c-NLZ5AN4L.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-GSRLXYWL.js";import"../c-X5LNHET5.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import{a as xe}from"../c-LA2BW7UY.js";import"../c-GVPNDIKJ.js";import"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import"../c-NQJRVJ56.js";import"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import{k as He}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-EGTIAL6P.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import{h as J,o as Ie}from"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var Ye="ai-edit",ft="h1,h2,h3,h4,h5,h6,p,figure",pt="p,h1,h2,h3,h4,h5,h6,li,dt,dd,blockquote,pre,figcaption,td,th",ht="section,article,aside,header,footer,nav,main,div,ul,ol,dl,table,figure,form",Je="script,style,template,textarea,input,select,button,iframe,svg,math",mt=900*1024,gt="This section is too large for AI editing; select a smaller part.",bt="The save did not finish; the edit is still on the page.",wt=0,a=null,r,g,c,y,E,h,b,v,L,D,$,B,R,F={},p=null,k=null,H=null,de=!1,ie=new WeakMap,ge=new Set,f=null,U=null,x=null,_,P,ue=null,C=null,z=null,A=null,Z=null,fe=[],q=null,Ae=0;function Xe(e){ie.delete(e),ge.delete(e)}function Me(e,t){if(!t){Xe(e);return}ie.set(e,t),ge.add(e)}var Qe="clay-ai-edit",qe="AI editing is turned off. Turn it on from the app\u2019s menu.";async function Ze(){let t=(await Se.helpers()).find(n=>n.name===Ye);return t&&(t.state==="ready"||t.state==="unavailable")?t.state:null}function xt(){xe.pause()}function Re(){xe.resume()}function ce(e){if(!(e instanceof Element))return null;let t=e.closest("[data-edit-id]");if(!t)return null;let n=e.closest(ft);return n&&t.contains(n)?n:t}function yt(e){if(e===document.body)return"document";let t=e.getAttribute("data-edit-id");if(t)return t;let n=e.closest("[data-edit-id]");return n?n.getAttribute("data-edit-id")+" \u203A "+e.tagName.toLowerCase():e.id?"#"+e.id:e.tagName.toLowerCase()}function be(){let e=window.getSelection();return!e||e.rangeCount===0||e.isCollapsed?null:e.getRangeAt(0)}function et(e){let t=e.commonAncestorContainer;if(t.nodeType!==1&&(t=t.parentElement),!t||!document.body.contains(t))return null;if(t===document.body)return document.body;if(t.closest("[data-clay-ai-edit]")||t.closest(J)||t.closest(Je))return null;if(t.closest("[data-edit-id]"))return ce(t);let n=t.closest(pt)||t.closest(ht);return n&&n!==document.body?n:null}function tt(e,t){if(!e||!t||!t.contains(e.commonAncestorContainer))return;let n=e.toString();if(!n.trim())return;let i=document.createRange();i.selectNodeContents(t),i.setEnd(e.startContainer,e.startOffset);let o=i.toString().length;return{text:n,start:o,end:o+n.length}}function pe(e){let t=be();if(t){if(e===document.body){let n=t.toString();return n.trim()?{text:n,start:void 0,end:void 0}:void 0}return tt(t,e)}}function nt(){let e=document.body.cloneNode(!0);return e.querySelectorAll(J).forEach(t=>t.remove()),e.outerHTML}function vt(e,t,n){let{HyperMorph:i}=le();return i.morph(e,t,{morphStyle:"outerHTML",restoreFocus:!0,scripts:n})}function he(e,t,{rewind:n=!1}={}){let{HyperMorph:i,mergeTagRecognizers:o}=le(),s=n?{merge:!1,handle:!1}:{mergeBase:e.snapshot,mergeTags:o,handle:!1};e.docMode?(typeof t=="string"&&(t=new DOMParser().parseFromString(t,"text/html").body),i.morph(document.body,t,{morphStyle:"outerHTML",restoreFocus:document.activeElement?.localName!=="clay-editor-ui",scripts:s,callbacks:{beforeNodeRemoved:l=>!(l.nodeType===1&&l.matches(J))}})):vt(e.el,t,s),Ke()}function Et(e,t){let n=e.search(new RegExp("<"+t+"(\\s|>)","i"));if(n===-1)return null;let i=e.slice(n).replace(/\s*`{1,3}\s*$/,"");if(t.toLowerCase()==="body")return new DOMParser().parseFromString(i,"text/html").body;let o=document.createElement("template");o.innerHTML=i;let s=o.content.firstElementChild;return!s||s.tagName.toLowerCase()!==t.toLowerCase()?null:s}function Ct(e,t,n){let i=e===document.body,o=[...t.matchAll(/(?<![\w\u00C0-\u024F.@\/:-])@([\w.-]*[/.][\w./-]*)/g)].map(u=>u[1].replace(/\.+$/,"")).filter(u=>u!=="page").filter(u=>/[/.]/.test(u)),s=i?nt():e.outerHTML,l={id:"req-"+Date.now().toString(36)+"-"+ ++wt,editId:yt(e),tag:e.tagName.toLowerCase(),elementHTML:s,comment:t,contextRefs:o};return n&&(l.quote=n.text,Number.isInteger(n.start)&&(l.selection={start:n.start,end:n.end})),!i&&/(?<![\w\u00C0-\u024F.@\/:-])@page(?![\w\/-]|\.\w)/.test(t)&&(l.page=!0),{id:l.id,el:e,docMode:i,tag:l.tag,reassertId:i?null:e.getAttribute("data-edit-id"),snapshot:s,payload:l,state:"requesting",paused:!1,handle:null,finalCandidate:null}}async function St(e,t,n){if(a=Ct(e,t,n),new Blob([JSON.stringify(a.payload)]).size>mt){a=null,me(gt,"warn");return}if(Me(e,t),Pt(),a.paused=!0,xt(),k={},te("working"),O("Sending\u2026"),a.payload.page&&await window.clay.save(),!a)return;let i=Se.send(a.payload,{helper:Ye,onStatus:({text:s})=>{a?.handle===i&&O(s)}});a.handle=i;let o=await i.done;!a||a.handle!==i||(await We(),!(!a||a.handle!==i)&&(o.state==="done"?kt(o.result||{}):o.state==="cancelled"?Q("HTML Clay stopped this edit."):Q(o.error||"the helper reported an error")))}var Tt=/^(on|hx-on|x-|@|:|v-on:|v-bind:|data-on[-:])/,Lt=new Set(["iframe","frame","object","embed","base","link"]);function At(e){let t=e.replace(/[\t\n\r]/g,"").replace(/^[\u0000- ]+/,"").toLowerCase();return t.startsWith("javascript:")||t.startsWith("vbscript:")}function Mt(e){let t=(e.getAttribute("type")||"").trim().toLowerCase();return!t||/javascript|ecmascript/.test(t)||["module","importmap","speculationrules"].includes(t)}function Te(e){return[...e.attributes].map(t=>t.name.toLowerCase()+"="+t.value).sort().join(" ")}function ze(e){let t=new Map,n=i=>t.set(i,(t.get(i)||0)+1);for(let i of[e,...e.querySelectorAll("*")]){let o=i.tagName.toLowerCase();o==="script"?Mt(i)&&n("script "+Te(i)+"|"+i.textContent.trim()):(Lt.has(o)||o==="meta"&&i.hasAttribute("http-equiv")||(o==="animate"||o==="set")&&/href/i.test(i.getAttribute("attributeName")||""))&&n(o+" "+Te(i));for(let s of i.attributes){let l=s.name.toLowerCase();Tt.test(l)?n(o+" "+l+"="+s.value.trim()):l==="srcdoc"?n(o+" srcdoc="+s.value):At(s.value)&&n(o+" "+l+"="+s.value)}}return t}function Rt(e,t,n){let i=n?new DOMParser().parseFromString(t,"text/html").body:(()=>{let s=document.createElement("template");return s.innerHTML=t,s.content.firstElementChild})(),o=i?ze(i):new Map;for(let[s,l]of ze(e))if(l>(o.get(s)||0))return!0;return!1}var Ot="The reply adds a script or event handler, so it was not applied. AI editing changes content, not code.";function kt(e){if(!a||a.state!=="requesting")return;a.state="deciding";let t=[],n=Et(e.html||"",a.tag);if(!n){Q(`reply is not a single <${a.tag}> element`);return}if(!a.docMode){let i=document.createElement("template");i.innerHTML=e.html||"",i.content.children.length>1&&t.push("reply had extra root elements \u2014 kept the first")}if(a.reassertId&&n.setAttribute("data-edit-id",a.reassertId),Rt(n,a.snapshot,a.docMode)){Q(Ot);return}_e(),a.held=!0,a.finalCandidate=n;try{he(a,n)}catch(i){Q("the reply could not be applied: "+(i?.message||i));return}S(),Xe(a.el),te("ready"),O(Ht(t,e.model),t.length?"warn":"")}function Ht(e,t){let n=["Edit ready.",...e.map(i=>"\u26A0 "+i)];return t&&n.push(`(${t})`),n.join(" ")}function Q(e){a&&(oe(),te("error"),O(e,"warn"))}function oe(){let e=a;if(a=null,!!e)try{(e.state==="requesting"||e.state==="deciding")&&le()&&he(e,e.snapshot,{rewind:!0})}finally{e.paused&&Re(),e.held&&se(),S()}}async function it(){let e=a;if(!e)return;a=null;let t=e.docMode?nt():e.el.outerHTML;try{he(e,e.snapshot,{rewind:!0})}finally{e.paused&&Re(),e.held&&se({replay:!1})}he(e,t),S(),te("saving"),O("Saving\u2026");let n=k,i=await window.clay.save();if(n===k){if(i&&i.ok===!1){te("error"),O(i.msg||bt,"warn");return}O(i&&i.msg||"Saved",i&&i.msgType==="error"?"warn":""),Bt()}}function ot(){a?.handle?.cancel(),oe(),V()}var Ge=["z-index:99999","padding:0","display:inline-grid","place-items:center","line-height:1",`box-shadow:${re}`];function K(e,t,n){return e.setAttribute(t,n),e}function It(){let{signal:e}=Z;q=document.createElement("style"),q.setAttribute("clay",$e),q.textContent=`
2
2
  [editmode\\:contenteditable][contenteditable]:focus {
3
3
  outline: 1px solid #4a4a6a; outline-offset: 4px; border-radius: 2px;
4
4
  }
@@ -1 +1 @@
1
- import{b as l}from"../c-JAX2667S.js";import{f as i}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import{h as c}from"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var r="clay:demo:"+(document.documentElement.getAttribute("demo-key")||window.location.pathname),y=800,h=[c,"[data-richclay-toolbar]","[data-richclay-menu]","[data-richclay-dialog]","[data-richclay-live]","[data-richclay-float]","#squire-selection-start","#squire-selection-end",".squire-image-resize-container"].join(","),a=!1,d=null;document.addEventListener("clay:snapshot-ready",e=>{d=e.detail.documentElement.querySelector("body")?.outerHTML||null});function p(e){return typeof e=="string"?e:""}var f=window.fetch.bind(window);function g(e){let t=typeof e=="string"?e:e&&e.url||"";try{let o=new URL(t,window.location.href).pathname;return o==="/_/save"||o.startsWith("/_/save/")}catch{return!1}}window.fetch=(e,t={})=>(t.method||e&&e.method||"GET").toUpperCase()!=="POST"||!g(e)?f(e,t):new Promise(n=>{setTimeout(()=>{if(a){a=!1,n(new Response(JSON.stringify({msg:"Server not responding",msgType:"error"}),{status:503,headers:{"Content-Type":"application/json"}}));return}let m=d||p(t.body),s=new DOMParser().parseFromString(m,"text/html");s.querySelectorAll(h).forEach(u=>u.remove());try{localStorage.setItem(r,s.body.outerHTML)}catch{n(new Response(JSON.stringify({msg:"Couldn't save in this browser (storage is full or blocked)",msgType:"error"}),{status:507,headers:{"Content-Type":"application/json"}}));return}n(new Response(JSON.stringify({msg:"Saved in your browser",msgType:"success"}),{status:200,headers:{"Content-Type":"application/json"}}))},y)});async function w(){let e=localStorage.getItem(r);if(!e)return;let t=new DOMParser().parseFromString(e,"text/html");if(!i)for(let o of t.querySelectorAll(":is([editable], [clay-editable])[contenteditable]"))o.removeAttribute("contenteditable");await l(document.body,t.body,{morphStyle:"outerHTML",ignoreActiveValue:!0,scripts:{handle:!0,matchMode:"smart"}})}var v=w(),E={key:r,failNext(){a=!0},reset(){localStorage.removeItem(r),window.location.reload()}};export{E as demo,v as ready};
1
+ import{b as l}from"../c-JAX2667S.js";import{f as i}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import{h as c}from"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var r="clay:demo:"+(document.documentElement.getAttribute("demo-key")||window.location.pathname),y=800,h=[c,"[data-richclay-toolbar]","[data-richclay-menu]","[data-richclay-dialog]","[data-richclay-live]","[data-richclay-float]","#squire-selection-start","#squire-selection-end",".squire-image-resize-container"].join(","),a=!1,d=null;document.addEventListener("clay:snapshot-ready",e=>{d=e.detail.documentElement.querySelector("body")?.outerHTML||null});function p(e){return typeof e=="string"?e:""}var f=window.fetch.bind(window);function g(e){let t=typeof e=="string"?e:e&&e.url||"";try{let o=new URL(t,window.location.href).pathname;return o==="/_/save"||o.startsWith("/_/save/")}catch{return!1}}window.fetch=(e,t={})=>(t.method||e&&e.method||"GET").toUpperCase()!=="POST"||!g(e)?f(e,t):new Promise(n=>{setTimeout(()=>{if(a){a=!1,n(new Response(JSON.stringify({msg:"Server not responding",msgType:"error"}),{status:503,headers:{"Content-Type":"application/json"}}));return}let m=d||p(t.body),s=new DOMParser().parseFromString(m,"text/html");s.querySelectorAll(h).forEach(u=>u.remove());try{localStorage.setItem(r,s.body.outerHTML)}catch{n(new Response(JSON.stringify({msg:"Couldn't save in this browser (storage is full or blocked)",msgType:"error"}),{status:507,headers:{"Content-Type":"application/json"}}));return}n(new Response(JSON.stringify({msg:"Saved in your browser",msgType:"success"}),{status:200,headers:{"Content-Type":"application/json"}}))},y)});async function w(){let e=localStorage.getItem(r);if(!e)return;let t=new DOMParser().parseFromString(e,"text/html");if(!i)for(let o of t.querySelectorAll(":is([editable], [clay-editable])[contenteditable]"))o.removeAttribute("contenteditable");await l(document.body,t.body,{morphStyle:"outerHTML",ignoreActiveValue:!0,scripts:{handle:!0,matchMode:"smart"}})}var v=w(),E={key:r,failNext(){a=!0},reset(){localStorage.removeItem(r),window.location.reload()}};export{E as demo,v as ready};
@@ -1 +1 @@
1
- import"../c-VHNSBD2M.js";function n(){let o=window.Sap;return!!(o&&!o.core||window.clay?.loaded?.sap)}var a=n()?null:import("../vendor/sap-core.vendor-RN4ZVY4X.js").then(()=>{});export{a as ready};
1
+ import"../c-VHNSBD2M.js";function n(){let o=window.Sap;return!!(o&&!o.core||window.clay?.loaded?.sap)}var a=n()?null:import("../vendor/sap-core.vendor-OA5SKL7Q.js").then(()=>{});export{a as ready};
@@ -1 +1 @@
1
- import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}from"../c-ZS4US2XV.js";import"../c-JKZJIUIP.js";import"../c-TCCA5BZN.js";import"../c-3LDGIBMN.js";import"../c-57XDY6HC.js";import"../c-LZJPNR2W.js";import"../c-ZKNBMNN3.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-FWKHM4E7.js";import"../c-5JLFROUB.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-ZWIOJGMT.js";import"../c-B7J4K2AE.js";import"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import"../c-NQJRVJ56.js";import"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-7MG5RU63.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";export{a as HOLD_MS,t as checkpointWithin,o as closeStore,k as confirmSaved,w as default,b as drainLiveWriter,q as fastLane,r as lanePending,h as live,f as liveTags,c as liveWriterParticipant,s as localLane,c as modeParticipant,p as openStores,d as pageLaneReady,e as pageWriterReady,m as receiveFrame,j as registerPageCheckpoints,v as requestCheckpoint,u as requestExitCheckpoint,l as sendingCapture,g as serializeLines,i as stageStore,n as storeOf};
1
+ import{a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w}from"../c-UXEVJ63W.js";import"../c-JKZJIUIP.js";import"../c-TCCA5BZN.js";import"../c-3LDGIBMN.js";import"../c-57XDY6HC.js";import"../c-LZJPNR2W.js";import"../c-NLZ5AN4L.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-GSRLXYWL.js";import"../c-X5LNHET5.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-LA2BW7UY.js";import"../c-GVPNDIKJ.js";import"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import"../c-NQJRVJ56.js";import"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-EGTIAL6P.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";export{a as HOLD_MS,t as checkpointWithin,o as closeStore,k as confirmSaved,w as default,b as drainLiveWriter,q as fastLane,r as lanePending,h as live,f as liveTags,c as liveWriterParticipant,s as localLane,c as modeParticipant,p as openStores,d as pageLaneReady,e as pageWriterReady,m as receiveFrame,j as registerPageCheckpoints,v as requestCheckpoint,u as requestExitCheckpoint,l as sendingCapture,g as serializeLines,i as stageStore,n as storeOf};
@@ -0,0 +1 @@
1
+ import{a as Me,b as ue,c as Re,d as de,e as pe}from"../c-HDWZEJHM.js";import{a as Z}from"../c-AQLFEATB.js";import{b as Le}from"../c-QY7F6EN6.js";import{b as Ne,c as Qe}from"../c-RVMWGXEJ.js";import{d as Se}from"../c-MHI3GYKF.js";import{a as Ae,b as Ce}from"../c-RHMPKZZ7.js";import{a as ke}from"../c-VKEDWYDF.js";import{b as ie,c as ce,f as Ee,g as xe}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var $e='<svg xmlns="http://www.w3.org/2000/svg" viewBox="-45.87 -57.96 100.26 60.98" fill="currentColor" aria-hidden="true" focusable="false"><path fill-rule="evenodd" d="M44.35 -4.56Q40.03 -0.52 34.69 -0.39Q29.34 -0.25 24.81 -0.14Q20.27 -0.02 15.6 0Q10.93 0.02 6.41 0Q1.89 -0.02 -2.79 -0.02Q-7.48 -0.02 -12.11 -0.14Q-16.73 -0.25 -21.64 -0.27Q-26.55 -0.3 -31.72 -2.25Q-36.88 -4.2 -39.87 -9.12Q-42.87 -14.03 -42.8 -19.61Q-42.74 -25.18 -40.43 -29.94Q-38.12 -34.69 -34.82 -38.78Q-31.52 -42.87 -27.25 -45.6Q-22.98 -48.33 -18.35 -50.59Q-13.73 -52.85 -8.7 -53.88Q-3.68 -54.91 1.32 -54.93Q6.32 -54.96 11.44 -54.56Q16.55 -54.16 21.35 -52.2Q26.16 -50.24 30.69 -48.01Q35.22 -45.78 38.99 -42.18Q42.76 -38.59 45.67 -34.37Q48.59 -30.15 49.99 -24.87Q51.39 -19.59 50.04 -14.09Q48.68 -8.6 44.35 -4.56ZM0.66 -30.49C0.5 -28.73 -0.88 -27.42 -2.42 -27.57C-3.96 -27.71 -5.08 -29.25 -4.91 -31.01C-4.75 -32.77 -3.36 -34.08 -1.83 -33.94C-0.29 -33.79 0.83 -32.25 0.66 -30.49ZM13.61 -29.28C13.44 -27.52 12.06 -26.21 10.52 -26.35C8.98 -26.5 7.87 -28.04 8.03 -29.8C8.2 -31.56 9.58 -32.87 11.12 -32.73C12.66 -32.58 13.77 -31.04 13.61 -29.28ZM-1.23 -17.71Q-0.62 -17.35 -0.03 -17.08Q0.56 -16.81 1.15 -16.54Q1.73 -16.28 2.4 -16Q3.07 -15.72 3.87 -15.6Q4.66 -15.48 5.4 -15.55Q6.13 -15.62 6.77 -15.79Q7.41 -15.96 7.97 -16.23Q8.53 -16.5 9 -16.91Q9.46 -17.32 9.73 -17.9Q9.99 -18.47 10.08 -19.12Q10.17 -19.77 10.08 -20.42Q9.99 -21.06 9.45 -21.32Q8.91 -21.58 8.27 -21.38Q7.63 -21.17 6.99 -20.91Q6.36 -20.65 5.7 -20.61Q5.04 -20.56 4.33 -20.73Q3.62 -20.9 2.92 -21.14Q2.23 -21.39 1.54 -21.68Q0.85 -21.97 0.16 -22.27Q-0.52 -22.56 -1.22 -22.79Q-1.92 -23.03 -2.49 -22.61Q-3.05 -22.19 -3.23 -21.5Q-3.4 -20.81 -3.2 -20.09Q-3.01 -19.38 -3.02 -19.15Q-3.02 -18.93 -2.42 -18.5Q-1.83 -18.06 -1.23 -17.71Z"/></svg>';var Pe=new Set(["top-left","top-right","bottom-left","bottom-right"]),Je=4,Te="menu-corner";function et(t,n,f,x){return`${n<x/2?"top":"bottom"}-${t<f/2?"left":"right"}`}function tt(t,n){let[f,x]=t.split("-");if(n==="ArrowUp")f="top";else if(n==="ArrowDown")f="bottom";else if(n==="ArrowLeft")x="left";else if(n==="ArrowRight")x="right";else return null;return`${f}-${x}`}function nt(t){let n=null;try{n=t?t.get(Te):null}catch{}return Pe.has(n)?n:"top-right"}function ot(t){let n=document.createElement("div");n.className="clay-menu-spots",n.setAttribute("clay","editor-ui"),n.setAttribute("aria-hidden","true");for(let f of Pe){let x=document.createElement("span");x.className="clay-menu-spot",x.dataset.to=f,n.append(x)}return t.append(n),n}function Oe({dock:t,container:n=document.body,grip:f,storage:x,onMove:p,onDragStart:$}){function l(r,{remember:m=!0}={}){if(t.dataset.corner=r,m)try{x&&x.set(Te,r)}catch{}p&&p(r)}l(nt(x),{remember:!1}),f.addEventListener("keydown",r=>{let m=tt(t.dataset.corner,r.key);m&&(r.preventDefault(),m!==t.dataset.corner&&l(m))});let o=null;f.addEventListener("pointerdown",r=>{if(r.button!==0||r.isPrimary===!1)return;let m=t.getBoundingClientRect();if(o={id:r.pointerId,x:r.clientX,y:r.clientY,dx:r.clientX-m.left,dy:r.clientY-m.top,w:m.width,h:m.height,moving:!1,spots:null,near:null},f.setPointerCapture)try{f.setPointerCapture(r.pointerId)}catch{}}),f.addEventListener("pointermove",r=>{if(!o||r.pointerId!==o.id)return;if(!o.moving){if(Math.hypot(r.clientX-o.x,r.clientY-o.y)<Je)return;o.moving=!0,t.setAttribute("data-dragging",""),o.spots=ot(n),o.spots.style.setProperty("color-scheme",getComputedStyle(t).colorScheme),$&&$()}let m=r.clientX-o.dx,k=r.clientY-o.dy;Object.assign(t.style,{left:`${m}px`,top:`${k}px`,right:"auto",bottom:"auto"}),o.near=et(m+o.w/2,k+o.h/2,window.innerWidth,window.innerHeight);for(let Q of o.spots.children)Q.toggleAttribute("data-near",Q.dataset.to===o.near)});let y=r=>m=>{if(!o||m.pointerId!==o.id)return;let{moving:k,near:Q,spots:s}=o;if(o=null,!!k){s.remove(),t.removeAttribute("data-dragging");for(let c of["left","top","right","bottom"])t.style.removeProperty(c);r&&Q?l(Q):l(t.dataset.corner,{remember:!1})}};return f.addEventListener("pointerup",y(!0)),f.addEventListener("pointercancel",y(!1)),f.addEventListener("lostpointercapture",y(!1)),{setCorner:l}}var qe=()=>/mac|iphone|ipad|ipod/i.test(navigator.userAgentData&&navigator.userAgentData.platform||navigator.platform||navigator.userAgent||""),at=()=>/Win/.test(navigator.userAgentData&&navigator.userAgentData.platform||navigator.platform||navigator.userAgent||""),De=()=>qe()?"Show in Finder":at()?"Show in Explorer":"Show in folder",te=(t,n)=>qe()?t:n;var ne="menu-resume",rt=5e3,T=()=>window.clay||{},Ie=()=>T().storage&&T().storage.session,fe=t=>{let n=T().editPlugins;return Array.isArray(n)&&n.includes(t)};function Ue(t,n=rt){return new Promise(f=>{let x=Date.now(),p=()=>{let $=t();$||Date.now()-x>=n?f($||null):setTimeout(p,50)};p()})}function Be({addItem:t,note:n,currentMode:f}){let x=new Map;async function p(s,c){if(f()==="edit")return c();let M=Ie();M&&M.set(ne,s);let S;try{S=await T().setMode?.("edit")}catch(P){S={ok:!1,message:P&&P.message}}if(!(S&&S.ok!==!1&&S.reloading)){if(M&&M.remove(ne),!S||S.ok===!1){let P=S?Z(S):"Couldn't switch modes.";P&&n(P);return}return c()}}function $(s,c){return x.set(s,c),()=>p(s,c)}let l={canUndo:!1,canRedo:!1},o=!1;function y(){if(!fe("undo"))return;let s=f()==="edit"&&T().undo;!o&&s&&typeof s.canUndo=="boolean"&&(l={canUndo:s.canUndo,canRedo:!!s.canRedo}),t({id:"clay.undo",pair:[{id:"clay.undo.undo",label:"Undo",keys:te("\u2318Z","Ctrl+Z"),disabled:!(s&&l.canUndo),run:()=>T().undo?.undo()},{id:"clay.undo.redo",label:"Redo",keys:te("\u2318\u21E7Z","Ctrl+Shift+Z"),disabled:!(s&&l.canRedo),run:()=>T().undo?.redo()}]})}document.addEventListener("clay:undo-change",s=>{let c=s.detail||{};o=!0,l={canUndo:!!c.canUndo,canRedo:!!c.canRedo},y()}),document.addEventListener("clay:modechange",y),y(),fe("ai-edit")&&t({id:"clay.ai",label:"Ask AI\u2026",keys:te("\u2318J","Ctrl+J"),run:$("ai",async()=>{let s=await Ue(()=>T().aiEdit);s&&await s.open(document.body)||n("Ask AI isn't available on this page right now.")})}),fe("cms")&&T().cms?.hasRules?.(document)&&t({id:"clay.cms",label:"Open the CMS (Edit content)",run:$("cms",async()=>{let s=await Ue(()=>T().cms),c=null;try{c=s?await s.open():{ok:!1}}catch{c={ok:!1}}c&&c.ok===!1&&n("Couldn't open the CMS. Try again.")})}),t({id:"clay.download",label:"Download a copy",run:async()=>{let s=null;try{if(typeof T().getHTML=="function")s=T().getHTML();else{let c=await fetch(location.href,{cache:"no-store",credentials:"same-origin"});c.ok&&(s=await c.text())}}catch{}typeof s=="string"&&/^https?:$/.test(location.protocol)&&(s=s.replace(/(^|[^\w./:-])\/_\/uploads\//g,`$1${location.origin}/_/uploads/`)),(typeof s!="string"||!await Ce({html:s,name:`${Ae()}.html`}))&&n("Couldn't build the download. Try again.")}});async function r(s){let c=null;try{let M=await fetch(s,{method:"POST",credentials:"same-origin",headers:{"Document-URL":location.href}});if(c=await M.json().catch(()=>null),M.ok&&c?.ok!==!1){typeof c?.href=="string"&&window.open(c.href,"_blank","noopener");return}}catch{}n(typeof c?.message=="string"&&c.message?c.message:"Couldn't do that. Try again.")}let m=(s,c,M)=>{M?.href?t({id:s,label:c,href:M.href}):M?.post&&t({id:s,label:c,run:()=>r(M.post)})};import("../c-ZRXJD4G6.js").then(({hostActions:s})=>s()).then(s=>{m("clay.code","Open the code editor",s.codeEditor),m("clay.duplicate","Duplicate as a new page",s.duplicate),m("clay.export","Export as zip",s.export),m("clay.reveal",De(),s.reveal),m("clay.versions","Version history\u2026",s.versions)}).catch(()=>{});let k=Ie(),Q=k&&k.get(ne);if(Q){k.remove(ne);let s=x.get(Q);s&&f()==="edit"&&s()}return{inEditMode:p,resumable:$,refresh:y}}var st='<svg viewBox="0 0 256 256" aria-hidden="true" focusable="false"><path d="M205.66 194.34a8 8 0 0 1-11.32 11.32L128 139.31l-66.34 66.35a8 8 0 0 1-11.32-11.32L116.69 128 50.34 61.66a8 8 0 0 1 11.32-11.32L128 116.69l66.34-66.35a8 8 0 0 1 11.32 11.32L139.31 128Z"/></svg>',lt=3,oe=(t,n,f)=>`${t} ${t===1?n:f}`;function me(t){let n=document.createElement("span");n.className="clay-avatar",n.setAttribute("aria-hidden","true");let f=Ne(t.id);return n.style.setProperty("color",f),n.style.setProperty("border-color",f),n.style.setProperty("background","var(--bevel-surface)"),n.textContent=Qe(t.name),n}function _e({root:t,capsule:n,addItem:f,removeItem:x,closeMenu:p,note:$}){let l={supported:!1,people:[],anonymous:0},o=null,y=null,r=null,m=!1,k=()=>window.clay&&window.clay.people,Q=()=>window.clay&&window.clay.me||null,s=()=>{try{return!!k()?.canRename?.()}catch{return!1}},c=()=>l.people.length+l.anonymous,M=()=>document.documentElement.hasAttribute("clay-menu-roster");function S({restore:C=!0}={}){o&&(o.remove(),o=null,m=!1,r?.setAttribute("aria-expanded","false"),C&&y&&y.isConnected&&y.focus(),y=null)}function P(){let C=Q();if(!C||!C.name)return null;let w=document.createElement("div");w.className="clay-people-me";let A=document.createElement("span");A.className="clay-people-me-label",A.textContent="Your edits are signed as";let N=document.createElement("div");if(N.className="clay-people-me-row",w.append(A,N),m){let h=document.createElement("input");h.className="clay-people-input",h.type="text",h.value=C.name,h.setAttribute("aria-label","Your name"),h.maxLength=120;let g=document.createElement("button");g.type="button",g.className="clay-menu-btn clay-menu-btn-small clay-menu-btn-primary",g.textContent="Save";let i=()=>{try{k().rename(h.value)}catch(a){$(a&&a.code==="not-renamable"?"This name comes from your account, so it can't be changed here.":"Use a name of 1 to 120 characters that isn't an email address."),h.focus();return}m=!1,R(),o?.querySelector(".clay-people-me .clay-menu-btn")?.focus()};g.addEventListener("click",i),h.addEventListener("keydown",a=>{a.key==="Enter"&&(a.preventDefault(),i())}),N.append(h,g),queueMicrotask(()=>{h.isConnected&&(h.focus(),h.select())})}else{let h=document.createElement("span");if(h.className="clay-people-me-name",h.textContent=C.name,N.append(me(C),h),s()){let g=document.createElement("button");g.type="button",g.className="clay-menu-btn clay-menu-btn-small",g.textContent="Change",g.addEventListener("click",()=>{m=!0,R()}),N.append(g)}}return w}function R(){if(!o)return;let C=c();o.textContent="";let w=document.createElement("div");w.className="clay-people-head";let A=document.createElement("h3");A.className="clay-people-title",A.textContent="Who's here";let N=document.createElement("span");N.className="clay-people-sum",N.textContent=oe(C,"person","people");let h=document.createElement("button");if(h.type="button",h.className="clay-people-close",h.setAttribute("aria-label","Close"),h.innerHTML=st,h.addEventListener("click",()=>S()),w.append(A,N,h),o.append(w),l.people.length){let i=document.createElement("ul");i.className="clay-people-list";for(let a of l.people){let v=document.createElement("li");v.className="clay-people-row";let L=document.createElement("span");L.className="clay-people-who";let z=document.createElement("strong");if(z.textContent=a.name,a.you){let K=document.createElement("span");K.textContent="(you)",z.append(K)}L.append(z),v.append(me(a),L),i.append(v)}o.append(i)}if(l.anonymous>0){let i=document.createElement("p");i.className="clay-people-anon",i.textContent=l.anonymous===1?"1 other person is here without a shared name.":`${l.anonymous} others are here without a shared name.`,o.append(i)}let g=P();g&&o.append(g)}function I(C){if(p(),o){S();return}y=C,o=document.createElement("div"),o.className="clay-people",o.setAttribute("role","dialog"),o.setAttribute("aria-label","Who's here"),o.addEventListener("keydown",w=>{w.key==="Escape"&&(w.preventDefault(),w.stopPropagation(),m?(m=!1,R(),o.querySelector(".clay-people-me .clay-menu-btn")?.focus()):S())}),R(),t.append(o),r?.setAttribute("aria-expanded",C===r?"true":"false"),o.querySelector(".clay-people-close").focus()}function H(){if(!(M()&&l.supported&&c()>1)){r?.remove(),r=null;return}r||(r=document.createElement("button"),r.type="button",r.className="clay-roster",r.setAttribute("aria-haspopup","dialog"),r.setAttribute("aria-expanded",o?"true":"false"),r.addEventListener("click",()=>I(r)),t.insertBefore(r,n));let w=l.people.slice(0,lt),A=c()-w.length,N=document.createElement("span");N.className="clay-roster-faces";for(let g of w)N.append(me(g));r.textContent="",r.append(N),A>0&&r.append(oe(A,"other","others"));let h=w.map(g=>g.name);r.setAttribute("aria-label",`Who's here: ${h.join(", ")}${A>0?`${h.length?" and ":""}${oe(A,"other","others")}`:""}`)}let O=null;function B(){let C=c();if(l.supported&&(C>1||s())){let w=C>1?`Who's here (${oe(C,"person","people")})`:"Who's here";w!==O&&(O=w,f({id:"clay.people",label:w,run:()=>I(n.querySelector(".clay-menu-goo"))}))}else O!==null&&x("clay.people"),O=null,S({restore:!1});if(H(),o&&!m){let w=t.getRootNode().activeElement,A=w&&o.contains(w)?w.classList[0]:null;R(),A&&o.querySelector(`.${A}`)?.focus()}}return document.addEventListener("click",C=>{o&&!C.composedPath().includes(t)&&S({restore:!1})}),document.addEventListener("clay:people",()=>{m||B()}),import("../c-FTWGYI5E.js").then(({presence:C})=>{C.subscribe(w=>{l=w||l,B()})}).catch(()=>{}),{close:S}}var re="not all",ae="variants-choose",ye="clay.variants.keep",it="Change the page look",ct="Keep one page look",ut='<svg viewBox="0 0 6 10" aria-hidden="true" focusable="false"><rect x="4" width="2" height="2"/><rect x="2" y="2" width="2" height="2"/><rect y="4" width="2" height="2"/><rect x="2" y="6" width="2" height="2"/><rect x="4" y="8" width="2" height="2"/></svg>',dt='<svg viewBox="0 0 6 10" aria-hidden="true" focusable="false"><rect width="2" height="2"/><rect x="2" y="2" width="2" height="2"/><rect x="4" y="4" width="2" height="2"/><rect x="2" y="6" width="2" height="2"/><rect y="8" width="2" height="2"/></svg>',F=()=>[...document.querySelectorAll("head style[clay-variant]")],V=t=>t.getAttribute("clay-variant"),D=()=>F().map(V);function _(){let t=F(),n=t.find(f=>f.getAttribute("media")!==re);return n?V(n):t.length?V(t[0]):null}function He(t,n){let f=window.clay&&window.clay.undo;f&&typeof f.commit=="function"?f.commit(t,n):n(),!document.documentElement.hasAttribute("autosave")&&typeof window.clay?.save=="function"&&window.clay.save()}async function pt(){let t=await import("../core/save-AOJBDSOK.js");for(;!t.baselineSettled();)await new Promise(n=>document.addEventListener("clay:baseline-settled",n,{once:!0}))}function ft(t){let n=t.map(f=>`Variant ${f}`);return n.length<2?n.join(""):`${n.slice(0,-1).join(", ")} and ${n[n.length-1]}`}function Ve({root:t,capsule:n,addItem:f,removeItem:x,note:p,currentMode:$}){let l=null,o=null,y=null,r=null,m=null,k=()=>$()==="edit",Q=()=>l??_(),s=()=>window.clay&&window.clay.storage&&window.clay.storage.session;function c(){let i=_();l!==null&&l===i&&(l=null),y?.remove(),y=null;for(let v of F()){if(!v.sheet)continue;let L=v.getAttribute("media")!==re;v.sheet.disabled=L&&(V(v)!==i||l!==null)}if(l===null)return;let a=F().find(v=>V(v)===l);if(!a)return l=null,c();y=document.createElement("style"),y.setAttribute("clay","editor-ui"),y.dataset.clayVariantPreview=l,y.textContent=a.textContent,a.after(y)}function M(){document.dispatchEvent(new CustomEvent("clay:variant-change",{detail:{active:_(),shown:Q()}}))}function S(i){return k()?D().includes(i)?(o=l=null,He(it,()=>{for(let a of F())V(a)===i?a.removeAttribute("media"):a.getAttribute("media")!==re&&a.setAttribute("media",re)}),A(),{ok:!0}):{ok:!1,code:"unknown-variant"}:{ok:!1,code:"not-editing"}}function P(i){return i!==null&&!D().includes(i)?{ok:!1,code:"unknown-variant"}:(l=i,A(),{ok:!0})}function R(i){o=l=null,He(ct,()=>{for(let a of F())V(a)===i?(a.removeAttribute("clay-variant"),a.removeAttribute("media"),a.sheet&&(a.sheet.disabled=!1)):a.remove()}),A()}function I(){if(!k())return Promise.resolve({ok:!1,code:"not-editing"});let i=_(),a=D().filter(L=>L!==i);if(!a.length)return Promise.resolve({ok:!1,code:"unknown-variant"});let v=`Keep Variant ${i} and delete ${ft(a)}? The switcher goes away. Version history still has them.`;return import("../c-FSWRGBVQ.js").then(L=>L.consent(v)).then(()=>(R(i),{ok:!0}),()=>({ok:!1,code:"cancelled"}))}async function H(){let i=l,a=window.clay;if(i===null||!a||typeof a.setMode!="function")return;s()?.set(ae,i);let v;try{v=await a.setMode("edit")}catch(L){v={ok:!1,message:L&&L.message}}if(!(v&&v.reloading)&&v&&v.ok===!1){s()?.remove(ae);let L=Z(v);L&&p(L)}}async function O(){let i=s(),a=i?.get(ae);a!=null&&(i.remove(ae),!(!k()||!D().includes(a))&&(o=l=a,A(),await pt(),!(o!==a||!g())&&(o=null,k()&&D().includes(a)&&S(a))))}function B(i){let a=D(),v=a[(a.indexOf(Q())+i+a.length)%a.length];k()?S(v):P(v)}function C(){let i=document.createElement("div");i.className="clay-variants",i.setAttribute("role","group"),i.setAttribute("aria-label","Page look"),i.innerHTML=`<button type="button" class="clay-variants-step" data-step="-1" aria-label="Previous look">${ut}</button><span class="clay-variants-name" aria-live="polite"></span><button type="button" class="clay-variants-step" data-step="1" aria-label="Next look">${dt}</button><button type="button" class="clay-menu-btn clay-menu-btn-small clay-menu-btn-primary clay-variants-use" hidden>Use this look</button><button type="button" class="clay-menu-btn clay-menu-btn-small clay-variants-keep" hidden>Keep</button>`;for(let a of i.querySelectorAll(".clay-variants-step"))a.addEventListener("click",()=>B(Number(a.dataset.step)));return i.querySelector(".clay-variants-use").addEventListener("click",H),i.querySelector(".clay-variants-keep").addEventListener("click",()=>I()),i}function w(){let i=D();if(m=N(),i.length<2){r?.remove(),r=null,x(ye);return}r||(r=C()),r.isConnected||t.insertBefore(r,t.querySelector(".clay-roster")??n);let a=Q(),v=r.querySelector(".clay-variants-name");v.textContent=`Variant ${a} `;let L=document.createElement("small");L.textContent=`(${i.indexOf(a)+1}/${i.length})`,v.append(L),r.querySelector(".clay-variants-use").hidden=k()||l===null,r.querySelector(".clay-variants-keep").hidden=!k(),k()?f({id:ye,label:`Keep Variant ${_()}, remove the others\u2026`,run:()=>I()}):x(ye)}function A(){c(),w(),M()}let N=()=>`${D().join(",")}|${_()}|${Q()}`,h=null,g=()=>window.clay?.variants===h;document.addEventListener("clay:modechange",()=>{g()&&(k()?(l=o,O()):o=null,A())}),document.addEventListener("clay:sync-applied",()=>{g()&&A()}),document.addEventListener("clay:undo-change",()=>{g()&&N()!==m&&A()}),h=window.clay.variants={list:()=>{let i=_();return D().map(a=>({name:a,label:`Variant ${a}`,active:a===i}))},get active(){return _()},get shown(){return Q()},preview:P,choose:S,keep:I},D().length>=2&&(k()&&O(),A())}var mt=!0,We="1",j=8,yt='<svg viewBox="0 0 10 10" aria-hidden="true" focusable="false"><path d="M1 0 5 4l4-4 1 1-4 4 4 4-1 1-4-4-4 4-1-1 4-4-4-4z"/></svg>',ht=6e3,bt=12,gt='<svg viewBox="0 0 6 12" aria-hidden="true" focusable="false"><rect width="2" height="2"/><rect x="4" width="2" height="2"/><rect y="5" width="2" height="2"/><rect x="4" y="5" width="2" height="2"/><rect y="10" width="2" height="2"/><rect x="4" y="10" width="2" height="2"/></svg>',Ze=[["clay.undo","clay.cms","clay.ai","clay.code"],["seo","clay.variants.keep","clay.share","clay.people"],["clay.duplicate","clay.download","clay.export","clay.reveal"],["clay.versions"],null,["upgrade"]],wt=new Set(Ze.flat().filter(Boolean)),W=()=>window.clay&&typeof window.clay.mode=="string"?window.clay.mode:xe;function vt(){let t=document.querySelectorAll("[clay-menu-slot]");return t.length>1&&console.warn("[clay] This page has more than one clay-menu-slot. The menu uses the first."),t[0]||null}function Et(){let t=document.querySelector("style[clay-menu-skin]");return t?t.getAttribute("clay-menu-skin")!==We?(console.warn(`[clay] This runtime reads clay-menu-skin="${We}". The menu keeps its default look.`),null):t.textContent:null}function xt(){if(document.querySelector('clay-editor-ui[data-clay-ui="menu"]'))return;let t=vt(),n=!!t,f=n?Et():null,x=n&&t.hasAttribute("no-edit-switch"),p=document.createElement("div");p.className="clay-menu-dock",p.setAttribute("clay","editor-ui"),p.setAttribute("part","dock"),n&&(p.dataset.embedded=""),p.dataset.corner="top-right",p.innerHTML=`<div class="clay-menu" part="capsule" clay="editor-ui"><button type="button" class="clay-menu-grip" aria-label="Move the menu. Drag it, or use the arrow keys to move it to another corner.">${gt}</button><button type="button" class="clay-menu-edit" part="edit" role="switch" aria-checked="false"><span class="clay-menu-track" aria-hidden="true"><span class="clay-menu-thumb"></span></span><span class="clay-menu-label">Edit</span></button><span class="clay-menu-divider" aria-hidden="true"></span><button type="button" class="clay-menu-goo" part="button" aria-haspopup="menu" aria-expanded="false" aria-label="Clay menu">${$e}</button></div><div class="clay-menu-list" part="list" role="menu" aria-label="Clay menu" hidden></div><div class="clay-menu-note" part="note" role="status" hidden></div>`;let $=p.querySelector(".clay-menu-grip"),l=p.querySelector(".clay-menu-edit"),o=p.querySelector(".clay-menu-goo"),y=p.querySelector(".clay-menu-list"),r=p.querySelector(".clay-menu-note"),m=new Map;if(n){$.hidden=!0;let e=t.querySelector("template[clay-menu-icon]");e&&o.replaceChildren(e.content.cloneNode(!0));let u=t.getAttribute("clay-menu-label");u&&(o.setAttribute("aria-label",u),o.title=u,y.setAttribute("aria-label",u)),x&&(l.hidden=!0,p.querySelector(".clay-menu-divider").hidden=!0)}let k=n&&typeof y.showPopover=="function";k&&y.setAttribute("popover","manual");function Q(){let e=o.getBoundingClientRect(),{offsetWidth:u,offsetHeight:d}=y,b=Math.max(j,Math.min(e.right-u,window.innerWidth-u-j)),E=e.bottom+j,U=E+d>window.innerHeight-j?Math.max(j,e.top-d-j):E;y.style.left=`${Math.round(b)}px`,y.style.top=`${Math.round(U)}px`}let s=()=>p.getRootNode().activeElement||null,c=()=>!y.hidden;function M(e){y.hidden=!e,o.setAttribute("aria-expanded",e?"true":"false"),k&&(e?(y.showPopover(),Q()):y.matches(":popover-open")&&y.hidePopover())}let S=()=>[...y.querySelectorAll('[role="menuitem"]:not([aria-disabled="true"])')];function P(e){let u=S();u.length&&u[(e+u.length)%u.length].focus()}function R(){c()&&M(!1)}let I=null,H=null;function O(){c()||(H?.close({restore:!1}),I?.refresh(),N(),M(!0))}function B(e){let u=e.href&&!e.disabled,d=document.createElement(u?"a":"button");if(u?(d.href=e.href,d.target="_blank",d.rel="noopener"):d.type="button",d.setAttribute("role","menuitem"),d.setAttribute("part",e.quiet?"item quiet":"item"),d.dataset.menuId=e.id,e.badge&&e.id==="upgrade"){let b=document.createElement("span");b.className="clay-menu-upgrade",b.textContent=e.label,d.append(b)}else d.textContent=e.label;if(e.keys){let b=document.createElement("kbd");b.textContent=e.keys,d.append(b)}return e.disabled&&d.setAttribute("aria-disabled","true"),d.addEventListener("click",()=>{e.disabled||(R(),e.run&&e.run({anchor:o}))}),d}function C(e){if(e.text){let u=document.createElement("p");return u.className="clay-menu-version",u.setAttribute("part","text"),u.dataset.menuId=e.id,u.textContent=e.label,u}if(e.pair){let u=document.createElement("div");u.className="clay-menu-pair",u.dataset.menuId=e.id;for(let d of e.pair)u.append(B(d));return u}return e.dismiss?w(e):B(e)}function w(e){let u=document.createElement("div");u.className="clay-menu-row",u.dataset.menuId=e.id;let d=document.createElement("button");return d.type="button",d.setAttribute("role","menuitem"),d.setAttribute("part","dismiss"),d.dataset.menuId=`${e.id}.dismiss`,d.setAttribute("aria-label",e.dismiss.label),d.title=e.dismiss.label,d.innerHTML=yt,d.addEventListener("click",()=>{i(e.id),e.dismiss.run?.()}),u.append(B(e),d),u}function A(){let e=b=>[...m.values()].filter(E=>E.section===b),u=[...m.keys()].filter(b=>!wt.has(b)&&!m.get(b).section),d=Ze.map(b=>(b||u).map(E=>m.get(E)).filter(Boolean));return[e("start"),...d,e("end")].filter(b=>b.length)}function N(){let e=s(),u=e&&y.contains(e)?e.dataset.menuId:null;y.textContent="",A().forEach((E,U)=>{if(U){let q=document.createElement("div");q.className="clay-menu-sep",q.setAttribute("role","separator"),q.setAttribute("part","separator"),y.append(q)}for(let q of E)y.append(C(q))});let d=o.querySelector(".clay-menu-dot"),b=[...m.values()].some(E=>E.badge);if(b&&!d){let E=document.createElement("span");E.className="clay-menu-dot",E.setAttribute("aria-hidden","true"),o.append(E)}else!b&&d&&d.remove();if(u){let E=S().find(U=>U.dataset.menuId===u);E?E.focus():P(0)}}let h=({id:e,label:u,run:d,badge:b,keys:E,disabled:U,href:q})=>({id:e,href:typeof q=="string"?q:"",label:String(u??""),run:typeof d=="function"?d:null,badge:!!b,keys:E?String(E):"",disabled:!!U});function g({id:e,label:u,run:d,badge:b,keys:E,disabled:U,text:q,pair:ve,href:Ge,section:le,quiet:Xe,dismiss:ee}={}){if(!e)return null;let Y=h({id:e,label:u,run:d,badge:b,keys:E,disabled:U,href:Ge});return q&&(Y.text=!0),Array.isArray(ve)&&(Y.pair=ve.map(h)),(le==="start"||le==="end")&&(Y.section=le),Xe&&(Y.quiet=!0),ee&&(Y.dismiss={label:String(ee.label||"Dismiss"),run:typeof ee.run=="function"?ee.run:null}),m.set(e,Y),N(),e}function i(e){m.delete(e)&&N()}function a(e){e&&(r.textContent=e,r.hidden=!1,clearTimeout(v),v=setTimeout(()=>{r.hidden=!0,r.textContent=""},ht))}let v=0,L=!1,z=()=>{p.hidden=!ce&&W()!=="edit"};function K(){l.setAttribute("aria-checked",W()==="edit"?"true":"false"),x&&g({id:"clay.mode",label:W()==="edit"?"View mode":"Edit mode",section:"start",run:()=>l.click()})}K(),document.addEventListener("clay:modechange",K),l.addEventListener("click",async()=>{if(L)return;let e=l.getAttribute("aria-checked"),u=s()===l,d=W()==="edit"?"view":"edit";L=!0,l.setAttribute("aria-busy","true"),l.disabled=!0;let b;try{b=await window.clay?.setMode?.(d)}catch(E){b={ok:!1,message:E&&E.message}}if(!(b&&b.reloading))if(L=!1,l.removeAttribute("aria-busy"),l.disabled=!1,u&&l.isConnected&&!s()&&document.activeElement===document.body&&l.focus(),b&&b.ok===!1){l.setAttribute("aria-checked",e);let E=Z(b);E&&a(E)}else K()}),o.addEventListener("click",()=>{c()?R():O()}),document.addEventListener("click",e=>{c()&&!e.composedPath().includes(p)&&R()}),p.addEventListener("keydown",e=>{if(e.key==="Escape"){if(!c())return;e.preventDefault(),R(),o.focus();return}if(e.target===o&&(e.key==="Enter"||e.key===" ")){e.preventDefault(),c()?R():(O(),P(0));return}if(!c())return;if(e.key==="Enter"&&y.contains(e.target)){e.preventDefault(),e.target.click();return}let u=S();if(!u.length)return;let d=u.indexOf(s());e.key==="ArrowDown"?(e.preventDefault(),P(d<0?0:d+1)):e.key==="ArrowUp"&&(e.preventDefault(),P(d<0?u.length-1:d-1))});let he=document,G=null,X=null;function se(e){p.dataset.corner.startsWith("top")?p.style.top=`${Math.round(e.getBoundingClientRect().bottom)+bt}px`:p.style.removeProperty("top")}let je=()=>{X?se(X):p.style.removeProperty("top")};function be(){if(!p.isConnected)return;let e=he.querySelector(".clay-intro");if(e!==X){if(G&&(G.disconnect(),G=null),X=e,!e){p.style.removeProperty("top");return}typeof ResizeObserver=="function"&&(G=new ResizeObserver(()=>se(e)),G.observe(e)),se(e)}}let J=document.createElement("style");J.id="clay-menu-vars",J.setAttribute("clay","editor-ui"),document.head.append(J);function ge(){let e=p.getBoundingClientRect();J.textContent=`:root { --clay-menu-width: ${Math.ceil(e.width)}px; --clay-menu-height: ${Math.ceil(e.height)}px; }`}let ze=Le({name:"menu",content:p,css:n?[ue,f??de,pe]:[ue,Re,de,pe],parent:t||document.body,attributes:{"clay-mode-toggle":""}});n?(window.addEventListener("resize",R),window.addEventListener("scroll",()=>{k&&c()&&Q()},{capture:!0,passive:!0})):(Oe({dock:p,container:ze.shadow,grip:$,storage:window.clay.storage&&window.clay.storage.local,onMove:je,onDragStart:()=>{R(),H?.close({restore:!1})}}),ge(),typeof ResizeObserver=="function"&&new ResizeObserver(ge).observe(p),new MutationObserver(be).observe(he.body,{childList:!0}),be()),f||Se(p,p.querySelector(".clay-menu"),Me);let we=()=>import("../c-5FEU5MMY.js").then(e=>e.open({returnFocus:o}));if(I=Be({addItem:g,note:a,currentMode:W}),H=_e({root:p,capsule:p.querySelector(".clay-menu"),addItem:g,removeItem:i,closeMenu:R,note:a}),Ve({root:p,capsule:p.querySelector(".clay-menu"),addItem:g,removeItem:i,note:a,currentMode:W}),mt){g({id:"seo",label:"SEO settings\u2026",run:we});let e=window.clay.storage&&window.clay.storage.session;e&&e.get("reopen-seo")===!0&&(e.remove("reopen-seo"),we().catch(()=>{}))}Fe=z,W()!=="edit"&&import("../core/host-permission-6EVJGNPL.js").then(e=>e.checkHostPermission()).catch(()=>{}),window.clay.menu={addItem:g,removeItem:i,open:O,close:R,note:a,embedded:n,button:o},document.dispatchEvent(new CustomEvent("clay:menu-ready"))}var Ke=!1,Fe=null,kt=()=>(ce||Ee)&&!ie;function Ye(){Ke||!kt()||(Ke=!0,xt())}ie||(ke(Ye),document.addEventListener("clay:capabilitychange",()=>{Ye(),Fe?.()}));
@@ -1,2 +1,2 @@
1
- import{a as Ce}from"../c-3GJ4SDE2.js";import{a as vt,b as bt,c as St}from"../c-EXEDYU4H.js";import{a as wt}from"../c-BYTKL6UX.js";import{a as mt,b as B,c as R}from"../c-WCXLG3MV.js";import{a as Ee,b as Re}from"../c-MCOOHCSG.js";import{a as kt}from"../c-L4WQSC27.js";import{d as it,e as ut,i as dt,j as Pe,n as V,o as pt,q as ce,r as ft,s as gt,t as xe,u as yt,v as ht}from"../c-ZS4US2XV.js";import"../c-JKZJIUIP.js";import{a as se}from"../c-TCCA5BZN.js";import{k as Oe}from"../c-3LDGIBMN.js";import"../c-57XDY6HC.js";import"../c-LZJPNR2W.js";import{b as ct}from"../c-QTTJYJMA.js";import{a as rt}from"../c-NUHP2XDB.js";import{A as lt,E as st,d as at,e as ne,g as nt,m as je,n as le}from"../c-ZKNBMNN3.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import{a as ot}from"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-FWKHM4E7.js";import"../c-5JLFROUB.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-ZWIOJGMT.js";import{d as ae}from"../c-B7J4K2AE.js";import{a as et}from"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import{a as Te,c as tt,d as Ae}from"../c-NQJRVJ56.js";import{d as ke}from"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import{k as Ze}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{D as q}from"../c-7MG5RU63.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var gr=Object.freeze({"page-converting":"retrying","page-capacity":"retrying",busy:"retrying","rate-limited":"retrying",offline:"retrying",network:"retrying","network-error":"retrying",timeout:"retrying","save-history-pending":"retrying","page-condition-required":"blocked","page-conversion-refused":"blocked","page-conversion-required":"blocked","page-conversion-stale":"blocked","save-id-reused":"blocked","too-large":"blocked","unsupported-host":"blocked","save-history-refresh-required":"blocked","provenance-unsupported":"blocked","receipt-expired":"blocked","page-full":"blocked","compaction-failed":"blocked"}),Tt=({unavailable:e,pending:t,journaled:r,acknowledged:a,checkpointed:n}={})=>e?"unavailable":t>0?"pending":r>0?"journaled":a>0?"acknowledged":n?"checkpointed":null,ie="Can't save here. Your edits are still in this tab.",ue="Still trying to save. Your edits are safe in this tab.";function G({ok:e=!1,code:t=null,offline:r=!1}={}){return e?"saved":r?"retrying":gr[t]??"error"}function At(e){let t;try{t=new DOMParser().parseFromString(e,"text/html")}catch{return e}let r=[...t.querySelectorAll('script[type="application/json"][merge="page"][clay~="live"]')].filter(u=>!u.closest("template")&&!u.closest("noscript"));if(r.length!==1)return e;let a=r[0].outerHTML,n=e.indexOf(a);return n<0||e.indexOf(a,n+1)!==-1?e:e.slice(0,n)+e.slice(n+a.length)}function de(){let{forSave:e}=q({emitForSync:!1});return Re({html:At(e),name:`${Ee()}.html`})}function Ie(e){return Re({html:At(e),name:`${Ee()}.html`})}async function Et(){try{let{forSave:e}=q({emitForSync:!1}),r=new DOMParser().parseFromString(e,"text/html").querySelectorAll("article[data-page]");return r.length!==1?!1:(await navigator.clipboard.writeText(r[0].textContent),!0)}catch{return!1}}var Rt="clay.page.author",Le="clay.page.author.owned.",jt=()=>globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;function Ot(e=globalThis.localStorage){try{let t=[];for(let a=0;a<e.length;a++){let n=e.key(a);n&&n.startsWith(Le)&&t.push(n.slice(Le.length))}let r=e.getItem(Rt);return(!r||!t.includes(r))&&(r=jt(),e.setItem(Le+r,"1"),e.setItem(Rt,r),t.push(r)),{token:r,owned:t.sort()}}catch{let t=jt();return{token:t,owned:[t]}}}var P=Object.freeze({loading:"loading",joining:"joining",adopting:"adopting",ready:"ready",blocked:"blocked",error:"error"}),yr=new Set([P.ready,P.blocked,P.error]),Pt=0,Ct=()=>globalThis.performance?.now?.()??Date.now();function It({gen:e=0,isCurrent:t=()=>!0,onPhase:r=null}={}){return Pt+=1,{installId:Pt,gen:e,isCurrent:t,onPhase:typeof r=="function"?r:null,phase:P.loading,result:null,at:Ct(),controller:new AbortController,disposers:[],disposed:!1,steps:null,deferred:null}}function f(e){return!e.disposed&&!e.controller.signal.aborted&&e.isCurrent()!==!1}function Fe(e,t){return f(e)&&!!t?.view&&e.mounted===t.view}function D(e,t,r=null){if(yr.has(e.phase)&&e.result)return e.result;e.phase=t,e.at=Ct(),e.result=Object.freeze({phase:t,reason:r??null,installId:e.installId,at:e.at});try{e.onPhase?.(e.result)}catch(a){console.error("clayjs: page boot phase callback failed",a)}return e.result}function De(e,t){let r=D(e,P.blocked,t);return e.editorReadyResolve?.(),r}function Lt(e,t){return D(e,P.error,t)}function W(e,t){return typeof t=="function"&&e.disposers.push(t),t}function He(e){if(e.disposed)return;e.disposed=!0,e.mounted=null;try{e.controller.abort()}catch(r){console.error("clayjs: page boot abort failed",r)}let t=e.disposers.splice(0).reverse();for(let r of t)try{r()}catch(a){console.error("clayjs: a page boot disposer failed",a)}}function pe(e,t){let r=globalThis.performance;if(typeof r?.mark=="function")try{r.mark(e,{detail:{installId:t.installId}})}catch{try{r.mark(e)}catch{return}}}function hr(e,t){try{t.release?.(e)}catch(r){console.error("clayjs: page boot release failed",r)}}function Y(e,t,r){return t.cancelled?null:(hr(e,r),De(e,t.reason??"boot-incomplete"))}function xt(e,t,r,a=null){return Promise.resolve(e).then(n=>n??{ok:!1,reason:r},n=>(console.error(`clayjs: page boot ${r}`,n),{ok:!1,reason:r})).then(n=>(n.ok&&a&&f(t)&&pe(a,t),n))}function mr(e,t){return new Promise(r=>{let a=e.controller.signal,n=!1,u=S=>{n||(n=!0,r(S))};if(a.aborted)return u({cancelled:!0});a.addEventListener("abort",()=>u({cancelled:!0}),{once:!0});let y=new Array(t.length),b=t.length;t.forEach((S,E)=>{S.then(j=>{if(!n){if(!j.ok)return u({result:j,branch:S});y[E]=j,b-=1,b===0&&u({results:y})}})})})}async function Ft(e,t,{activate:r=!0}={}){pe("document:boot",e),D(e,P.loading);let a=t.readSource(e);if(!f(e))return null;if(!a.ok)return De(e,a.reason);let n=a.source;D(e,P.joining);let u=await mr(e,[xt(t.loadEditorAssets(e,n),e,"editor-assets-failed","document:assets-ready"),xt(t.prepareAuthority(e,n),e,"authority-failed","document:authority-ready")]);if(u.cancelled||!f(e))return null;if(!u.results){try{e.controller.abort()}catch(x){console.error("clayjs: page boot abort failed",x)}return Y(e,u.result,t)}let[y,b]=u.results,S=t.mountAndAttach(e,n,y,b);if(!f(e))return null;if(!S.ok)return Y(e,S,t);e.mounted=S.view??null,D(e,P.adopting);let E=await t.adoptSource(e,n,S);if(!f(e))return null;if(!E.ok)return Y(e,E,t);if(!r){if(t.prepareInput){let x=await t.prepareInput(e,S);if(!f(e))return null;if(!x.ok)return Y(e,x,t)}return e.deferred=S,{phase:e.phase,view:S.view,deferred:!0}}let j=await t.enableInput(e,S);return f(e)?j.ok?(pe("document:input-ready",e),D(e,P.ready)):Y(e,j,t):null}function Dt(e){let t=e.deferred;if(e.deferred=null,!t||!f(e))return e.result??null;let r=e.steps?.openInput?.(e,t);return r?.ok?(pe("document:input-ready",e),D(e,P.ready)):De(e,r?.reason??"input-refused")}var X="article[data-page]",z='script[type="application/json"][merge="page"][clay~="live"]',Ht={state:"blocked",code:"unsupported-host",message:"This host does not support page editing"},Ve="Changes cannot be stored on this device. Download a copy to keep them.",wr=45e3,vr="Couldn't save",br="Offline, not saved",Bt="This page was changed outside the editor. Reload to see it.",Sr="That change is too large to share, so it was not saved. Reload the page to keep editing.",kr=/^[ur][0-9a-z]+(-[0-9a-z]+){2}$/,Nt="This document is full, though your changes are still here to download. To edit again, reload this tab after another editor, or the owner in another browser, deletes content.",Tr="Some changes you made were replaced by a change made outside the editor.",Gt="The page was changed outside the editor; reload to see it.",Ar=150,Er="Loading the editor\u2026",Be="the page session has not committed yet",_t=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function Ne(e){return _t(e)?e.v!==1||!_t(e.y)||Object.hasOwn(e,"blocks")||Object.hasOwn(e,"deleted")?(console.warn("clayjs: page plugin: the page tag is not a strict Yjs page, leaving the page as saved HTML"),"unsupported-page-format"):null:(console.warn("clayjs: page plugin: the page tag is not JSON, leaving the page as saved HTML"),"invalid-page-json")}var N=null,Mt=null;function H(){return Mt??=import("../c-F6G2OGYG.js").then(e=>N=e),Mt}function Rr(e){let t=new Set;return e.forEach(r=>{let a=St(r);a&&t.add(a)}),[...t]}function _(e){e.statusTimer&&(clearTimeout(e.statusTimer),e.statusTimer=null),e.statusNote?.remove(),e.statusNote=null}function jr(e,t){_(e),e.statusTimer=setTimeout(()=>{if(e.statusTimer=null,!f(e))return;let r=t.ownerDocument.createElement("div");r.className="page-boot-status",r.setAttribute("clay","editor-ui"),r.setAttribute("sap-ignore",""),r.setAttribute("role","status"),rt(r,["display:block","margin:0 0 1em","font:500 13px/1.6 system-ui, sans-serif","color:color-mix(in srgb, currentColor 55%, transparent)","user-select:none"]),r.textContent=Er,t.prepend(r),e.statusNote=r},Ar)}var ye=0,A=null,fe=null,Or=8e3;function Pr(e,t=globalThis.location){let r=t?.hash?.slice(1);if(!r)return;let a;try{a=decodeURIComponent(r)}catch{return}let n=-1;e.state.doc.forEach((u,y)=>{n<0&&u.attrs.id===a&&(n=y)}),!(n<0)&&globalThis.requestAnimationFrame?.(()=>e.nodeDOM(n)?.scrollIntoView?.({block:"start"}))}function K(e,t=null,r=""){document.dispatchEvent(new CustomEvent("clay:page-save-state",{detail:{state:e,code:t,message:r}}))}function Wt(){R(vr),R(br)}function $t(e){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.retryShown=!1,R(ue)}function xr(e,t,r){Wt(),K("retrying",t,r),!(e.retryTimer||e.retryShown)&&(e.retryTimer=setTimeout(()=>{e.retryTimer=null,e.retryShown=!0,B(ue,"warning")},wr))}function Jt(e,t=!1){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),R(ue,{now:t}),R(ie,{now:t}),R(Ve,{now:t})}function Ge(e,t,r,a="blocked"){$t(e),Wt(),K(a,t,r),B(a==="unavailable"?Ve:ie,"error",{detail:r,actions:[{label:"Download a copy",onClick:de},{label:"Copy text",onClick:Et}]})}function Cr(e){$t(e),R(ie),R(Ve),K("saved",null,"")}function Ir(e,t,r=!1){if(typeof e!="string"||!e)return!1;let a;try{a=new DOMParser().parseFromString(e,"text/html")}catch{return!1}let n=a.querySelectorAll(X);return r?n.length!==1&&!a.querySelector(z):n.length!==1||a.querySelector(z)?!1:n[0].getAttribute("data-rev")!==t}function Lr(e){if(!e.store||!N)return e.savedRev;try{return N.renderFromTags([JSON.stringify(e.store.value)]).rev}catch{return e.savedRev}}function Yt(e){let t=e.view;t&&(t.setProps({editable:()=>!1}),t.setProps({dispatchTransaction:r=>t.updateState(t.state.apply(r))}));try{e.binding?.dispose()}catch(r){console.error("clayjs: page plugin binding failed to dispose",r)}e.savesHeld||(e.savesHeld=!0,je(Gt))}function Fr(e){if(!e.tabValue)return de();let{forSave:t}=q({emitForSync:!1}),r=new DOMParser().parseFromString(t,"text/html"),a=r.querySelectorAll(X);if(a.length!==1)return de();let n=N.renderFromTags([JSON.stringify(e.tabValue)]);return a[0].innerHTML=n.html,n.rev==null?a[0].removeAttribute("data-rev"):a[0].setAttribute("data-rev",n.rev),Ie(`<!DOCTYPE html>
2
- ${r.documentElement.outerHTML}`)}function We(e,t,{reload:r=!0}={}){if(e.replaced)return;e.replaced=!0,Yt(e);let a={label:"Download your copy",onClick:()=>Fr(e)};B(t,"warning",{actions:r?[{label:"Reload",onClick:()=>window.location.reload()},a]:[a]})}var Me=e=>We(e,Bt),Dr=e=>We(e,Sr),Hr=(e,t)=>{K("blocked",t,Nt),We(e,Nt,{reload:!1})};function U(e,t,r,a){t==="saved"?Cr(e):t==="retrying"?xr(e,r,a):t==="blocked"&&Ge(e,r,a)}function C(e,t,r){document.addEventListener(t,r),e.listeners.push([t,r])}function Nr(e){C(e,"clay:save-error",r=>{let a=r.detail?.code??null;a!=="page-nothing-to-write"&&U(e,G({code:a}),a,r.detail?.msg??"")}),C(e,"clay:save-offline",r=>{let a=r.detail?.code??null;U(e,G({code:a,offline:!0}),a,r.detail?.msg??"")}),C(e,"clay:save-conflict",r=>{let a=r.detail?.code??null;U(e,G({code:a}),a,r.detail?.msg??"")});let t=r=>{_r(e,r)};C(e,"clay:save-conflict",t),C(e,"clay:save-error",t),C(e,"clay:save-saved",r=>{U(e,G({ok:!0}),null,r.detail?.msg??""),e.savedRev=Lr(e),e.adoption?.saved(lt())}),C(e,"clay:live-notice",r=>{if(r.detail?.name!=="page"||r.detail?.code==="op-too-large")return;if(r.detail?.code==="unknown-store"){Me(e);return}let a=r.detail?.code??null;U(e,G({code:a}),a,r.detail?.message??"")})}async function Ut(){let e=await fetch(new URL(globalThis.location.href).href,{cache:"no-store"});if(!e?.ok)return null;let t=await e.text(),r=new DOMParser().parseFromString(t,"text/html"),a=r.querySelector(X);if(!a)return null;let n=r.querySelector(z),u=e.headers?.get?.("etag")||null,y=r.documentElement.getAttribute("documentetag")||(u&&!/^W\//.test(u)?u:null);return{article:a,value:n?se(n.textContent):null,etag:y}}async function _r(e,t){let r=e.staged;if(!r||e.staleRetry||e.replaced)return;let a=t?.detail?.code??null;if(!(a!=="page-lineage-stale"&&a!=="conflict")&&!(!e.store||!r.isPending())){e.staleRetry=!0;try{let n=await Ut();if(!n||!f(e))return;let u=await H();if(!f(e))return;let y=n.value??u.seedPageFromArticle(n.article.cloneNode(!0)),b=n.etag??t?.detail?.etag??null;b&&tt(b),e.store.rebase(y,{source:"state"}),await st()}catch(n){console.warn("clayjs: page plugin could not offer the refused first write again",n)}}}function $e(e){let t=e.article;if(!t)return;let r=e.bootHtml,a=e.bootRev;if(e.store&&N)try{let n=N.renderFromTags([JSON.stringify(e.store.value)]);r=n.html,a=n.rev}catch(n){console.error("clayjs: page plugin could not render the saved article",n)}t.innerHTML=r,a==null?t.removeAttribute("data-rev"):t.setAttribute("data-rev",a)}function Je(e){for(let[t,r]of e.listeners)document.removeEventListener(t,r);e.listeners=[];try{e.adoption?.dispose()}catch(t){console.error("clayjs: page plugin adoption failed to dispose",t)}e.adoption=null;try{e.recover?.destroy()}catch(t){console.error("clayjs: page plugin recover list failed to dispose",t)}if(e.recover=null,e.aiTool?.dispose(),e.aiTool=null,e.awareness?.dispose(),e.awareness=null,e.toolHost?.dispose(),e.toolHost=null,e.view&&wt.delete(e.view),e.article){let t=e.article.querySelector(".page-shell");t&&t.remove()}try{e.binding?.dispose()}catch(t){console.error("clayjs: page plugin binding failed to dispose",t)}try{e.binding?.ydoc?.destroy()}catch(t){console.error("clayjs: page plugin document failed to destroy",t)}try{e.staged?.close()}catch(t){console.error("clayjs: page plugin staged store failed to close",t)}if(e.staged=null,e.pageStore){try{pt("page",e.pageStore)}catch(t){console.error("clayjs: page plugin store failed to close",t)}e.pageStore=null}e.binding=null,e.flush=null,e.releaseArticle?.(),e.releaseArticle=null}function qt(e){let t=e.view;if(t&&!t.isDestroyed&&typeof t.destroy=="function")try{t.destroy()}catch(r){console.error("clayjs: page plugin view failed to destroy",r)}e.titleObserver?.dispose(),e.titleObserver=null,_(e),Je(e),$e(e)}function qe(){ye+=1;let e=A;if(A=null,ae("Page-Write",null),Pe(null),!!e){He(e),Jt(e),R(Bt);for(let t of e.notices?.values()??[])R(t);if(e.savesHeld&&(e.savesHeld=!1,le({replay:!1,reason:Gt})),e.titleObserver?.dispose(),e.titleObserver=null,_(e),e.sessionHeld&&le({replay:!1,reason:Be}),e.autosaveSuspended&&ne(),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}Je(e),$e(e)}}var _e=null;function Ye(){return _e||(_e=Promise.all([import("../c-OKXI52N7.js"),import("../c-7PRJCA3E.js"),import("../c-YBSS55KU.js")]).then(([e,t,r])=>({replay:e,proof:t,ui:r})).catch(e=>(console.warn("clayjs: page journal could not load",e),null))),_e}async function Mr(e,t){let r=globalThis.window?.clay?.recovery??null;if(!r||!t)return null;let a=await Ye();if(!a)return null;try{return a.replay.openPageJournal({meta:e,service:r,base:a.replay.journalBase(t.value)})}catch(n){return console.warn("clayjs: page journal could not open",n),null}}async function Vt(e){let t=e.binding?.journal;if(!t||!e.store)return{replayed:[],review:[]};let r=await Ye();if(!r)return{replayed:[],review:[]};let a=await r.replay.replayInto({journal:t,state:e.store.value,into:e.binding.ydoc});return Br(e,r),a.replayed.length&&e.binding.provider.settle(),a.review.length&&(e.recoveryReview=a.review),qr(e,r.ui)?.update({rows:r.replay.describeReview(a.review)}),a}function qr(e,t){if(e.recoveryPanel)return e.recoveryPanel;let r=e.view,a=r?.dom.closest(".page-shell")??e.article;if(!a)return null;let n=t.createRecoveryReview({mount:a,getView:()=>e.view&&!e.view.isDestroyed?e.view:null,getJournal:()=>e.binding?.journal??null,isCurrent:()=>f(e)&&e.inputOpen&&!!e.view&&!e.view.isDestroyed}),u=n.watch(r?.dom??null);return W(e,()=>{u(),n.destroy()}),e.recoveryPanel=n,n}function Vr(e){Pe(async({capture:t,state:r,article:a,etag:n})=>{let u=e.binding?.journal;if(!u)return;let y=await Ye(),b=y?await u.context():null;if(!b)return;let{hostPageStateHref:S}=await import("../c-ZRXJD4G6.js"),E=await y.proof.checkpointAccepted({channel:u.channel,records:u.records(),capture:t,accepted:b,article:a,state:r,etag:n,href:await S()});E.ok&&(u.retire(E.retired),e.pageStatus?.checkpoint(),await u.rebase?.(y.replay.journalBase(E.proof.state)))})}function Br(e,t){let r=e.binding?.journal;return!r||e.pageStatus?e.pageStatus??null:(e.pageStatus=t.replay.watchJournal({journal:r,store:e.store,reduce:Tt,onState:a=>K(a),onUnavailable:a=>Ge(e,a,"","unavailable")}),W(e,()=>e.pageStatus?.dispose()),e.pageStatus)}function Gr(e,t){let r=null,a=null,n=null,u=null,y=null,b=null,S=null,E=[],j=null,x=null,$=null,Q=null,Z=null,Qt=new Promise(o=>{u=o});e.editorReadyResolve=u,W(e,()=>u?.()),W(e,()=>_(e));let ee=null,me=null;e.loadFormatGate=()=>ee?Promise.resolve(ee):(me??=Promise.all([import("../c-E3ZXARWA.js"),import("../c-K72SY2TL.js")]).then(([{createFormatGate:o},{createFormatHost:l}])=>{let s=l();return ee=o({host:s,supported:s.supported,installed:()=>y?.token??null,revision:()=>null,lane:{switchScope:(c,d)=>{let i=gt();return i?i.switchScope(c,{...d,covered:!!d?.covered||!ft()}):{status:"refused",code:"lane-unavailable"}}}}),ee}).catch(o=>{throw me=null,o}),me);let Ue='script[type="application/json"][merge="page.tools"][clay~="live"]',Zt=()=>$||($=(async()=>{if(!document.querySelector(Ue)){let c=document.createElement("script");c.setAttribute("type","application/json"),c.setAttribute("merge","page.tools"),c.setAttribute("clay","live"),c.textContent="{}",document.head.appendChild(c)}if(document.querySelector(Ue))try{j=window.clay.live("page.tools"),await j.ready}catch(c){console.warn("clayjs: page plugin could not open the tool store",c)}if(!f(e))return null;let[{createToolHost:o},{tablesFromDoc:l}]=await Promise.all([import("../c-GRWMD6O5.js"),import("../c-A6L3FMUS.js")]);if(!f(e))return null;let s=o({store:j,mode:"edit",tables:()=>l(n?.state.doc??a.doc()).map(({id:c,cols:d,rows:i})=>({id:c,cols:d,rows:i}))});if(e.toolHost=s,Ce(r)){let{createAiTool:c}=await import("../c-2Y4DOHSY.js");if(!f(e))return null;let d=window.clay?.wire?.pageTool??t.transport??null;x=c({getView:()=>e.view,store:j,transport:d,acceptState:t.acceptState}),e.aiTool=x}return s})().catch(o=>{throw $=null,o}),$),te='script[type="application/json"][merge="page.settings"][clay~="live"]',Xe=["assignees","dates"],M=null,we={assignees:!0,dates:!0},re=o=>({assignees:o?.assignees!==!1,dates:o?.dates!==!1});function er(){let o=document.querySelector(te);if(!o)return re(null);let l=null;try{l=JSON.parse(o.textContent)}catch{l=null}return re(l)}function oe(o){we=re(o);let l=e.view&&!e.view.isDestroyed?e.view.dom:null;if(l)for(let s of Xe)we[s]?l.removeAttribute(`data-${s}`):l.setAttribute(`data-${s}`,"false")}let ve=()=>M||(M=(async()=>{if(!document.querySelector(te)){let l=document.createElement("script");l.setAttribute("type","application/json"),l.setAttribute("merge","page.settings"),l.setAttribute("clay","live"),l.textContent="{}",document.head.appendChild(l)}let o=null;try{o=window.clay.live("page.settings"),await o.ready}catch(l){return console.warn("clayjs: page plugin could not open the settings store",l),M=null,null}return f(e)?(oe(o.data),o.on("change",()=>oe(o.data)),o):null})(),M);e.settings={read:()=>({...we}),set:async(o,l)=>{if(!Xe.includes(o))throw new TypeError(`clayjs: "${o}" is not a page setting`);let s=await ve();if(!s)throw new Error("clayjs: the page settings store could not be opened");let c={...re(s.data),[o]:l!==!1};s.set([o],c[o]),oe(c)}};let J=new Map,tr=o=>{if(J.has(o))return;let l=`The ${o} controls could not load. Reload the page after saving.`;J.set(o,l),B(l,"warning",{actions:[{label:"Retry",onClick:()=>{b.ensure(o).then(()=>{let s=J.get(o);s&&(J.delete(o),R(s))},()=>{})}}]})};e.notices=J;let be=async({target:o=null,remove:l=null}={})=>{Q&&n&&l&&Q.holdSlashRange(n,l),await b.ensure("tool").catch(()=>{}),!(!f(e)||!x||!n)&&x.open({target:o,remove:l?Q.heldSlashRange(n.state):null})},Se=()=>Ce(r);function rr(o){let l=document.querySelectorAll(X),s=typeof o.context?.represented?.bytes=="string"?new DOMParser().parseFromString(o.context.represented.bytes,"text/html"):null,c=s?s.querySelectorAll(X):l,d=s?s.querySelectorAll(z):document.querySelectorAll(z);if(!c.length&&!d.length)return{ok:!1,reason:"no-page"};let i=c.length===1&&d.length===0;if(c.length!==1||!i&&d.length!==1)return console.warn(`clayjs: page plugin needs exactly one article[data-page] and one merge="page" live tag; found ${c.length} article(s) and ${d.length} tag(s), leaving the page as saved HTML`),{ok:!1,reason:"ambiguous-page"};let m=l[0];if(!m)return{ok:!1,reason:"no-page"};let p=c[0],v=d[0],w=null;if(!i){try{w=se(v?.textContent)}catch{w=null}let T=Ne(w);if(T)return{ok:!1,reason:T}}let h={article:p.cloneNode(!0),tags:w?[w]:null,element:m,blocks:null,seeded:i,seedValue:null};return h.ready=(async()=>{let T=await H();if(!f(o))return{ok:!1,cancelled:!0};if(i){try{let g=await ke(),O=g?.extensions?.includes("page-recovery-v1")&&g.document?.pageState?.href,I=o.context?.represented?o.context.represented.etag:Ae()??Te();if(O&&I){let{readPageState:L}=await import("../c-7PRJCA3E.js"),F=await L({href:O,etag:I});if(!f(o))return{ok:!1,cancelled:!0};if(F.ok){if(F.etag!==I)return{ok:!1,reason:"etag-mismatch"};w=se(F.tag),h.persisted=!0}else if(F.code!=="no-page-state")return{ok:!1,reason:F.code}}else if(O){let L=await Ut();if(!f(o))return{ok:!1,cancelled:!0};if(!L||!L.article.isEqualNode(h.article))return{ok:!1,reason:"stale-document"};w=L.value,h.persisted=w!==null}w=h.seedValue=w??T.seedPageFromArticle(h.article.cloneNode(!0))}catch(g){return console.warn("clayjs: page plugin could not rebuild the page it found, leaving the page as saved HTML",g),{ok:!1,reason:"invalid-page-source"}}let k=Ne(w);if(k)return{ok:!1,reason:k};h.tags=[w]}try{h.blocks=T.blocksFromYValue(w)}catch(k){return console.warn("clayjs: page plugin: the page tag is not a valid Yjs page, leaving the page as saved HTML",k),{ok:!1,reason:"invalid-page-json"}}return{ok:!0}})(),jr(o,m),{ok:!0,source:h}}function or(o,l){if(Ne(l))return!1;if(Oe(o.authoritative)===Oe(l))return!0;try{return o.rebase(l,{source:"state"})}catch(s){return console.warn("clayjs: page plugin could not reconcile the open page store with the saved file",s),!1}}async function ar(o,l){let s=H();s.catch(()=>null);let c=await l.ready;if(!c.ok)return c;if(!f(o))return{ok:!1,cancelled:!0};let d=await s,i=[...new Set(Object.values(l.blocks).map(p=>bt(p.t)).filter(Boolean))];b=d.createFeatureLoader({load:p=>vt[p].load(),install:async(p,v)=>{if(n||await Qt,!f(o)||!n)return null;let w={view:n,upload:t.upload,board:a.board,undo:a.undo,redo:a.redo,revise:Se()?(h,T)=>{be({target:{toolId:h,rev:T}})}:null};return p==="tool"&&(w.toolHost=await Zt(),!f(o))?null:m.installPageFeature(w,p,v)},reportError:(p,v)=>{console.error("clayjs: an editor feature failed to load",p),tr(v)}});for(let p of i)b.prepare(p).catch(()=>null);let m=null;try{m=await import("../page/editor-WRQGHDSG.js"),Z=m.setEditorActive,Q={holdSlashRange:d.holdSlashRange,heldSlashRange:d.heldSlashRange}}catch(p){return console.error("clayjs: page plugin could not load the editor",p),{ok:!1,reason:"editor-assets-failed"}}return f(o)?{ok:!0,editor:m.createPageEditor,refreshView:m.refreshMountedView,featureIds:i,code:d}:{ok:!1,cancelled:!0}}async function nr(o,l){let s=H();try{r=await ke()}catch{r=null}if(!f(o))return{ok:!1,cancelled:!0};if(!r||!Array.isArray(r.extensions)||!r.extensions.includes("page"))return Ge(o,Ht.code,Ht.message),{ok:!1,reason:"missing-capability"};o.mergeTagless=!r.extensions.includes("live-data"),ae("Page-Write","v1");let c=null,d=null;if(l.seeded){if(c=await l.ready,!c.ok)return c;if(d=await s,!f(o))return{ok:!1,cancelled:!0}}let i,m=!0;try{if(l.seeded){let g=dt("page",{value:l.seedValue,represented:t.represented??{bytes:l.article.outerHTML,etag:Ae()??Te()},persisted:l.persisted});o.staged=g,i=g.handle}else{let g=V("page")===null;m=g,i=window.clay.live("page"),g&&(o.pageStore=V("page"))}}catch(g){return console.warn("clayjs: page plugin could not open the page store",g),{ok:!1,reason:"missing-page-store"}}try{await i.ready}catch(g){return console.warn("clayjs: page plugin could not join the page room",g),{ok:!1,reason:"admission-failed"}}if(!f(o))return{ok:!1,cancelled:!0};if(c??=await l.ready,!c.ok)return c;let p=V("page")?.handle?.status?.mode==="fast";if(!m&&!p&&!or(V("page"),l.tags?.[0]))return{ok:!1,reason:"stale-store"};if(d??=await s,!f(o))return{ok:!1,cancelled:!0};let v=V("page");if(!v)return{ok:!1,reason:"missing-page-store"};o.store=v;let w=!1,h=null,T=async g=>{let O=await g();return w=O?.ok===!1,h?.changed(),O};y=Ot();let k=await Mr(r,v);return f(o)?(a=d.createYPageBinding({store:v,onStopped:g=>{o.tabValue=d.yValueOf(a.ydoc),g==="lineage"?(ce()?.abandon?.("page"),Me(o)):g==="page-full"||g==="compaction-failed"?Hr(o,g):Dr(o)},authorToken:y.token,ownedTokens:y.owned,checkpointWithin:xe,requestCheckpoint:ht,requestExitCheckpoint:g=>yt({name:v.name,...g}),journal:k,exitClosed:()=>!nt(),registerUnsavedState:g=>(h=ot({id:g.id,isPending:()=>w||g.isPending(),flush:O=>T(()=>g.flush(O))}),h)}),o.binding=a,k&&Vr(o),o.flush=g=>T(()=>a.flush(g)),Nr(o),{ok:!0,store:v,handle:i}):{ok:!1,cancelled:!0}}function lr(o,l){import("../c-V52FE5FI.js").then(async s=>{if(o.view!==l)return;let c=await s.installPageAwareness({binding:o.binding,view:l});if(c){if(o.view!==l||l.isDestroyed){c.dispose();return}o.awareness=c}}).catch(s=>console.error("clayjs: page plugin remote carets failed to load",s))}function sr(o,l,s){let c=l.element;o.context?.reader?.yieldArticle?.();try{o.releaseArticle=kt(c,"editor")}catch(p){return console.error("clayjs: page plugin could not claim the article",p),{ok:!1,reason:"article-owned"}}o.source=l,o.article=c,o.bootHtml=l.article.innerHTML,o.bootRev=l.article.getAttribute("data-rev"),o.savedRev=o.bootRev,C(o,"clay:sync-applied",p=>{o.replaced||Ir(p.detail?.html,o.savedRev,o.mergeTagless)&&Me(o)}),E=[...c.childNodes].filter(p=>p!==o.statusNote);let d=c.ownerDocument.createElement("div"),i=null;try{i=s.editor(d,{doc:a.doc(),dispatch:a.dispatch,history:!1,undo:a.undo,redo:a.redo,board:a.board,editable:!1,features:b,onAiTool:Se()?(p,v)=>{be({remove:v})}:null,reviseTool:Se()?(p,v)=>{be({target:{toolId:p,rev:v}})}:null,formatGate:o.loadFormatGate})}catch(p){return console.error("clayjs: page plugin could not mount the editor",p),d.replaceChildren(),o.releaseArticle?.(),o.releaseArticle=null,o.article=null,{ok:!1,reason:"mount-failed"}}n=i,o.view=i,oe(er()),document.querySelector(te)?ve().catch(()=>null):C(o,"clay:sync-applied",()=>{!M&&document.querySelector(te)&&ve().catch(()=>null)});let m=i.dom.closest(".page-shell");if(m&&(m.inert=!0),s.featureIds.length&&m&&(m.style.visibility="hidden"),!s.featureIds.length)for(let p of E)p.remove();return m&&c.appendChild(m),s.refreshView?.(i),a.attach(i),lr(o,i),u(),S=Promise.allSettled(s.featureIds.map(p=>b.ensure(p))),Pr(i),o.recover=s.code.createRecoverList({binding:a,mount:i.dom.closest(".page-shell")??c,ownTokens:[y.token,...y.owned],onRestored:p=>s.code.focusBlock(i,p),onStale:()=>mt("That change was updated. The list now shows the latest version.","warning")}),o.titleObserver=s.code.observeDocumentTitle(i),{ok:!0,view:i,featureIds:s.featureIds}}async function cr(o,l){try{let s=await H(),{HyperMorph:c}=await ct(),d=s.blocksFromYValue(o.store.authoritative),i=s.readBack(d,document),m=s.mergePageModels(l.baseItems,i,l.parsed,{doc:document,merge3:c.merge3,mergeJson:c.mergeJson});return s.canon(m.items)===s.canon(i)}catch{return!1}}async function ir(o,l){let s=await H();return await cr(o,l)?{ok:!0,outcome:"writer-adopts"}:new Promise(c=>{let d=null,i=null,m=!1,p=v=>{m||(m=!0,i&&clearTimeout(i),i=null,d?.(),d=null,c(v))};W(o,()=>p({ok:!1,cancelled:!0})),d=o.store.onRebase(v=>{v.source==="remote"&&p({ok:!0,outcome:"writer-adopts"})}),i=setTimeout(()=>{console.warn("page: gave up waiting for the writer's adoption; the hand edit was not adopted"),p({ok:!1,reason:"adoption-timeout"})},s.ADOPTION_TIMEOUT_MS)})}async function ur(o,l,s){let c=await H(),d=l.seeded?{kind:"untouched"}:c.classifyFile(l.article,l.tags),i=d.kind==="adopt",m=async()=>{let h=await it();if(!h||!f(o))return;if(h.status.writer===null){let k=o.store.value.y,g=Object.keys(k),O=a.ydoc.clientID.toString(36),I=o.store.room?.compaction?.v===1?g.find(F=>kr.test(F))??`u${O}-claim-0`:g.length?g[0]:`claim-${O}`,L=Object.hasOwn(k,I)?k[I]:c.yValueOf(a.ydoc).y.seed;o.store.handle.set(["y",I],L),h.release("page")}let T;await Promise.race([ut(),new Promise(k=>{T=setTimeout(k,Or)})]),clearTimeout(T)},p=i?m():Promise.resolve(),v=c.installAdoption({view:s.view,source:l,ready:p,isAdopter:()=>{let h=ce();return!h||h.status.writer===null?!0:h.isWriter()},requestCheckpoint:()=>xe(0),snapshot:()=>q({emitForSync:!1}).forSave,mergeTagless:o.mergeTagless,seeded:l.seeded,writerReady:m,adopted:h=>ce()?.adopted?.("page",h,o.store.mark),notice:h=>{h.copy&&B(Tr,"warning",{actions:[{label:"Download your copy",onClick:()=>Ie(h.copy)}]})}});o.adoption=v;let w=await v.idle();return w?(w.outcome==="writer-adopts"&&(w=await ir(o,d)),!w.ok&&f(o)?qt(o):f(o)&&await Vt(o),w):(await Vt(o),{ok:!0,outcome:"unchanged"})}async function ze(o,l){if(o.replaced)return{ok:!1,reason:"page-replaced"};if(await S,!f(o))return{ok:!1,cancelled:!0};let s=l.view.dom.closest(".page-shell");if(!Fe(o,l)||!s||!s.isConnected||l.view.isDestroyed)return{ok:!1,reason:"view-detached"};let c=new Set(l.featureIds??[]),d=Rr(l.view.state.doc).filter(i=>!c.has(i));return d.length&&(await Promise.allSettled(d.map(i=>b.ensure(i))),!f(o))?{ok:!1,cancelled:!0}:{ok:!0}}function Ke(o,l){let s=l.view.dom.closest(".page-shell"),c=()=>{for(let d of E)d.remove();s&&(s.style.visibility="")};return o.replaced?(c(),Yt(o),{ok:!1,reason:"page-replaced"}):o.inputOpen?{ok:!0}:!Fe(o,l)||!s||!s.isConnected||l.view.isDestroyed?{ok:!1,reason:"view-detached"}:(c(),s.inert=!1,Z?.(l.view,!0),o.inputOpen=!0,_(o),{ok:!0})}function dr(o){return o.inputOpen?(Z?.(o.view,!1,{quiesce:!0}),!0):!1}function pr(o){return o.inputOpen?(Z?.(o.view,!0),!0):!1}async function fr(o,l){let s=await ze(o,l);return s.ok?Ke(o,l):s}let Qe={readSource:rr,loadEditorAssets:ar,prepareAuthority:nr,mountAndAttach:sr,adoptSource:ur,prepareInput:ze,openInput:Ke,closeInput:dr,resumeInput:pr,enableInput:fr,release:o=>{o.view||qt(o)}};return e.steps=Qe,Qe}async function Wr(e,t={},{activate:r=!0}={}){return Ft(e,Gr(e,t),{activate:r})}function Xt(e={},{activate:t=!0,context:r=null}={}){qe(),fe=null;let a=++ye,n={...It({gen:a,isCurrent:()=>a===ye&&(r?.isCurrent?.()??!0),onPhase:y=>{(y.phase==="ready"||y.phase==="blocked"||y.phase==="error")&&_(n),e.onPhase?.(y)}}),article:null,view:null,binding:null,adoption:null,source:null,store:null,toolHost:null,aiTool:null,bootHtml:"",bootRev:null,savedRev:null,staged:null,pageStore:null,releaseArticle:null,replaced:!1,savesHeld:!1,flush:null,loadFormatGate:null,listeners:[],retryTimer:null,retryShown:!1,statusTimer:null,statusNote:null,notices:null,editorReadyResolve:null,context:r,inputOpen:!1,sessionHeld:!1,autosaveSuspended:!1,staleRetry:!1};A=n;let u=Wr(n,e,{activate:t}).catch(y=>(console.error("clayjs: page plugin failed to install",y),fe=Lt(n,"boot-failed"),A===n&&qe(),fe));return{inst:n,boot:u}}function zt(e={}){return Xt(e).boot}function $r(e){if(A===e&&(A=null,ye+=1),ae("Page-Write",null),He(e),Jt(e,!0),e.titleObserver?.dispose(),e.titleObserver=null,_(e),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}e.view=null,Je(e),$e(e)}function ge(e){e.sessionHeld&&(e.sessionHeld=!1,le({replay:!1,reason:Be}))}function Kt(e,{held:t=!0}={}){return{enable(){t&&(ge(e),Dt(e))},quiesce(){if(e.view?.composing)throw Object.assign(new Error("clayjs: a composition is still in progress"),{code:"composition"});e.steps?.closeInput?.(e),e.autosaveSuspended||(e.autosaveSuspended=!0,at())},resume(){ge(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),e.steps?.resumeInput?.(e)},dispose(){ge(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),$r(e)}}}function Jr(e=null,t={}){je(Be);let{inst:r,boot:a}=Xt(t,{activate:!1,context:e});r.sessionHeld=!0;let n=Kt(r,{held:!0});he.ready=a.then(()=>he.status);let u=a.then(y=>{if(!y?.deferred)throw Object.assign(new Error("clayjs: the page session could not prepare"),{code:y?.reason??"load-failed"})});return u.catch(()=>{ge(r);try{e?.reader?.reclaimArticle?.()}catch(y){console.error("clayjs: the reader could not take the article back",y)}}),{ready:u,...n}}function bo(e={}){return{id:"clay:page",order:400,prepare(t={}){return t.initial===!0?A?Kt(A,{held:!1}):{enable(){},quiesce(){},resume(){},dispose(){}}:Jr(t,e)}}}var he={ready:null,install:zt,get status(){return A?.result??fe},flush(e={}){let t=A;return!t||!t.flush?Promise.resolve({ok:!1,code:"disposed"}):t.flush(e)},dispose:qe,get view(){return A?.view??null},get settings(){return A?.settings??null}};et(e=>{let t=A?.binding;if(!t?.filePending())return;let r=N?.acceptedPageState(e);r&&t.acceptFile(r)});he.ready=Ze()?zt():null;var So=he;export{Nt as PAGE_FULL_MESSAGE,Or as WRITER_WAIT_MS,Gr as createSteps,So as default,bo as modeParticipant,he as page,bo as pageParticipant,Jr as preparePageSession};
1
+ import{a as Ce}from"../c-3GJ4SDE2.js";import{a as vt,b as bt,c as St}from"../c-LPUJXRXW.js";import{a as wt}from"../c-BYTKL6UX.js";import{a as mt,b as B,c as R}from"../c-E4IBSAQM.js";import{a as Ee,b as Re}from"../c-RHMPKZZ7.js";import{a as kt}from"../c-L4WQSC27.js";import{d as it,e as ut,i as dt,j as Pe,n as V,o as pt,q as ce,r as ft,s as gt,t as xe,u as yt,v as ht}from"../c-UXEVJ63W.js";import"../c-JKZJIUIP.js";import{a as se}from"../c-TCCA5BZN.js";import{k as Oe}from"../c-3LDGIBMN.js";import"../c-57XDY6HC.js";import"../c-LZJPNR2W.js";import{b as ct}from"../c-FILLTJA7.js";import{a as rt}from"../c-NUHP2XDB.js";import{A as lt,E as st,d as at,e as ne,g as nt,m as je,n as le}from"../c-NLZ5AN4L.js";import"../c-4ASQPRQL.js";import"../c-GQ6F6IDK.js";import{a as ot}from"../c-I2SCCUEW.js";import"../c-5VYOWDTI.js";import"../c-GSRLXYWL.js";import"../c-X5LNHET5.js";import"../c-WYFDLITL.js";import"../c-UGHH4MB3.js";import"../c-LA2BW7UY.js";import{d as ae}from"../c-GVPNDIKJ.js";import{a as et}from"../c-ATKAOH23.js";import"../c-EK63G3CG.js";import{a as Te,c as tt,d as Ae}from"../c-NQJRVJ56.js";import{d as ke}from"../c-XGH4GS2T.js";import"../c-IJUK2GPW.js";import{k as Ze}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{D as q}from"../c-EGTIAL6P.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var gr=Object.freeze({"page-converting":"retrying","page-capacity":"retrying",busy:"retrying","rate-limited":"retrying",offline:"retrying",network:"retrying","network-error":"retrying",timeout:"retrying","save-history-pending":"retrying","page-condition-required":"blocked","page-conversion-refused":"blocked","page-conversion-required":"blocked","page-conversion-stale":"blocked","save-id-reused":"blocked","too-large":"blocked","unsupported-host":"blocked","save-history-refresh-required":"blocked","provenance-unsupported":"blocked","receipt-expired":"blocked","page-full":"blocked","compaction-failed":"blocked"}),Tt=({unavailable:e,pending:t,journaled:r,acknowledged:a,checkpointed:n}={})=>e?"unavailable":t>0?"pending":r>0?"journaled":a>0?"acknowledged":n?"checkpointed":null,ie="Can't save here. Your edits are still in this tab.",ue="Still trying to save. Your edits are safe in this tab.";function G({ok:e=!1,code:t=null,offline:r=!1}={}){return e?"saved":r?"retrying":gr[t]??"error"}function At(e){let t;try{t=new DOMParser().parseFromString(e,"text/html")}catch{return e}let r=[...t.querySelectorAll('script[type="application/json"][merge="page"][clay~="live"]')].filter(u=>!u.closest("template")&&!u.closest("noscript"));if(r.length!==1)return e;let a=r[0].outerHTML,n=e.indexOf(a);return n<0||e.indexOf(a,n+1)!==-1?e:e.slice(0,n)+e.slice(n+a.length)}async function de(){let{forSave:e}=q({emitForSync:!1});return await Re({html:At(e),name:`${Ee()}.html`})}async function Ie(e){return await Re({html:At(e),name:`${Ee()}.html`})}async function Et(){try{let{forSave:e}=q({emitForSync:!1}),r=new DOMParser().parseFromString(e,"text/html").querySelectorAll("article[data-page]");return r.length!==1?!1:(await navigator.clipboard.writeText(r[0].textContent),!0)}catch{return!1}}var Rt="clay.page.author",Le="clay.page.author.owned.",jt=()=>globalThis.crypto?.randomUUID?.()??`${Date.now().toString(36)}-${Math.random().toString(36).slice(2)}`;function Ot(e=globalThis.localStorage){try{let t=[];for(let a=0;a<e.length;a++){let n=e.key(a);n&&n.startsWith(Le)&&t.push(n.slice(Le.length))}let r=e.getItem(Rt);return(!r||!t.includes(r))&&(r=jt(),e.setItem(Le+r,"1"),e.setItem(Rt,r),t.push(r)),{token:r,owned:t.sort()}}catch{let t=jt();return{token:t,owned:[t]}}}var P=Object.freeze({loading:"loading",joining:"joining",adopting:"adopting",ready:"ready",blocked:"blocked",error:"error"}),yr=new Set([P.ready,P.blocked,P.error]),Pt=0,Ct=()=>globalThis.performance?.now?.()??Date.now();function It({gen:e=0,isCurrent:t=()=>!0,onPhase:r=null}={}){return Pt+=1,{installId:Pt,gen:e,isCurrent:t,onPhase:typeof r=="function"?r:null,phase:P.loading,result:null,at:Ct(),controller:new AbortController,disposers:[],disposed:!1,steps:null,deferred:null}}function f(e){return!e.disposed&&!e.controller.signal.aborted&&e.isCurrent()!==!1}function Fe(e,t){return f(e)&&!!t?.view&&e.mounted===t.view}function D(e,t,r=null){if(yr.has(e.phase)&&e.result)return e.result;e.phase=t,e.at=Ct(),e.result=Object.freeze({phase:t,reason:r??null,installId:e.installId,at:e.at});try{e.onPhase?.(e.result)}catch(a){console.error("clayjs: page boot phase callback failed",a)}return e.result}function De(e,t){let r=D(e,P.blocked,t);return e.editorReadyResolve?.(),r}function Lt(e,t){return D(e,P.error,t)}function W(e,t){return typeof t=="function"&&e.disposers.push(t),t}function He(e){if(e.disposed)return;e.disposed=!0,e.mounted=null;try{e.controller.abort()}catch(r){console.error("clayjs: page boot abort failed",r)}let t=e.disposers.splice(0).reverse();for(let r of t)try{r()}catch(a){console.error("clayjs: a page boot disposer failed",a)}}function pe(e,t){let r=globalThis.performance;if(typeof r?.mark=="function")try{r.mark(e,{detail:{installId:t.installId}})}catch{try{r.mark(e)}catch{return}}}function hr(e,t){try{t.release?.(e)}catch(r){console.error("clayjs: page boot release failed",r)}}function Y(e,t,r){return t.cancelled?null:(hr(e,r),De(e,t.reason??"boot-incomplete"))}function xt(e,t,r,a=null){return Promise.resolve(e).then(n=>n??{ok:!1,reason:r},n=>(console.error(`clayjs: page boot ${r}`,n),{ok:!1,reason:r})).then(n=>(n.ok&&a&&f(t)&&pe(a,t),n))}function mr(e,t){return new Promise(r=>{let a=e.controller.signal,n=!1,u=S=>{n||(n=!0,r(S))};if(a.aborted)return u({cancelled:!0});a.addEventListener("abort",()=>u({cancelled:!0}),{once:!0});let y=new Array(t.length),b=t.length;t.forEach((S,E)=>{S.then(j=>{if(!n){if(!j.ok)return u({result:j,branch:S});y[E]=j,b-=1,b===0&&u({results:y})}})})})}async function Ft(e,t,{activate:r=!0}={}){pe("document:boot",e),D(e,P.loading);let a=t.readSource(e);if(!f(e))return null;if(!a.ok)return De(e,a.reason);let n=a.source;D(e,P.joining);let u=await mr(e,[xt(t.loadEditorAssets(e,n),e,"editor-assets-failed","document:assets-ready"),xt(t.prepareAuthority(e,n),e,"authority-failed","document:authority-ready")]);if(u.cancelled||!f(e))return null;if(!u.results){try{e.controller.abort()}catch(x){console.error("clayjs: page boot abort failed",x)}return Y(e,u.result,t)}let[y,b]=u.results,S=t.mountAndAttach(e,n,y,b);if(!f(e))return null;if(!S.ok)return Y(e,S,t);e.mounted=S.view??null,D(e,P.adopting);let E=await t.adoptSource(e,n,S);if(!f(e))return null;if(!E.ok)return Y(e,E,t);if(!r){if(t.prepareInput){let x=await t.prepareInput(e,S);if(!f(e))return null;if(!x.ok)return Y(e,x,t)}return e.deferred=S,{phase:e.phase,view:S.view,deferred:!0}}let j=await t.enableInput(e,S);return f(e)?j.ok?(pe("document:input-ready",e),D(e,P.ready)):Y(e,j,t):null}function Dt(e){let t=e.deferred;if(e.deferred=null,!t||!f(e))return e.result??null;let r=e.steps?.openInput?.(e,t);return r?.ok?(pe("document:input-ready",e),D(e,P.ready)):De(e,r?.reason??"input-refused")}var X="article[data-page]",z='script[type="application/json"][merge="page"][clay~="live"]',Ht={state:"blocked",code:"unsupported-host",message:"This host does not support page editing"},Ve="Changes cannot be stored on this device. Download a copy to keep them.",wr=45e3,vr="Couldn't save",br="Offline, not saved",Bt="This page was changed outside the editor. Reload to see it.",Sr="That change is too large to share, so it was not saved. Reload the page to keep editing.",kr=/^[ur][0-9a-z]+(-[0-9a-z]+){2}$/,Nt="This document is full, though your changes are still here to download. To edit again, reload this tab after another editor, or the owner in another browser, deletes content.",Tr="Some changes you made were replaced by a change made outside the editor.",Gt="The page was changed outside the editor; reload to see it.",Ar=150,Er="Loading the editor\u2026",Be="the page session has not committed yet",_t=e=>e!==null&&typeof e=="object"&&!Array.isArray(e);function Ne(e){return _t(e)?e.v!==1||!_t(e.y)||Object.hasOwn(e,"blocks")||Object.hasOwn(e,"deleted")?(console.warn("clayjs: page plugin: the page tag is not a strict Yjs page, leaving the page as saved HTML"),"unsupported-page-format"):null:(console.warn("clayjs: page plugin: the page tag is not JSON, leaving the page as saved HTML"),"invalid-page-json")}var N=null,Mt=null;function H(){return Mt??=import("../c-YSB6JKV2.js").then(e=>N=e),Mt}function Rr(e){let t=new Set;return e.forEach(r=>{let a=St(r);a&&t.add(a)}),[...t]}function _(e){e.statusTimer&&(clearTimeout(e.statusTimer),e.statusTimer=null),e.statusNote?.remove(),e.statusNote=null}function jr(e,t){_(e),e.statusTimer=setTimeout(()=>{if(e.statusTimer=null,!f(e))return;let r=t.ownerDocument.createElement("div");r.className="page-boot-status",r.setAttribute("clay","editor-ui"),r.setAttribute("sap-ignore",""),r.setAttribute("role","status"),rt(r,["display:block","margin:0 0 1em","font:500 13px/1.6 system-ui, sans-serif","color:color-mix(in srgb, currentColor 55%, transparent)","user-select:none"]),r.textContent=Er,t.prepend(r),e.statusNote=r},Ar)}var ye=0,A=null,fe=null,Or=8e3;function Pr(e,t=globalThis.location){let r=t?.hash?.slice(1);if(!r)return;let a;try{a=decodeURIComponent(r)}catch{return}let n=-1;e.state.doc.forEach((u,y)=>{n<0&&u.attrs.id===a&&(n=y)}),!(n<0)&&globalThis.requestAnimationFrame?.(()=>e.nodeDOM(n)?.scrollIntoView?.({block:"start"}))}function K(e,t=null,r=""){document.dispatchEvent(new CustomEvent("clay:page-save-state",{detail:{state:e,code:t,message:r}}))}function Wt(){R(vr),R(br)}function $t(e){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),e.retryShown=!1,R(ue)}function xr(e,t,r){Wt(),K("retrying",t,r),!(e.retryTimer||e.retryShown)&&(e.retryTimer=setTimeout(()=>{e.retryTimer=null,e.retryShown=!0,B(ue,"warning")},wr))}function Jt(e,t=!1){e.retryTimer&&(clearTimeout(e.retryTimer),e.retryTimer=null),R(ue,{now:t}),R(ie,{now:t}),R(Ve,{now:t})}function Ge(e,t,r,a="blocked"){$t(e),Wt(),K(a,t,r),B(a==="unavailable"?Ve:ie,"error",{detail:r,actions:[{label:"Download a copy",onClick:de},{label:"Copy text",onClick:Et}]})}function Cr(e){$t(e),R(ie),R(Ve),K("saved",null,"")}function Ir(e,t,r=!1){if(typeof e!="string"||!e)return!1;let a;try{a=new DOMParser().parseFromString(e,"text/html")}catch{return!1}let n=a.querySelectorAll(X);return r?n.length!==1&&!a.querySelector(z):n.length!==1||a.querySelector(z)?!1:n[0].getAttribute("data-rev")!==t}function Lr(e){if(!e.store||!N)return e.savedRev;try{return N.renderFromTags([JSON.stringify(e.store.value)]).rev}catch{return e.savedRev}}function Yt(e){let t=e.view;t&&(t.setProps({editable:()=>!1}),t.setProps({dispatchTransaction:r=>t.updateState(t.state.apply(r))}));try{e.binding?.dispose()}catch(r){console.error("clayjs: page plugin binding failed to dispose",r)}e.savesHeld||(e.savesHeld=!0,je(Gt))}async function Fr(e){if(!e.tabValue)return await de();let{forSave:t}=q({emitForSync:!1}),r=new DOMParser().parseFromString(t,"text/html"),a=r.querySelectorAll(X);if(a.length!==1)return await de();let n=N.renderFromTags([JSON.stringify(e.tabValue)]);return a[0].innerHTML=n.html,n.rev==null?a[0].removeAttribute("data-rev"):a[0].setAttribute("data-rev",n.rev),await Ie(`<!DOCTYPE html>
2
+ ${r.documentElement.outerHTML}`)}function We(e,t,{reload:r=!0}={}){if(e.replaced)return;e.replaced=!0,Yt(e);let a={label:"Download your copy",onClick:()=>Fr(e)};B(t,"warning",{actions:r?[{label:"Reload",onClick:()=>window.location.reload()},a]:[a]})}var Me=e=>We(e,Bt),Dr=e=>We(e,Sr),Hr=(e,t)=>{K("blocked",t,Nt),We(e,Nt,{reload:!1})};function U(e,t,r,a){t==="saved"?Cr(e):t==="retrying"?xr(e,r,a):t==="blocked"&&Ge(e,r,a)}function C(e,t,r){document.addEventListener(t,r),e.listeners.push([t,r])}function Nr(e){C(e,"clay:save-error",r=>{let a=r.detail?.code??null;a!=="page-nothing-to-write"&&U(e,G({code:a}),a,r.detail?.msg??"")}),C(e,"clay:save-offline",r=>{let a=r.detail?.code??null;U(e,G({code:a,offline:!0}),a,r.detail?.msg??"")}),C(e,"clay:save-conflict",r=>{let a=r.detail?.code??null;U(e,G({code:a}),a,r.detail?.msg??"")});let t=r=>{_r(e,r)};C(e,"clay:save-conflict",t),C(e,"clay:save-error",t),C(e,"clay:save-saved",r=>{U(e,G({ok:!0}),null,r.detail?.msg??""),e.savedRev=Lr(e),e.adoption?.saved(lt())}),C(e,"clay:live-notice",r=>{if(r.detail?.name!=="page"||r.detail?.code==="op-too-large")return;if(r.detail?.code==="unknown-store"){Me(e);return}let a=r.detail?.code??null;U(e,G({code:a}),a,r.detail?.message??"")})}async function Ut(){let e=await fetch(new URL(globalThis.location.href).href,{cache:"no-store"});if(!e?.ok)return null;let t=await e.text(),r=new DOMParser().parseFromString(t,"text/html"),a=r.querySelector(X);if(!a)return null;let n=r.querySelector(z),u=e.headers?.get?.("etag")||null,y=r.documentElement.getAttribute("documentetag")||(u&&!/^W\//.test(u)?u:null);return{article:a,value:n?se(n.textContent):null,etag:y}}async function _r(e,t){let r=e.staged;if(!r||e.staleRetry||e.replaced)return;let a=t?.detail?.code??null;if(!(a!=="page-lineage-stale"&&a!=="conflict")&&!(!e.store||!r.isPending())){e.staleRetry=!0;try{let n=await Ut();if(!n||!f(e))return;let u=await H();if(!f(e))return;let y=n.value??u.seedPageFromArticle(n.article.cloneNode(!0)),b=n.etag??t?.detail?.etag??null;b&&tt(b),e.store.rebase(y,{source:"state"}),await st()}catch(n){console.warn("clayjs: page plugin could not offer the refused first write again",n)}}}function $e(e){let t=e.article;if(!t)return;let r=e.bootHtml,a=e.bootRev;if(e.store&&N)try{let n=N.renderFromTags([JSON.stringify(e.store.value)]);r=n.html,a=n.rev}catch(n){console.error("clayjs: page plugin could not render the saved article",n)}t.innerHTML=r,a==null?t.removeAttribute("data-rev"):t.setAttribute("data-rev",a)}function Je(e){for(let[t,r]of e.listeners)document.removeEventListener(t,r);e.listeners=[];try{e.adoption?.dispose()}catch(t){console.error("clayjs: page plugin adoption failed to dispose",t)}e.adoption=null;try{e.recover?.destroy()}catch(t){console.error("clayjs: page plugin recover list failed to dispose",t)}if(e.recover=null,e.aiTool?.dispose(),e.aiTool=null,e.awareness?.dispose(),e.awareness=null,e.toolHost?.dispose(),e.toolHost=null,e.view&&wt.delete(e.view),e.article){let t=e.article.querySelector(".page-shell");t&&t.remove()}try{e.binding?.dispose()}catch(t){console.error("clayjs: page plugin binding failed to dispose",t)}try{e.binding?.ydoc?.destroy()}catch(t){console.error("clayjs: page plugin document failed to destroy",t)}try{e.staged?.close()}catch(t){console.error("clayjs: page plugin staged store failed to close",t)}if(e.staged=null,e.pageStore){try{pt("page",e.pageStore)}catch(t){console.error("clayjs: page plugin store failed to close",t)}e.pageStore=null}e.binding=null,e.flush=null,e.releaseArticle?.(),e.releaseArticle=null}function qt(e){let t=e.view;if(t&&!t.isDestroyed&&typeof t.destroy=="function")try{t.destroy()}catch(r){console.error("clayjs: page plugin view failed to destroy",r)}e.titleObserver?.dispose(),e.titleObserver=null,_(e),Je(e),$e(e)}function qe(){ye+=1;let e=A;if(A=null,ae("Page-Write",null),Pe(null),!!e){He(e),Jt(e),R(Bt);for(let t of e.notices?.values()??[])R(t);if(e.savesHeld&&(e.savesHeld=!1,le({replay:!1,reason:Gt})),e.titleObserver?.dispose(),e.titleObserver=null,_(e),e.sessionHeld&&le({replay:!1,reason:Be}),e.autosaveSuspended&&ne(),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}Je(e),$e(e)}}var _e=null;function Ye(){return _e||(_e=Promise.all([import("../c-OKXI52N7.js"),import("../c-BJPZCWAV.js"),import("../c-67LGZ52V.js")]).then(([e,t,r])=>({replay:e,proof:t,ui:r})).catch(e=>(console.warn("clayjs: page journal could not load",e),null))),_e}async function Mr(e,t){let r=globalThis.window?.clay?.recovery??null;if(!r||!t)return null;let a=await Ye();if(!a)return null;try{return a.replay.openPageJournal({meta:e,service:r,base:a.replay.journalBase(t.value)})}catch(n){return console.warn("clayjs: page journal could not open",n),null}}async function Vt(e){let t=e.binding?.journal;if(!t||!e.store)return{replayed:[],review:[]};let r=await Ye();if(!r)return{replayed:[],review:[]};let a=await r.replay.replayInto({journal:t,state:e.store.value,into:e.binding.ydoc});return Br(e,r),a.replayed.length&&e.binding.provider.settle(),a.review.length&&(e.recoveryReview=a.review),qr(e,r.ui)?.update({rows:r.replay.describeReview(a.review)}),a}function qr(e,t){if(e.recoveryPanel)return e.recoveryPanel;let r=e.view,a=r?.dom.closest(".page-shell")??e.article;if(!a)return null;let n=t.createRecoveryReview({mount:a,getView:()=>e.view&&!e.view.isDestroyed?e.view:null,getJournal:()=>e.binding?.journal??null,isCurrent:()=>f(e)&&e.inputOpen&&!!e.view&&!e.view.isDestroyed}),u=n.watch(r?.dom??null);return W(e,()=>{u(),n.destroy()}),e.recoveryPanel=n,n}function Vr(e){Pe(async({capture:t,state:r,article:a,etag:n})=>{let u=e.binding?.journal;if(!u)return;let y=await Ye(),b=y?await u.context():null;if(!b)return;let{hostPageStateHref:S}=await import("../c-ZRXJD4G6.js"),E=await y.proof.checkpointAccepted({channel:u.channel,records:u.records(),capture:t,accepted:b,article:a,state:r,etag:n,href:await S()});E.ok&&(u.retire(E.retired),e.pageStatus?.checkpoint(),await u.rebase?.(y.replay.journalBase(E.proof.state)))})}function Br(e,t){let r=e.binding?.journal;return!r||e.pageStatus?e.pageStatus??null:(e.pageStatus=t.replay.watchJournal({journal:r,store:e.store,reduce:Tt,onState:a=>K(a),onUnavailable:a=>Ge(e,a,"","unavailable")}),W(e,()=>e.pageStatus?.dispose()),e.pageStatus)}function Gr(e,t){let r=null,a=null,n=null,u=null,y=null,b=null,S=null,E=[],j=null,x=null,$=null,Q=null,Z=null,Qt=new Promise(o=>{u=o});e.editorReadyResolve=u,W(e,()=>u?.()),W(e,()=>_(e));let ee=null,me=null;e.loadFormatGate=()=>ee?Promise.resolve(ee):(me??=Promise.all([import("../c-E3ZXARWA.js"),import("../c-EZ7B5AZT.js")]).then(([{createFormatGate:o},{createFormatHost:l}])=>{let s=l();return ee=o({host:s,supported:s.supported,installed:()=>y?.token??null,revision:()=>null,lane:{switchScope:(c,d)=>{let i=gt();return i?i.switchScope(c,{...d,covered:!!d?.covered||!ft()}):{status:"refused",code:"lane-unavailable"}}}}),ee}).catch(o=>{throw me=null,o}),me);let Ue='script[type="application/json"][merge="page.tools"][clay~="live"]',Zt=()=>$||($=(async()=>{if(!document.querySelector(Ue)){let c=document.createElement("script");c.setAttribute("type","application/json"),c.setAttribute("merge","page.tools"),c.setAttribute("clay","live"),c.textContent="{}",document.head.appendChild(c)}if(document.querySelector(Ue))try{j=window.clay.live("page.tools"),await j.ready}catch(c){console.warn("clayjs: page plugin could not open the tool store",c)}if(!f(e))return null;let[{createToolHost:o},{tablesFromDoc:l}]=await Promise.all([import("../c-GRWMD6O5.js"),import("../c-A6L3FMUS.js")]);if(!f(e))return null;let s=o({store:j,mode:"edit",tables:()=>l(n?.state.doc??a.doc()).map(({id:c,cols:d,rows:i})=>({id:c,cols:d,rows:i}))});if(e.toolHost=s,Ce(r)){let{createAiTool:c}=await import("../c-EFD6QNTE.js");if(!f(e))return null;let d=window.clay?.wire?.pageTool??t.transport??null;x=c({getView:()=>e.view,store:j,transport:d,acceptState:t.acceptState}),e.aiTool=x}return s})().catch(o=>{throw $=null,o}),$),te='script[type="application/json"][merge="page.settings"][clay~="live"]',Xe=["assignees","dates"],M=null,we={assignees:!0,dates:!0},re=o=>({assignees:o?.assignees!==!1,dates:o?.dates!==!1});function er(){let o=document.querySelector(te);if(!o)return re(null);let l=null;try{l=JSON.parse(o.textContent)}catch{l=null}return re(l)}function oe(o){we=re(o);let l=e.view&&!e.view.isDestroyed?e.view.dom:null;if(l)for(let s of Xe)we[s]?l.removeAttribute(`data-${s}`):l.setAttribute(`data-${s}`,"false")}let ve=()=>M||(M=(async()=>{if(!document.querySelector(te)){let l=document.createElement("script");l.setAttribute("type","application/json"),l.setAttribute("merge","page.settings"),l.setAttribute("clay","live"),l.textContent="{}",document.head.appendChild(l)}let o=null;try{o=window.clay.live("page.settings"),await o.ready}catch(l){return console.warn("clayjs: page plugin could not open the settings store",l),M=null,null}return f(e)?(oe(o.data),o.on("change",()=>oe(o.data)),o):null})(),M);e.settings={read:()=>({...we}),set:async(o,l)=>{if(!Xe.includes(o))throw new TypeError(`clayjs: "${o}" is not a page setting`);let s=await ve();if(!s)throw new Error("clayjs: the page settings store could not be opened");let c={...re(s.data),[o]:l!==!1};s.set([o],c[o]),oe(c)}};let J=new Map,tr=o=>{if(J.has(o))return;let l=`The ${o} controls could not load. Reload the page after saving.`;J.set(o,l),B(l,"warning",{actions:[{label:"Retry",onClick:()=>{b.ensure(o).then(()=>{let s=J.get(o);s&&(J.delete(o),R(s))},()=>{})}}]})};e.notices=J;let be=async({target:o=null,remove:l=null}={})=>{Q&&n&&l&&Q.holdSlashRange(n,l),await b.ensure("tool").catch(()=>{}),!(!f(e)||!x||!n)&&x.open({target:o,remove:l?Q.heldSlashRange(n.state):null})},Se=()=>Ce(r);function rr(o){let l=document.querySelectorAll(X),s=typeof o.context?.represented?.bytes=="string"?new DOMParser().parseFromString(o.context.represented.bytes,"text/html"):null,c=s?s.querySelectorAll(X):l,d=s?s.querySelectorAll(z):document.querySelectorAll(z);if(!c.length&&!d.length)return{ok:!1,reason:"no-page"};let i=c.length===1&&d.length===0;if(c.length!==1||!i&&d.length!==1)return console.warn(`clayjs: page plugin needs exactly one article[data-page] and one merge="page" live tag; found ${c.length} article(s) and ${d.length} tag(s), leaving the page as saved HTML`),{ok:!1,reason:"ambiguous-page"};let m=l[0];if(!m)return{ok:!1,reason:"no-page"};let p=c[0],v=d[0],w=null;if(!i){try{w=se(v?.textContent)}catch{w=null}let T=Ne(w);if(T)return{ok:!1,reason:T}}let h={article:p.cloneNode(!0),tags:w?[w]:null,element:m,blocks:null,seeded:i,seedValue:null};return h.ready=(async()=>{let T=await H();if(!f(o))return{ok:!1,cancelled:!0};if(i){try{let g=await ke(),O=g?.extensions?.includes("page-recovery-v1")&&g.document?.pageState?.href,I=o.context?.represented?o.context.represented.etag:Ae()??Te();if(O&&I){let{readPageState:L}=await import("../c-BJPZCWAV.js"),F=await L({href:O,etag:I});if(!f(o))return{ok:!1,cancelled:!0};if(F.ok){if(F.etag!==I)return{ok:!1,reason:"etag-mismatch"};w=se(F.tag),h.persisted=!0}else if(F.code!=="no-page-state")return{ok:!1,reason:F.code}}else if(O){let L=await Ut();if(!f(o))return{ok:!1,cancelled:!0};if(!L||!L.article.isEqualNode(h.article))return{ok:!1,reason:"stale-document"};w=L.value,h.persisted=w!==null}w=h.seedValue=w??T.seedPageFromArticle(h.article.cloneNode(!0))}catch(g){return console.warn("clayjs: page plugin could not rebuild the page it found, leaving the page as saved HTML",g),{ok:!1,reason:"invalid-page-source"}}let k=Ne(w);if(k)return{ok:!1,reason:k};h.tags=[w]}try{h.blocks=T.blocksFromYValue(w)}catch(k){return console.warn("clayjs: page plugin: the page tag is not a valid Yjs page, leaving the page as saved HTML",k),{ok:!1,reason:"invalid-page-json"}}return{ok:!0}})(),jr(o,m),{ok:!0,source:h}}function or(o,l){if(Ne(l))return!1;if(Oe(o.authoritative)===Oe(l))return!0;try{return o.rebase(l,{source:"state"})}catch(s){return console.warn("clayjs: page plugin could not reconcile the open page store with the saved file",s),!1}}async function ar(o,l){let s=H();s.catch(()=>null);let c=await l.ready;if(!c.ok)return c;if(!f(o))return{ok:!1,cancelled:!0};let d=await s,i=[...new Set(Object.values(l.blocks).map(p=>bt(p.t)).filter(Boolean))];b=d.createFeatureLoader({load:p=>vt[p].load(),install:async(p,v)=>{if(n||await Qt,!f(o)||!n)return null;let w={view:n,upload:t.upload,board:a.board,undo:a.undo,redo:a.redo,revise:Se()?(h,T)=>{be({target:{toolId:h,rev:T}})}:null};return p==="tool"&&(w.toolHost=await Zt(),!f(o))?null:m.installPageFeature(w,p,v)},reportError:(p,v)=>{console.error("clayjs: an editor feature failed to load",p),tr(v)}});for(let p of i)b.prepare(p).catch(()=>null);let m=null;try{m=await import("../page/editor-EY2WAAGB.js"),Z=m.setEditorActive,Q={holdSlashRange:d.holdSlashRange,heldSlashRange:d.heldSlashRange}}catch(p){return console.error("clayjs: page plugin could not load the editor",p),{ok:!1,reason:"editor-assets-failed"}}return f(o)?{ok:!0,editor:m.createPageEditor,refreshView:m.refreshMountedView,featureIds:i,code:d}:{ok:!1,cancelled:!0}}async function nr(o,l){let s=H();try{r=await ke()}catch{r=null}if(!f(o))return{ok:!1,cancelled:!0};if(!r||!Array.isArray(r.extensions)||!r.extensions.includes("page"))return Ge(o,Ht.code,Ht.message),{ok:!1,reason:"missing-capability"};o.mergeTagless=!r.extensions.includes("live-data"),ae("Page-Write","v1");let c=null,d=null;if(l.seeded){if(c=await l.ready,!c.ok)return c;if(d=await s,!f(o))return{ok:!1,cancelled:!0}}let i,m=!0;try{if(l.seeded){let g=dt("page",{value:l.seedValue,represented:t.represented??{bytes:l.article.outerHTML,etag:Ae()??Te()},persisted:l.persisted});o.staged=g,i=g.handle}else{let g=V("page")===null;m=g,i=window.clay.live("page"),g&&(o.pageStore=V("page"))}}catch(g){return console.warn("clayjs: page plugin could not open the page store",g),{ok:!1,reason:"missing-page-store"}}try{await i.ready}catch(g){return console.warn("clayjs: page plugin could not join the page room",g),{ok:!1,reason:"admission-failed"}}if(!f(o))return{ok:!1,cancelled:!0};if(c??=await l.ready,!c.ok)return c;let p=V("page")?.handle?.status?.mode==="fast";if(!m&&!p&&!or(V("page"),l.tags?.[0]))return{ok:!1,reason:"stale-store"};if(d??=await s,!f(o))return{ok:!1,cancelled:!0};let v=V("page");if(!v)return{ok:!1,reason:"missing-page-store"};o.store=v;let w=!1,h=null,T=async g=>{let O=await g();return w=O?.ok===!1,h?.changed(),O};y=Ot();let k=await Mr(r,v);return f(o)?(a=d.createYPageBinding({store:v,onStopped:g=>{o.tabValue=d.yValueOf(a.ydoc),g==="lineage"?(ce()?.abandon?.("page"),Me(o)):g==="page-full"||g==="compaction-failed"?Hr(o,g):Dr(o)},authorToken:y.token,ownedTokens:y.owned,checkpointWithin:xe,requestCheckpoint:ht,requestExitCheckpoint:g=>yt({name:v.name,...g}),journal:k,exitClosed:()=>!nt(),registerUnsavedState:g=>(h=ot({id:g.id,isPending:()=>w||g.isPending(),flush:O=>T(()=>g.flush(O))}),h)}),o.binding=a,k&&Vr(o),o.flush=g=>T(()=>a.flush(g)),Nr(o),{ok:!0,store:v,handle:i}):{ok:!1,cancelled:!0}}function lr(o,l){import("../c-BTLFLLML.js").then(async s=>{if(o.view!==l)return;let c=await s.installPageAwareness({binding:o.binding,view:l});if(c){if(o.view!==l||l.isDestroyed){c.dispose();return}o.awareness=c}}).catch(s=>console.error("clayjs: page plugin remote carets failed to load",s))}function sr(o,l,s){let c=l.element;o.context?.reader?.yieldArticle?.();try{o.releaseArticle=kt(c,"editor")}catch(p){return console.error("clayjs: page plugin could not claim the article",p),{ok:!1,reason:"article-owned"}}o.source=l,o.article=c,o.bootHtml=l.article.innerHTML,o.bootRev=l.article.getAttribute("data-rev"),o.savedRev=o.bootRev,C(o,"clay:sync-applied",p=>{o.replaced||Ir(p.detail?.html,o.savedRev,o.mergeTagless)&&Me(o)}),E=[...c.childNodes].filter(p=>p!==o.statusNote);let d=c.ownerDocument.createElement("div"),i=null;try{i=s.editor(d,{doc:a.doc(),dispatch:a.dispatch,history:!1,undo:a.undo,redo:a.redo,board:a.board,editable:!1,features:b,onAiTool:Se()?(p,v)=>{be({remove:v})}:null,reviseTool:Se()?(p,v)=>{be({target:{toolId:p,rev:v}})}:null,formatGate:o.loadFormatGate})}catch(p){return console.error("clayjs: page plugin could not mount the editor",p),d.replaceChildren(),o.releaseArticle?.(),o.releaseArticle=null,o.article=null,{ok:!1,reason:"mount-failed"}}n=i,o.view=i,oe(er()),document.querySelector(te)?ve().catch(()=>null):C(o,"clay:sync-applied",()=>{!M&&document.querySelector(te)&&ve().catch(()=>null)});let m=i.dom.closest(".page-shell");if(m&&(m.inert=!0),s.featureIds.length&&m&&(m.style.visibility="hidden"),!s.featureIds.length)for(let p of E)p.remove();return m&&c.appendChild(m),s.refreshView?.(i),a.attach(i),lr(o,i),u(),S=Promise.allSettled(s.featureIds.map(p=>b.ensure(p))),Pr(i),o.recover=s.code.createRecoverList({binding:a,mount:i.dom.closest(".page-shell")??c,ownTokens:[y.token,...y.owned],onRestored:p=>s.code.focusBlock(i,p),onStale:()=>mt("That change was updated. The list now shows the latest version.","warning")}),o.titleObserver=s.code.observeDocumentTitle(i),{ok:!0,view:i,featureIds:s.featureIds}}async function cr(o,l){try{let s=await H(),{HyperMorph:c}=await ct(),d=s.blocksFromYValue(o.store.authoritative),i=s.readBack(d,document),m=s.mergePageModels(l.baseItems,i,l.parsed,{doc:document,merge3:c.merge3,mergeJson:c.mergeJson});return s.canon(m.items)===s.canon(i)}catch{return!1}}async function ir(o,l){let s=await H();return await cr(o,l)?{ok:!0,outcome:"writer-adopts"}:new Promise(c=>{let d=null,i=null,m=!1,p=v=>{m||(m=!0,i&&clearTimeout(i),i=null,d?.(),d=null,c(v))};W(o,()=>p({ok:!1,cancelled:!0})),d=o.store.onRebase(v=>{v.source==="remote"&&p({ok:!0,outcome:"writer-adopts"})}),i=setTimeout(()=>{console.warn("page: gave up waiting for the writer's adoption; the hand edit was not adopted"),p({ok:!1,reason:"adoption-timeout"})},s.ADOPTION_TIMEOUT_MS)})}async function ur(o,l,s){let c=await H(),d=l.seeded?{kind:"untouched"}:c.classifyFile(l.article,l.tags),i=d.kind==="adopt",m=async()=>{let h=await it();if(!h||!f(o))return;if(h.status.writer===null){let k=o.store.value.y,g=Object.keys(k),O=a.ydoc.clientID.toString(36),I=o.store.room?.compaction?.v===1?g.find(F=>kr.test(F))??`u${O}-claim-0`:g.length?g[0]:`claim-${O}`,L=Object.hasOwn(k,I)?k[I]:c.yValueOf(a.ydoc).y.seed;o.store.handle.set(["y",I],L),h.release("page")}let T;await Promise.race([ut(),new Promise(k=>{T=setTimeout(k,Or)})]),clearTimeout(T)},p=i?m():Promise.resolve(),v=c.installAdoption({view:s.view,source:l,ready:p,isAdopter:()=>{let h=ce();return!h||h.status.writer===null?!0:h.isWriter()},requestCheckpoint:()=>xe(0),snapshot:()=>q({emitForSync:!1}).forSave,mergeTagless:o.mergeTagless,seeded:l.seeded,writerReady:m,adopted:h=>ce()?.adopted?.("page",h,o.store.mark),notice:h=>{h.copy&&B(Tr,"warning",{actions:[{label:"Download your copy",onClick:()=>Ie(h.copy)}]})}});o.adoption=v;let w=await v.idle();return w?(w.outcome==="writer-adopts"&&(w=await ir(o,d)),!w.ok&&f(o)?qt(o):f(o)&&await Vt(o),w):(await Vt(o),{ok:!0,outcome:"unchanged"})}async function ze(o,l){if(o.replaced)return{ok:!1,reason:"page-replaced"};if(await S,!f(o))return{ok:!1,cancelled:!0};let s=l.view.dom.closest(".page-shell");if(!Fe(o,l)||!s||!s.isConnected||l.view.isDestroyed)return{ok:!1,reason:"view-detached"};let c=new Set(l.featureIds??[]),d=Rr(l.view.state.doc).filter(i=>!c.has(i));return d.length&&(await Promise.allSettled(d.map(i=>b.ensure(i))),!f(o))?{ok:!1,cancelled:!0}:{ok:!0}}function Ke(o,l){let s=l.view.dom.closest(".page-shell"),c=()=>{for(let d of E)d.remove();s&&(s.style.visibility="")};return o.replaced?(c(),Yt(o),{ok:!1,reason:"page-replaced"}):o.inputOpen?{ok:!0}:!Fe(o,l)||!s||!s.isConnected||l.view.isDestroyed?{ok:!1,reason:"view-detached"}:(c(),s.inert=!1,Z?.(l.view,!0),o.inputOpen=!0,_(o),{ok:!0})}function dr(o){return o.inputOpen?(Z?.(o.view,!1,{quiesce:!0}),!0):!1}function pr(o){return o.inputOpen?(Z?.(o.view,!0),!0):!1}async function fr(o,l){let s=await ze(o,l);return s.ok?Ke(o,l):s}let Qe={readSource:rr,loadEditorAssets:ar,prepareAuthority:nr,mountAndAttach:sr,adoptSource:ur,prepareInput:ze,openInput:Ke,closeInput:dr,resumeInput:pr,enableInput:fr,release:o=>{o.view||qt(o)}};return e.steps=Qe,Qe}async function Wr(e,t={},{activate:r=!0}={}){return Ft(e,Gr(e,t),{activate:r})}function Xt(e={},{activate:t=!0,context:r=null}={}){qe(),fe=null;let a=++ye,n={...It({gen:a,isCurrent:()=>a===ye&&(r?.isCurrent?.()??!0),onPhase:y=>{(y.phase==="ready"||y.phase==="blocked"||y.phase==="error")&&_(n),e.onPhase?.(y)}}),article:null,view:null,binding:null,adoption:null,source:null,store:null,toolHost:null,aiTool:null,bootHtml:"",bootRev:null,savedRev:null,staged:null,pageStore:null,releaseArticle:null,replaced:!1,savesHeld:!1,flush:null,loadFormatGate:null,listeners:[],retryTimer:null,retryShown:!1,statusTimer:null,statusNote:null,notices:null,editorReadyResolve:null,context:r,inputOpen:!1,sessionHeld:!1,autosaveSuspended:!1,staleRetry:!1};A=n;let u=Wr(n,e,{activate:t}).catch(y=>(console.error("clayjs: page plugin failed to install",y),fe=Lt(n,"boot-failed"),A===n&&qe(),fe));return{inst:n,boot:u}}function zt(e={}){return Xt(e).boot}function $r(e){if(A===e&&(A=null,ye+=1),ae("Page-Write",null),He(e),Jt(e,!0),e.titleObserver?.dispose(),e.titleObserver=null,_(e),e.view&&!e.view.isDestroyed)try{e.view.destroy()}catch(t){console.error("clayjs: page plugin view failed to destroy",t)}e.view=null,Je(e),$e(e)}function ge(e){e.sessionHeld&&(e.sessionHeld=!1,le({replay:!1,reason:Be}))}function Kt(e,{held:t=!0}={}){return{enable(){t&&(ge(e),Dt(e))},quiesce(){if(e.view?.composing)throw Object.assign(new Error("clayjs: a composition is still in progress"),{code:"composition"});e.steps?.closeInput?.(e),e.autosaveSuspended||(e.autosaveSuspended=!0,at())},resume(){ge(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),e.steps?.resumeInput?.(e)},dispose(){ge(e),e.autosaveSuspended&&(e.autosaveSuspended=!1,ne()),$r(e)}}}function Jr(e=null,t={}){je(Be);let{inst:r,boot:a}=Xt(t,{activate:!1,context:e});r.sessionHeld=!0;let n=Kt(r,{held:!0});he.ready=a.then(()=>he.status);let u=a.then(y=>{if(!y?.deferred)throw Object.assign(new Error("clayjs: the page session could not prepare"),{code:y?.reason??"load-failed"})});return u.catch(()=>{ge(r);try{e?.reader?.reclaimArticle?.()}catch(y){console.error("clayjs: the reader could not take the article back",y)}}),{ready:u,...n}}function bo(e={}){return{id:"clay:page",order:400,prepare(t={}){return t.initial===!0?A?Kt(A,{held:!1}):{enable(){},quiesce(){},resume(){},dispose(){}}:Jr(t,e)}}}var he={ready:null,install:zt,get status(){return A?.result??fe},flush(e={}){let t=A;return!t||!t.flush?Promise.resolve({ok:!1,code:"disposed"}):t.flush(e)},dispose:qe,get view(){return A?.view??null},get settings(){return A?.settings??null}};et(e=>{let t=A?.binding;if(!t?.filePending())return;let r=N?.acceptedPageState(e);r&&t.acceptFile(r)});he.ready=Ze()?zt():null;var So=he;export{Nt as PAGE_FULL_MESSAGE,Or as WRITER_WAIT_MS,Gr as createSteps,So as default,bo as modeParticipant,he as page,bo as pageParticipant,Jr as preparePageSession};
@@ -1 +1 @@
1
- import{a as be,b as me,c as ve,d as le,f as Se}from"../c-2RARVIAK.js";import{a as ie}from"../c-L4WQSC27.js";import"../c-XGH4GS2T.js";import"../c-3O7OBDCM.js";import{a as ye}from"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var we="saved",Re=2;function Ie(){return Math.random().toString(36).slice(2,11)+Date.now().toString(36)}function Ce(){try{let e=new Uint8Array(16);return(globalThis.crypto||window.crypto).getRandomValues(e),Array.from(e,r=>r.toString(16).padStart(2,"0")).join("")}catch{return Math.random().toString(36).slice(2)+Date.now().toString(36)}}function Me(e){return typeof e!="string"||e===""?null:new DOMParser().parseFromString(e,"text/html").documentElement?.getAttribute("documentetag")||null}var _=e=>typeof e=="string"&&e?e:null;function De(e){let r=window.location.origin;if(typeof r!="string"||r===""||r==="null")return null;let u=new URL(e||window.location.href,r);return u.protocol==="http:"||u.protocol==="https:"?u.href:null}var Y=e=>Number.isSafeInteger(e)?e:null;function ze(e){if(e==null)return Object.freeze({bytes:null,etag:null,seq:null});if(typeof e.bytes!="string"||e.bytes==="")throw new TypeError("createSavedStream: represented.bytes must be a full HTML string");return Object.freeze({bytes:e.bytes,etag:_(e.etag),seq:Y(e.seq)})}function Ae({documentURL:e,servedEtag:r=null,represented:u=null,onSnapshot:f,onStatus:v}={}){if(typeof f!="function")throw new TypeError("createSavedStream: onSnapshot must be a function");let y=De(e),m=!!_(r),s=ze(u);if(y===null){let n={ready:null,get represented(){return s},adopt(){return n},start(){return n.ready=Promise.resolve(n),n},stop(){}};return n}let S=!0,q=s.seq??0,L=0,P=0,z=f,x=v,C=0,T=!1,E=null,A=null,t=null,a=!1,h=null,d=null,c=null,b=null,k=[],O=n=>!T&&n===C;function N(n,l={}){T||typeof x!="function"||x({state:n,...l})}function $(){k.length=0,b&&(!d||d.active)&&b.clear(),d&&(d.detach(),d=null),h=null,b=null,c=null}function se(n,l){if(b){b.update(n);return}k.push(n),!c&&(c=Promise.all([import("../c-VR2BJ4AN.js"),import("../c-BHZYSHW4.js")]).then(([i,w])=>{if(!O(l))return null;h=i.presence,b=w.presence,d=h.attachTransport({send:()=>Promise.resolve(!1)});for(let G of k.splice(0))b.update(G);return b}).catch(()=>(c=null,null)))}function K(){if($(),!E)return;let n=E;E=null,n.onopen=null,n.onerror=null,n.onmessage=null,n.close()}function F(){if(!A)return;let n=A;A=null,n.controller.abort()}function re(n){if(T)return!1;let l={bytes:n.bytes,etag:_(n.etag),seq:Y(n.seq)};if(typeof l.bytes!="string"||l.bytes==="")return N("recoverable",{reason:"invalid-bytes",seq:l.seq}),!1;if(l.bytes===s.bytes&&l.etag===s.etag&&l.seq===s.seq)return!0;let i=!1;try{i=z(Object.freeze(l))===!0}catch{i=!1}return i?(s=Object.freeze(l),N("applied",{seq:s.seq,etag:s.etag}),!0):(N("recoverable",{reason:"refused",seq:l.seq,etag:l.etag}),!1)}function H(n,l){if(l==="startup")return null;let i=Math.max(n.seq??0,q);return i>0?i:null}function ae(n,l){t=n,a=!0,N("recoverable",{reason:l,seq:n.seq??null})}function U(n){T||(t={kind:n.kind,seq:Y(n.seq)},a=!1,B())}function B(){if(T||A||a||!t)return;let n=C,l=t;t=null;let i=new AbortController;A={controller:i};let w=L,G=q,D=j=>{if(A&&A.controller===i&&(A=null),!(!O(n)||i.signal.aborted)){if(j==null){ae(l,"repair-failed");return}if(L!==w||q!==G){if(P+=1,P<=Re){t=t??{kind:l.kind,seq:H(l,l.kind)},B();return}V(j.text,{kind:l.kind,seq:H(l,l.kind)},j.etag),B();return}V(j.text,l,j.etag),B()}};fetch(y,{cache:"no-store",signal:i.signal}).then(j=>j.ok?j.text().then(W=>({text:W,etag:_(j.headers?.get?.("etag"))})):null).then(D).catch(()=>D(null))}function V(n,l,i){let G=Me(n)??(/^W\//.test(i??"")?null:_(i))??(n===s.bytes?s.etag:null),D=l.kind==="startup"?s.seq:l.seq??s.seq;re({bytes:n,etag:G,seq:D})&&(S=!1,P=0,a=!1,N("current",{seq:s.seq,etag:s.etag}))}function o(n,l){let i={bytes:s.bytes,etag:n??s.etag,seq:l??s.seq};i.etag===s.etag&&i.seq===s.seq||(s=Object.freeze(i),N("current",{seq:s.seq,etag:s.etag}))}function p(n,l,i){let w=_(l);if(!(i!==null&&s.seq!==null&&i<=s.seq)){if(!S&&w!==null&&s.etag!==null){if(w!==s.etag){U({kind:"unmatched",seq:i});return}S=!0}if(n===s.bytes){o(w,i);return}re({bytes:n,etag:w,seq:i})&&(S=!0)}}function g(n,l){let i=n.data;if(i&&i.kind==="external-change"){typeof i.html=="string"?p(i.html,i.etag,l):U({kind:"notice",seq:l});return}typeof n.msg=="string"&&n.msg.endsWith("changed on disk outside this tab")&&U({kind:"notice",seq:l})}function R(n,l){if(!O(l))return;L++;let i;try{i=JSON.parse(n)}catch{N("recoverable",{reason:"bad-json"});return}if(!i||typeof i!="object"||Array.isArray(i)){N("recoverable",{reason:"bad-frame"});return}let w=Y(i.seq);if(w!==null&&w>q&&(q=w),i.type==="notification"){g(i,w);return}if(i.error){N("recoverable",{reason:"server-error",seq:w});return}if(typeof i.html!="string"){_(i.etag)?U({kind:"notice",seq:w}):N("recoverable",{reason:"bad-frame",seq:w});return}p(i.html,i.etag,w)}function Q(n,l){if(!O(l))return;L++;let i;try{i=JSON.parse(n)}catch{return}if(!i||typeof i!="object")return;let w=Y(i.seq);if(w!==null&&w>q&&(q=w),i.resync===!0){U({kind:"resync",seq:w});return}i.startup===!0&&U({kind:"startup",seq:null})}function M(n){if(O(n)){if(N("open",{seq:s.seq,etag:s.etag}),a){a=!1,B();return}s.bytes===null&&!m&&U({kind:"startup",seq:null})}}let I={ready:null,get represented(){return s},adopt({onSnapshot:n,onStatus:l}={}){return typeof n=="function"&&(z=n),typeof l=="function"&&(x=l),I},start(){T=!1;let n=++C;return K(),F(),t=null,a=!1,L=0,P=0,q=s.seq??0,I.ready=Se().then(l=>{if(!O(n))return I;let i=Ce(),w=Ie(),G=l.profile.streamPath(y,we,i,w),D=new be(new URL(G,window.location.origin).href,{shared:l.sharedSync,sharedData:l.sharedData,documentURL:y,lane:we,clientId:w,startupCheck:m});return E=D,D.onopen=()=>M(n),D.onerror=()=>{O(n)&&N("reconnecting")},D.onmessage=j=>R(j.data,n),D.addEventListener("cursor",j=>Q(j.data,n)),D.addEventListener("presence",j=>{if(!O(n))return;let W;try{W=JSON.parse(j.data)}catch{return}W&&typeof W=="object"&&!Array.isArray(W)&&se(W,n)}),I}),I},stop(){T||(T=!0,C++,K(),F(),t=null,a=!1)}};return I}var Ue="article[data-page]",Ve='section[data-type="tool"][data-id]',Ne=new Set(["UL","OL","LI","DETAILS"]),qe=new Set(["UL","OL"]),ke=e=>e.tagName==="SECTION"&&e.getAttribute("data-type")==="tool"&&e.hasAttribute("data-id");function Le(e){return ne(e)}function ne(e){let r=e.querySelector(':scope > script[type="application/json"][data-tool]'),u={};try{u=r?JSON.parse(r.textContent):{}}catch(f){return{rev:null,artifact:null,state:{},signature:null,invalid:!0,error:f}}return{rev:u.rev??null,artifact:u.artifact??null,state:u.state??{},signature:JSON.stringify(u.artifact??null),invalid:!1}}function ue(e){let r=new Map,u=new Set;for(let f of e.querySelectorAll(Ve)){let v=f.getAttribute("data-id");if(!u.has(v)){if(r.has(v)){r.delete(v),u.add(v);continue}r.set(v,ne(f))}}return r}function ce(e){let r=e.querySelector('script[type="application/json"][merge="page.tools"]');if(!r)return{};try{return JSON.parse(r.textContent)}catch{return{}}}function Je(e){let r=new Map,u=new Set,f=v=>{for(let y of v.children){let m=y.getAttribute("data-id");if(m){if(u.has(m))continue;if(r.has(m)){r.delete(m),u.add(m);continue}r.set(m,y)}Ne.has(y.tagName)&&f(y)}};return f(e),r}function xe(e){let r=new Set,u=f=>{for(let v of f.children){let y=v.getAttribute("data-id");y&&r.add(y),Ne.has(v.tagName)&&u(v)}};return u(e),r}function X(e,r=document){if(typeof e!="string"||e==="")return{ok:!1,reason:"bytes"};let u=(r.defaultView??globalThis).DOMParser;if(typeof u!="function")return{ok:!1,reason:"parser"};let f=new u().parseFromString(e,"text/html"),v=[...f.querySelectorAll(Ue)];if(v.length!==1)return{ok:!1,reason:"article"};let y=v[0],m=new Map;for(let S of y.querySelectorAll("details[data-id]"))m.set(S.getAttribute("data-id"),S.hasAttribute("open"));let s=ue(y);return{ok:!0,article:y,source:f,rev:y.getAttribute("data-rev"),title:f.title||null,savedOpen:m,tools:s,toolState:s.size?ce(f):{}}}var fe=(e,r)=>{let u=ne(e),f=ne(r);return!u.invalid&&!f.invalid&&u.rev===f.rev&&u.signature===f.signature};function Te(e,{article:r,readerOpen:u=new Map,savedOpen:f=null,keepTool:v=fe}={}){if(!e?.ok||!r)return{changed:!1};for(let t of e.article.querySelectorAll("details[data-id]")){let a=t.getAttribute("data-id");u.has(a)&&t.hasAttribute("open")!==u.get(a)&&t.toggleAttribute("open",u.get(a))}let y=Je(r),m=new Set,s=!1,S=t=>(s=!0,t.cloneNode(!0)),q=(t,a)=>{let h=xe(t);for(let d of a.children){if(m.has(d)||d.hasAttribute("data-id")||d.tagName!==t.tagName)continue;if(!h.size)return d;let c=xe(d);for(let b of h)if(c.has(b))return d}return null},L=(t,a)=>{for(let h of a.children)if(!(m.has(h)||h.hasAttribute("data-id"))&&h.tagName===t.tagName)return h;return null},P=(t,a,h=null)=>{for(let{name:d,value:c}of[...a.attributes])d===h||t.getAttribute(d)===c||(t.setAttribute(d,c),s=!0);for(let{name:d}of[...t.attributes])d===h||a.hasAttribute(d)||(t.removeAttribute(d),s=!0)},z=(t,a,h)=>{let d=b=>b&&b.nodeType===t.nodeType&&b.nodeValue===t.nodeValue&&!m.has(b),c=d(a.childNodes[h])?a.childNodes[h]:[...a.childNodes].find(d);return c?(m.add(c),c):t.cloneNode(!0)},x=(t,a)=>{let h=[],d=[...a.childNodes];for(let k=0;k<d.length;k++){let O=d[k];if(O.nodeType!==1){h.push(z(O,t,k));continue}let N=A(O,t);m.add(N),h.push(N)}let c=new Set(h),b=t.firstChild;for(let k of h){for(;b&&!c.has(b);)b=b.nextSibling;if(b===k){b=b.nextSibling;continue}t.insertBefore(k,b),s=!0}for(let k of[...t.childNodes])c.has(k)||(k.remove(),s=!0)},C=t=>{s=!0;let a=t.cloneNode(!1);return x(a,t),a},T=(t,a)=>{s=!0;let h=t.getAttribute("data-id"),d=u.has(h)?u.get(h):a.hasAttribute("open");P(t,a,"open"),t.hasAttribute("open")!==d&&t.toggleAttribute("open",d),x(t,a)},E=(t,a)=>{s=!0,P(t,a),x(t,a)};function A(t,a){let h=t.getAttribute("data-id");if(h){let c=y.get(h);return!c||m.has(c)||c===a||c.contains(a)?S(t):(m.add(c),ke(c)&&ke(t)?v(c,t)?c:S(t):c.tagName!==t.tagName?S(t):c.isEqualNode(t)?c:t.tagName==="DETAILS"?(T(c,t),c):t.tagName==="LI"?(E(c,t),c):qe.has(t.tagName)?(P(c,t),x(c,t),c):S(t))}if(qe.has(t.tagName)){let c=q(t,a);return c?(m.add(c),P(c,t),x(c,t),c):C(t)}let d=L(t,a);return d?(m.add(d),d.isEqualNode(t)?d:(s=!0,S(t))):S(t)}if(x(r,e.article),f){f.clear();for(let[t,a]of e.savedOpen)f.set(t,a)}for(let t of[...u.keys()])e.savedOpen.has(t)||u.delete(t);return{changed:s}}var je="article[data-page]",Be='section[data-type="tool"][data-id]',Ee='script[type="application/json"][merge="page"]',de=["live-at","live-by"];var Fe=(e,r)=>import("../c-WBGWGOM7.js").then(u=>u.followTocLink(e,r)),He=e=>{import("../c-R27DWQKX.js").then(({recordEtag:r})=>r(e)).catch(()=>{})},pe=e=>Object.freeze({bytes:typeof e?.bytes=="string"?e.bytes:null,etag:typeof e?.etag=="string"&&e.etag?e.etag:null,seq:Number.isSafeInteger(e?.seq)?e.seq:null}),Ge=(e,r)=>{let u=e.source.querySelector(Ee),f=r.querySelector(Ee);if(!u)return f?(f.remove(),!0):!1;if(f){let y=de.map(s=>u.getAttribute(s));return f.textContent===u.textContent&&de.every((s,S)=>f.getAttribute(s)===y[S])?!1:(f.textContent!==u.textContent&&(f.textContent=u.textContent),de.forEach((s,S)=>{y[S]===null?f.removeAttribute(s):f.setAttribute(s,y[S])}),!0)}let v=r.querySelector(je);return v?.parentNode?(v.parentNode.insertBefore(r.importNode(u,!0),v),!0):!1};function We({doc:e,article:r,represented:u=null,feed:f=null,documentURL:v,servedEtag:y=null,stream:m=null,release:s=()=>{}}){let S=new Map,q=new Map,L=new Map,P={data:{}},z=[],x=null,C=null,T=0,E=!1,A=m,t=null,a=pe(u),h=null,d=s,c=!1,b=(o,p)=>{let g=e.defaultView??globalThis;e.dispatchEvent(new g.CustomEvent(o,{detail:p}))},k=()=>{for(let o of L.values())try{o.instance?.dispose?.()}catch{}L.clear()},O=()=>x?Promise.resolve(x):(C||(C=import("../c-GRWMD6O5.js").then(({createToolHost:o})=>E?null:(x=o({store:P,mode:"view"}),x)).catch(o=>(C=null,console.warn("clayjs: could not load the reader tool host",o),null))),C),N=o=>{for(let[p,g]of L){let R=o.get(p);if(!R||R.invalid||R.rev!==g.rev||R.signature!==g.signature){try{g.instance?.dispose?.()}catch{}L.delete(p)}}},$=(o,p)=>{let g=[];for(let[Q,M]of o)M.invalid?console.warn("clayjs: could not decode saved tools",M.error):g.push([Q,M]);if(!g.length)return;P.data=p??{};let R=++T;O().then(Q=>{if(!(E||!Q||R!==T))for(let[M,I]of g){if(L.has(M))continue;let n=[...r.querySelectorAll(Be)].find(l=>l.getAttribute("data-id")===M);if(n)try{let l=Q.mount(n,{id:M,artifact:I.artifact,rev:I.rev,seed:I.state??{}});L.set(M,{rev:I.rev,signature:I.signature,instance:l})}catch(l){console.warn(`clayjs: tool ${M} could not mount`,l)}}})},se=(o,p)=>{let g=L.get(o.getAttribute("data-id"));if(!g)return fe(o,p);let R=Le(p);return!R.invalid&&R.rev===g.rev&&R.signature===g.signature},K=o=>{o?.state==="current"&&(a=pe({bytes:a.bytes,etag:o.etag??null,seq:o.seq??null})),o?.state&&o.state!=="applied"&&b("clay:reader-status",o)},F=o=>{Te(o,{article:r,readerOpen:S,savedOpen:q,keepTool:se}),o.rev===null?r.removeAttribute("data-rev"):r.setAttribute("data-rev",o.rev),o.title&&(e.title=o.title),Ge(o,e)},re=o=>{console.warn("clayjs: the reader could not apply a saved file",o),A?.stop(),A=null,k();let p=a.bytes?X(a.bytes,e):null;if(p?.ok)try{F(p)}catch(g){console.warn("clayjs: the reader could not restore the previous file",g)}b("clay:reader-status",{state:"blocked"})};function H(o){if(E||c)return!1;let p=X(o.bytes,e);if(!p.ok||r.querySelector(".page-editor"))return!1;if(me(o.bytes))return A?.stop(),A=null,le(),b("clay:reader-status",{state:"blocked",reason:"upgraded"}),!1;N(p.tools);try{F(p)}catch(g){return re(g),!1}return a=pe(o),a.etag&&He(a.etag),$(p.tools,p.toolState),b("clay:reader-status",{state:"applied",etag:a.etag,seq:a.seq}),!0}let ae=()=>a.bytes===null?!1:(V.stop(),!0),U=o=>{let p=o.target;if(p.tagName!=="DETAILS"||!r.contains(p))return;let g=p.getAttribute("data-id");g&&(p.open===q.get(g)?S.delete(g):S.set(g,p.open))};e.addEventListener("toggle",U,!0),z.push(["toggle",U,!0]);let B=o=>{let p=o.target.closest?.('a[href^="#page-block-"], a[href^="#"]');!p||!r.contains(p)||!p.closest('nav[aria-label="Table of contents"]')||(o.preventDefault(),Fe(r,p.getAttribute("href")))};if(e.addEventListener("click",B),z.push(["click",B]),u){let o=X(u.bytes,e);if(!o.ok)throw new Error(`clayjs: the saved file is not a readable page (${o.reason})`);F(o),$(o.tools,o.toolState)}else{for(let o of r.querySelectorAll("details[data-id]"))q.set(o.getAttribute("data-id"),o.hasAttribute("open"));$(ue(r),ce(e))}let V={ready:null,get represented(){return a},yieldArticle(){return E||c?!1:(T++,k(),c=!0,d(),!0)},reclaimArticle(){if(E||!c)return!1;if(d=ie(r,"reader"),c=!1,a.bytes!==null){let o=X(a.bytes,e);o.ok&&(F(o),$(o.tools,o.toolState))}return!0},prepareHandoff(o={}){return h?Promise.resolve(h):E?Promise.reject(new Error("clayjs: the reader is stopped")):(h=import("../c-I4MQHOEY.js").then(({readerHandoff:p})=>p({stream:A,options:o,apply:H,retire:ae,yieldArticle:V.yieldArticle,reclaimArticle:V.reclaimArticle})),h)},stop(){if(E)return t;E=!0,h=null,T++,A?.stop(),A=null;for(let[o,p,g]of z)e.removeEventListener(o,p,g);z.length=0,k();try{x?.dispose()}catch{}return x=null,c||d(),c=!1,d=()=>!1,t=Object.freeze({...a}),t}};if(V.ready=Promise.resolve(V),f){let o=p=>{let g=p.detail;typeof g?.html=="string"&&(g.source&&g.source!=="disk"&&g.lane!=="saved"||H({bytes:g.html,etag:g.etag??null,seq:g.seq??null}))};f.addEventListener("clay:sync-applied",o),z.push(["clay:sync-applied",o])}else A?A.adopt({onSnapshot:H,onStatus:K}):(A=Ae({documentURL:v,servedEtag:y,represented:a.bytes?a:null,onSnapshot:H,onStatus:K}),A.start());return V}function oe({represented:e=null,documentURL:r,servedEtag:u=null,stream:f=null,feed:v=null,doc:y=document}={}){if(e&&(typeof e.bytes!="string"||e.bytes===""))throw new TypeError("clayjs: the reader needs the full saved bytes to start");if(!v&&!f&&!e&&!r)throw new TypeError("clayjs: the reader needs a file, a stream or a page to follow");let m=y.querySelectorAll(je);if(m.length!==1)throw new Error("clayjs: the reader needs exactly one article[data-page]");let s=m[0];if(s.querySelector(".page-editor"))throw new Error("clayjs: the reader will not start over a mounted editor");if(e){let q=X(e.bytes,y);if(!q.ok)throw new Error("clayjs: the saved file is not a readable page");if(ve(q.source))throw le(),new Error("clayjs: the saved file was published at another version of this document")}let S=ie(s,"reader");try{return We({doc:y,article:s,represented:e,feed:v,documentURL:r,servedEtag:u,stream:f,release:S})}catch(q){throw S(),q}}var J=null,te=null,ge=!1,Oe=!1,ee=null,Z=null,he=null,Pe=()=>document.querySelectorAll("article[data-page]").length===1;function _e(){ee=e=>{if(ge)return;let r=e.detail;r?.state==="applied"?te?.(J):(r?.state==="blocked"||r?.state==="recoverable"||r?.state==="reconnecting")&&te?.(null)},document.addEventListener("clay:reader-status",ee)}function $e(){ee&&document.removeEventListener("clay:reader-status",ee),ee=null,te=null}function Qe(e=null){if(!Pe())return Promise.resolve(null);try{J=e?oe({represented:e}):oe({documentURL:window.location.href,servedEtag:ye})}catch(r){return console.warn("clayjs: the reader could not start over the served article",r),Promise.resolve(null)}return e?Promise.resolve(J.represented):new Promise(r=>{te=r})}function Xe(e=null){if(!Pe())return Promise.resolve(null);try{J=oe({feed:document,represented:e,documentURL:window.location.href})}catch(r){return console.warn("clayjs: the reader could not start over the page sync projects",r),Promise.resolve(null)}return Promise.resolve(J)}function Ke({sync:e=!1,represented:r=null}={}){return Z||(ge=!1,Oe=e,_e(),he=e?Xe(r):Qe(r),Z=e?he:Promise.resolve(null),Z)}function ct(e={}){return Ye(),Ke(e)}function ft(e){return J?J.prepareHandoff(e):Promise.reject(new Error("clayjs: the reader has not started"))}function Ye(){ge=!0,Oe||te?.(null),$e(),J?.stop(),J=null,he=null,Z=null}export{he as acquired,ft as prepareHandoff,Z as ready,ct as restart,Ke as start,Ye as stop};
1
+ import{a as be,b as me,c as ve,d as le,f as Se}from"../c-DHXPDLW6.js";import{a as ie}from"../c-L4WQSC27.js";import"../c-XGH4GS2T.js";import"../c-3O7OBDCM.js";import{a as ye}from"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import"../c-HA6INT6J.js";import"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var we="saved",Re=2;function Ie(){return Math.random().toString(36).slice(2,11)+Date.now().toString(36)}function Ce(){try{let e=new Uint8Array(16);return(globalThis.crypto||window.crypto).getRandomValues(e),Array.from(e,r=>r.toString(16).padStart(2,"0")).join("")}catch{return Math.random().toString(36).slice(2)+Date.now().toString(36)}}function Me(e){return typeof e!="string"||e===""?null:new DOMParser().parseFromString(e,"text/html").documentElement?.getAttribute("documentetag")||null}var _=e=>typeof e=="string"&&e?e:null;function De(e){let r=window.location.origin;if(typeof r!="string"||r===""||r==="null")return null;let u=new URL(e||window.location.href,r);return u.protocol==="http:"||u.protocol==="https:"?u.href:null}var Y=e=>Number.isSafeInteger(e)?e:null;function ze(e){if(e==null)return Object.freeze({bytes:null,etag:null,seq:null});if(typeof e.bytes!="string"||e.bytes==="")throw new TypeError("createSavedStream: represented.bytes must be a full HTML string");return Object.freeze({bytes:e.bytes,etag:_(e.etag),seq:Y(e.seq)})}function Ae({documentURL:e,servedEtag:r=null,represented:u=null,onSnapshot:f,onStatus:v}={}){if(typeof f!="function")throw new TypeError("createSavedStream: onSnapshot must be a function");let y=De(e),m=!!_(r),s=ze(u);if(y===null){let n={ready:null,get represented(){return s},adopt(){return n},start(){return n.ready=Promise.resolve(n),n},stop(){}};return n}let S=!0,q=s.seq??0,L=0,P=0,z=f,x=v,C=0,T=!1,E=null,A=null,t=null,a=!1,h=null,d=null,c=null,b=null,k=[],O=n=>!T&&n===C;function N(n,l={}){T||typeof x!="function"||x({state:n,...l})}function $(){k.length=0,b&&(!d||d.active)&&b.clear(),d&&(d.detach(),d=null),h=null,b=null,c=null}function se(n,l){if(b){b.update(n);return}k.push(n),!c&&(c=Promise.all([import("../c-FTWGYI5E.js"),import("../c-ZJLU56DV.js")]).then(([i,w])=>{if(!O(l))return null;h=i.presence,b=w.presence,d=h.attachTransport({send:()=>Promise.resolve(!1)});for(let G of k.splice(0))b.update(G);return b}).catch(()=>(c=null,null)))}function K(){if($(),!E)return;let n=E;E=null,n.onopen=null,n.onerror=null,n.onmessage=null,n.close()}function F(){if(!A)return;let n=A;A=null,n.controller.abort()}function re(n){if(T)return!1;let l={bytes:n.bytes,etag:_(n.etag),seq:Y(n.seq)};if(typeof l.bytes!="string"||l.bytes==="")return N("recoverable",{reason:"invalid-bytes",seq:l.seq}),!1;if(l.bytes===s.bytes&&l.etag===s.etag&&l.seq===s.seq)return!0;let i=!1;try{i=z(Object.freeze(l))===!0}catch{i=!1}return i?(s=Object.freeze(l),N("applied",{seq:s.seq,etag:s.etag}),!0):(N("recoverable",{reason:"refused",seq:l.seq,etag:l.etag}),!1)}function H(n,l){if(l==="startup")return null;let i=Math.max(n.seq??0,q);return i>0?i:null}function ae(n,l){t=n,a=!0,N("recoverable",{reason:l,seq:n.seq??null})}function U(n){T||(t={kind:n.kind,seq:Y(n.seq)},a=!1,B())}function B(){if(T||A||a||!t)return;let n=C,l=t;t=null;let i=new AbortController;A={controller:i};let w=L,G=q,D=j=>{if(A&&A.controller===i&&(A=null),!(!O(n)||i.signal.aborted)){if(j==null){ae(l,"repair-failed");return}if(L!==w||q!==G){if(P+=1,P<=Re){t=t??{kind:l.kind,seq:H(l,l.kind)},B();return}V(j.text,{kind:l.kind,seq:H(l,l.kind)},j.etag),B();return}V(j.text,l,j.etag),B()}};fetch(y,{cache:"no-store",signal:i.signal}).then(j=>j.ok?j.text().then(W=>({text:W,etag:_(j.headers?.get?.("etag"))})):null).then(D).catch(()=>D(null))}function V(n,l,i){let G=Me(n)??(/^W\//.test(i??"")?null:_(i))??(n===s.bytes?s.etag:null),D=l.kind==="startup"?s.seq:l.seq??s.seq;re({bytes:n,etag:G,seq:D})&&(S=!1,P=0,a=!1,N("current",{seq:s.seq,etag:s.etag}))}function o(n,l){let i={bytes:s.bytes,etag:n??s.etag,seq:l??s.seq};i.etag===s.etag&&i.seq===s.seq||(s=Object.freeze(i),N("current",{seq:s.seq,etag:s.etag}))}function p(n,l,i){let w=_(l);if(!(i!==null&&s.seq!==null&&i<=s.seq)){if(!S&&w!==null&&s.etag!==null){if(w!==s.etag){U({kind:"unmatched",seq:i});return}S=!0}if(n===s.bytes){o(w,i);return}re({bytes:n,etag:w,seq:i})&&(S=!0)}}function g(n,l){let i=n.data;if(i&&i.kind==="external-change"){typeof i.html=="string"?p(i.html,i.etag,l):U({kind:"notice",seq:l});return}typeof n.msg=="string"&&n.msg.endsWith("changed on disk outside this tab")&&U({kind:"notice",seq:l})}function R(n,l){if(!O(l))return;L++;let i;try{i=JSON.parse(n)}catch{N("recoverable",{reason:"bad-json"});return}if(!i||typeof i!="object"||Array.isArray(i)){N("recoverable",{reason:"bad-frame"});return}let w=Y(i.seq);if(w!==null&&w>q&&(q=w),i.type==="notification"){g(i,w);return}if(i.error){N("recoverable",{reason:"server-error",seq:w});return}if(typeof i.html!="string"){_(i.etag)?U({kind:"notice",seq:w}):N("recoverable",{reason:"bad-frame",seq:w});return}p(i.html,i.etag,w)}function Q(n,l){if(!O(l))return;L++;let i;try{i=JSON.parse(n)}catch{return}if(!i||typeof i!="object")return;let w=Y(i.seq);if(w!==null&&w>q&&(q=w),i.resync===!0){U({kind:"resync",seq:w});return}i.startup===!0&&U({kind:"startup",seq:null})}function M(n){if(O(n)){if(N("open",{seq:s.seq,etag:s.etag}),a){a=!1,B();return}s.bytes===null&&!m&&U({kind:"startup",seq:null})}}let I={ready:null,get represented(){return s},adopt({onSnapshot:n,onStatus:l}={}){return typeof n=="function"&&(z=n),typeof l=="function"&&(x=l),I},start(){T=!1;let n=++C;return K(),F(),t=null,a=!1,L=0,P=0,q=s.seq??0,I.ready=Se().then(l=>{if(!O(n))return I;let i=Ce(),w=Ie(),G=l.profile.streamPath(y,we,i,w),D=new be(new URL(G,window.location.origin).href,{shared:l.sharedSync,sharedData:l.sharedData,documentURL:y,lane:we,clientId:w,startupCheck:m});return E=D,D.onopen=()=>M(n),D.onerror=()=>{O(n)&&N("reconnecting")},D.onmessage=j=>R(j.data,n),D.addEventListener("cursor",j=>Q(j.data,n)),D.addEventListener("presence",j=>{if(!O(n))return;let W;try{W=JSON.parse(j.data)}catch{return}W&&typeof W=="object"&&!Array.isArray(W)&&se(W,n)}),I}),I},stop(){T||(T=!0,C++,K(),F(),t=null,a=!1)}};return I}var Ue="article[data-page]",Ve='section[data-type="tool"][data-id]',Ne=new Set(["UL","OL","LI","DETAILS"]),qe=new Set(["UL","OL"]),ke=e=>e.tagName==="SECTION"&&e.getAttribute("data-type")==="tool"&&e.hasAttribute("data-id");function Le(e){return ne(e)}function ne(e){let r=e.querySelector(':scope > script[type="application/json"][data-tool]'),u={};try{u=r?JSON.parse(r.textContent):{}}catch(f){return{rev:null,artifact:null,state:{},signature:null,invalid:!0,error:f}}return{rev:u.rev??null,artifact:u.artifact??null,state:u.state??{},signature:JSON.stringify(u.artifact??null),invalid:!1}}function ue(e){let r=new Map,u=new Set;for(let f of e.querySelectorAll(Ve)){let v=f.getAttribute("data-id");if(!u.has(v)){if(r.has(v)){r.delete(v),u.add(v);continue}r.set(v,ne(f))}}return r}function ce(e){let r=e.querySelector('script[type="application/json"][merge="page.tools"]');if(!r)return{};try{return JSON.parse(r.textContent)}catch{return{}}}function Je(e){let r=new Map,u=new Set,f=v=>{for(let y of v.children){let m=y.getAttribute("data-id");if(m){if(u.has(m))continue;if(r.has(m)){r.delete(m),u.add(m);continue}r.set(m,y)}Ne.has(y.tagName)&&f(y)}};return f(e),r}function xe(e){let r=new Set,u=f=>{for(let v of f.children){let y=v.getAttribute("data-id");y&&r.add(y),Ne.has(v.tagName)&&u(v)}};return u(e),r}function X(e,r=document){if(typeof e!="string"||e==="")return{ok:!1,reason:"bytes"};let u=(r.defaultView??globalThis).DOMParser;if(typeof u!="function")return{ok:!1,reason:"parser"};let f=new u().parseFromString(e,"text/html"),v=[...f.querySelectorAll(Ue)];if(v.length!==1)return{ok:!1,reason:"article"};let y=v[0],m=new Map;for(let S of y.querySelectorAll("details[data-id]"))m.set(S.getAttribute("data-id"),S.hasAttribute("open"));let s=ue(y);return{ok:!0,article:y,source:f,rev:y.getAttribute("data-rev"),title:f.title||null,savedOpen:m,tools:s,toolState:s.size?ce(f):{}}}var fe=(e,r)=>{let u=ne(e),f=ne(r);return!u.invalid&&!f.invalid&&u.rev===f.rev&&u.signature===f.signature};function Te(e,{article:r,readerOpen:u=new Map,savedOpen:f=null,keepTool:v=fe}={}){if(!e?.ok||!r)return{changed:!1};for(let t of e.article.querySelectorAll("details[data-id]")){let a=t.getAttribute("data-id");u.has(a)&&t.hasAttribute("open")!==u.get(a)&&t.toggleAttribute("open",u.get(a))}let y=Je(r),m=new Set,s=!1,S=t=>(s=!0,t.cloneNode(!0)),q=(t,a)=>{let h=xe(t);for(let d of a.children){if(m.has(d)||d.hasAttribute("data-id")||d.tagName!==t.tagName)continue;if(!h.size)return d;let c=xe(d);for(let b of h)if(c.has(b))return d}return null},L=(t,a)=>{for(let h of a.children)if(!(m.has(h)||h.hasAttribute("data-id"))&&h.tagName===t.tagName)return h;return null},P=(t,a,h=null)=>{for(let{name:d,value:c}of[...a.attributes])d===h||t.getAttribute(d)===c||(t.setAttribute(d,c),s=!0);for(let{name:d}of[...t.attributes])d===h||a.hasAttribute(d)||(t.removeAttribute(d),s=!0)},z=(t,a,h)=>{let d=b=>b&&b.nodeType===t.nodeType&&b.nodeValue===t.nodeValue&&!m.has(b),c=d(a.childNodes[h])?a.childNodes[h]:[...a.childNodes].find(d);return c?(m.add(c),c):t.cloneNode(!0)},x=(t,a)=>{let h=[],d=[...a.childNodes];for(let k=0;k<d.length;k++){let O=d[k];if(O.nodeType!==1){h.push(z(O,t,k));continue}let N=A(O,t);m.add(N),h.push(N)}let c=new Set(h),b=t.firstChild;for(let k of h){for(;b&&!c.has(b);)b=b.nextSibling;if(b===k){b=b.nextSibling;continue}t.insertBefore(k,b),s=!0}for(let k of[...t.childNodes])c.has(k)||(k.remove(),s=!0)},C=t=>{s=!0;let a=t.cloneNode(!1);return x(a,t),a},T=(t,a)=>{s=!0;let h=t.getAttribute("data-id"),d=u.has(h)?u.get(h):a.hasAttribute("open");P(t,a,"open"),t.hasAttribute("open")!==d&&t.toggleAttribute("open",d),x(t,a)},E=(t,a)=>{s=!0,P(t,a),x(t,a)};function A(t,a){let h=t.getAttribute("data-id");if(h){let c=y.get(h);return!c||m.has(c)||c===a||c.contains(a)?S(t):(m.add(c),ke(c)&&ke(t)?v(c,t)?c:S(t):c.tagName!==t.tagName?S(t):c.isEqualNode(t)?c:t.tagName==="DETAILS"?(T(c,t),c):t.tagName==="LI"?(E(c,t),c):qe.has(t.tagName)?(P(c,t),x(c,t),c):S(t))}if(qe.has(t.tagName)){let c=q(t,a);return c?(m.add(c),P(c,t),x(c,t),c):C(t)}let d=L(t,a);return d?(m.add(d),d.isEqualNode(t)?d:(s=!0,S(t))):S(t)}if(x(r,e.article),f){f.clear();for(let[t,a]of e.savedOpen)f.set(t,a)}for(let t of[...u.keys()])e.savedOpen.has(t)||u.delete(t);return{changed:s}}var je="article[data-page]",Be='section[data-type="tool"][data-id]',Ee='script[type="application/json"][merge="page"]',de=["live-at","live-by"];var Fe=(e,r)=>import("../c-WBGWGOM7.js").then(u=>u.followTocLink(e,r)),He=e=>{import("../c-R27DWQKX.js").then(({recordEtag:r})=>r(e)).catch(()=>{})},pe=e=>Object.freeze({bytes:typeof e?.bytes=="string"?e.bytes:null,etag:typeof e?.etag=="string"&&e.etag?e.etag:null,seq:Number.isSafeInteger(e?.seq)?e.seq:null}),Ge=(e,r)=>{let u=e.source.querySelector(Ee),f=r.querySelector(Ee);if(!u)return f?(f.remove(),!0):!1;if(f){let y=de.map(s=>u.getAttribute(s));return f.textContent===u.textContent&&de.every((s,S)=>f.getAttribute(s)===y[S])?!1:(f.textContent!==u.textContent&&(f.textContent=u.textContent),de.forEach((s,S)=>{y[S]===null?f.removeAttribute(s):f.setAttribute(s,y[S])}),!0)}let v=r.querySelector(je);return v?.parentNode?(v.parentNode.insertBefore(r.importNode(u,!0),v),!0):!1};function We({doc:e,article:r,represented:u=null,feed:f=null,documentURL:v,servedEtag:y=null,stream:m=null,release:s=()=>{}}){let S=new Map,q=new Map,L=new Map,P={data:{}},z=[],x=null,C=null,T=0,E=!1,A=m,t=null,a=pe(u),h=null,d=s,c=!1,b=(o,p)=>{let g=e.defaultView??globalThis;e.dispatchEvent(new g.CustomEvent(o,{detail:p}))},k=()=>{for(let o of L.values())try{o.instance?.dispose?.()}catch{}L.clear()},O=()=>x?Promise.resolve(x):(C||(C=import("../c-GRWMD6O5.js").then(({createToolHost:o})=>E?null:(x=o({store:P,mode:"view"}),x)).catch(o=>(C=null,console.warn("clayjs: could not load the reader tool host",o),null))),C),N=o=>{for(let[p,g]of L){let R=o.get(p);if(!R||R.invalid||R.rev!==g.rev||R.signature!==g.signature){try{g.instance?.dispose?.()}catch{}L.delete(p)}}},$=(o,p)=>{let g=[];for(let[Q,M]of o)M.invalid?console.warn("clayjs: could not decode saved tools",M.error):g.push([Q,M]);if(!g.length)return;P.data=p??{};let R=++T;O().then(Q=>{if(!(E||!Q||R!==T))for(let[M,I]of g){if(L.has(M))continue;let n=[...r.querySelectorAll(Be)].find(l=>l.getAttribute("data-id")===M);if(n)try{let l=Q.mount(n,{id:M,artifact:I.artifact,rev:I.rev,seed:I.state??{}});L.set(M,{rev:I.rev,signature:I.signature,instance:l})}catch(l){console.warn(`clayjs: tool ${M} could not mount`,l)}}})},se=(o,p)=>{let g=L.get(o.getAttribute("data-id"));if(!g)return fe(o,p);let R=Le(p);return!R.invalid&&R.rev===g.rev&&R.signature===g.signature},K=o=>{o?.state==="current"&&(a=pe({bytes:a.bytes,etag:o.etag??null,seq:o.seq??null})),o?.state&&o.state!=="applied"&&b("clay:reader-status",o)},F=o=>{Te(o,{article:r,readerOpen:S,savedOpen:q,keepTool:se}),o.rev===null?r.removeAttribute("data-rev"):r.setAttribute("data-rev",o.rev),o.title&&(e.title=o.title),Ge(o,e)},re=o=>{console.warn("clayjs: the reader could not apply a saved file",o),A?.stop(),A=null,k();let p=a.bytes?X(a.bytes,e):null;if(p?.ok)try{F(p)}catch(g){console.warn("clayjs: the reader could not restore the previous file",g)}b("clay:reader-status",{state:"blocked"})};function H(o){if(E||c)return!1;let p=X(o.bytes,e);if(!p.ok||r.querySelector(".page-editor"))return!1;if(me(o.bytes))return A?.stop(),A=null,le(),b("clay:reader-status",{state:"blocked",reason:"upgraded"}),!1;N(p.tools);try{F(p)}catch(g){return re(g),!1}return a=pe(o),a.etag&&He(a.etag),$(p.tools,p.toolState),b("clay:reader-status",{state:"applied",etag:a.etag,seq:a.seq}),!0}let ae=()=>a.bytes===null?!1:(V.stop(),!0),U=o=>{let p=o.target;if(p.tagName!=="DETAILS"||!r.contains(p))return;let g=p.getAttribute("data-id");g&&(p.open===q.get(g)?S.delete(g):S.set(g,p.open))};e.addEventListener("toggle",U,!0),z.push(["toggle",U,!0]);let B=o=>{let p=o.target.closest?.('a[href^="#page-block-"], a[href^="#"]');!p||!r.contains(p)||!p.closest('nav[aria-label="Table of contents"]')||(o.preventDefault(),Fe(r,p.getAttribute("href")))};if(e.addEventListener("click",B),z.push(["click",B]),u){let o=X(u.bytes,e);if(!o.ok)throw new Error(`clayjs: the saved file is not a readable page (${o.reason})`);F(o),$(o.tools,o.toolState)}else{for(let o of r.querySelectorAll("details[data-id]"))q.set(o.getAttribute("data-id"),o.hasAttribute("open"));$(ue(r),ce(e))}let V={ready:null,get represented(){return a},yieldArticle(){return E||c?!1:(T++,k(),c=!0,d(),!0)},reclaimArticle(){if(E||!c)return!1;if(d=ie(r,"reader"),c=!1,a.bytes!==null){let o=X(a.bytes,e);o.ok&&(F(o),$(o.tools,o.toolState))}return!0},prepareHandoff(o={}){return h?Promise.resolve(h):E?Promise.reject(new Error("clayjs: the reader is stopped")):(h=import("../c-Y33LUUIQ.js").then(({readerHandoff:p})=>p({stream:A,options:o,apply:H,retire:ae,yieldArticle:V.yieldArticle,reclaimArticle:V.reclaimArticle})),h)},stop(){if(E)return t;E=!0,h=null,T++,A?.stop(),A=null;for(let[o,p,g]of z)e.removeEventListener(o,p,g);z.length=0,k();try{x?.dispose()}catch{}return x=null,c||d(),c=!1,d=()=>!1,t=Object.freeze({...a}),t}};if(V.ready=Promise.resolve(V),f){let o=p=>{let g=p.detail;typeof g?.html=="string"&&(g.source&&g.source!=="disk"&&g.lane!=="saved"||H({bytes:g.html,etag:g.etag??null,seq:g.seq??null}))};f.addEventListener("clay:sync-applied",o),z.push(["clay:sync-applied",o])}else A?A.adopt({onSnapshot:H,onStatus:K}):(A=Ae({documentURL:v,servedEtag:y,represented:a.bytes?a:null,onSnapshot:H,onStatus:K}),A.start());return V}function oe({represented:e=null,documentURL:r,servedEtag:u=null,stream:f=null,feed:v=null,doc:y=document}={}){if(e&&(typeof e.bytes!="string"||e.bytes===""))throw new TypeError("clayjs: the reader needs the full saved bytes to start");if(!v&&!f&&!e&&!r)throw new TypeError("clayjs: the reader needs a file, a stream or a page to follow");let m=y.querySelectorAll(je);if(m.length!==1)throw new Error("clayjs: the reader needs exactly one article[data-page]");let s=m[0];if(s.querySelector(".page-editor"))throw new Error("clayjs: the reader will not start over a mounted editor");if(e){let q=X(e.bytes,y);if(!q.ok)throw new Error("clayjs: the saved file is not a readable page");if(ve(q.source))throw le(),new Error("clayjs: the saved file was published at another version of this document")}let S=ie(s,"reader");try{return We({doc:y,article:s,represented:e,feed:v,documentURL:r,servedEtag:u,stream:f,release:S})}catch(q){throw S(),q}}var J=null,te=null,ge=!1,Oe=!1,ee=null,Z=null,he=null,Pe=()=>document.querySelectorAll("article[data-page]").length===1;function _e(){ee=e=>{if(ge)return;let r=e.detail;r?.state==="applied"?te?.(J):(r?.state==="blocked"||r?.state==="recoverable"||r?.state==="reconnecting")&&te?.(null)},document.addEventListener("clay:reader-status",ee)}function $e(){ee&&document.removeEventListener("clay:reader-status",ee),ee=null,te=null}function Qe(e=null){if(!Pe())return Promise.resolve(null);try{J=e?oe({represented:e}):oe({documentURL:window.location.href,servedEtag:ye})}catch(r){return console.warn("clayjs: the reader could not start over the served article",r),Promise.resolve(null)}return e?Promise.resolve(J.represented):new Promise(r=>{te=r})}function Xe(e=null){if(!Pe())return Promise.resolve(null);try{J=oe({feed:document,represented:e,documentURL:window.location.href})}catch(r){return console.warn("clayjs: the reader could not start over the page sync projects",r),Promise.resolve(null)}return Promise.resolve(J)}function Ke({sync:e=!1,represented:r=null}={}){return Z||(ge=!1,Oe=e,_e(),he=e?Xe(r):Qe(r),Z=e?he:Promise.resolve(null),Z)}function ct(e={}){return Ye(),Ke(e)}function ft(e){return J?J.prepareHandoff(e):Promise.reject(new Error("clayjs: the reader has not started"))}function Ye(){ge=!0,Oe||te?.(null),$e(),J?.stop(),J=null,he=null,Z=null}export{he as acquired,ft as prepareHandoff,Z as ready,ct as restart,Ke as start,Ye as stop};
@@ -1 +1 @@
1
- import{a as x,d as I,e as g,f as U,g as M}from"../c-7DJDKPGL.js";import{a as $}from"../c-ZWIOJGMT.js";import"../c-IJUK2GPW.js";import{f as F,k as R}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{k as N}from"../c-7MG5RU63.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-DCFSEJZG.js";import{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
+ import{a as x,d as I,e as g,f as U,g as M}from"../c-7DJDKPGL.js";import{a as $}from"../c-LA2BW7UY.js";import"../c-IJUK2GPW.js";import{f as F,k as R}from"../c-3O7OBDCM.js";import"../c-BPF2NSPV.js";import"../c-P7KNDG34.js";import"../c-CYWLPPUS.js";import"../c-N7JPUPGC.js";import{k as N}from"../c-EGTIAL6P.js";import"../c-XQXZAO7N.js";import"../c-S7LK4KUE.js";import"../c-VG5XIN4T.js";import"../c-2YYDMLNZ.js";import"../c-HA6INT6J.js";import"../c-ICMAOOGK.js";import{e as D}from"../c-WRBKEJD4.js";import"../c-VHNSBD2M.js";var L=D("history"),W="[cms-template]",O=["draggable","style"],X=["pointerup","pointercancel","dragend","drop"],y=new Set,h=null,E=null,p=null;function T(e,t,n,r,i){let s={target:t,type:n,handler:r,options:i};return t.addEventListener(n,r,i),e.listeners.push(s),s}function H(e,t){t.target.removeEventListener(t.type,t.handler,t.options);let n=e.listeners.indexOf(t);n!==-1&&e.listeners.splice(n,1)}function _(e,t){let n=setTimeout(()=>{e.timers.delete(n),t()},0);return e.timers.add(n),n}function Y(e,t){return{Sortable:e,root:t,admitted:!1,instances:new Set,listeners:[],timers:new Set,presses:new Set,stop:null}}var Z={admitted:!0,instances:new Set,listeners:[],timers:new Set,presses:new Set};function C(e){return[e,...e.querySelectorAll("*")].filter(t=>!t.closest(L)).map(t=>[t,O.map(n=>t.getAttribute(n))])}function P(e){for(let[t,n]of e)O.forEach((r,i)=>{let s=n[i],a=t.getAttribute(r);if(a!==s)if(s===null){if(r==="style"&&a)return;t.removeAttribute(r)}else t.setAttribute(r,s)})}function B(e){return/^(UL|OL)$/.test(e.tagName)?"li":"*"}function ee(e){return`> ${B(e)}:not(${L})`}function V(e,t){return!e||!t||t.nodeType!==1||!t.matches(B(e))?!1:!t.closest(L)&&!t.closest(W)}function q(e,t){return!e||!t||t.parentElement!==e?!1:V(e,t)}function te(e,t){let n=t.nextElementSibling;for(;n&&!q(e,n);)n=n.nextElementSibling;return n}function j(e,t){return Array.prototype.indexOf.call(e.children,t)}function G(e,t){if(t)try{new Function(`return (async function(evt) { ${t} })`)().call(e.from,e)}catch(n){console.error("Error in onsorted execution:",n)}e.from.dispatchEvent(new CustomEvent("clay:sorted",{bubbles:!0,detail:{item:e.item,from:e.from,to:e.to,oldIndex:e.oldIndex,newIndex:e.newIndex}})),e.from.dispatchEvent(new Event("input",{bubbles:!0}))}function z(e,t,n=Z){let r={};if(r.draggable=ee(e),t.get(e))return;let i=e.getAttribute("sortable");i&&(r.group=i);let s=e.querySelectorAll("[sortable-handle]"),a=e.querySelectorAll("[sortable]");Array.from(s).some(o=>!Array.from(a).some(l=>l.contains(o)))&&(r.handle="[sortable-handle]");let c=e.getAttribute("onsorting");c&&(r.onMove=function(o){if(n.admitted)try{new Function(`return (async function(evt) { ${c} })`)().call(e,o)}catch(l){console.error("Error in onsorting execution:",l)}});let f=e.getAttribute("onsorted");r.onEnd=function(o){if(!n.admitted)return;let l={item:o.item,from:o.from,to:o.to,oldIndex:o.oldIndex,newIndex:o.newIndex},b=u;u=null,m&&(P(m),m=null),b&&(M(b,l),g(b)),G(l,f)};let d=null,u=null,m=null,w=!1,A=!1,v=[],K=()=>{let o=u;u=null,m=null,g(o)},k=()=>{let o=d;d=null,o&&(n.presses.delete(o),y.delete(o),m=o),v.forEach(l=>H(n,l)),v=[],o&&_(n,()=>P(o))},Q=o=>{A&&o?.type==="pointercancel"||(A=!1,w?I(u):(g(u),u=null),w=!1,k(),_(n,K))};T(n,e,"pointerdown",o=>{let l=o.target instanceof Element?o.target:null;for(;l&&l.parentElement!==e;)l=l.parentElement;!l||d||(d=C(l),u=x(l),w=!1,A=!1,n.presses.add(d),y.add(d),v=X.map(b=>T(n,document,b,Q,!0)),v.push(T(n,document,"dragstart",()=>{A=!0},!0)))},!0),r.onUnchoose=k,r.onStart=()=>{w=!0},t.create(e,r),n.instances.add(e)}function ne(e,t,n=null){let r=f=>({ok:!1,code:f});if(!F||p&&!p.admitted)return r("not-editable");let i=document;if(!e||e.nodeType!==1||!e.isConnected||e.ownerDocument!==i)return r("detached");let s=e.parentElement;if(!s||!s.isConnected||!t||t.nodeType!==1||!t.isConnected||t.ownerDocument!==i)return r("detached");if(!s.hasAttribute("sortable")||!q(s,e)||!t.hasAttribute("sortable")||!V(t,e)||e===t||e.contains(t))return r("item");if(s!==t){let f=s.getAttribute("sortable");if(!f||f!==t.getAttribute("sortable"))return r("group")}if(n===e)return{ok:!0,moved:!1};if(n!==null&&!q(t,n))return r("anchor");if(s===t&&te(s,e)===n)return{ok:!0,moved:!1};let a=j(s,e),S=x(e);I(S);let c;try{t.insertBefore(e,n),c={item:e,from:s,to:t,oldIndex:a,newIndex:j(t,e)},M(S,c)}finally{g(S)}return G(c,s.getAttribute("onsorted")),{ok:!0,moved:!0,...c}}function re(){return h||(h=import("../vendor/Sortable.vendor-A755ITLN.js").then(e=>window.Sortable||e.default),h.catch(()=>{h=null})),h}function se(){return E||(N((e,{original:t})=>{for(let r of e.querySelectorAll("[sortable] .sortable-chosen, [sortable] .sortable-ghost, [sortable] .sortable-drag"))r.classList.remove("sortable-chosen","sortable-ghost","sortable-drag"),r.classList.length||r.removeAttribute("class");if(!y.size)return;let n=new Map;for(let r of y)for(let[i,s]of r)n.set(i,s);for(let r of e.querySelectorAll("[sortable] *")){let i=n.get(t(r));i&&O.forEach((s,a)=>{i[a]===null?r.removeAttribute(s):r.setAttribute(s,i[a])})}}),E=!0,E)}function oe(e){return{enable(){if(!e.admitted){e.admitted=!0;for(let t of e.root.querySelectorAll("[sortable]"))z(t,e.Sortable,e);e.stop=$.onAddElement({selectorFilter:"[sortable]",debounce:200,require:"observed",pausable:!1},t=>{e.admitted&&t.forEach(({element:n})=>{z(n,e.Sortable,e)})})}},quiesce(){e.admitted=!1},resume(){e.admitted=!0},dispose(){e.admitted=!1,e.stop&&(e.stop(),e.stop=null);for(let t of[...e.listeners])H(e,t);for(let t of e.timers)clearTimeout(t);e.timers.clear();for(let t of e.presses)y.delete(t);e.presses.clear(),U();for(let t of e.instances)e.Sortable?.get?.(t)?.destroy?.();e.instances.clear(),p===e&&(p=null)}}}var le=e=>e?e.signal?.aborted?!0:typeof e.isCurrent=="function"&&!e.isCurrent():!1;function ie(e=document){return{id:"clay:sortable",order:300,async prepare(t={}){if(t.initial===!0)return ae();let n=await re();if(le(t))throw Object.assign(new Error("clay:sortable prepared for a stale generation"),{code:"stale-document"});return se(),oe(p||(p=Y(n,e)))}}}async function ae(){let e=await ue;return{enable(){},quiesce:()=>e?.quiesce(),resume:()=>e?.resume(),dispose:()=>e?.dispose()}}async function J(){if(!R())return null;let e=await ie().prepare();return e.enable(),e}var ue=J(),be=Object.freeze({move:ne});var ge=J;export{ge as default,J as init,z as makeSortable,ie as modeParticipant,ne as move,ue as ready,be as sortable,ie as sortableParticipant};