@obelism/content 0.28.1 → 0.28.2

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.
@@ -37,7 +37,7 @@
37
37
  width: 12px; height: 12px; fill: none; stroke: currentColor;
38
38
  stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round;
39
39
  }
40
- `,c=(e,{selector:r,onSelect:n,checked:a,labels:i})=>{let c=e.document,u={...o,...i},g=c.createElement("div");g.setAttribute("data-obelism-stats","");let h=g.attachShadow({mode:"open"}),b=c.createElement("style");b.textContent=p;let m=c.createElement("div");m.className="layer",h.append(b,m),c.body.appendChild(g);let f={},v=!1,x=null,y=(r,a,i)=>{let o,s=a.getBoundingClientRect();if(!s.width&&!s.height||s.bottom<0||s.top>e.innerHeight)return;let p=f[r],g=p&&0!==p.clicks?p.viewers<20?"counting":"rate":"none",h=c.createElement("button");h.type="button",h.dataset.uid=r,h.dataset.status=g;let b=p?Math.round(100*p.rate):0;h.title="rate"===g?d(u.title,{clickers:p.clickers,viewers:p.viewers,clicks:p.clicks}):"none"===g?u.noClicks:d(u.counting,{clicks:p.clicks,viewers:p.viewers,needed:20});let{top:v,left:x}="rate"===g&&s.height>=64?{top:Math.max(s.top,0)+8,left:s.right-8}:(o={width:e.innerWidth,height:e.innerHeight},{top:Math.min(Math.max(s.top,10),o.height-10),left:Math.min(s.right,o.width-10)});"rate"===g&&s.height>=64?(h.className="badge",h.textContent=d(u.clicked,{rate:b})):(h.className="tag","rate"===g?h.textContent=d(u.clickedShort,{rate:b}):h.innerHTML=`<svg viewBox="0 0 24 24" aria-hidden="true">${l[g]}</svg>`,h.setAttribute("aria-label",h.title)),h.style.top=`${v}px`,h.style.left=`${x}px`;let y=i.has(r)?r:a.closest(`[${t}]`)?.getAttribute(t);y&&h.addEventListener("click",()=>n(y)),m.appendChild(h)},w=()=>{if(x=null,m.replaceChildren(),m.hidden=!v,!v)return;let e=new Set;for(let r of c.querySelectorAll(`[${t}]`))e.add(r.getAttribute(t)??"");let n=a??(t=>e.has(t)),i=new Set;for(let t of c.querySelectorAll(`[${s}]`)){let r=t.getAttribute(s);r&&(f[r]||n(r))&&(i.add(r),y(r,t,e))}for(let t of Object.keys(f)){if(i.has(t)||!e.has(t))continue;let n=c.querySelector(r(t));n&&y(t,n,e)}},k=()=>{null===x&&v&&(x=e.requestAnimationFrame(w))};e.addEventListener("scroll",k,{capture:!0,passive:!0}),e.addEventListener("resize",k);let E=e.MutationObserver,C="function"==typeof E?new E(k):null;return C?.observe(c.body,{childList:!0,subtree:!0}),{update(t,r){f=t,v=r,null!==x&&(e.cancelAnimationFrame?.(x),x=null),w()},refresh:k,destroy(){null!==x&&e.cancelAnimationFrame?.(x),e.removeEventListener("scroll",k,{capture:!0}),e.removeEventListener("resize",k),C?.disconnect(),g.remove()}}},u=/(-?\d*\.?\d+)(?:s|l|d)?vh\b/g,g=(e,t)=>(u.lastIndex=0,u.test(e))?e.replace(u,(e,r)=>`${Math.round(Number(r)*t/100*100)/100}px`):null,h=(e,t)=>{for(let r=0;r<e.length;r++){let n=e.item(r),a=g(e.getPropertyValue(n),t);null!==a&&e.setProperty(n,a,e.getPropertyPriority(n))}},b=(e,t)=>{for(let r of Array.from(e)){let{style:e,cssRules:n}=r;e&&h(e,t),n&&b(n,t)}},m="obelism-content-bridge",f="#d58a1f",v=(e="")=>`${e}[${t}]{cursor:pointer;transition:outline-color .15s}${e}[${t}]:hover{outline:2px dashed ${f};outline-offset:2px}${e}[${t}][data-cms-selected]{outline:2px solid ${f};outline-offset:2px}`,x={features:[],selectedUid:null,prompting:!1,canUndo:!1,unsaved:!1,saving:!1,publishing:!1,selecting:!1,stats:{},statsVisible:!1},y=()=>{let e={update:new Set,saved:new Set,published:new Set,change:new Set};return{listeners:e,on:(t,r)=>(e[t].add(r),()=>{e[t].delete(r)}),emit(t,r){for(let n of e[t])try{n(r)}catch(e){console.error("[@obelism/content bridge]",e)}}}},w=()=>Promise.reject(Error("Save and publish in the visual editor itself")),k=()=>Promise.reject(Error("Only while signed in to edit on the site")),E={prompt:()=>Promise.reject(Error("Prompts only work inside the visual editor")),createPage:()=>Promise.reject(Error("New pages are made on the site itself")),createProductPage:()=>Promise.reject(Error("Product pages are made on the site itself")),createCollectionPage:()=>Promise.reject(Error("Collection pages are made on the site itself")),view:k,applyJson:k,openForm:(e,t={})=>(queueMicrotask(()=>t.onError?.("Only while signed in to edit on the site")),{close:()=>{}}),pages:k,openPage:()=>{},undo:()=>{},save:w,publish:w,signOut:()=>{},select:()=>{},setSelecting:()=>{}},C=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0,A=e=>{if(!e||"object"!=typeof e||Array.isArray(e))return{};let t={};for(let[r,n]of Object.entries(e)){let{clicks:e,clickers:a,viewers:i,rate:o}=n??{};C(e)&&C(a)&&C(i)&&C(o)&&(t[r]={clicks:e,clickers:a,viewers:i,rate:o})}return t},N=e=>`[${t}="${e.replace(/["\\]/g,"\\$&")}"]`,L=(e,t)=>{let r=y();e.on("saved",()=>r.emit("saved",{})),e.on("published",()=>r.emit("published",{}));let n=!1;return{isEditing:e.isEditing,mode:e.isEditing?"editor":null,entryId:e.entryId,environment:t.get(i),product:null,collection:null,on:(t,a)=>("update"!==t||n||(n=!0,e.on("update",e=>{let t=e?.entry;t&&r.emit("update",{entry:t,selectedUid:null})})),r.on(t,a)),getState:()=>x,...E,destroy:()=>{}}},S=(e,t,r={},...n)=>{let a=e.createElement(t);for(let t of(Object.assign(a,r),n))a.appendChild("string"==typeof t?e.createTextNode(t):t);return a},P='<rect x="10" y="2" width="4" height="20"/><rect x="2" y="10" width="20" height="4"/><circle cx="6" cy="6" r="2.6"/><circle cx="18" cy="6" r="2.6"/><circle cx="6" cy="18" r="2.6"/><circle cx="18" cy="18" r="2.6"/>',$='<circle cx="6" cy="6" r="2.2"/><circle cx="18" cy="6" r="2.2"/><circle cx="12" cy="12" r="2.2" class="accent"/><circle cx="6" cy="18" r="2.2"/><circle cx="18" cy="18" r="2.2"/>',M=(e,t,r)=>{let n=S(e,"span",{className:t});return n.setAttribute("aria-hidden","true"),n.innerHTML=`<svg viewBox="0 0 24 24">${r}</svg>`,n},U=(e,t)=>e.replace(/\{(\w+)\}/g,(e,r)=>r in t?String(t[r]):e),z={page:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/>',newPage:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M9 15h6"/><path d="M12 18v-6"/>',block:'<rect width="18" height="18" x="3" y="3" rx="2"/><path d="M7 8h10"/><path d="M7 12h6"/>',undo:'<path d="M9 14 4 9l5-5"/><path d="M4 9h10.5a5.5 5.5 0 0 1 0 11H11"/>',close:'<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',minimize:'<path d="m6 9 6 6 6-6"/>',expand:'<path d="m18 15-6-6-6 6"/>',chevrons:'<path d="m7 15 5 5 5-5"/><path d="m7 9 5-5 5 5"/>',search:'<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>',check:'<path d="M20 6 9 17l-5-5"/>',mark:`<g fill="currentColor" stroke="none">${P}</g>`,send:'<path d="M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z"/><path d="M6 12h16"/>',arrowUp:'<path d="M12 19V5"/><path d="m5 12 7-7 7 7"/>',dash:'<path d="M5 12h14"/>',eye:'<path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12Z"/><circle cx="12" cy="12" r="3"/>',eyeOff:'<path d="M10.7 5.1A10 10 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-2.2 3.2"/><path d="M6.6 6.6A17 17 0 0 0 2 12s3.5 7 10 7a9.7 9.7 0 0 0 5.4-1.6"/><path d="M9.9 9.9a3 3 0 0 0 4.2 4.2"/><path d="m2 2 20 20"/>',plus:'<path d="M5 12h14"/><path d="M12 5v14"/>',scope:'<rect x="3" y="3" width="18" height="18" rx="3" stroke-dasharray="3 3"/>',alert:'<circle cx="12" cy="12" r="10"/><path d="M12 8v4"/><path d="M12 16h.01"/>'},O=(e,t)=>M(e,"icon",z[t]),I=(e,t,r,{onReady:n,onError:a,onEscape:i})=>{let o=null,s=!1,l=null;return{get mounted(){return null!==o},get loading(){return s},get error(){return l},mount(){s=!0,l=null;let d=e.openForm(t,{title:r,onReady:()=>{o===d&&(s=!1,n())},onError:e=>{o===d&&(s=!1,l=e,a(e))},onEscape:()=>{o===d&&i?.()}});o=d},unmount(){o?.close(),o=null,s=!1,l=null}}},j={open:"Edit with a prompt",placeholder:"Describe a change, like “make it warmer”",send:"Apply",undo:"Undo",minimize:"Minimize, to see the page",scopeEntry:"Whole page",working:"Working on it…",publish:"Publish",saving:"Saving…",publishing:"Publishing…",saved:"Saved as a draft",published:"Published",unsaved:"Unsaved changes",signOut:"Exit",viewingDrafts:"Viewing drafts",newPage:"New page",newPageCancel:"Edit this page instead",newPagePlaceholder:"Describe the new page, e.g. “a pricing page for agencies”",path:"Path",pathPlaceholder:"/pricing",creating:"Writing the page…",created:"Opening the new page…",modes:"Edit with",modePrompt:"Ask",form:"Edit fields",formTitle:"The content form",formLoading:"Opening the form…",pages:"Pages",pagesSearch:"Find a page",pagesLoading:"Loading pages…",pagesEmpty:"No pages match",pageCurrent:"This page",pageDraft:"Draft",pageChanged:"Changed",addProductPage:"Add a product page",addingProductPage:"Making the product page…",addedProductPage:"Opening the product page…",productPageHint:"This product has no page yet. Add one for what the store doesn’t say.",addCollectionPage:"Add a collection page",addingCollectionPage:"Making the collection page…",addedCollectionPage:"Opening the collection page…",collectionPageHint:"This collection has no page yet. Add one for what goes around its products."},T={...j,close:"Close",expand:"Expand",scopeNoPage:"Whole page",scopeBlock:"Selected block",clearBlock:"Edit the whole page instead",save:"Save",selectHint:"Click a block to change only that block"},R={...j,editor:"Obelism editor",editing:"Editing",hideOutlines:"Show the page without outlines",environment:"Environment",envProduction:"live",scopeNoteBlock:"Working on {name}. Click another block to switch.",scopeNotePage:"Working on the whole page. Click a block to change only that block.",scopeUp:"Up to {name}",block:"Block",previewChip:"{name} \xb7 preview",askIntro:"Describe a change and Obelism shows it on the page. Nothing is stored until you keep it and save.",you:"You",obelism:"Obelism",suggested:"Suggested by Obelism",keep:"Keep it",retry:"Try another",retryPrompt:"{prompt}\n\nWrite a different version than the last one.",kept:"Kept",undone:"Undone",before:"Before",after:"After",emptyValue:"Empty",moreChanges:"{count} more changed",keepFirst:"Keep or undo the suggestion to save",keepBeforeFields:"Keep or undo the suggestion before editing fields.",saveDraft:"Save draft",upToDate:"No unsaved changes",saveFailed:"Couldn’t save",publishFailed:"Couldn’t publish",tryAgain:"Try again"},D=(e,t,r,{onLoad:n,onClose:a})=>{let i=S(e,"input",{type:"text",placeholder:r.pagesSearch,autocomplete:"off",spellcheck:!1});i.setAttribute("role","combobox"),i.setAttribute("aria-label",r.pagesSearch),i.setAttribute("aria-autocomplete","list"),i.setAttribute("aria-expanded","true"),i.setAttribute("aria-controls","obelism-pages");let o=S(e,"label",{className:"search"},O(e,"search"),i),s=S(e,"ul",{className:"options",id:"obelism-pages"});s.setAttribute("role","listbox"),s.setAttribute("aria-label",r.pages);let l=S(e,"p",{className:"empty"}),d=null,p=null,c=null,u=0,g=()=>{let e=i.value.trim().toLowerCase();return(d??[]).filter(t=>!e||t.name.toLowerCase().includes(e)||t.url.toLowerCase().includes(e)||`/${t.path}`.toLowerCase().includes(e))},h=e=>{if(e.entryId===t.entryId)return a();t.openPage(e)},b=()=>{let n=g();u=Math.max(0,Math.min(u,n.length-1)),s.textContent="",n.forEach((n,a)=>{let i=S(e,"li",{className:`option${a===u?" active":""}`,id:`obelism-page-${a}`},S(e,"span",{className:"option-text"},S(e,"span",{textContent:n.name}),S(e,"span",{className:"option-path",textContent:n.url})));if(i.setAttribute("role","option"),i.setAttribute("aria-selected",String(a===u)),"published"!==n.status&&i.appendChild(S(e,"span",{className:"badge",textContent:"draft"===n.status?r.pageDraft:r.pageChanged})),n.entryId===t.entryId){i.setAttribute("aria-current","page");let t=O(e,"check");t.removeAttribute("aria-hidden"),t.setAttribute("role","img"),t.setAttribute("aria-label",r.pageCurrent),i.appendChild(t)}i.addEventListener("click",()=>h(n)),s.appendChild(i)});let a=s.children[u];a?(i.setAttribute("aria-activedescendant",a.id),a.scrollIntoView?.({block:"nearest"})):i.removeAttribute("aria-activedescendant"),l.textContent=(c??(d?"":r.pagesLoading))||(0===n.length?r.pagesEmpty:""),l.hidden=!l.textContent,l.className=`empty${c?" error":""}`},m=()=>(p??(p=t.pages().then(e=>{d=e,c=null,b(),n()},e=>{p=null,c=e instanceof Error?e.message:String(e),b(),n()})),p);return i.addEventListener("input",()=>{u=0,b()}),i.addEventListener("keydown",e=>{let t=s.children.length;if("ArrowDown"===e.key||"ArrowUp"===e.key){if(e.preventDefault(),0===t)return;u=(u+("ArrowDown"===e.key?1:-1)+t)%t,b()}else if("Enter"!==e.key||e.isComposing)"Escape"===e.key&&(e.preventDefault(),a());else{e.preventDefault();let t=g()[u];t&&h(t)}}),{searchRow:o,search:i,list:s,note:l,get pages(){return d},get error(){return c},current:()=>d?.find(({entryId:e})=>e===t.entryId)??null,fetch:m,forget(){d=null,p=null},reset(){i.value="",u=Math.max(0,(d??[]).findIndex(({entryId:e})=>e===t.entryId)),m(),b()},render:b}},q=e=>e instanceof Error?e.message:String(e),F=(e,t,r)=>{let n="site"===e.mode,a=n&&t.features.includes("create"),i=n&&null===e.entryId,o=i&&a?e.product?"product":e.collection?"collection":null:null;return{site:n,canCreate:a,pageless:i,shopHere:o,onlyNew:i&&a&&!o&&!r}},B=(e,t)=>"collection"===t?{add:e.addCollectionPage,adding:e.addingCollectionPage,hint:e.collectionPageHint}:{add:e.addProductPage,adding:e.addingProductPage,hint:e.productPageHint},V=async(e,t)=>{try{if(e.product)return await e.createProductPage(),{text:t.addedProductPage,error:!1};return await e.createCollectionPage(),{text:t.addedCollectionPage,error:!1}}catch(e){return{text:q(e),error:!0}}},H=async(e,t)=>{try{return await e[t](),null}catch(e){return q(e)}},_="obelism-content-prompt-side",W=`
40
+ `,c=(e,{selector:r,onSelect:n,checked:a,labels:i})=>{let c=e.document,u={...o,...i},g=c.createElement("div");g.setAttribute("data-obelism-stats","");let h=g.attachShadow({mode:"open"}),b=c.createElement("style");b.textContent=p;let m=c.createElement("div");m.className="layer",h.append(b,m),c.body.appendChild(g);let f={},v=!1,x=null,y=(r,a,i)=>{let o,s=a.getBoundingClientRect();if(!s.width&&!s.height||s.bottom<0||s.top>e.innerHeight)return;let p=f[r],g=p&&0!==p.clicks?p.viewers<20?"counting":"rate":"none",h=c.createElement("button");h.type="button",h.dataset.uid=r,h.dataset.status=g;let b=p?Math.round(100*p.rate):0;h.title="rate"===g?d(u.title,{clickers:p.clickers,viewers:p.viewers,clicks:p.clicks}):"none"===g?u.noClicks:d(u.counting,{clicks:p.clicks,viewers:p.viewers,needed:20});let{top:v,left:x}="rate"===g&&s.height>=64?{top:Math.max(s.top,0)+8,left:s.right-8}:(o={width:e.innerWidth,height:e.innerHeight},{top:Math.min(Math.max(s.top,10),o.height-10),left:Math.min(s.right,o.width-10)});"rate"===g&&s.height>=64?(h.className="badge",h.textContent=d(u.clicked,{rate:b})):(h.className="tag","rate"===g?h.textContent=d(u.clickedShort,{rate:b}):h.innerHTML=`<svg viewBox="0 0 24 24" aria-hidden="true">${l[g]}</svg>`,h.setAttribute("aria-label",h.title)),h.style.top=`${v}px`,h.style.left=`${x}px`;let y=i.has(r)?r:a.closest(`[${t}]`)?.getAttribute(t);y&&h.addEventListener("click",()=>n(y)),m.appendChild(h)},w=()=>{if(x=null,m.replaceChildren(),m.hidden=!v,!v)return;let e=new Set;for(let r of c.querySelectorAll(`[${t}]`))e.add(r.getAttribute(t)??"");let n=a??(t=>e.has(t)),i=new Set;for(let t of c.querySelectorAll(`[${s}]`)){let r=t.getAttribute(s);r&&(f[r]||n(r))&&(i.add(r),y(r,t,e))}for(let t of Object.keys(f)){if(i.has(t)||!e.has(t))continue;let n=c.querySelector(r(t));n&&y(t,n,e)}},k=()=>{null===x&&v&&(x=e.requestAnimationFrame(w))};e.addEventListener("scroll",k,{capture:!0,passive:!0}),e.addEventListener("resize",k);let E=e.MutationObserver,C="function"==typeof E?new E(k):null;return C?.observe(c.body,{childList:!0,subtree:!0}),{update(t,r){f=t,v=r,null!==x&&(e.cancelAnimationFrame?.(x),x=null),w()},refresh:k,destroy(){null!==x&&e.cancelAnimationFrame?.(x),e.removeEventListener("scroll",k,{capture:!0}),e.removeEventListener("resize",k),C?.disconnect(),g.remove()}}},u=/(-?\d*\.?\d+)(?:s|l|d)?vh\b/g,g=(e,t)=>(u.lastIndex=0,u.test(e))?e.replace(u,(e,r)=>`${Math.round(Number(r)*t/100*100)/100}px`):null,h=(e,t)=>{for(let r=0;r<e.length;r++){let n=e.item(r),a=g(e.getPropertyValue(n),t);null!==a&&e.setProperty(n,a,e.getPropertyPriority(n))}},b=(e,t)=>{for(let r of Array.from(e)){let{style:e,cssRules:n}=r;e&&h(e,t),n&&b(n,t)}},m="obelism-content-bridge",f="#d58a1f",v=(e="")=>`${e}[${t}]{cursor:pointer;transition:outline-color .15s}${e}[${t}]:hover{outline:2px dashed ${f};outline-offset:2px}${e}[${t}][data-cms-selected]{outline:2px solid ${f};outline-offset:2px}`,x={features:[],selectedUid:null,prompting:!1,canUndo:!1,unsaved:!1,saving:!1,publishing:!1,selecting:!1,stats:{},statsVisible:!1},y=()=>{let e={update:new Set,saved:new Set,published:new Set,change:new Set};return{listeners:e,on:(t,r)=>(e[t].add(r),()=>{e[t].delete(r)}),emit(t,r){for(let n of e[t])try{n(r)}catch(e){console.error("[@obelism/content bridge]",e)}}}},w=()=>Promise.reject(Error("Save and publish in the visual editor itself")),k=()=>Promise.reject(Error("Only while signed in to edit on the site")),E={prompt:()=>Promise.reject(Error("Prompts only work inside the visual editor")),createPage:()=>Promise.reject(Error("New pages are made on the site itself")),createProductPage:()=>Promise.reject(Error("Product pages are made on the site itself")),createCollectionPage:()=>Promise.reject(Error("Collection pages are made on the site itself")),view:k,applyJson:k,openForm:(e,t={})=>(queueMicrotask(()=>t.onError?.("Only while signed in to edit on the site")),{close:()=>{}}),pages:k,openPage:()=>{},undo:()=>{},save:w,publish:w,signOut:()=>{},select:()=>{},setSelecting:()=>{}},C=e=>"number"==typeof e&&Number.isFinite(e)&&e>=0,A=e=>{if(!e||"object"!=typeof e||Array.isArray(e))return{};let t={};for(let[r,n]of Object.entries(e)){let{clicks:e,clickers:a,viewers:i,rate:o}=n??{};C(e)&&C(a)&&C(i)&&C(o)&&(t[r]={clicks:e,clickers:a,viewers:i,rate:o})}return t},N=e=>`[${t}="${e.replace(/["\\]/g,"\\$&")}"]`,S=(e,t)=>{let r=y();e.on("saved",()=>r.emit("saved",{})),e.on("published",()=>r.emit("published",{}));let n=!1;return{isEditing:e.isEditing,mode:e.isEditing?"editor":null,entryId:e.entryId,environment:t.get(i),product:null,collection:null,on:(t,a)=>("update"!==t||n||(n=!0,e.on("update",e=>{let t=e?.entry;t&&r.emit("update",{entry:t,selectedUid:null})})),r.on(t,a)),getState:()=>x,...E,destroy:()=>{}}},L=(e,t,r={},...n)=>{let a=e.createElement(t);for(let t of(Object.assign(a,r),n))a.appendChild("string"==typeof t?e.createTextNode(t):t);return a},P='<rect x="10" y="2" width="4" height="20"/><rect x="2" y="10" width="20" height="4"/><circle cx="6" cy="6" r="2.6"/><circle cx="18" cy="6" r="2.6"/><circle cx="6" cy="18" r="2.6"/><circle cx="18" cy="18" r="2.6"/>',$='<circle cx="6" cy="6" r="2.2"/><circle cx="18" cy="6" r="2.2"/><circle cx="12" cy="12" r="2.2" class="accent"/><circle cx="6" cy="18" r="2.2"/><circle cx="18" cy="18" r="2.2"/>',M=(e,t,r)=>{let n=L(e,"span",{className:t});return n.setAttribute("aria-hidden","true"),n.innerHTML=`<svg viewBox="0 0 24 24">${r}</svg>`,n},U=(e,t)=>e.replace(/\{(\w+)\}/g,(e,r)=>r in t?String(t[r]):e),z={page:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/>',newPage:'<path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"/><path d="M14 2v4a2 2 0 0 0 2 2h4"/><path d="M9 15h6"/><path d="M12 18v-6"/>',block:'<rect width="18" height="18" x="3" y="3" rx="2"/><path d="M7 8h10"/><path d="M7 12h6"/>',undo:'<path d="M9 14 4 9l5-5"/><path d="M4 9h10.5a5.5 5.5 0 0 1 0 11H11"/>',close:'<path d="M18 6 6 18"/><path d="m6 6 12 12"/>',minimize:'<path d="m6 9 6 6 6-6"/>',expand:'<path d="m18 15-6-6-6 6"/>',chevrons:'<path d="m7 15 5 5 5-5"/><path d="m7 9 5-5 5 5"/>',search:'<circle cx="11" cy="11" r="8"/><path d="m21 21-4.3-4.3"/>',check:'<path d="M20 6 9 17l-5-5"/>',mark:`<g fill="currentColor" stroke="none">${P}</g>`,send:'<path d="M3.714 3.048a.498.498 0 0 0-.683.627l2.843 7.627a2 2 0 0 1 0 1.396l-2.842 7.627a.498.498 0 0 0 .682.627l18-8.5a.5.5 0 0 0 0-.904z"/><path d="M6 12h16"/>',arrowUp:'<path d="M12 19V5"/><path d="m5 12 7-7 7 7"/>',dash:'<path d="M5 12h14"/>',eye:'<path d="M2 12s3.5-7 10-7 10 7 10 7-3.5 7-10 7S2 12 2 12Z"/><circle cx="12" cy="12" r="3"/>',eyeOff:'<path d="M10.7 5.1A10 10 0 0 1 12 5c6.5 0 10 7 10 7a17 17 0 0 1-2.2 3.2"/><path d="M6.6 6.6A17 17 0 0 0 2 12s3.5 7 10 7a9.7 9.7 0 0 0 5.4-1.6"/><path d="M9.9 9.9a3 3 0 0 0 4.2 4.2"/><path d="m2 2 20 20"/>',plus:'<path d="M5 12h14"/><path d="M12 5v14"/>',scope:'<rect x="3" y="3" width="18" height="18" rx="3" stroke-dasharray="3 3"/>',alert:'<circle cx="12" cy="12" r="10"/><path d="M12 8v4"/><path d="M12 16h.01"/>'},O=(e,t)=>M(e,"icon",z[t]),I=(e,t,r,{onReady:n,onError:a,onEscape:i})=>{let o=null,s=!1,l=null;return{get mounted(){return null!==o},get loading(){return s},get error(){return l},mount(){s=!0,l=null;let d=e.openForm(t,{title:r,onReady:()=>{o===d&&(s=!1,n())},onError:e=>{o===d&&(s=!1,l=e,a(e))},onEscape:()=>{o===d&&i?.()}});o=d},unmount(){o?.close(),o=null,s=!1,l=null}}},j={open:"Edit with a prompt",placeholder:"Describe a change, like “make it warmer”",send:"Apply",undo:"Undo",minimize:"Minimize, to see the page",scopeEntry:"Whole page",working:"Working on it…",publish:"Publish",saving:"Saving…",publishing:"Publishing…",saved:"Saved as a draft",published:"Published",unsaved:"Unsaved changes",signOut:"Exit",viewingDrafts:"Viewing drafts",newPage:"New page",newPageCancel:"Edit this page instead",newPagePlaceholder:"Describe the new page, e.g. “a pricing page for agencies”",path:"Path",pathPlaceholder:"/pricing",creating:"Writing the page…",created:"Opening the new page…",modes:"Edit with",modePrompt:"Ask",form:"Edit fields",formTitle:"The content form",formLoading:"Opening the form…",pages:"Pages",pagesSearch:"Find a page",pagesLoading:"Loading pages…",pagesEmpty:"No pages match",pageCurrent:"This page",pageDraft:"Draft",pageChanged:"Changed",addProductPage:"Add a product page",addingProductPage:"Making the product page…",addedProductPage:"Opening the product page…",productPageHint:"This product has no page yet. Add one for what the store doesn’t say.",addCollectionPage:"Add a collection page",addingCollectionPage:"Making the collection page…",addedCollectionPage:"Opening the collection page…",collectionPageHint:"This collection has no page yet. Add one for what goes around its products."},T={...j,close:"Close",expand:"Expand",scopeNoPage:"Whole page",scopeBlock:"Selected block",clearBlock:"Edit the whole page instead",save:"Save",selectHint:"Click a block to change only that block"},R={...j,editor:"Obelism editor",editing:"Editing",hideOutlines:"Show the page without outlines",environment:"Environment",envProduction:"live",scopeNoteBlock:"Working on {name}. Click another block to switch.",scopeNotePage:"Working on the whole page. Click a block to change only that block.",scopeUp:"Up to {name}",block:"Block",previewChip:"{name} \xb7 preview",askIntro:"Describe a change and Obelism shows it on the page. Nothing is stored until you keep it and save.",you:"You",obelism:"Obelism",suggested:"Suggested by Obelism",keep:"Keep it",retry:"Try another",retryPrompt:"{prompt}\n\nWrite a different version than the last one.",kept:"Kept",undone:"Undone",before:"Before",after:"After",emptyValue:"Empty",moreChanges:"{count} more changed",keepFirst:"Keep or undo the suggestion to save",keepBeforeFields:"Keep or undo the suggestion before editing fields.",saveDraft:"Save draft",upToDate:"No unsaved changes",saveFailed:"Couldn’t save",publishFailed:"Couldn’t publish",tryAgain:"Try again"},D=(e,t,r,{onLoad:n,onClose:a})=>{let i=L(e,"input",{type:"text",placeholder:r.pagesSearch,autocomplete:"off",spellcheck:!1});i.setAttribute("role","combobox"),i.setAttribute("aria-label",r.pagesSearch),i.setAttribute("aria-autocomplete","list"),i.setAttribute("aria-expanded","true"),i.setAttribute("aria-controls","obelism-pages");let o=L(e,"label",{className:"search"},O(e,"search"),i),s=L(e,"ul",{className:"options",id:"obelism-pages"});s.setAttribute("role","listbox"),s.setAttribute("aria-label",r.pages);let l=L(e,"p",{className:"empty"}),d=null,p=null,c=null,u=0,g=()=>{let e=i.value.trim().toLowerCase();return(d??[]).filter(t=>!e||t.name.toLowerCase().includes(e)||t.url.toLowerCase().includes(e)||`/${t.path}`.toLowerCase().includes(e))},h=e=>{if(e.entryId===t.entryId)return a();t.openPage(e)},b=()=>{let n=g();u=Math.max(0,Math.min(u,n.length-1)),s.textContent="",n.forEach((n,a)=>{let i=L(e,"li",{className:`option${a===u?" active":""}`,id:`obelism-page-${a}`},L(e,"span",{className:"option-text"},L(e,"span",{textContent:n.name}),L(e,"span",{className:"option-path",textContent:n.url})));if(i.setAttribute("role","option"),i.setAttribute("aria-selected",String(a===u)),"published"!==n.status&&i.appendChild(L(e,"span",{className:"badge",textContent:"draft"===n.status?r.pageDraft:r.pageChanged})),n.entryId===t.entryId){i.setAttribute("aria-current","page");let t=O(e,"check");t.removeAttribute("aria-hidden"),t.setAttribute("role","img"),t.setAttribute("aria-label",r.pageCurrent),i.appendChild(t)}i.addEventListener("click",()=>h(n)),s.appendChild(i)});let a=s.children[u];a?(i.setAttribute("aria-activedescendant",a.id),a.scrollIntoView?.({block:"nearest"})):i.removeAttribute("aria-activedescendant"),l.textContent=(c??(d?"":r.pagesLoading))||(0===n.length?r.pagesEmpty:""),l.hidden=!l.textContent,l.className=`empty${c?" error":""}`},m=()=>(p??(p=t.pages().then(e=>{d=e,c=null,b(),n()},e=>{p=null,c=e instanceof Error?e.message:String(e),b(),n()})),p);return i.addEventListener("input",()=>{u=0,b()}),i.addEventListener("keydown",e=>{let t=s.children.length;if("ArrowDown"===e.key||"ArrowUp"===e.key){if(e.preventDefault(),0===t)return;u=(u+("ArrowDown"===e.key?1:-1)+t)%t,b()}else if("Enter"!==e.key||e.isComposing)"Escape"===e.key&&(e.preventDefault(),a());else{e.preventDefault();let t=g()[u];t&&h(t)}}),{searchRow:o,search:i,list:s,note:l,get pages(){return d},get error(){return c},current:()=>d?.find(({entryId:e})=>e===t.entryId)??null,fetch:m,forget(){d=null,p=null},reset(){i.value="",u=Math.max(0,(d??[]).findIndex(({entryId:e})=>e===t.entryId)),m(),b()},render:b}},q=e=>e instanceof Error?e.message:String(e),F=(e,t,r)=>{let n="site"===e.mode,a=n&&t.features.includes("create"),i=n&&null===e.entryId,o=i&&a?e.product?"product":e.collection?"collection":null:null;return{site:n,canCreate:a,pageless:i,shopHere:o,onlyNew:i&&a&&!o&&!r}},B=(e,t)=>"collection"===t?{add:e.addCollectionPage,adding:e.addingCollectionPage,hint:e.collectionPageHint}:{add:e.addProductPage,adding:e.addingProductPage,hint:e.productPageHint},V=async(e,t)=>{try{if(e.product)return await e.createProductPage(),{text:t.addedProductPage,error:!1};return await e.createCollectionPage(),{text:t.addedCollectionPage,error:!1}}catch(e){return{text:q(e),error:!0}}},H=async(e,t)=>{try{return await e[t](),null}catch(e){return q(e)}},_="obelism-content-prompt-side",W=`
41
41
  :host { all: initial; }
42
42
  * { box-sizing: border-box; font: inherit; color: inherit; margin: 0; }
43
43
  .root {
@@ -268,7 +268,7 @@ button.chip:disabled { opacity: .5; }
268
268
  .empty { padding: 8px 12px; color: rgb(var(--theme-foreground-muted-rgb)); }
269
269
  .empty.error { color: var(--theme-error); }
270
270
  [hidden] { display: none !important; }
271
- `,Y=(e,t,r={})=>{let n,a={...T,...r.labels},i=S(e,"div");i.setAttribute("data-obelism-content-prompt","");let o=i.attachShadow({mode:"open"}),s="site"===t.mode,l=S(e,"span",{textContent:a.open}),d=S(e,"button",{className:"pill",type:"button"},l,((n=O(e,"mark")).classList.add("mark"),n)),p=S(e,"span",{className:"pill compact"},`${a.viewingDrafts} \xb7 `),c=S(e,"button",{className:"link",type:"button",textContent:a.signOut});p.appendChild(c);let u=S(e,"p",{className:"status"});u.setAttribute("role","status");let g=S(e,"textarea",{placeholder:a.placeholder,rows:1});g.setAttribute("aria-label",a.open);let h=S(e,"div",{className:"form-loader",textContent:a.formLoading});h.setAttribute("role","status");let b=S(e,"div",{className:"form"},h),m=O(e,"page"),f=O(e,"block"),v=S(e,"span"),x=S(e,"button",{type:"button",title:a.clearBlock});x.setAttribute("aria-label",a.clearBlock),x.appendChild(O(e,"close"));let y=S(e,"span",{className:"chip scope"},m,f,v,x),w=S(e,"button",{className:"action chip",type:"button"},O(e,"undo"),a.undo),k=t=>{let r=S(e,"button",{type:"button",textContent:t});return r.setAttribute("aria-pressed","false"),r},E=k(a.modePrompt),C=k(a.form),A=S(e,"span",{className:"modes"},E,C);A.setAttribute("role","group"),A.setAttribute("aria-label",a.modes);let N=S(e,"button",{className:"action chip",type:"button"},O(e,"newPage"),a.newPage),L=S(e,"button",{className:"action chip product",type:"button"},O(e,"newPage"),a.addProductPage),P=S(e,"button",{type:"button",title:a.newPageCancel});P.setAttribute("aria-label",a.newPageCancel),P.appendChild(O(e,"close"));let $=S(e,"span",{className:"chip scope"},O(e,"newPage"),S(e,"span",{textContent:a.newPage}),P),M=S(e,"input",{type:"text",placeholder:a.pathPlaceholder,autocomplete:"off",spellcheck:!1}),U=S(e,"label",{className:"path"},S(e,"span",{textContent:a.path}),M),z=S(e,"button",{className:"close icon-button",type:"button",title:a.close},O(e,"close"));z.setAttribute("aria-label",a.close);let j=O(e,"minimize"),R=O(e,"expand"),Y=S(e,"button",{className:"icon-button",type:"button"},j,R),X=S(e,"button",{className:"action primary icon-button",type:"submit"},S(e,"span",{className:"visually-hidden",textContent:a.send}),O(e,"send"));X.title=a.send;let K=S(e,"span",{className:"divider"}),J=S(e,"div",{className:"toolbar"},y,$,A,w,L,N,S(e,"span",{className:"spacer"}),Y,z,K,X),Z=S(e,"span",{textContent:a.pages}),G=S(e,"button",{className:"chip page-chip",type:"button",title:a.pages},O(e,"page"),Z,O(e,"chevrons"));G.setAttribute("aria-haspopup","listbox"),G.setAttribute("aria-expanded","false"),G.setAttribute("aria-controls","obelism-pages");let Q=D(e,t,a,{onLoad:()=>eE(),onClose:()=>eL(!1)}),ee=S(e,"div",{className:"pages"},Q.searchRow,Q.list,Q.note),et=S(e,"slot");et.name="actions-footer";let er=S(e,"slot");er.name="actions-bar",r.actions&&(r.actions.slot="actions-bar",i.appendChild(r.actions));let en=S(e,"span",{className:"unsaved"});en.appendChild(S(e,"span",{className:"dot"})),en.appendChild(e.createTextNode(a.unsaved));let ea=S(e,"button",{className:"link",type:"button",textContent:a.signOut}),ei=S(e,"button",{className:"action chip",type:"button",textContent:a.save}),eo=S(e,"button",{className:"action chip",type:"button",textContent:a.publish}),es=S(e,"div",{className:"footer"},G,en,S(e,"span",{className:"spacer"}),et,ea,ei,eo),el=S(e,"form",{className:"panel"},u,U,g,b,J,ee,es),ed=S(e,"div",{className:"root"},S(e,"div",{className:"bar"},d,p,er),el);o.append(S(e,"style",{textContent:W}),ed);let ep=e.defaultView,ec=e=>{"center"===e?delete ed.dataset.side:ed.dataset.side=e};ec((()=>{try{let e=ep?.localStorage.getItem(_);return"left"===e||"right"===e?e:"center"}catch{return"center"}})());let eu=null,eg=!1;ed.addEventListener("pointerdown",e=>{if(eg=!1,0!==e.button||!e.isPrimary)return;let t=e.target.closest("button, input, textarea, select, iframe, a, label, .pages, .form");if(t&&t!==d)return;let{left:r,right:n}=ed.getBoundingClientRect();eu={id:e.pointerId,startX:e.clientX,x:e.clientX,velocity:0,time:e.timeStamp,moved:!1,min:Math.min(0,16-r),max:Math.max(0,(ep?.innerWidth??0)-16-n)}}),ed.addEventListener("pointermove",e=>{if(!eu||e.pointerId!==eu.id)return;let t=e.clientX-eu.startX;if(!eu.moved){if(6>Math.abs(t))return;eu.moved=!0,ed.classList.add("dragging");try{ed.setPointerCapture(e.pointerId)}catch{}}let r=e.timeStamp-eu.time;r>0&&(eu.velocity=(e.clientX-eu.x)/r),eu.x=e.clientX,eu.time=e.timeStamp;let n=Math.min(Math.max(t,eu.min),eu.max);ed.style.translate=`${n+(t-n)/3}px 0`});let eh=e=>{if(!eu||e.pointerId!==eu.id)return;let{moved:t,x:r,velocity:n,time:a}=eu;if(eu=null,!t)return;eg=!0;let i=ed.getBoundingClientRect().left,o=ep?.innerWidth??0,s=r+(e.timeStamp-a>80?0:Math.min(Math.max(150*n,-120),120)),l=s<o/3?"left":s>2*o/3?"right":"center";ec(l),ed.style.translate="";let d=ed.getBoundingClientRect().left;ed.style.translate=`${i-d}px 0`,ed.offsetWidth,ed.classList.remove("dragging"),ed.style.translate="";try{ep?.localStorage.setItem(_,l)}catch{}};ed.addEventListener("pointerup",eh),ed.addEventListener("pointercancel",eh),ed.addEventListener("click",e=>{eg&&(eg=!1,e.preventDefault(),e.stopPropagation())},!0);let eb=!1,em=!1,ef=!1,ev=null,ex=!1,ey=I(t,b,a.formTitle,{onReady:()=>{ev=null,eE()},onError:e=>{ev={text:e,error:!0},eE()}}),ew=!1,ek=e=>{let n=e.features.includes("prompt"),i=e.saving||e.publishing,o=e.prompting||i;ed.hidden=!n&&!s,d.hidden=eb||!n,p.hidden=n||!s,el.hidden=!eb||!n;let{canCreate:k,pageless:S,shopHere:z,onlyNew:O}=F(t,e,r.promptWithoutPage),I=null!==z,T=B(a,z);L.lastChild.textContent=T.add,k||(ef=!1),O&&(ef=!0),(ef||S||!s)&&(ex=!1);let D=eb&&n&&ex;D&&!ey.mounted?ey.mount():!D&&ey.mounted&&ey.unmount();let q=I&&!ef;l.textContent=q?T.add:O?a.newPage:a.open,P.hidden=O,y.hidden=ef||q,$.hidden=!ef,L.hidden=!q,L.disabled=o,N.hidden=ef||ex||!k,N.disabled=o,em&&(ew=!1),U.hidden=!ef||ew||em,M.disabled=o,g.hidden=ex||ew||em||q,b.hidden=!ex||ew||em,b.classList.toggle("loading",ey.loading),h.hidden=!ey.loading,J.hidden=ew,ee.hidden=!ew,g.placeholder=ef?a.newPagePlaceholder:a.placeholder,v.textContent=e.selectedUid?a.scopeBlock:S?a.scopeNoPage:a.scopeEntry,x.hidden=!e.selectedUid,m.hidden=!!e.selectedUid,f.hidden=!e.selectedUid,A.hidden=!s||ef||S||!e.features.includes("form"),E.setAttribute("aria-pressed",String(!ex)),C.setAttribute("aria-pressed",String(ex)),A.querySelectorAll("button").forEach(e=>{e.disabled=o}),w.hidden=ef||!e.canUndo,w.disabled=o,X.hidden=ex||em||q,K.hidden=ex||em||q;let V=em?a.expand:a.minimize;Y.title=V,Y.setAttribute("aria-label",V),Y.setAttribute("aria-expanded",String(!em)),j.hidden=em,R.hidden=!em,X.disabled=o||""===g.value.trim()||ef&&""===M.value.trim(),g.disabled=o,ei.hidden=!e.features.includes("save")||S,ei.disabled=o||!e.unsaved,ei.textContent=e.saving?a.saving:a.save,eo.hidden=!e.features.includes("publish")||S,eo.disabled=o,eo.textContent=e.publishing?a.publishing:a.publish,ea.hidden=!s||!1===r.signOut,c.hidden=!1===r.signOut,r.actions&&(r.actions.slot=eb&&n?"actions-footer":"actions-bar"),es.hidden=!s,en.hidden=!e.unsaved,G.hidden=!s,G.setAttribute("aria-expanded",String(ew)),Z.textContent=Q.current()?.name??a.pages;let H=ex&&ey.loading&&!ew,_=e.prompting,W=e.prompting?ef?a.creating:q?T.adding:a.working:H?"":ev?.text??(q?T.hint:!s||ef||ew||e.selectedUid?"":a.selectHint);u.textContent=W,u.hidden=!W||em,u.className=`status${_?" working":""}${!o&&!H&&ev?.error?" error":""}`},eE=()=>ek(t.getState()),eC=()=>{g.style.height="auto",g.style.height=`${g.scrollHeight}px`},eA=e=>{ex!==e&&(ex=e,ev=null,eE(),ex||g.focus())},eN=async()=>{if(ex)return;let e=g.value.trim();if(e&&!t.getState().prompting){ev=null;try{if(ef){let r=M.value.trim();if(!r)return M.focus();await t.createPage(r,e),Q.forget(),ev={text:a.created,error:!1}}else{let{summary:r}=await t.prompt(e);ev={text:r,error:!1}}g.value="",eC()}catch(e){ev={text:q(e),error:!0}}eE(),g.focus()}},eL=e=>{ev=null,(ew=e)&&Q.reset(),eE(),(ew?Q.search:G).focus()},eS=e=>{(eb=e)||(ew=!1,em=!1),eE(),s&&t.setSelecting(eb&&!ef),eb&&s&&Q.fetch()},eP=e=>{ef=e,ev=null,t.setSelecting(eb&&!ef),ef&&t.select(null),eE(),(ef?M:g).focus()},e$=async e=>{ev=null;let r=await H(t,e);ev=r?{text:r,error:!0}:{text:"save"===e?a.saved:a.published,error:!1},eE()};d.addEventListener("click",()=>{eS(!0),ex||(ef?M:g).focus()}),z.addEventListener("click",()=>eS(!1)),Y.addEventListener("click",()=>{em=!em,eE(),em||(ex?Y:g).focus()}),el.addEventListener("click",e=>{if(!em)return;let t=e.target.closest("button");t&&t!==Y&&t!==z&&(em=!1,eE())},!0),ei.addEventListener("click",()=>void e$("save")),eo.addEventListener("click",()=>void e$("publish")),ea.addEventListener("click",()=>t.signOut()),c.addEventListener("click",()=>t.signOut()),x.addEventListener("click",()=>t.select(null)),N.addEventListener("click",()=>eP(!0)),L.addEventListener("click",async()=>{ev=null,ev=await V(t,a),eE()}),P.addEventListener("click",()=>eP(!1)),E.addEventListener("click",()=>eA(!1)),C.addEventListener("click",()=>eA(!0)),G.addEventListener("click",()=>eL(!ew)),M.addEventListener("input",eE),M.addEventListener("keydown",e=>{"Enter"!==e.key||e.isComposing?"Escape"===e.key&&eS(!1):(e.preventDefault(),g.focus())}),w.addEventListener("click",()=>{ev=null,t.undo()}),el.addEventListener("submit",e=>{e.preventDefault(),eN()}),g.addEventListener("input",()=>{eC(),eE()}),g.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||e.isComposing?"Escape"===e.key&&eS(!1):(e.preventDefault(),eN())});let eM=t.on("change",ek);return eE(),e.body.appendChild(i),()=>{eM(),ey.unmount(),i.remove()}},X="https://content.obelism.studio",K=/^(?:\/[\w.~-]+)+$/,J=e=>{let{protocol:t}=new URL(e,"https://site.invalid");if("https:"!==t&&"http:"!==t)throw Error(`Not a page address: ${e}`);return e},Z=(e,t)=>JSON.stringify(e)===JSON.stringify(t),G="obelism-content-editor",Q=`
271
+ `,Y=(e,t,r={})=>{let n,a={...T,...r.labels},i=L(e,"div");i.setAttribute("data-obelism-content-prompt","");let o=i.attachShadow({mode:"open"}),s="site"===t.mode,l=L(e,"span",{textContent:a.open}),d=L(e,"button",{className:"pill",type:"button"},l,((n=O(e,"mark")).classList.add("mark"),n)),p=L(e,"span",{className:"pill compact"},`${a.viewingDrafts} \xb7 `),c=L(e,"button",{className:"link",type:"button",textContent:a.signOut});p.appendChild(c);let u=L(e,"p",{className:"status"});u.setAttribute("role","status");let g=L(e,"textarea",{placeholder:a.placeholder,rows:1});g.setAttribute("aria-label",a.open);let h=L(e,"div",{className:"form-loader",textContent:a.formLoading});h.setAttribute("role","status");let b=L(e,"div",{className:"form"},h),m=O(e,"page"),f=O(e,"block"),v=L(e,"span"),x=L(e,"button",{type:"button",title:a.clearBlock});x.setAttribute("aria-label",a.clearBlock),x.appendChild(O(e,"close"));let y=L(e,"span",{className:"chip scope"},m,f,v,x),w=L(e,"button",{className:"action chip",type:"button"},O(e,"undo"),a.undo),k=t=>{let r=L(e,"button",{type:"button",textContent:t});return r.setAttribute("aria-pressed","false"),r},E=k(a.modePrompt),C=k(a.form),A=L(e,"span",{className:"modes"},E,C);A.setAttribute("role","group"),A.setAttribute("aria-label",a.modes);let N=L(e,"button",{className:"action chip",type:"button"},O(e,"newPage"),a.newPage),S=L(e,"button",{className:"action chip product",type:"button"},O(e,"newPage"),a.addProductPage),P=L(e,"button",{type:"button",title:a.newPageCancel});P.setAttribute("aria-label",a.newPageCancel),P.appendChild(O(e,"close"));let $=L(e,"span",{className:"chip scope"},O(e,"newPage"),L(e,"span",{textContent:a.newPage}),P),M=L(e,"input",{type:"text",placeholder:a.pathPlaceholder,autocomplete:"off",spellcheck:!1}),U=L(e,"label",{className:"path"},L(e,"span",{textContent:a.path}),M),z=L(e,"button",{className:"close icon-button",type:"button",title:a.close},O(e,"close"));z.setAttribute("aria-label",a.close);let j=O(e,"minimize"),R=O(e,"expand"),Y=L(e,"button",{className:"icon-button",type:"button"},j,R),X=L(e,"button",{className:"action primary icon-button",type:"submit"},L(e,"span",{className:"visually-hidden",textContent:a.send}),O(e,"send"));X.title=a.send;let K=L(e,"span",{className:"divider"}),J=L(e,"div",{className:"toolbar"},y,$,A,w,S,N,L(e,"span",{className:"spacer"}),Y,z,K,X),Z=L(e,"span",{textContent:a.pages}),G=L(e,"button",{className:"chip page-chip",type:"button",title:a.pages},O(e,"page"),Z,O(e,"chevrons"));G.setAttribute("aria-haspopup","listbox"),G.setAttribute("aria-expanded","false"),G.setAttribute("aria-controls","obelism-pages");let Q=D(e,t,a,{onLoad:()=>eE(),onClose:()=>eS(!1)}),ee=L(e,"div",{className:"pages"},Q.searchRow,Q.list,Q.note),et=L(e,"slot");et.name="actions-footer";let er=L(e,"slot");er.name="actions-bar",r.actions&&(r.actions.slot="actions-bar",i.appendChild(r.actions));let en=L(e,"span",{className:"unsaved"});en.appendChild(L(e,"span",{className:"dot"})),en.appendChild(e.createTextNode(a.unsaved));let ea=L(e,"button",{className:"link",type:"button",textContent:a.signOut}),ei=L(e,"button",{className:"action chip",type:"button",textContent:a.save}),eo=L(e,"button",{className:"action chip",type:"button",textContent:a.publish}),es=L(e,"div",{className:"footer"},G,en,L(e,"span",{className:"spacer"}),et,ea,ei,eo),el=L(e,"form",{className:"panel"},u,U,g,b,J,ee,es),ed=L(e,"div",{className:"root"},L(e,"div",{className:"bar"},d,p,er),el);o.append(L(e,"style",{textContent:W}),ed);let ep=e.defaultView,ec=e=>{"center"===e?delete ed.dataset.side:ed.dataset.side=e};ec((()=>{try{let e=ep?.localStorage.getItem(_);return"left"===e||"right"===e?e:"center"}catch{return"center"}})());let eu=null,eg=!1;ed.addEventListener("pointerdown",e=>{if(eg=!1,0!==e.button||!e.isPrimary)return;let t=e.target.closest("button, input, textarea, select, iframe, a, label, .pages, .form");if(t&&t!==d)return;let{left:r,right:n}=ed.getBoundingClientRect();eu={id:e.pointerId,startX:e.clientX,x:e.clientX,velocity:0,time:e.timeStamp,moved:!1,min:Math.min(0,16-r),max:Math.max(0,(ep?.innerWidth??0)-16-n)}}),ed.addEventListener("pointermove",e=>{if(!eu||e.pointerId!==eu.id)return;let t=e.clientX-eu.startX;if(!eu.moved){if(6>Math.abs(t))return;eu.moved=!0,ed.classList.add("dragging");try{ed.setPointerCapture(e.pointerId)}catch{}}let r=e.timeStamp-eu.time;r>0&&(eu.velocity=(e.clientX-eu.x)/r),eu.x=e.clientX,eu.time=e.timeStamp;let n=Math.min(Math.max(t,eu.min),eu.max);ed.style.translate=`${n+(t-n)/3}px 0`});let eh=e=>{if(!eu||e.pointerId!==eu.id)return;let{moved:t,x:r,velocity:n,time:a}=eu;if(eu=null,!t)return;eg=!0;let i=ed.getBoundingClientRect().left,o=ep?.innerWidth??0,s=r+(e.timeStamp-a>80?0:Math.min(Math.max(150*n,-120),120)),l=s<o/3?"left":s>2*o/3?"right":"center";ec(l),ed.style.translate="";let d=ed.getBoundingClientRect().left;ed.style.translate=`${i-d}px 0`,ed.offsetWidth,ed.classList.remove("dragging"),ed.style.translate="";try{ep?.localStorage.setItem(_,l)}catch{}};ed.addEventListener("pointerup",eh),ed.addEventListener("pointercancel",eh),ed.addEventListener("click",e=>{eg&&(eg=!1,e.preventDefault(),e.stopPropagation())},!0);let eb=!1,em=!1,ef=!1,ev=null,ex=!1,ey=I(t,b,a.formTitle,{onReady:()=>{ev=null,eE()},onError:e=>{ev={text:e,error:!0},eE()}}),ew=!1,ek=e=>{let n=e.features.includes("prompt"),i=e.saving||e.publishing,o=e.prompting||i;ed.hidden=!n&&!s,d.hidden=eb||!n,p.hidden=n||!s,el.hidden=!eb||!n;let{canCreate:k,pageless:L,shopHere:z,onlyNew:O}=F(t,e,r.promptWithoutPage),I=null!==z,T=B(a,z);S.lastChild.textContent=T.add,k||(ef=!1),O&&(ef=!0),(ef||L||!s)&&(ex=!1);let D=eb&&n&&ex;D&&!ey.mounted?ey.mount():!D&&ey.mounted&&ey.unmount();let q=I&&!ef;l.textContent=q?T.add:O?a.newPage:a.open,P.hidden=O,y.hidden=ef||q,$.hidden=!ef,S.hidden=!q,S.disabled=o,N.hidden=ef||ex||!k,N.disabled=o,em&&(ew=!1),U.hidden=!ef||ew||em,M.disabled=o,g.hidden=ex||ew||em||q,b.hidden=!ex||ew||em,b.classList.toggle("loading",ey.loading),h.hidden=!ey.loading,J.hidden=ew,ee.hidden=!ew,g.placeholder=ef?a.newPagePlaceholder:a.placeholder,v.textContent=e.selectedUid?a.scopeBlock:L?a.scopeNoPage:a.scopeEntry,x.hidden=!e.selectedUid,m.hidden=!!e.selectedUid,f.hidden=!e.selectedUid,A.hidden=!s||ef||L||!e.features.includes("form"),E.setAttribute("aria-pressed",String(!ex)),C.setAttribute("aria-pressed",String(ex)),A.querySelectorAll("button").forEach(e=>{e.disabled=o}),w.hidden=ef||!e.canUndo,w.disabled=o,X.hidden=ex||em||q,K.hidden=ex||em||q;let V=em?a.expand:a.minimize;Y.title=V,Y.setAttribute("aria-label",V),Y.setAttribute("aria-expanded",String(!em)),j.hidden=em,R.hidden=!em,X.disabled=o||""===g.value.trim()||ef&&""===M.value.trim(),g.disabled=o,ei.hidden=!e.features.includes("save")||L,ei.disabled=o||!e.unsaved,ei.textContent=e.saving?a.saving:a.save,eo.hidden=!e.features.includes("publish")||L,eo.disabled=o,eo.textContent=e.publishing?a.publishing:a.publish,ea.hidden=!s||!1===r.signOut,c.hidden=!1===r.signOut,r.actions&&(r.actions.slot=eb&&n?"actions-footer":"actions-bar"),es.hidden=!s,en.hidden=!e.unsaved,G.hidden=!s,G.setAttribute("aria-expanded",String(ew)),Z.textContent=Q.current()?.name??a.pages;let H=ex&&ey.loading&&!ew,_=e.prompting,W=e.prompting?ef?a.creating:q?T.adding:a.working:H?"":ev?.text??(q?T.hint:!s||ef||ew||e.selectedUid?"":a.selectHint);u.textContent=W,u.hidden=!W||em,u.className=`status${_?" working":""}${!o&&!H&&ev?.error?" error":""}`},eE=()=>ek(t.getState()),eC=()=>{g.style.height="auto",g.style.height=`${g.scrollHeight}px`},eA=e=>{ex!==e&&(ex=e,ev=null,eE(),ex||g.focus())},eN=async()=>{if(ex)return;let e=g.value.trim();if(e&&!t.getState().prompting){ev=null;try{if(ef){let r=M.value.trim();if(!r)return M.focus();await t.createPage(r,e),Q.forget(),ev={text:a.created,error:!1}}else{let{summary:r}=await t.prompt(e);ev={text:r,error:!1}}g.value="",eC()}catch(e){ev={text:q(e),error:!0}}eE(),g.focus()}},eS=e=>{ev=null,(ew=e)&&Q.reset(),eE(),(ew?Q.search:G).focus()},eL=e=>{(eb=e)||(ew=!1,em=!1),eE(),s&&t.setSelecting(eb&&!ef),eb&&s&&Q.fetch()},eP=e=>{ef=e,ev=null,t.setSelecting(eb&&!ef),ef&&t.select(null),eE(),(ef?M:g).focus()},e$=async e=>{ev=null;let r=await H(t,e);ev=r?{text:r,error:!0}:{text:"save"===e?a.saved:a.published,error:!1},eE()};d.addEventListener("click",()=>{eL(!0),ex||(ef?M:g).focus()}),z.addEventListener("click",()=>eL(!1)),Y.addEventListener("click",()=>{em=!em,eE(),em||(ex?Y:g).focus()}),el.addEventListener("click",e=>{if(!em)return;let t=e.target.closest("button");t&&t!==Y&&t!==z&&(em=!1,eE())},!0),ei.addEventListener("click",()=>void e$("save")),eo.addEventListener("click",()=>void e$("publish")),ea.addEventListener("click",()=>t.signOut()),c.addEventListener("click",()=>t.signOut()),x.addEventListener("click",()=>t.select(null)),N.addEventListener("click",()=>eP(!0)),S.addEventListener("click",async()=>{ev=null,ev=await V(t,a),eE()}),P.addEventListener("click",()=>eP(!1)),E.addEventListener("click",()=>eA(!1)),C.addEventListener("click",()=>eA(!0)),G.addEventListener("click",()=>eS(!ew)),M.addEventListener("input",eE),M.addEventListener("keydown",e=>{"Enter"!==e.key||e.isComposing?"Escape"===e.key&&eL(!1):(e.preventDefault(),g.focus())}),w.addEventListener("click",()=>{ev=null,t.undo()}),el.addEventListener("submit",e=>{e.preventDefault(),eN()}),g.addEventListener("input",()=>{eC(),eE()}),g.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||e.isComposing?"Escape"===e.key&&eL(!1):(e.preventDefault(),eN())});let eM=t.on("change",ek);return eE(),e.body.appendChild(i),()=>{eM(),ey.unmount(),i.remove()}},X="https://content.obelism.studio",K=/^(?:\/[\w.~-]+)+$/,J=e=>{let{protocol:t}=new URL(e,"https://site.invalid");if("https:"!==t&&"http:"!==t)throw Error(`Not a page address: ${e}`);return e},Z=(e,t)=>JSON.stringify(e)===JSON.stringify(t),G="obelism-content-editor",Q=`
272
272
  :host { all: initial; }
273
273
  * { box-sizing: border-box; font: inherit; color: inherit; margin: 0; }
274
274
  .root {
@@ -591,4 +591,4 @@ textarea:disabled, .path input:disabled { opacity: .6; }
591
591
  .chips .accent-chip .mark { color: rgb(23 22 20); }
592
592
  .chips .accent-chip .mark svg { width: 11px; height: 11px; }
593
593
  .chips .ink-chip { background: rgb(23 22 20); color: rgb(255 255 255); font-weight: 500; }
594
- `,ee=e=>{let t=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return t.charAt(0).toUpperCase()+t.slice(1)},et=e=>!!e&&"object"==typeof e&&!Array.isArray(e),er=(e,t,r,n)=>{if(null!=e&&""!==e){if("object"!=typeof e)return void n.set(r,{label:t,text:String(e)});if(Array.isArray(e)){if(e.every(e=>null===e||"object"!=typeof e)){e.length&&n.set(r,{label:t,text:e.join(", ")});return}e.forEach((e,a)=>{let i=et(e)&&"string"==typeof e._uid?e._uid:a,o=et(e)&&"string"==typeof e._type?e._type:null;er(e,o?ee(o):t,`${r}/${i}`,n)});return}for(let[a,i]of Object.entries(e))"_uid"!==a&&"_type"!==a&&er(i,t?`${t} \xb7 ${ee(a)}`:ee(a),`${r}/${a}`,n)}},en=(e,n,a={})=>{let i,o={...R,...a.labels},s=e.defaultView,l=e.documentElement,d=(t,...r)=>S(e,"button",{className:t,type:"button"},...r),p=S(e,"div");p.setAttribute("data-obelism-content-editor","");let c=p.attachShadow({mode:"open"}),u=S(e,"style",{textContent:(i=`[${t}]`,`html[data-obelism-editor]{transition:margin-right .3s cubic-bezier(.2,.8,.2,1)}html[data-obelism-docked]{margin-right:436px!important}html[data-obelism-docked] [data-obelism-dock]{right:436px!important;max-width:calc(100vw - 436px)!important}html[data-obelism-editor][data-cms-selecting] ${i}:hover:not([data-cms-selected]){outline:none}html[data-obelism-editor][data-cms-selecting] ${i}[data-cms-selected]{outline:2px solid rgb(212 130 30);outline-offset:2px}@media (prefers-reduced-motion:reduce){html[data-obelism-editor]{transition:none}}`)}),g=S(e,"span",{className:"tile"},M(e,"mark",P)),h=S(e,"span"),b=d("page-button hit",h,S(e,"span",{className:"visually-hidden",textContent:`, ${o.pages}`}),O(e,"chevrons"));b.setAttribute("aria-haspopup","listbox"),b.setAttribute("aria-expanded","false"),b.setAttribute("aria-controls","obelism-pages");let m=S(e,"span",{className:"page-name"}),f=S(e,"span"),v=S(e,"span",{className:"env"},S(e,"span",{className:"visually-hidden",textContent:`${o.environment}: `}),f),x=d("icon-button hit",O(e,"dash"));x.setAttribute("aria-label",o.minimize),x.title=o.minimize;let y=d("mode hit",M(e,"mark",P),o.modePrompt);y.setAttribute("aria-pressed","false");let w=S(e,"div",{className:"head"},g,b,m,v,S(e,"span",{className:"spacer"}),y,x),k=D(e,n,o,{onLoad:()=>td(),onClose:()=>tb(!1)}),E=d("button quiet new-page",O(e,"plus"),o.newPage),C=S(e,"div",{className:"pages"},k.searchRow,k.list,k.note,E),A=d("button primary",o.keep),L=d("button quiet",o.undo),z=S(e,"div",{className:"gate"},S(e,"p",{textContent:o.keepBeforeFields}),S(e,"div",{className:"actions"},A,L));z.setAttribute("role","alert");let j=S(e,"span"),T=d("",o.scopeEntry),_=d("",o.newPageCancel),W=S(e,"div",{className:"note"},O(e,"scope"),j,T,_),Y=S(e,"p",{className:"intro",textContent:o.askIntro}),X=S(e,"p",{className:"summary"}),K=S(e,"span"),J=d("button primary",O(e,"plus"),K),Z=S(e,"div",{className:"shop"},X,J),en=S(e,"div",{className:"log"});en.setAttribute("role","log");let ea=S(e,"div",{className:"scroll"},W,Y,Z,en),ei=S(e,"input",{type:"text",placeholder:o.pathPlaceholder,autocomplete:"off",spellcheck:!1}),eo=S(e,"label",{className:"path"},S(e,"span",{textContent:o.path}),ei),es=S(e,"textarea",{rows:1});es.setAttribute("aria-label",o.open);let el=O(e,"arrowUp"),ed=M(e,"working",$),ep=S(e,"button",{className:"send",type:"submit",title:o.send},S(e,"span",{className:"visually-hidden",textContent:o.send}),el,ed),ec=S(e,"div",{className:"bar"},M(e,"mark",P),es,ep),eu=S(e,"form",{className:"composer"},eo,ec),eg=S(e,"div",{className:"ask",id:"obelism-ask"},ea,eu);eg.setAttribute("role","tabpanel"),eg.setAttribute("aria-label",o.modePrompt);let eh=S(e,"p",{className:"form-note"});eh.setAttribute("role","status");let eb=S(e,"div",{className:"form"},eh),em=S(e,"span"),ef=d("",o.scopeEntry),ev=S(e,"div",{className:"note"},O(e,"scope"),em,ef),ex=S(e,"div",{className:"fields",id:"obelism-fields"},ev,eb);ex.setAttribute("role","tabpanel"),ex.setAttribute("aria-label",o.form);let ey=S(e,"p",{className:"save-state"});ey.setAttribute("aria-live","polite");let ew=S(e,"slot");ew.name="actions-footer";let ek=d("button quiet",O(e,"undo"),o.undo),eE=d("button secondary",o.saveDraft),eC=d("button primary",o.publish),eA=S(e,"div",{className:"foot"},ey,ew,ek,eE,eC),eN=S(e,"p",{className:"visually-hidden"});eN.setAttribute("role","status");let eL=S(e,"aside",{className:"panel",id:"obelism-editor"},w,C,z,eg,ex,eA,eN);eL.setAttribute("aria-label",o.editor);let eS=d("launch",S(e,"span",{className:"launch-tile"},M(e,"mark",P)),o.editing);eS.setAttribute("aria-controls",eL.id);let eP=S(e,"span",{className:"reading"},S(e,"span",{className:"launch-tile"},M(e,"mark",P)),o.viewingDrafts),e$=O(e,"eye"),eM=O(e,"eyeOff"),eU=d("eye",e$,eM);eU.setAttribute("aria-label",o.hideOutlines),eU.title=o.hideOutlines;let ez=S(e,"slot");ez.name="actions-bar";let eO=d("exit",o.signOut),eI=S(e,"div",{className:"launcher"},eS,eP,eU,ez,eO);a.actions&&p.appendChild(a.actions);let ej=S(e,"div",{className:"layer"});ej.setAttribute("aria-hidden","true");let eT=S(e,"div",{className:"wash"});eT.setAttribute("aria-hidden","true");let eR=S(e,"div",{className:"root"},eT,ej,eL,eI);c.append(S(e,"style",{textContent:Q}),eR);let eD=(e=>{try{return e?.localStorage.getItem(G)!=="minimised"}catch{return!0}})(s),eq="fields",eF="fields",eB=!1,eV=!1,eH=!0,e_=!1,eW=null,eY=!1,eX=null,eK=[],eJ=!0,eZ=null,eG=new Map,eQ=new Map,e0="idle",e1=!1,e2=I(n,eb,o.formTitle,{onReady:()=>{td(),eD&&"fields"===eF&&e4()},onError:()=>td(),onEscape:()=>tf()}),e4=()=>eb.querySelector("iframe")?.focus(),e5=()=>eK.filter(({status:e})=>"pending"===e),e6=()=>e5().slice(-1)[0]??null,e3=()=>eK.some(({status:e})=>"working"===e)?null:e6(),e8=e=>(eG.has(e)||"loading"===e0||(eG.set(e,null),n.view({uid:e}).then(t=>{"string"==typeof t._type&&eG.set(e,ee(t._type)),td()},()=>{})),eG.get(e)??o.block),e7=(e,t=null)=>{if(Array.isArray(e))e.forEach(e=>e7(e,t));else if(et(e)){let r=t;"string"==typeof e._uid&&"string"==typeof e._type&&(r=e._uid,eQ.set(r,t),eG.set(r,ee(e._type))),Object.values(e).forEach(e=>e7(e,r))}},e9=r=>e.querySelector(N(r))?.parentElement?.closest(`[${t}]`)?.getAttribute(t)??eQ.get(r)??null,te=()=>k.current()?.name||e.title.trim(),tt=null,tr=()=>{null===tt&&s&&(tt=s.requestAnimationFrame(()=>{tt=null,(t=>{if(ej.replaceChildren(),eT.replaceChildren(),!ta(t))return;let n=t=>{let r=e.querySelector(t),n=r?.getBoundingClientRect();return n&&(n.width||n.height)?n:null},a=(t,r,n=ej)=>{let a=S(e,"div",{className:`box ${r}`});Object.assign(a.style,{top:`${t.top-3}px`,left:`${t.left-3}px`,width:`${t.width+6}px`,height:`${t.height+6}px`}),n.appendChild(a)},i=(t,...r)=>{let n=S(e,"div",{className:"chips"},...r),a=t.top-34<0?t.top+6:t.top-34;Object.assign(n.style,{top:`${a}px`,left:`${t.left-3}px`}),ej.appendChild(n)},s=(t,r)=>{let n=S(e,"span",{className:"accent-chip"});return r&&n.appendChild(M(e,"mark",P)),n.appendChild(e.createTextNode(t)),n},l=e6(),d=l?l.uid?N(l.uid):`[${r}]`:null,p=d?n(d):null;if(p&&a(p,"fill",eT),eZ&&eZ!==t.selectedUid){let t=n(N(eZ));if(t){a(t,"hover");let r=t.top-23<0,n=S(e,"span",{className:`name-tab${r?" inside":""}`,textContent:e8(eZ)});Object.assign(n.style,{top:`${r?t.top-1.5:t.top-23}px`,left:`${t.left-3}px`}),ej.appendChild(n)}}let c=!!l&&l.uid===t.selectedUid;if(t.selectedUid){let r=n(N(t.selectedUid));if(r){let n=e8(t.selectedUid),a=te();i(r,s(c?U(o.previewChip,{name:n}):n,c),...a?[S(e,"span",{className:"ink-chip",textContent:a})]:[])}}if(p&&!c){a(p,"preview");let e=l.uid?e8(l.uid):te()||o.pages;i(p,s(U(o.previewChip,{name:e}),!0))}})(n.getState())}))},tn=e=>e.features.includes("prompt")&&eD,ta=e=>tn(e)&&eH&&!eV,ti=t=>S(e,"span",{className:`value${t?"":" none"}`,textContent:t||o.emptyValue}),to=t=>{let r=t.node.querySelector(".card");if(r.querySelector(".status-line")?.remove(),"failed"===t.status)return void r.appendChild(S(e,"p",{className:"failure"},O(e,"alert"),t.summary));for(let n of(r.appendChild(t.eyebrow),t.summary&&r.appendChild(S(e,"p",{className:"summary",textContent:t.summary})),t.diffs.slice(0,3))){let a=S(e,"div",{className:"diff-field"},S(e,"span",{className:"diff-label",textContent:n.label}),S(e,"div",{className:"diff"},S(e,"div",{className:"before"},S(e,"span",{className:"tag",textContent:o.before}),ti(n.before)),S(e,"div",{className:"after"},S(e,"span",{className:"tag",textContent:o.after}),ti(n.after))));t.details.push(a),r.appendChild(a)}if(t.diffs.length>3){let n=S(e,"p",{className:"more",textContent:U(o.moreChanges,{count:t.diffs.length-3})});t.details.push(n),r.appendChild(n)}if("pending"===t.status){let n=d("button primary",o.keep),a=d("button secondary",o.retry),i=d("button quiet",o.undo);n.addEventListener("click",()=>tv()),a.addEventListener("click",()=>void tw(t)),i.addEventListener("click",()=>tx(t)),t.actions=S(e,"div",{className:"actions"},n,a,i),r.appendChild(t.actions)}},ts=(t,r)=>{let n=S(e,"div",{className:"card"},S(e,"span",{className:"visually-hidden",textContent:`${o.obelism}: `}),S(e,"p",{className:"status-line"},M(e,"working",$),eV?o.creating:o.working)),a=S(e,"div",{className:"answer"},S(e,"span",{className:"chip"},M(e,"mark",P)),n);a.dataset.status="working";let i={prompt:t,uid:r,status:"working",summary:"",diffs:[],step:null,node:a,eyebrow:S(e,"p",{className:"eyebrow"}),actions:null,details:[]};return eK.push(i),en.appendChild(a),i},tl=t=>{if(e1)return;let r=t.features.includes("prompt"),i=t.saving||t.publishing,s=t.prompting||i,p=r&&eD,{site:c,canCreate:u,pageless:g,shopHere:x,onlyNew:w}=F(n,t,a.promptWithoutPage);u||(eV=!1),w&&(eV=!0);let N=c&&!eV&&!g&&t.features.includes("form");eF=N?eq:"ask";let P=e5().length>0;for(let e of(P&&"fields"!==eF||(eB=!1),eK))null!==e.step&&e.step>(t.undoSteps??0)&&(e.step=null);eR.hidden=!r&&!c,eL.toggleAttribute("data-closed",!p),eL.inert=!p,eS.hidden=!r,eS.setAttribute("aria-expanded",String(p)),eP.hidden=r,eU.hidden=!p,eU.setAttribute("aria-pressed",String(!eH)),e$.hidden=!eH,eM.hidden=eH,eO.hidden=!1===a.signOut;let I=p&&eJ;l.toggleAttribute("data-obelism-docked",I),l.style.setProperty("--obelism-dock",`${436*!!I}px`);let R=p&&eH&&!eV;t.selecting!==R&&n.setSelecting(R);let D=p&&"fields"===eF;D&&!e2.mounted?e2.mount():!D&&e2.mounted&&e2.unmount(),e_&&!p&&(e_=!1),h.textContent=te()||o.pages,b.hidden=null===k.pages&&null!==k.error,m.hidden=!b.hidden,m.textContent=te()||o.pages,b.setAttribute("aria-expanded",String(e_)),C.hidden=!e_,E.hidden=!u||eV,E.disabled=s;let q=n.environment;v.hidden=!q,v.dataset.env=q??"",f.textContent="production"===q?o.envProduction:q??"",y.hidden=!N,y.setAttribute("aria-pressed",String("ask"===eF)),y.disabled=s,z.hidden=!eB,A.disabled=L.disabled=s,eg.hidden="ask"!==eF,ex.hidden="fields"!==eF;let V=null!==x&&!eV;if(eV)j.textContent=o.newPage;else if(t.selectedUid){let[r,n=""]=o.scopeNoteBlock.split("{name}");for(let a of[j,em])a.replaceChildren(r??"",S(e,"strong",{textContent:e8(t.selectedUid)}),n)}else j.textContent=o.scopeNotePage;let H=t.selectedUid?e9(t.selectedUid):null,G=H?U(o.scopeUp,{name:e8(H)}):o.scopeEntry;for(let e of[T,ef])e.textContent!==G&&(e.textContent=G);ev.hidden=eV||!t.selectedUid,W.hidden=V||g&&!eV&&!a.promptWithoutPage,T.hidden=eV||!t.selectedUid,_.hidden=!eV||w,Y.hidden=eK.length>0||V||eV,Z.hidden=!V;let Q=B(o,x);K.textContent=t.prompting&&V?Q.adding:Q.add,J.disabled=s,X.textContent=eX?.text??Q.hint,X.className=eX?.error?"failure":"summary",eu.hidden=V,eo.hidden=!eV,ei.disabled=s,es.placeholder=eV?o.newPagePlaceholder:o.placeholder,es.disabled=s,ep.disabled=s||""===es.value.trim()||eV&&""===ei.value.trim(),ep.setAttribute("aria-busy",String(t.prompting)),el.hidden=t.prompting,ed.hidden=!t.prompting,ek.hidden=P||!t.canUndo||eV,ek.disabled=s,eE.hidden=!t.features.includes("save")||g,eE.disabled=s||P||!t.unsaved,eC.hidden=!t.features.includes("publish")||g,eC.disabled=s||P,a.actions&&(a.actions.slot=p?"actions-footer":"actions-bar"),eA.hidden=!c,t.unsaved&&!eY&&(eW=null),eY=t.unsaved;let ee=i?M(e,"working",$):eW?.kind==="error"?O(e,"alert"):P||t.unsaved?S(e,"span",{className:"dot"}):O(e,"check"),et=t.saving?o.saving:t.publishing?o.publishing:eW?.kind==="error"?`${"save"===eW.action?o.saveFailed:o.publishFailed}: ${eW.text}`:P?o.keepFirst:t.unsaved?o.unsaved:eW?.kind==="saved"?o.saved:eW?.kind==="published"?o.published:o.upToDate,er=i?"saving":eW?.kind==="error"?"error":P||t.unsaved?"unsaved":"saved";if((ey.dataset.state!==er||ey.dataset.text!==et)&&(ey.dataset.state=er,ey.dataset.text=et,ey.replaceChildren(ee,S(e,"span",{textContent:et})),eW?.kind==="error"&&!i)){let e=eW.action,t=d("link",o.tryAgain);t.addEventListener("click",()=>void tE(e)),ey.appendChild(t)}eb.classList.toggle("loading",e2.loading||null!==e2.error),eh.hidden=!e2.loading&&null===e2.error,eh.className=`form-note${null!==e2.error?" error":""}`,eh.textContent=e2.error??o.formLoading;let en=e3();for(let e of eK){if("working"===e.status||"failed"===e.status)continue;e.node.dataset.status=e.status;let t="pending"===e.status?o.suggested:"kept"===e.status?o.kept:o.undone;for(let r of(e.eyebrow.textContent!==t&&(e.eyebrow.textContent=t),e.actions&&(e.actions.hidden=e!==en),e.details))r.hidden="undone"===e.status}p&&((()=>{if("idle"!==e0||null===n.entryId)return;e0="loading";let e=()=>{e0="done",td()};n.view({uid:null}).then(t=>{e7(t),e()},e)})(),null===k.pages&&null===k.error&&k.fetch()),tr()},td=()=>tl(n.getState()),tp=()=>{es.style.height="auto",es.style.height=`${es.scrollHeight}px`},tc=()=>{ea.scrollTop=ea.scrollHeight},tu=e=>{eD=e;try{s?.localStorage.setItem(G,eD?"open":"minimised")}catch{}eD||(e_=!1),td(),eD?eV?ei.focus():"fields"===eF?e4():es.focus():eS.focus()},tg=e=>{if("fields"===e&&e5().length>0){eB=!0,td(),A.focus();return}if(eB=!1,eq===e)return td();eq=e,td()},th=e=>{e_=!1,(eV=e)&&n.select(null),td(),(eV?ei:es).focus()},tb=e=>{(e_=e)&&k.reset(),td(),(e_?k.search:b).focus()},tm=()=>{let{selectedUid:e}=n.getState();return e&&n.select(e9(e)),!n.getState().selectedUid},tf=()=>{let e=n.getState();if(!tn(e))return!1;if(e_)tb(!1);else{if(!e.selectedUid)return!1;tm()}return!0},tv=(e=!0)=>{let t=e5();t.length&&e3()&&(t.forEach(e=>{e.status="kept"}),td(),e&&es.focus())},tx=(e,t=!0)=>{e===e3()&&(n.undo(),e.status="undone",td(),t&&es.focus())},ty=async(e,t)=>{let r={uid:e.uid},a=await n.view(r).catch(()=>null);try{let{summary:i}=await n.prompt(t,r);e.step=n.getState().undoSteps??null;let o=a?await n.view(r).catch(()=>null):null;e.summary=i,e.diffs=a&&o?((e,t)=>{let r=new Map,n=new Map;er(e,"","",r),er(t,"","",n);let a=[];for(let e of new Set([...r.keys(),...n.keys()])){let t=r.get(e),i=n.get(e);t?.text!==i?.text&&a.push({label:(i??t).label,before:t?.text??"",after:i?.text??""})}return a})(a,o):[],e.status="pending"}catch(t){e.summary=q(t),e.status="failed"}to(e),td(),tc()},tw=async e=>{if(e!==e3())return;n.undo(),e.status="undone";let t=ts(e.prompt,e.uid);td(),tc(),es.focus(),await ty(t,U(o.retryPrompt,{prompt:e.prompt}))},tk=async()=>{let t=es.value.trim(),r=n.getState();if(!t||r.prompting)return;let a=ei.value.trim();if(eV&&!a)return ei.focus();let i=eV?null:r.selectedUid,s=eV?`${o.newPage} \xb7 ${a}`:i?e8(i):o.scopeEntry;en.appendChild(S(e,"p",{className:"bubble"},S(e,"span",{className:"visually-hidden",textContent:`${o.you} (${s}): `}),t)),es.value="",tp();let l=ts(t,i);if(td(),tc(),eV){try{await n.createPage(a,t),k.forget(),l.summary=o.created,l.status="kept"}catch(e){l.summary=q(e),l.status="failed"}to(l),td()}else await ty(l,t);es.focus()},tE=async e=>{eW=null;let t=await H(n,e);eW=t?{kind:"error",action:e,text:t}:{kind:"save"===e?"saved":"published"},td()};eS.addEventListener("click",()=>tu(!eD)),x.addEventListener("click",()=>tu(!1)),eU.addEventListener("click",()=>{eH=!eH,td()}),eO.addEventListener("click",()=>n.signOut()),b.addEventListener("click",()=>tb(!e_)),E.addEventListener("click",()=>th(!0)),_.addEventListener("click",()=>th(!1)),T.addEventListener("click",()=>{tm()&&es.focus()}),ef.addEventListener("click",()=>{tm()&&e4()}),J.addEventListener("click",async()=>{eX=null,eX=await V(n,o),td()}),y.addEventListener("click",()=>tg("ask"===eq?"fields":"ask")),A.addEventListener("click",()=>{tv(!1),tg("fields"),e4()}),L.addEventListener("click",()=>{for(let e=e3();e;e=e3())tx(e,!1);tg("fields"),e4()}),ek.addEventListener("click",()=>{let e=n.getState().undoSteps,t=void 0===e?void 0:eK.find(t=>"kept"===t.status&&t.step===e);if(n.undo(),t){var r;t.status="undone",td(),r=`${o.undone}: ${t.summary}`,eN.textContent="",eN.textContent=r}ek.hidden&&es.focus()}),eE.addEventListener("click",()=>void tE("save")),eC.addEventListener("click",()=>void tE("publish")),eu.addEventListener("submit",e=>{e.preventDefault(),tk()}),es.addEventListener("input",()=>{tp(),td()}),es.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||e.isComposing||(e.preventDefault(),tk())}),ei.addEventListener("input",td),ei.addEventListener("keydown",e=>{"Enter"!==e.key||e.isComposing||(e.preventDefault(),es.focus())});let tC=e=>{"Escape"===e.key&&!e.defaultPrevented&&tf()&&e.preventDefault()};e.addEventListener("keydown",tC);let tA=e=>{let r=e.target,n=r?.closest?.(`[${t}]`),a=n?.getAttribute(t)??null;a!==eZ&&(eZ=a,tr())},tN=()=>{eZ=null,tr()};e.addEventListener("pointerover",tA),l.addEventListener("pointerleave",tN),s?.addEventListener("scroll",tr,{capture:!0,passive:!0}),s?.addEventListener("resize",tr);let tL=s?.MutationObserver,tS="function"==typeof tL?new tL(tr):null;tS?.observe(e.body,{childList:!0,subtree:!0});let tP=s?.ResizeObserver,t$="function"==typeof tP?new tP(tr):null;t$?.observe(l);let tM=s?.matchMedia?.("(min-width: 768px)")??null;eJ=tM?.matches??!0;let tU=()=>{eJ=tM?.matches??!0,td()};tM?.addEventListener?.("change",tU);let tz=n.on("change",tl);return l.setAttribute("data-obelism-editor",""),e.head.appendChild(u),e.body.appendChild(p),td(),()=>{e1=!0,tz(),e2.unmount(),null!==tt&&s?.cancelAnimationFrame?.(tt),e.removeEventListener("keydown",tC),e.removeEventListener("pointerover",tA),l.removeEventListener("pointerleave",tN),s?.removeEventListener("scroll",tr,{capture:!0}),s?.removeEventListener("resize",tr),tM?.removeEventListener?.("change",tU),tS?.disconnect(),t$?.disconnect(),n.setSelecting(!1),l.removeAttribute("data-obelism-editor"),l.removeAttribute("data-obelism-docked"),l.style.removeProperty("--obelism-dock"),u.remove(),p.remove()}},ea=Symbol.for("@obelism/content/bridge"),ei=L({isEditing:!1,entryId:null,on:()=>{}},new URLSearchParams),eo=({url:e,prompt:o=!0,pagePath:l,productPath:d,collectionPath:p}={})=>{let u;if("u"<typeof window)return ei;let g=window;if(g[ea])return g[ea];if(g.ObelismBridge)u=L(g.ObelismBridge,new URLSearchParams(g.location.search));else{let f=(u=((e,r)=>{let n,a,o,s,l,d=new URLSearchParams(e.location.search),p=e.parent!==e&&d.has("cms_preview"),u=y(),g=[],f={...x,selecting:!0},w=e=>{f={...f,...e},u.emit("change",f)},k={isEditing:p,mode:p?"editor":null,entryId:d.get("cms_entry"),environment:d.get(i),product:null,collection:null,on:u.on,getState:()=>f,...E,destroy:()=>{g.splice(0).forEach(e=>e())}};if(!p)return k;let C=e.document,L=(t,n={})=>{e.parent.postMessage({source:m,type:t,...n},r)},S=C.createElement("style");S.textContent=v(),C.head.appendChild(S),g.push(()=>S.remove());let P=(e,t)=>{if(C.querySelectorAll("[data-cms-selected]").forEach(e=>{e.removeAttribute("data-cms-selected")}),f.selectedUid!==(e??null)&&w({selectedUid:e??null}),!e)return;let r=C.querySelector(N(e));r&&(r.setAttribute("data-cms-selected",""),t&&r.scrollIntoView({behavior:"smooth",block:"center"}))},$=e=>{let r=e.target,n=r?.closest?.(`[${t}]`);if(!n)return;e.preventDefault(),e.stopPropagation();let a=n.getAttribute(t);P(a,!1),L("select",{uid:a})};C.addEventListener("click",$,!0),g.push(()=>C.removeEventListener("click",$,!0));let M=()=>Math.ceil(Math.max(C.documentElement.scrollHeight,C.body?.scrollHeight??0)),U=0,z=()=>{U=M(),L("ready",{url:e.location.href,height:U})},O=e.ResizeObserver;if("function"==typeof O){let e=new O(()=>{let e=M();e!==U&&(U=e,L("size",{height:e}))});e.observe(C.documentElement),C.body&&e.observe(C.body),g.push(()=>e.disconnect())}let I=new Map,j=0,T=e=>{let t=I.get(e);return t?(clearTimeout(t.timer),I.delete(e),0===I.size&&w({prompting:!1}),t):null};k.prompt=(e,t={})=>{let r=e.trim();if(!r)return Promise.reject(Error("Say what to change"));if(!f.features.includes("prompt"))return Promise.reject(Error("The editor does not offer prompts here"));let n=`prompt_${++j}`,a=void 0===t.uid?f.selectedUid:t.uid;return new Promise((e,t)=>{let i=setTimeout(()=>{T(n)?.reject(Error("The editor did not answer in time"))},12e4);I.set(n,{resolve:e,reject:t,timer:i}),w({prompting:!0}),L("prompt",{id:n,prompt:r,uid:a})})},k.undo=()=>L("undo"),k.select=e=>{P(e,!1),L("select",{uid:e})};let R=null;g.push(()=>R?.destroy()),g.push(()=>{for(let e of I.keys())T(e)?.reject(Error("The bridge was destroyed"))});let D=(n=new WeakSet,a=null,o=null,s=!1,l=()=>{if(null!==a){for(let e of Array.from(C.styleSheets)){let t;if(!n.has(e)){try{t=e.cssRules}catch{continue}n.add(e),b(t,a)}}C.querySelectorAll('[style*="vh"]').forEach(e=>{h(e.style,a)})}},{freeze(e){if(null!==a||!(e>0))return;a=e,l();let t=C.defaultView?.MutationObserver;t&&(o=new t(()=>{if(s)return;s=!0;let e=()=>{s=!1,l()};C.defaultView?.requestAnimationFrame?C.defaultView.requestAnimationFrame(e):e()})).observe(C.documentElement,{childList:!0,subtree:!0})},destroy(){o?.disconnect()}});g.push(()=>D.destroy());let q=t=>{if(t.origin!==r||t.source!==e.parent)return;let n=t.data;if(n&&"obelism-content-editor"===n.source){if("connect"===n.type)z();else if("update"===n.type&&n.entry)u.emit("update",{entry:n.entry,selectedUid:n.selectedUid??null}),e.requestAnimationFrame(()=>P(n.selectedUid,!1)),R?.refresh();else if("select"===n.type)P(n.uid,!0);else if("saved"===n.type||"published"===n.type)u.emit(n.type,{}),0===u.listeners.update.size&&e.location.reload();else if("features"===n.type&&Array.isArray(n.features))w({features:n.features.filter(e=>"string"==typeof e)});else if("stats"===n.type)w({stats:A(n.stats),statsVisible:!1!==n.visible}),(R||Object.keys(f.stats).length)&&(R??(R=c(e,{selector:N,onSelect:e=>k.select(e)})),R.update(f.stats,f.statsVisible));else if("viewport"===n.type&&"number"==typeof n.height)D.freeze(n.height);else if("promptState"===n.type)w({canUndo:!0===n.canUndo});else if("promptResult"===n.type&&"string"==typeof n.id){let e=T(n.id);if(!e)return;!0===n.ok?e.resolve({summary:"string"==typeof n.summary?n.summary:""}):e.reject(Error("string"==typeof n.error?n.error:"The prompt failed"))}}};return e.addEventListener("message",q),g.push(()=>e.removeEventListener("message",q)),"loading"===C.readyState?(C.addEventListener("DOMContentLoaded",z,{once:!0}),g.push(()=>C.removeEventListener("DOMContentLoaded",z))):z(),k})(g,new URL(e||X).origin)).isEditing||g.parent!==g?null:(e=>{for(let t of e.cookie.split(";")){let[e,...r]=t.trim().split("=");if("obelism_content_editing"===e)try{let e=decodeURIComponent(r.join("="));return K.test(e)?e:null}catch{break}}return null})(g.document);if(f&&(u=((e,i,{pagePath:o=e=>`/${e.replace(/^\/+/,"")}`,productPath:l,collectionPath:d}={})=>{let p=e.document,u=y(),g=[],h=new Map,b=[],f=new Set,w=null,k=null,E=-1/0,C=new Map,L=x,S=e=>{L={...L,...e},u.emit("change",L)},P=()=>S({unsaved:[...h.values()].some(({content:e,saved:t})=>!Z(e,t)),canUndo:b.length>0,undoSteps:b.length}),$=async(t,r)=>{let n=await e.fetch(`${i}/api/${t}`,void 0===r?{credentials:"same-origin"}:{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json","x-obelism-content":"1"},body:JSON.stringify(r)}),a=await n.json().catch(()=>({}));if(401===n.status)throw S({features:[]}),Error("You were signed out. Sign in again to edit.");if(!n.ok)throw Error("string"==typeof a.error?a.error:`Obelism Content answered ${n.status}`);return a},M=()=>p.querySelector(`[${r}]`)?.getAttribute(r)??null,U=()=>{let e=p.querySelector(`[${n}]`),t=e?.getAttribute(n),r=e?.getAttribute("data-cms-product-handle");return t&&r?{id:t,handle:r}:null},z=()=>{let e=p.querySelector(`[${a}]`),t=e?.getAttribute(a),r=e?.getAttribute("data-cms-collection-handle");return t&&r?{id:t,handle:r}:null},O=e=>{let t=e?p.querySelector(N(e)):null;return t?.closest(`[${r}]`)?.getAttribute(r)??M()},I=()=>{if(!w)return;let e=w.space.locales.map(({code:e})=>e),t=p.documentElement.lang;if(e.includes(t))return t;let r=t.split("-")[0]??"";return e.includes(r)?r:w.space.defaultLocale},j=new Map,T=async e=>{let t=h.get(e);if(t)return t;let r=j.get(e);return r||(r=$(`entries/${encodeURIComponent(e)}`).then(t=>{let r=h.get(e)??{content:t.content,saved:t.content,revision:t.draftRevision};return h.set(e,r),r}).finally(()=>j.delete(e)),j.set(e,r)),r},R=e=>{let t=void 0===e?L.selectedUid:e,r=O(t);if(!r)throw Error("Nothing on this page is marked as an entry: add editable(entry)");return{uid:t,entryId:r}},D=e=>{p.querySelectorAll("[data-cms-selected]").forEach(e=>{e.removeAttribute("data-cms-selected")}),L.selectedUid!==e&&S({selectedUid:e}),e&&p.querySelector(N(e))?.setAttribute("data-cms-selected","")},q=async t=>{if(0===u.listeners.update.size)return;let r=h.get(t)?.content,{entry:n}=await $(`entries/${encodeURIComponent(t)}/preview`,{content:r,locale:I()});u.emit("update",{entry:n,selectedUid:L.selectedUid}),e.requestAnimationFrame(()=>D(L.selectedUid))},F=e=>console.error("[@obelism/content bridge]",e),B=t=>{u.emit(t,{}),0===u.listeners.update.size&&e.location.reload()},V=async()=>{for(let[e,t]of h){if(Z(t.content,t.saved))continue;let{draftRevision:r}=await $(`entries/${encodeURIComponent(e)}/save`,{content:t.content,baseRevision:t.revision});t.saved=t.content,t.revision=r,f.add(e)}b.length=0,E=-1/0,P()},H={isEditing:!0,mode:"site",get entryId(){return M()},get product(){return U()},get collection(){return z()},get environment(){return w?.environment??null},on:u.on,getState:()=>L,async prompt(e,t={}){let r=e.trim();if(!r)throw Error("Say what to change");if(!L.features.includes("prompt"))throw Error("You may not edit content here");let{uid:n,entryId:a}=R(t.uid);S({prompting:!0});try{let e=await T(a),t=await $(`entries/${encodeURIComponent(a)}/prompt`,{prompt:r,content:e.content,locale:I(),uid:n});return b.push({entryId:a,content:e.content}),E=-1/0,e.content=t.content,P(),await q(a),{summary:t.summary}}finally{S({prompting:!1})}},async createPage(t,r){let n=r.trim();if(!n)throw Error("Say what the page is for");if(!t.trim())throw Error("Say where the page goes, like /pricing");if(!L.features.includes("create"))throw Error("You may not add pages here");if(L.unsaved)throw Error("Save or undo your changes before adding a page");S({prompting:!0});try{let r=await $("entries",{path:t,prompt:n,locale:I(),from:M()}),a=o(r.path,I()??"");return e.location.assign(J(a)),{summary:r.summary,entryId:r.entryId,path:r.path,url:a}}finally{S({prompting:!1})}},async createProductPage(t=U()??void 0){if(!t)throw Error("Nothing on this page is marked as a product: add editableProduct(product)");if(!L.features.includes("create"))throw Error("You may not add pages here");if(L.unsaved)throw Error("Save or undo your changes before adding a page");S({prompting:!0});try{let r=await $("product-pages",{product:{id:t.id,handle:t.handle}});return e.location.reload(),r}finally{S({prompting:!1})}},async createCollectionPage(t=z()??void 0){if(!t)throw Error("Nothing on this page is marked as a collection: add editableCollection(collection)");if(!L.features.includes("create"))throw Error("You may not add pages here");if(L.unsaved)throw Error("Save or undo your changes before adding a page");S({prompting:!0});try{let r=await $("collection-pages",{collection:{id:t.id,handle:t.handle}});return e.location.reload(),r}finally{S({prompting:!1})}},async view(e={}){let{uid:t,entryId:r}=R(e.uid),n=await T(r),{view:a}=await $(`entries/${encodeURIComponent(r)}/view`,{content:n.content,locale:I(),uid:t});return a},async applyJson(e,t={}){if(!L.features.includes("prompt"))throw Error("You may not edit content here");if(!e||"object"!=typeof e||Array.isArray(e))throw Error("Send the fields to change as an object");let{uid:r,entryId:n}=R(t.uid);S({prompting:!0});try{let t=await T(n),a=await $(`entries/${encodeURIComponent(n)}/apply`,{changes:e,content:t.content,locale:I(),uid:r});return Z(a.content,t.content)||(b.push({entryId:n,content:t.content}),E=-1/0,t.content=a.content,P(),await q(n)),{changed:a.changed??[],...a.view&&{view:a.view}}}finally{S({prompting:!1})}},openForm(t,r={}){let{title:n="Content form",onReady:a,onError:i,onEscape:o}=r;k?.();let s=!1,l=null,d=null,p=()=>{},c=e=>{s||i?.(e instanceof Error?e.message:String(e))},g=()=>{s||(s=!0,p(),l?.destroy(),k===g&&(k=null))};k=g;let f=()=>{if(s||!l)return;let e=O(L.selectedUid);if(!e)return;let t=h.get(e);if(!t)return void T(e).then(f,c);let r={entryId:e,content:t.content,locale:I(),selectedUid:L.selectedUid};d&&d.entryId===r.entryId&&d.content===r.content&&d.locale===r.locale&&d.selectedUid===r.selectedUid||(d=r,l.show(r))},v=(e,t)=>{let r=t??d?.entryId,n=void 0===r?void 0:h.get(r);if(s||void 0===r||!n||Z(e,n.content))return;let a=Date.now();a-E>=1e3&&b.push({entryId:r,content:n.content}),E=a,n.content=e,d?.entryId===r&&(d={...d,content:e}),P(),clearTimeout(C.get(r)),C.set(r,setTimeout(()=>{C.delete(r),q(r).catch(F)},300))};return(async()=>{if(!L.features.includes("form"))throw Error("You may not edit content here");await T(R(void 0).entryId);let{url:r}=await $("form",{});s||(l=((e,t,r,n,a)=>{let i=null;try{i=new URL(r)}catch{}if(!i||!/^https?:$/.test(i.protocol))throw Error("Obelism Content sent no form to open");let o=i.origin,s=t.ownerDocument.createElement("iframe");s.title=n,s.src=r;let l=!1,d=!1,p=null,c=()=>{l&&p&&s.contentWindow?.postMessage({source:m,type:"content",...p},o)},u=setTimeout(()=>{d||a.onError("The form did not open")},3e4),g=()=>{d=!0,clearTimeout(u),a.onReady()},h=e=>{if(e.origin!==o||!s.contentWindow||e.source!==s.contentWindow)return;let t=e.data;if(t&&"obelism-content-form"===t.source)if("ready"===t.type)l=!0,c(),!0!==t.loading&&g();else if("loaded"===t.type)l&&g();else{let e;if("change"!==t.type||!(e=t.content)||"object"!=typeof e||Array.isArray(e))if("height"===t.type){let e=t.height;if("number"==typeof e&&Number.isFinite(e)){let t=Math.round(Math.min(Math.max(e,80),4e3));s.style.height=`min(${t}px, 60vh)`}}else"escape"===t.type?a.onEscape?.():"error"===t.type&&a.onError("string"==typeof t.message&&t.message?t.message:"The form failed");else a.onChange(t.content,"string"==typeof t.entryId?t.entryId:void 0)}};return e.addEventListener("message",h),t.appendChild(s),{show(e){p=e,c()},destroy(){clearTimeout(u),e.removeEventListener("message",h),s.remove()}}})(e,t,"string"==typeof r?r:"",n,{onReady:()=>a?.(),onChange:v,onError:e=>i?.(e),onEscape:()=>o?.()}),p=u.on("change",f),f())})().catch(c),{close:g}},async pages(){let{pages:e}=await $("pages"),t=[I(),w?.space.defaultLocale];return e.flatMap(e=>{let r,n,a=t.find(t=>void 0!==t&&void 0!==e.paths[t])??Object.keys(e.paths)[0],i=void 0===a?void 0:e.paths[a];return void 0===a||void 0===i?[]:[{entryId:e.entryId,name:e.name,contentType:e.contentType,status:e.status,path:i,url:e.product?(r=e.product.handle,l?l(r,a):(w?.productPath??"/products/{handle}").replaceAll("{handle}",encodeURIComponent(r))):e.collection?(n=e.collection.handle,d?d(n,a):(w?.collectionPath??"/collections/{handle}").replaceAll("{handle}",encodeURIComponent(n))):o(i,a),product:e.product??null,collection:e.collection??null}]})},openPage(t){(!L.unsaved||e.confirm("Leave this page and lose the changes you have not saved?"))&&(h.clear(),b.length=0,P(),e.location.assign(J(t.url)))},undo(){let e=b.pop(),t=e&&h.get(e.entryId);e&&t&&(E=-1/0,t.content=e.content,P(),q(e.entryId).catch(F))},async save(){if(!L.features.includes("save"))throw Error("You may not edit content here");S({saving:!0});try{await V()}finally{S({saving:!1})}B("saved")},async publish(){if(!L.features.includes("publish"))throw Error("You may not publish here");S({publishing:!0});try{await V();let e=M(),t=f.size>0?[...f]:e?[e]:[];if(0===t.length)throw Error("Nothing on this page is marked as an entry: add editable(entry)");for(let e of t)await $(`entries/${encodeURIComponent(e)}/publish`,{}),f.delete(e)}finally{S({publishing:!1})}B("published")},signOut(){if(L.unsaved&&!e.confirm("Sign out and lose the changes you have not saved?"))return;h.clear(),P();let t=e.location.pathname+e.location.search;e.location.href=`${i}/logout?return_to=${encodeURIComponent(t)}`},select(e){D(e)},setSelecting(e){e?p.documentElement.setAttribute("data-cms-selecting",""):p.documentElement.removeAttribute("data-cms-selecting"),S({selecting:e,statsVisible:e}),et()},destroy(){k?.(),C.forEach(e=>clearTimeout(e)),C.clear(),g.splice(0).forEach(e=>e())}},_=p.createElement("style");_.textContent=v("html[data-cms-selecting] "),p.head.appendChild(_),g.push(()=>_.remove()),g.push(()=>p.documentElement.removeAttribute("data-cms-selecting"));let W=e=>{if(!L.selecting)return;let r=e.target,n=r?.closest?.(`[${t}]`);n&&(e.preventDefault(),e.stopPropagation(),D(n.getAttribute(t)))};p.addEventListener("click",W,!0),g.push(()=>p.removeEventListener("click",W,!0));let Y=e=>{L.unsaved&&(e.preventDefault(),e.returnValue="")};e.addEventListener("beforeunload",Y),g.push(()=>e.removeEventListener("beforeunload",Y));let X=new Set,K=new Set,G=!1,Q=null,ee=null,et=()=>Q?.update(L.stats,L.statsVisible),er=async()=>{if(G)return;let t=[...new Set([...p.querySelectorAll(`[${s}]`)].map(e=>e.getAttribute(s)??""))].filter(e=>e&&!X.has(e)),r=t.slice(0,500);if(r.length){r.forEach(e=>X.add(e));try{let{stats:e}=await $("stats",{uids:r});r.forEach(e=>K.add(e)),S({stats:{...L.stats,...A(e)}})}catch{G=!0;return}Q??(Q=c(e,{selector:N,onSelect:e=>D(e),checked:e=>K.has(e)})),et(),t.length>r.length&&en()}},en=()=>{null!==ee||G||(ee=setTimeout(()=>{ee=null,er()},1e3))},ea=e.MutationObserver,ei="function"==typeof ea?new ea(en):null;return g.push(()=>{ei?.disconnect(),null!==ee&&clearTimeout(ee),Q?.destroy()}),$("session").then(e=>{w=e,S({features:e.features}),er(),ei?.observe(p.body,{childList:!0,subtree:!0})}).catch(e=>console.error("[@obelism/content bridge]",e)),H})(g,f,{pagePath:l,productPath:d,collectionPath:p})),u.isEditing&&o){let e=g.document,t=()=>{},r=!1,n=f?en:Y,a=()=>{r||(t=n(e,u,!0===o?{}:o))};e.body?a():e.addEventListener("DOMContentLoaded",a,{once:!0});let i=u.destroy;u.destroy=()=>{r=!0,e.removeEventListener("DOMContentLoaded",a),t(),i()}}}return g[ea]=u,u};(e=window).ObelismBridge=eo((e=>{let t=e?.dataset.url,r=t||X;if(!t&&e?.src){let t=new URL(e.src);"/bridge.js"===t.pathname&&(r=t.origin)}return{url:r,prompt:e?.dataset.prompt!=="false"}})(document.currentScript)),e.ObelismContent={getContentBridge:eo,mountPromptBox:Y,mountSiteEditor:en}}();
594
+ `,ee=e=>{let t=e.replace(/([a-z0-9])([A-Z])/g,"$1 $2").replace(/[_-]+/g," ").trim().toLowerCase();return t.charAt(0).toUpperCase()+t.slice(1)},et=e=>!!e&&"object"==typeof e&&!Array.isArray(e),er=(e,t,r,n)=>{if(null!=e&&""!==e){if("object"!=typeof e)return void n.set(r,{label:t,text:String(e)});if(Array.isArray(e)){if(e.every(e=>null===e||"object"!=typeof e)){e.length&&n.set(r,{label:t,text:e.join(", ")});return}e.forEach((e,a)=>{let i=et(e)&&"string"==typeof e._uid?e._uid:a,o=et(e)&&"string"==typeof e._type?e._type:null;er(e,o?ee(o):t,`${r}/${i}`,n)});return}for(let[a,i]of Object.entries(e))"_uid"!==a&&"_type"!==a&&er(i,t?`${t} \xb7 ${ee(a)}`:ee(a),`${r}/${a}`,n)}},en=(e,n,a={})=>{let i,o={...R,...a.labels},s=e.defaultView,l=e.documentElement,d=(t,...r)=>L(e,"button",{className:t,type:"button"},...r),p=L(e,"div");p.setAttribute("data-obelism-content-editor","");let c=p.attachShadow({mode:"open"}),u=L(e,"style",{textContent:(i=`[${t}]`,`html[data-obelism-editor]{transition:margin-right .3s cubic-bezier(.2,.8,.2,1)}html[data-obelism-docked]{margin-right:436px!important}html[data-obelism-docked] [data-obelism-dock]{right:436px!important;max-width:calc(100vw - 436px)!important}html[data-obelism-editor][data-cms-selecting] ${i}:hover:not([data-cms-selected]){outline:none}html[data-obelism-editor][data-cms-selecting] ${i}[data-cms-selected]{outline:2px solid rgb(212 130 30);outline-offset:2px}@media (prefers-reduced-motion:reduce){html[data-obelism-editor]{transition:none}}`)}),g=L(e,"span",{className:"tile"},M(e,"mark",P)),h=L(e,"span"),b=d("page-button hit",h,L(e,"span",{className:"visually-hidden",textContent:`, ${o.pages}`}),O(e,"chevrons"));b.setAttribute("aria-haspopup","listbox"),b.setAttribute("aria-expanded","false"),b.setAttribute("aria-controls","obelism-pages");let m=L(e,"span",{className:"page-name"}),f=L(e,"span"),v=L(e,"span",{className:"env"},L(e,"span",{className:"visually-hidden",textContent:`${o.environment}: `}),f),x=d("icon-button hit",O(e,"dash"));x.setAttribute("aria-label",o.minimize),x.title=o.minimize;let y=d("mode hit",M(e,"mark",P),o.modePrompt);y.setAttribute("aria-pressed","false");let w=L(e,"div",{className:"head"},g,b,m,v,L(e,"span",{className:"spacer"}),y,x),k=D(e,n,o,{onLoad:()=>td(),onClose:()=>tb(!1)}),E=d("button quiet new-page",O(e,"plus"),o.newPage),C=L(e,"div",{className:"pages"},k.searchRow,k.list,k.note,E),A=d("button primary",o.keep),S=d("button quiet",o.undo),z=L(e,"div",{className:"gate"},L(e,"p",{textContent:o.keepBeforeFields}),L(e,"div",{className:"actions"},A,S));z.setAttribute("role","alert");let j=L(e,"span"),T=d("",o.scopeEntry),_=d("",o.newPageCancel),W=L(e,"div",{className:"note"},O(e,"scope"),j,T,_),Y=L(e,"p",{className:"intro",textContent:o.askIntro}),X=L(e,"p",{className:"summary"}),K=L(e,"span"),J=d("button primary",O(e,"plus"),K),Z=L(e,"div",{className:"shop"},X,J),en=L(e,"div",{className:"log"});en.setAttribute("role","log");let ea=L(e,"div",{className:"scroll"},W,Y,Z,en),ei=L(e,"input",{type:"text",placeholder:o.pathPlaceholder,autocomplete:"off",spellcheck:!1}),eo=L(e,"label",{className:"path"},L(e,"span",{textContent:o.path}),ei),es=L(e,"textarea",{rows:1});es.setAttribute("aria-label",o.open);let el=O(e,"arrowUp"),ed=M(e,"working",$),ep=L(e,"button",{className:"send",type:"submit",title:o.send},L(e,"span",{className:"visually-hidden",textContent:o.send}),el,ed),ec=L(e,"div",{className:"bar"},M(e,"mark",P),es,ep),eu=L(e,"form",{className:"composer"},eo,ec),eg=L(e,"div",{className:"ask",id:"obelism-ask"},ea,eu);eg.setAttribute("role","tabpanel"),eg.setAttribute("aria-label",o.modePrompt);let eh=L(e,"p",{className:"form-note"});eh.setAttribute("role","status");let eb=L(e,"div",{className:"form"},eh),em=L(e,"span"),ef=d("",o.scopeEntry),ev=L(e,"div",{className:"note"},O(e,"scope"),em,ef),ex=L(e,"div",{className:"fields",id:"obelism-fields"},ev,eb);ex.setAttribute("role","tabpanel"),ex.setAttribute("aria-label",o.form);let ey=L(e,"p",{className:"save-state"});ey.setAttribute("aria-live","polite");let ew=L(e,"slot");ew.name="actions-footer";let ek=d("button quiet",O(e,"undo"),o.undo),eE=d("button secondary",o.saveDraft),eC=d("button primary",o.publish),eA=L(e,"div",{className:"foot"},ey,ew,ek,eE,eC),eN=L(e,"p",{className:"visually-hidden"});eN.setAttribute("role","status");let eS=L(e,"aside",{className:"panel",id:"obelism-editor"},w,C,z,eg,ex,eA,eN);eS.setAttribute("aria-label",o.editor);let eL=d("launch",L(e,"span",{className:"launch-tile"},M(e,"mark",P)),o.editing);eL.setAttribute("aria-controls",eS.id);let eP=L(e,"span",{className:"reading"},L(e,"span",{className:"launch-tile"},M(e,"mark",P)),o.viewingDrafts),e$=O(e,"eye"),eM=O(e,"eyeOff"),eU=d("eye",e$,eM);eU.setAttribute("aria-label",o.hideOutlines),eU.title=o.hideOutlines;let ez=L(e,"slot");ez.name="actions-bar";let eO=d("exit",o.signOut),eI=L(e,"div",{className:"launcher"},eL,eP,eU,ez,eO);a.actions&&p.appendChild(a.actions);let ej=L(e,"div",{className:"layer"});ej.setAttribute("aria-hidden","true");let eT=L(e,"div",{className:"wash"});eT.setAttribute("aria-hidden","true");let eR=L(e,"div",{className:"root"},eT,ej,eS,eI);c.append(L(e,"style",{textContent:Q}),eR);let eD=(e=>{try{return e?.localStorage.getItem(G)!=="minimised"}catch{return!0}})(s),eq="fields",eF="fields",eB=!1,eV=!1,eH=!0,e_=!1,eW=null,eY=!1,eX=null,eK=[],eJ=!0,eZ=null,eG=new Map,eQ=new Map,e0="idle",e1=!1,e2=I(n,eb,o.formTitle,{onReady:()=>{td(),eD&&"fields"===eF&&e4()},onError:()=>td(),onEscape:()=>tf()}),e4=()=>eb.querySelector("iframe")?.focus(),e5=()=>eK.filter(({status:e})=>"pending"===e),e6=()=>e5().slice(-1)[0]??null,e3=()=>eK.some(({status:e})=>"working"===e)?null:e6(),e8=e=>(eG.has(e)||"loading"===e0||(eG.set(e,null),n.view({uid:e}).then(t=>{"string"==typeof t._type&&eG.set(e,ee(t._type)),td()},()=>{})),eG.get(e)??o.block),e7=(e,t=null)=>{if(Array.isArray(e))e.forEach(e=>e7(e,t));else if(et(e)){let r=t;"string"==typeof e._uid&&"string"==typeof e._type&&(r=e._uid,eQ.set(r,t),eG.set(r,ee(e._type))),Object.values(e).forEach(e=>e7(e,r))}},e9=r=>e.querySelector(N(r))?.parentElement?.closest(`[${t}]`)?.getAttribute(t)??eQ.get(r)??null,te=()=>k.current()?.name||e.title.trim(),tt=null,tr=()=>{null===tt&&s&&(tt=s.requestAnimationFrame(()=>{tt=null,(t=>{if(ej.replaceChildren(),eT.replaceChildren(),!ta(t))return;let n=t=>{let r=e.querySelector(t),n=r?.getBoundingClientRect();return n&&(n.width||n.height)?n:null},a=(t,r,n=ej)=>{let a=L(e,"div",{className:`box ${r}`});Object.assign(a.style,{top:`${t.top-3}px`,left:`${t.left-3}px`,width:`${t.width+6}px`,height:`${t.height+6}px`}),n.appendChild(a)},i=(t,...r)=>{let n=L(e,"div",{className:"chips"},...r),a=t.top-34<0?t.top+6:t.top-34;Object.assign(n.style,{top:`${a}px`,left:`${t.left-3}px`}),ej.appendChild(n)},s=(t,r)=>{let n=L(e,"span",{className:"accent-chip"});return r&&n.appendChild(M(e,"mark",P)),n.appendChild(e.createTextNode(t)),n},l=e6(),d=l?l.uid?N(l.uid):`[${r}]`:null,p=d?n(d):null;if(p&&a(p,"fill",eT),eZ&&eZ!==t.selectedUid){let t=n(N(eZ));if(t){a(t,"hover");let r=t.top-23<0,n=L(e,"span",{className:`name-tab${r?" inside":""}`,textContent:e8(eZ)});Object.assign(n.style,{top:`${r?t.top-1.5:t.top-23}px`,left:`${t.left-3}px`}),ej.appendChild(n)}}let c=!!l&&l.uid===t.selectedUid;if(t.selectedUid){let r=n(N(t.selectedUid));if(r){let n=e8(t.selectedUid),a=te();i(r,s(c?U(o.previewChip,{name:n}):n,c),...a?[L(e,"span",{className:"ink-chip",textContent:a})]:[])}}if(p&&!c){a(p,"preview");let e=l.uid?e8(l.uid):te()||o.pages;i(p,s(U(o.previewChip,{name:e}),!0))}})(n.getState())}))},tn=e=>e.features.includes("prompt")&&eD,ta=e=>tn(e)&&eH&&!eV,ti=t=>L(e,"span",{className:`value${t?"":" none"}`,textContent:t||o.emptyValue}),to=t=>{let r=t.node.querySelector(".card");if(r.querySelector(".status-line")?.remove(),"failed"===t.status)return void r.appendChild(L(e,"p",{className:"failure"},O(e,"alert"),t.summary));for(let n of(r.appendChild(t.eyebrow),t.summary&&r.appendChild(L(e,"p",{className:"summary",textContent:t.summary})),t.diffs.slice(0,3))){let a=L(e,"div",{className:"diff-field"},L(e,"span",{className:"diff-label",textContent:n.label}),L(e,"div",{className:"diff"},L(e,"div",{className:"before"},L(e,"span",{className:"tag",textContent:o.before}),ti(n.before)),L(e,"div",{className:"after"},L(e,"span",{className:"tag",textContent:o.after}),ti(n.after))));t.details.push(a),r.appendChild(a)}if(t.diffs.length>3){let n=L(e,"p",{className:"more",textContent:U(o.moreChanges,{count:t.diffs.length-3})});t.details.push(n),r.appendChild(n)}if("pending"===t.status){let n=d("button primary",o.keep),a=d("button secondary",o.retry),i=d("button quiet",o.undo);n.addEventListener("click",()=>tv()),a.addEventListener("click",()=>void tw(t)),i.addEventListener("click",()=>tx(t)),t.actions=L(e,"div",{className:"actions"},n,a,i),r.appendChild(t.actions)}},ts=(t,r)=>{let n=L(e,"div",{className:"card"},L(e,"span",{className:"visually-hidden",textContent:`${o.obelism}: `}),L(e,"p",{className:"status-line"},M(e,"working",$),eV?o.creating:o.working)),a=L(e,"div",{className:"answer"},L(e,"span",{className:"chip"},M(e,"mark",P)),n);a.dataset.status="working";let i={prompt:t,uid:r,status:"working",summary:"",diffs:[],step:null,node:a,eyebrow:L(e,"p",{className:"eyebrow"}),actions:null,details:[]};return eK.push(i),en.appendChild(a),i},tl=t=>{if(e1)return;let r=t.features.includes("prompt"),i=t.saving||t.publishing,s=t.prompting||i,p=r&&eD,{site:c,canCreate:u,pageless:g,shopHere:x,onlyNew:w}=F(n,t,a.promptWithoutPage);u||(eV=!1),w&&(eV=!0);let N=c&&!eV&&!g&&t.features.includes("form");eF=N?eq:"ask";let P=e5().length>0;for(let e of(P&&"fields"!==eF||(eB=!1),eK))null!==e.step&&e.step>(t.undoSteps??0)&&(e.step=null);eR.hidden=!r&&!c,eS.toggleAttribute("data-closed",!p),eS.inert=!p,eL.hidden=!r,eL.setAttribute("aria-expanded",String(p)),eP.hidden=r,eU.hidden=!p,eU.setAttribute("aria-pressed",String(!eH)),e$.hidden=!eH,eM.hidden=eH,eO.hidden=!1===a.signOut;let I=p&&eJ;l.toggleAttribute("data-obelism-docked",I),l.style.setProperty("--obelism-dock",`${436*!!I}px`);let R=p&&eH&&!eV;t.selecting!==R&&n.setSelecting(R);let D=p&&"fields"===eF;D&&!e2.mounted?e2.mount():!D&&e2.mounted&&e2.unmount(),e_&&!p&&(e_=!1),h.textContent=te()||o.pages,b.hidden=null===k.pages&&null!==k.error,m.hidden=!b.hidden,m.textContent=te()||o.pages,b.setAttribute("aria-expanded",String(e_)),C.hidden=!e_,E.hidden=!u||eV,E.disabled=s;let q=n.environment;v.hidden=!q,v.dataset.env=q??"",f.textContent="production"===q?o.envProduction:q??"",y.hidden=!N,y.setAttribute("aria-pressed",String("ask"===eF)),y.disabled=s,z.hidden=!eB,A.disabled=S.disabled=s,eg.hidden="ask"!==eF,ex.hidden="fields"!==eF;let V=null!==x&&!eV;if(eV)j.textContent=o.newPage;else if(t.selectedUid){let[r,n=""]=o.scopeNoteBlock.split("{name}");for(let a of[j,em])a.replaceChildren(r??"",L(e,"strong",{textContent:e8(t.selectedUid)}),n)}else j.textContent=o.scopeNotePage;let H=t.selectedUid?e9(t.selectedUid):null,G=H?U(o.scopeUp,{name:e8(H)}):o.scopeEntry;for(let e of[T,ef])e.textContent!==G&&(e.textContent=G);ev.hidden=eV||!t.selectedUid,W.hidden=V||g&&!eV&&!a.promptWithoutPage,T.hidden=eV||!t.selectedUid,_.hidden=!eV||w,Y.hidden=eK.length>0||V||eV,Z.hidden=!V;let Q=B(o,x);K.textContent=t.prompting&&V?Q.adding:Q.add,J.disabled=s,X.textContent=eX?.text??Q.hint,X.className=eX?.error?"failure":"summary",eu.hidden=V,eo.hidden=!eV,ei.disabled=s,es.placeholder=eV?o.newPagePlaceholder:o.placeholder,es.disabled=s,ep.disabled=s||""===es.value.trim()||eV&&""===ei.value.trim(),ep.setAttribute("aria-busy",String(t.prompting)),el.hidden=t.prompting,ed.hidden=!t.prompting,ek.hidden=P||!t.canUndo||eV,ek.disabled=s,eE.hidden=!t.features.includes("save")||g,eE.disabled=s||P||!t.unsaved,eC.hidden=!t.features.includes("publish")||g,eC.disabled=s||P,a.actions&&(a.actions.slot=p?"actions-footer":"actions-bar"),eA.hidden=!c,t.unsaved&&!eY&&(eW=null),eY=t.unsaved;let ee=i?M(e,"working",$):eW?.kind==="error"?O(e,"alert"):P||t.unsaved?L(e,"span",{className:"dot"}):O(e,"check"),et=t.saving?o.saving:t.publishing?o.publishing:eW?.kind==="error"?`${"save"===eW.action?o.saveFailed:o.publishFailed}: ${eW.text}`:P?o.keepFirst:t.unsaved?o.unsaved:eW?.kind==="saved"?o.saved:eW?.kind==="published"?o.published:o.upToDate,er=i?"saving":eW?.kind==="error"?"error":P||t.unsaved?"unsaved":"saved";if((ey.dataset.state!==er||ey.dataset.text!==et)&&(ey.dataset.state=er,ey.dataset.text=et,ey.replaceChildren(ee,L(e,"span",{textContent:et})),eW?.kind==="error"&&!i)){let e=eW.action,t=d("link",o.tryAgain);t.addEventListener("click",()=>void tE(e)),ey.appendChild(t)}eb.classList.toggle("loading",e2.loading||null!==e2.error),eh.hidden=!e2.loading&&null===e2.error,eh.className=`form-note${null!==e2.error?" error":""}`,eh.textContent=e2.error??o.formLoading;let en=e3();for(let e of eK){if("working"===e.status||"failed"===e.status)continue;e.node.dataset.status=e.status;let t="pending"===e.status?o.suggested:"kept"===e.status?o.kept:o.undone;for(let r of(e.eyebrow.textContent!==t&&(e.eyebrow.textContent=t),e.actions&&(e.actions.hidden=e!==en),e.details))r.hidden="undone"===e.status}p&&((()=>{if("idle"!==e0||null===n.entryId)return;e0="loading";let e=()=>{e0="done",td()};n.view({uid:null}).then(t=>{e7(t),e()},e)})(),null===k.pages&&null===k.error&&k.fetch()),tr()},td=()=>tl(n.getState()),tp=()=>{es.style.height="auto",es.style.height=`${es.scrollHeight}px`},tc=()=>{ea.scrollTop=ea.scrollHeight},tu=e=>{eD=e;try{s?.localStorage.setItem(G,eD?"open":"minimised")}catch{}eD||(e_=!1),td(),eD?eV?ei.focus():"fields"===eF?e4():es.focus():eL.focus()},tg=e=>{if("fields"===e&&e5().length>0){eB=!0,td(),A.focus();return}if(eB=!1,eq===e)return td();eq=e,td()},th=e=>{e_=!1,(eV=e)&&n.select(null),td(),(eV?ei:es).focus()},tb=e=>{(e_=e)&&k.reset(),td(),(e_?k.search:b).focus()},tm=()=>{let{selectedUid:e}=n.getState();return e&&n.select(e9(e)),!n.getState().selectedUid},tf=()=>{let e=n.getState();if(!tn(e))return!1;if(e_)tb(!1);else{if(!e.selectedUid)return!1;tm()}return!0},tv=(e=!0)=>{let t=e5();t.length&&e3()&&(t.forEach(e=>{e.status="kept"}),td(),e&&es.focus())},tx=(e,t=!0)=>{e===e3()&&(n.undo(),e.status="undone",td(),t&&es.focus())},ty=async(e,t)=>{let r={uid:e.uid},a=await n.view(r).catch(()=>null);try{let{summary:i}=await n.prompt(t,r);e.step=n.getState().undoSteps??null;let o=a?await n.view(r).catch(()=>null):null;e.summary=i,e.diffs=a&&o?((e,t)=>{let r=new Map,n=new Map;er(e,"","",r),er(t,"","",n);let a=[];for(let e of new Set([...r.keys(),...n.keys()])){let t=r.get(e),i=n.get(e);t?.text!==i?.text&&a.push({label:(i??t).label,before:t?.text??"",after:i?.text??""})}return a})(a,o):[],e.status="pending"}catch(t){e.summary=q(t),e.status="failed"}to(e),td(),tc()},tw=async e=>{if(e!==e3())return;n.undo(),e.status="undone";let t=ts(e.prompt,e.uid);td(),tc(),es.focus(),await ty(t,U(o.retryPrompt,{prompt:e.prompt}))},tk=async()=>{let t=es.value.trim(),r=n.getState();if(!t||r.prompting)return;let a=ei.value.trim();if(eV&&!a)return ei.focus();let i=eV?null:r.selectedUid,s=eV?`${o.newPage} \xb7 ${a}`:i?e8(i):o.scopeEntry;en.appendChild(L(e,"p",{className:"bubble"},L(e,"span",{className:"visually-hidden",textContent:`${o.you} (${s}): `}),t)),es.value="",tp();let l=ts(t,i);if(td(),tc(),eV){try{await n.createPage(a,t),k.forget(),l.summary=o.created,l.status="kept"}catch(e){l.summary=q(e),l.status="failed"}to(l),td()}else await ty(l,t);es.focus()},tE=async e=>{eW=null;let t=await H(n,e);eW=t?{kind:"error",action:e,text:t}:{kind:"save"===e?"saved":"published"},td()};eL.addEventListener("click",()=>tu(!eD)),x.addEventListener("click",()=>tu(!1)),eU.addEventListener("click",()=>{eH=!eH,td()}),eO.addEventListener("click",()=>n.signOut()),b.addEventListener("click",()=>tb(!e_)),E.addEventListener("click",()=>th(!0)),_.addEventListener("click",()=>th(!1)),T.addEventListener("click",()=>{tm()&&es.focus()}),ef.addEventListener("click",()=>{tm()&&e4()}),J.addEventListener("click",async()=>{eX=null,eX=await V(n,o),td()}),y.addEventListener("click",()=>tg("ask"===eq?"fields":"ask")),A.addEventListener("click",()=>{tv(!1),tg("fields"),e4()}),S.addEventListener("click",()=>{for(let e=e3();e;e=e3())tx(e,!1);tg("fields"),e4()}),ek.addEventListener("click",()=>{let e=n.getState().undoSteps,t=void 0===e?void 0:eK.find(t=>"kept"===t.status&&t.step===e);if(n.undo(),t){var r;t.status="undone",td(),r=`${o.undone}: ${t.summary}`,eN.textContent="",eN.textContent=r}ek.hidden&&es.focus()}),eE.addEventListener("click",()=>void tE("save")),eC.addEventListener("click",()=>void tE("publish")),eu.addEventListener("submit",e=>{e.preventDefault(),tk()}),es.addEventListener("input",()=>{tp(),td()}),es.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||e.isComposing||(e.preventDefault(),tk())}),ei.addEventListener("input",td),ei.addEventListener("keydown",e=>{"Enter"!==e.key||e.isComposing||(e.preventDefault(),es.focus())});let tC=e=>{"Escape"===e.key&&!e.defaultPrevented&&tf()&&e.preventDefault()};e.addEventListener("keydown",tC);let tA=e=>{let r=e.target,n=r?.closest?.(`[${t}]`),a=n?.getAttribute(t)??null;a!==eZ&&(eZ=a,tr())},tN=()=>{eZ=null,tr()};e.addEventListener("pointerover",tA),l.addEventListener("pointerleave",tN),s?.addEventListener("scroll",tr,{capture:!0,passive:!0}),s?.addEventListener("resize",tr);let tS=s?.MutationObserver,tL="function"==typeof tS?new tS(tr):null;tL?.observe(e.body,{childList:!0,subtree:!0});let tP=s?.ResizeObserver,t$="function"==typeof tP?new tP(tr):null;t$?.observe(l);let tM=s?.matchMedia?.("(min-width: 768px)")??null;eJ=tM?.matches??!0;let tU=()=>{eJ=tM?.matches??!0,td()};tM?.addEventListener?.("change",tU);let tz=n.on("change",tl);return l.setAttribute("data-obelism-editor",""),e.head.appendChild(u),e.body.appendChild(p),td(),()=>{e1=!0,tz(),e2.unmount(),null!==tt&&s?.cancelAnimationFrame?.(tt),e.removeEventListener("keydown",tC),e.removeEventListener("pointerover",tA),l.removeEventListener("pointerleave",tN),s?.removeEventListener("scroll",tr,{capture:!0}),s?.removeEventListener("resize",tr),tM?.removeEventListener?.("change",tU),tL?.disconnect(),t$?.disconnect(),n.setSelecting(!1),l.removeAttribute("data-obelism-editor"),l.removeAttribute("data-obelism-docked"),l.style.removeProperty("--obelism-dock"),u.remove(),p.remove()}},ea=Symbol.for("@obelism/content/bridge"),ei=S({isEditing:!1,entryId:null,on:()=>{}},new URLSearchParams),eo=({url:e,prompt:o=!0,pagePath:l,productPath:d,collectionPath:p}={})=>{let u;if("u"<typeof window)return ei;let g=window;if(g[ea])return g[ea];if(g.ObelismBridge)u=S(g.ObelismBridge,new URLSearchParams(g.location.search));else{let f=(u=((e,r)=>{let n,a,o,s,l,d=new URLSearchParams(e.location.search),p=e.parent!==e&&d.has("cms_preview"),u=y(),g=[],f={...x,selecting:!0},w=e=>{f={...f,...e},u.emit("change",f)},k={isEditing:p,mode:p?"editor":null,entryId:d.get("cms_entry"),environment:d.get(i),product:null,collection:null,on:u.on,getState:()=>f,...E,destroy:()=>{g.splice(0).forEach(e=>e())}};if(!p)return k;let C=e.document,S=(t,n={})=>{e.parent.postMessage({source:m,type:t,...n},r)},L=C.createElement("style");L.textContent=v(),C.head.appendChild(L),g.push(()=>L.remove());let P=(e,t)=>{if(C.querySelectorAll("[data-cms-selected]").forEach(e=>{e.removeAttribute("data-cms-selected")}),f.selectedUid!==(e??null)&&w({selectedUid:e??null}),!e)return;let r=C.querySelector(N(e));r&&(r.setAttribute("data-cms-selected",""),t&&r.scrollIntoView({behavior:"smooth",block:"center"}))},$=e=>{let r=e.target,n=r?.closest?.(`[${t}]`);if(!n)return;e.preventDefault(),e.stopPropagation();let a=n.getAttribute(t);P(a,!1),S("select",{uid:a})};C.addEventListener("click",$,!0),g.push(()=>C.removeEventListener("click",$,!0));let M=()=>Math.ceil(Math.max(C.documentElement.scrollHeight,C.body?.scrollHeight??0)),U=0,z=()=>{U=M(),S("ready",{url:e.location.href,height:U})},O=e.ResizeObserver;if("function"==typeof O){let e=new O(()=>{let e=M();e!==U&&(U=e,S("size",{height:e}))});e.observe(C.documentElement),C.body&&e.observe(C.body),g.push(()=>e.disconnect())}let I=new Map,j=0,T=e=>{let t=I.get(e);return t?(clearTimeout(t.timer),I.delete(e),0===I.size&&w({prompting:!1}),t):null};k.prompt=(e,t={})=>{let r=e.trim();if(!r)return Promise.reject(Error("Say what to change"));if(!f.features.includes("prompt"))return Promise.reject(Error("The editor does not offer prompts here"));let n=`prompt_${++j}`,a=void 0===t.uid?f.selectedUid:t.uid;return new Promise((e,t)=>{let i=setTimeout(()=>{T(n)?.reject(Error("The editor did not answer in time"))},12e4);I.set(n,{resolve:e,reject:t,timer:i}),w({prompting:!0}),S("prompt",{id:n,prompt:r,uid:a})})},k.undo=()=>S("undo"),k.select=e=>{P(e,!1),S("select",{uid:e})};let R=null;g.push(()=>R?.destroy()),g.push(()=>{for(let e of I.keys())T(e)?.reject(Error("The bridge was destroyed"))});let D=(n=new WeakSet,a=null,o=null,s=!1,l=()=>{if(null!==a){for(let e of Array.from(C.styleSheets)){let t;if(!n.has(e)){try{t=e.cssRules}catch{continue}n.add(e),b(t,a)}}C.querySelectorAll('[style*="vh"]').forEach(e=>{h(e.style,a)})}},{freeze(e){if(null!==a||!(e>0))return;a=e,l();let t=C.defaultView?.MutationObserver;t&&(o=new t(()=>{if(s)return;s=!0;let e=()=>{s=!1,l()};C.defaultView?.requestAnimationFrame?C.defaultView.requestAnimationFrame(e):e()})).observe(C.documentElement,{childList:!0,subtree:!0})},destroy(){o?.disconnect()}});g.push(()=>D.destroy());let q=t=>{if(t.origin!==r||t.source!==e.parent)return;let n=t.data;if(n&&"obelism-content-editor"===n.source){if("connect"===n.type)z();else if("update"===n.type&&n.entry)u.emit("update",{entry:n.entry,selectedUid:n.selectedUid??null}),e.requestAnimationFrame(()=>P(n.selectedUid,!1)),R?.refresh();else if("select"===n.type)P(n.uid,!0);else if("saved"===n.type||"published"===n.type)u.emit(n.type,{}),0===u.listeners.update.size&&e.location.reload();else if("features"===n.type&&Array.isArray(n.features))w({features:n.features.filter(e=>"string"==typeof e)});else if("stats"===n.type)w({stats:A(n.stats),statsVisible:!1!==n.visible}),(R||Object.keys(f.stats).length)&&(R??(R=c(e,{selector:N,onSelect:e=>k.select(e)})),R.update(f.stats,f.statsVisible));else if("viewport"===n.type&&"number"==typeof n.height)D.freeze(n.height);else if("promptState"===n.type)w({canUndo:!0===n.canUndo});else if("promptResult"===n.type&&"string"==typeof n.id){let e=T(n.id);if(!e)return;!0===n.ok?e.resolve({summary:"string"==typeof n.summary?n.summary:""}):e.reject(Error("string"==typeof n.error?n.error:"The prompt failed"))}}};return e.addEventListener("message",q),g.push(()=>e.removeEventListener("message",q)),"loading"===C.readyState?(C.addEventListener("DOMContentLoaded",z,{once:!0}),g.push(()=>C.removeEventListener("DOMContentLoaded",z))):z(),k})(g,new URL(e||X).origin)).isEditing||g.parent!==g?null:(e=>{for(let t of e.cookie.split(";")){let[e,...r]=t.trim().split("=");if("obelism_content_editing"===e)try{let e=decodeURIComponent(r.join("="));return K.test(e)?e:null}catch{break}}return null})(g.document);if(f&&(u=((e,i,{pagePath:o=e=>`/${e.replace(/^\/+/,"")}`,productPath:l,collectionPath:d}={})=>{let p=e.document,u=y(),g=[],h=new Map,b=[],f=new Set,w=null,k=null,E=-1/0,C=new Map,S=x,L=e=>{S={...S,...e},u.emit("change",S)},P=()=>L({unsaved:[...h.values()].some(({content:e,saved:t})=>!Z(e,t)),canUndo:b.length>0,undoSteps:b.length}),$=async(t,r)=>{let n=await e.fetch(`${i}/api/${t}`,void 0===r?{credentials:"same-origin"}:{method:"POST",credentials:"same-origin",headers:{"Content-Type":"application/json","x-obelism-content":"1"},body:JSON.stringify(r)}),a=await n.json().catch(()=>({}));if(401===n.status)throw L({features:[]}),Error("You were signed out. Sign in again to edit.");if(!n.ok)throw Error("string"==typeof a.error?a.error:`Obelism Content answered ${n.status}`);return a},M=()=>p.querySelector(`[${r}]`)?.getAttribute(r)??null,U=()=>{let e=p.querySelector(`[${n}]`),t=e?.getAttribute(n),r=e?.getAttribute("data-cms-product-handle");return t&&r?{id:t,handle:r}:null},z=()=>{let e=p.querySelector(`[${a}]`),t=e?.getAttribute(a),r=e?.getAttribute("data-cms-collection-handle");return t&&r?{id:t,handle:r}:null},O=e=>{let t=e?p.querySelector(N(e)):null;return t?.closest(`[${r}]`)?.getAttribute(r)??M()},I=()=>{if(!w)return;let e=w.space.locales.map(({code:e})=>e),t=p.documentElement.lang;if(e.includes(t))return t;let r=t.split("-")[0]??"";return e.includes(r)?r:w.space.defaultLocale},j=new Map,T=async e=>{let t=h.get(e);if(t)return t;let r=j.get(e);return r||(r=$(`entries/${encodeURIComponent(e)}`).then(t=>{let r=h.get(e)??{content:t.content,saved:t.content,revision:t.draftRevision};return h.set(e,r),r}).finally(()=>j.delete(e)),j.set(e,r)),r},R=e=>{let t=void 0===e?S.selectedUid:e,r=O(t);if(!r)throw Error("Nothing on this page is marked as an entry: add editable(entry)");return{uid:t,entryId:r}},D=e=>{p.querySelectorAll("[data-cms-selected]").forEach(e=>{e.removeAttribute("data-cms-selected")}),S.selectedUid!==e&&L({selectedUid:e}),e&&p.querySelector(N(e))?.setAttribute("data-cms-selected","")},q=async t=>{if(0===u.listeners.update.size)return;let r=h.get(t)?.content,{entry:n}=await $(`entries/${encodeURIComponent(t)}/preview`,{content:r,locale:I()});u.emit("update",{entry:n,selectedUid:S.selectedUid}),e.requestAnimationFrame(()=>D(S.selectedUid))},F=e=>console.error("[@obelism/content bridge]",e),B=t=>{u.emit(t,{}),0===u.listeners.update.size&&e.location.reload()},V=async()=>{for(let[e,t]of h){if(Z(t.content,t.saved))continue;let{draftRevision:r}=await $(`entries/${encodeURIComponent(e)}/save`,{content:t.content,baseRevision:t.revision});t.saved=t.content,t.revision=r,f.add(e)}b.length=0,E=-1/0,P()},H={isEditing:!0,mode:"site",get entryId(){return M()},get product(){return U()},get collection(){return z()},get environment(){return w?.environment??null},on:u.on,getState:()=>S,async prompt(e,t={}){let r=e.trim();if(!r)throw Error("Say what to change");if(!S.features.includes("prompt"))throw Error("You may not edit content here");let{uid:n,entryId:a}=R(t.uid);L({prompting:!0});try{let e=await T(a),t=await $(`entries/${encodeURIComponent(a)}/prompt`,{prompt:r,content:e.content,locale:I(),uid:n});return b.push({entryId:a,content:e.content}),E=-1/0,e.content=t.content,P(),await q(a),{summary:t.summary}}finally{L({prompting:!1})}},async createPage(t,r){let n=r.trim();if(!n)throw Error("Say what the page is for");if(!t.trim())throw Error("Say where the page goes, like /pricing");if(!S.features.includes("create"))throw Error("You may not add pages here");if(S.unsaved)throw Error("Save or undo your changes before adding a page");L({prompting:!0});try{let r=await $("entries",{path:t,prompt:n,locale:I(),from:M()}),a=o(r.path,I()??"");return e.location.assign(J(a)),{summary:r.summary,entryId:r.entryId,path:r.path,url:a}}finally{L({prompting:!1})}},async createProductPage(t=U()??void 0){if(!t)throw Error("Nothing on this page is marked as a product: add editableProduct(product)");if(!S.features.includes("create"))throw Error("You may not add pages here");if(S.unsaved)throw Error("Save or undo your changes before adding a page");L({prompting:!0});try{let r=await $("product-pages",{product:{id:t.id,handle:t.handle}});return e.location.reload(),r}finally{L({prompting:!1})}},async createCollectionPage(t=z()??void 0){if(!t)throw Error("Nothing on this page is marked as a collection: add editableCollection(collection)");if(!S.features.includes("create"))throw Error("You may not add pages here");if(S.unsaved)throw Error("Save or undo your changes before adding a page");L({prompting:!0});try{let r=await $("collection-pages",{collection:{id:t.id,handle:t.handle}});return e.location.reload(),r}finally{L({prompting:!1})}},async view(e={}){let{uid:t,entryId:r}=R(e.uid),n=await T(r),{view:a}=await $(`entries/${encodeURIComponent(r)}/view`,{content:n.content,locale:I(),uid:t});return a},async applyJson(e,t={}){if(!S.features.includes("prompt"))throw Error("You may not edit content here");if(!e||"object"!=typeof e||Array.isArray(e))throw Error("Send the fields to change as an object");let{uid:r,entryId:n}=R(t.uid);L({prompting:!0});try{let t=await T(n),a=await $(`entries/${encodeURIComponent(n)}/apply`,{changes:e,content:t.content,locale:I(),uid:r});return Z(a.content,t.content)||(b.push({entryId:n,content:t.content}),E=-1/0,t.content=a.content,P(),await q(n)),{changed:a.changed??[],...a.view&&{view:a.view}}}finally{L({prompting:!1})}},openForm(t,r={}){let{title:n="Content form",onReady:a,onError:i,onEscape:o}=r;k?.();let s=!1,l=null,d=null,p=()=>{},c=e=>{s||i?.(e instanceof Error?e.message:String(e))},g=()=>{s||(s=!0,p(),l?.destroy(),k===g&&(k=null))};k=g;let f=()=>{if(s||!l)return;let e=O(S.selectedUid);if(!e)return;let t=h.get(e);if(!t)return void T(e).then(f,c);let r={entryId:e,content:t.content,locale:I(),selectedUid:S.selectedUid};d&&d.entryId===r.entryId&&d.content===r.content&&d.locale===r.locale&&d.selectedUid===r.selectedUid||(d=r,l.show(r))},v=(e,t)=>{let r=t??d?.entryId,n=void 0===r?void 0:h.get(r);if(s||void 0===r||!n||Z(e,n.content))return;let a=Date.now();a-E>=1e3&&b.push({entryId:r,content:n.content}),E=a,n.content=e,d?.entryId===r&&(d={...d,content:e}),P(),clearTimeout(C.get(r)),C.set(r,setTimeout(()=>{C.delete(r),q(r).catch(F)},300))};return(async()=>{if(!S.features.includes("form"))throw Error("You may not edit content here");await T(R(void 0).entryId);let{url:r}=await $("form",{});s||(l=((e,t,r,n,a)=>{let i=null;try{i=new URL(r)}catch{}if(!i||!/^https?:$/.test(i.protocol))throw Error("Obelism Content sent no form to open");let o=i.origin,s=t.ownerDocument.createElement("iframe");s.title=n,s.src=r;let l=!1,d=!1,p=null,c=()=>{l&&p&&s.contentWindow?.postMessage({source:m,type:"content",...p},o)},u=setTimeout(()=>{d||a.onError("The form did not open")},3e4),g=()=>{d=!0,clearTimeout(u),a.onReady()},h=e=>{if(e.origin!==o||!s.contentWindow||e.source!==s.contentWindow)return;let t=e.data;if(t&&"obelism-content-form"===t.source)if("ready"===t.type)l=!0,c(),!0!==t.loading&&g();else if("loaded"===t.type)l&&g();else{let e;if("change"!==t.type||!(e=t.content)||"object"!=typeof e||Array.isArray(e))if("height"===t.type){let e=t.height;if("number"==typeof e&&Number.isFinite(e)){let t=Math.round(Math.min(Math.max(e,80),4e3));s.style.height=`min(${t}px, 60vh)`}}else"escape"===t.type?a.onEscape?.():"error"===t.type&&a.onError("string"==typeof t.message&&t.message?t.message:"The form failed");else a.onChange(t.content,"string"==typeof t.entryId?t.entryId:void 0)}};return e.addEventListener("message",h),t.appendChild(s),{show(e){p=e,c()},destroy(){clearTimeout(u),e.removeEventListener("message",h),s.remove()}}})(e,t,"string"==typeof r?r:"",n,{onReady:()=>a?.(),onChange:v,onError:e=>i?.(e),onEscape:()=>o?.()}),p=u.on("change",f),f())})().catch(c),{close:g}},async pages(){let{pages:e}=await $("pages"),t=[I(),w?.space.defaultLocale];return e.flatMap(e=>{let r,n,a=t.find(t=>void 0!==t&&void 0!==e.paths[t])??Object.keys(e.paths)[0],i=void 0===a?void 0:e.paths[a];return void 0===a||void 0===i?[]:[{entryId:e.entryId,name:e.name,contentType:e.contentType,status:e.status,path:i,url:e.product?(r=e.product.handle,l?l(r,a):(w?.productPath??"/products/{handle}").replaceAll("{handle}",encodeURIComponent(r))):e.collection?(n=e.collection.handle,d?d(n,a):(w?.collectionPath??"/collections/{handle}").replaceAll("{handle}",encodeURIComponent(n))):o(i,a),product:e.product??null,collection:e.collection??null}]})},openPage(t){(!S.unsaved||e.confirm("Leave this page and lose the changes you have not saved?"))&&(h.clear(),b.length=0,P(),e.location.assign(J(t.url)))},undo(){let e=b.pop(),t=e&&h.get(e.entryId);e&&t&&(E=-1/0,t.content=e.content,P(),q(e.entryId).catch(F))},async save(){if(!S.features.includes("save"))throw Error("You may not edit content here");L({saving:!0});try{await V()}finally{L({saving:!1})}B("saved")},async publish(){if(!S.features.includes("publish"))throw Error("You may not publish here");L({publishing:!0});try{await V();let e=M(),t=f.size>0?[...f]:e?[e]:[];if(0===t.length)throw Error("Nothing on this page is marked as an entry: add editable(entry)");for(let e of t)await $(`entries/${encodeURIComponent(e)}/publish`,{}),f.delete(e)}finally{L({publishing:!1})}B("published")},signOut(){if(S.unsaved&&!e.confirm("Sign out and lose the changes you have not saved?"))return;h.clear(),P();let t=e.location.pathname+e.location.search;e.location.href=`${i}/logout?return_to=${encodeURIComponent(t)}`},select(e){D(e)},setSelecting(e){e?p.documentElement.setAttribute("data-cms-selecting",""):p.documentElement.removeAttribute("data-cms-selecting"),L({selecting:e,statsVisible:e}),et()},destroy(){k?.(),C.forEach(e=>clearTimeout(e)),C.clear(),g.splice(0).forEach(e=>e())}},_=p.createElement("style");_.textContent=v("html[data-cms-selecting] "),p.head.appendChild(_),g.push(()=>_.remove()),g.push(()=>p.documentElement.removeAttribute("data-cms-selecting"));let W=e=>{if(!S.selecting)return;let r=e.target,n=r?.closest?.(`[${t}]`);n&&(e.preventDefault(),e.stopPropagation(),D(n.getAttribute(t)))};p.addEventListener("click",W,!0),g.push(()=>p.removeEventListener("click",W,!0));let Y=e=>{S.unsaved&&(e.preventDefault(),e.returnValue="")};e.addEventListener("beforeunload",Y),g.push(()=>e.removeEventListener("beforeunload",Y));let X=new Set,K=new Set,G=!1,Q=null,ee=null,et=()=>Q?.update(S.stats,S.statsVisible),er=async()=>{if(G)return;let t=[...new Set([...p.querySelectorAll(`[${s}]`)].map(e=>e.getAttribute(s)??""))].filter(e=>e&&!X.has(e)),n=t.slice(0,500);if(!n.length)return;n.forEach(e=>X.add(e));let a=[...new Set([...p.querySelectorAll(`[${r}]`)].map(e=>e.getAttribute(r)??""))].filter(Boolean).slice(0,20);try{let{stats:e}=await $("stats",{uids:n,...a.length>0&&{entries:a}});n.forEach(e=>K.add(e)),L({stats:{...S.stats,...A(e)}})}catch{G=!0;return}Q??(Q=c(e,{selector:N,onSelect:e=>D(e),checked:e=>K.has(e)})),et(),t.length>n.length&&en()},en=()=>{null!==ee||G||(ee=setTimeout(()=>{ee=null,er()},1e3))},ea=e.MutationObserver,ei="function"==typeof ea?new ea(en):null;return g.push(()=>{ei?.disconnect(),null!==ee&&clearTimeout(ee),Q?.destroy()}),$("session").then(e=>{w=e,L({features:e.features}),er(),ei?.observe(p.body,{childList:!0,subtree:!0})}).catch(e=>console.error("[@obelism/content bridge]",e)),H})(g,f,{pagePath:l,productPath:d,collectionPath:p})),u.isEditing&&o){let e=g.document,t=()=>{},r=!1,n=f?en:Y,a=()=>{r||(t=n(e,u,!0===o?{}:o))};e.body?a():e.addEventListener("DOMContentLoaded",a,{once:!0});let i=u.destroy;u.destroy=()=>{r=!0,e.removeEventListener("DOMContentLoaded",a),t(),i()}}}return g[ea]=u,u};(e=window).ObelismBridge=eo((e=>{let t=e?.dataset.url,r=t||X;if(!t&&e?.src){let t=new URL(e.src);"/bridge.js"===t.pathname&&(r=t.origin)}return{url:r,prompt:e?.dataset.prompt!=="false"}})(document.currentScript)),e.ObelismContent={getContentBridge:eo,mountPromptBox:Y,mountSiteEditor:en}}();
package/dist/bridge.js CHANGED
@@ -1995,6 +1995,7 @@ const mountFormFrame = (win, container, url, title, handlers)=>{
1995
1995
  // to one.
1996
1996
  // The CMS's limit on ids in one stats request.
1997
1997
  const MAX_STATS_IDS = 500;
1998
+ const MAX_STATS_ENTRIES = 20;
1998
1999
  // After the page changes, before asking for the ids it newly tags.
1999
2000
  const STATS_DELAY_MS = 1000;
2000
2001
  // Plain path segments only: the URL parser drops tabs and newlines and reads
@@ -2638,9 +2639,18 @@ const createSiteBridge = (win, basePath, { pagePath = (path)=>`/${path.replace(/
2638
2639
  const batch = ids.slice(0, MAX_STATS_IDS);
2639
2640
  if (!batch.length) return;
2640
2641
  batch.forEach((id)=>asked.add(id));
2642
+ // So a draft's copy of a live block gets the live one's clicks.
2643
+ const entries = [
2644
+ ...new Set([
2645
+ ...doc.querySelectorAll(`[${preview.ENTRY_ATTRIBUTE}]`)
2646
+ ].map((element)=>element.getAttribute(preview.ENTRY_ATTRIBUTE) ?? ''))
2647
+ ].filter(Boolean).slice(0, MAX_STATS_ENTRIES);
2641
2648
  try {
2642
2649
  const { stats } = await api('stats', {
2643
- uids: batch
2650
+ uids: batch,
2651
+ ...entries.length > 0 && {
2652
+ entries
2653
+ }
2644
2654
  });
2645
2655
  batch.forEach((id)=>answered.add(id));
2646
2656
  setState({
package/dist/bridge.mjs CHANGED
@@ -1993,6 +1993,7 @@ const mountFormFrame = (win, container, url, title, handlers)=>{
1993
1993
  // to one.
1994
1994
  // The CMS's limit on ids in one stats request.
1995
1995
  const MAX_STATS_IDS = 500;
1996
+ const MAX_STATS_ENTRIES = 20;
1996
1997
  // After the page changes, before asking for the ids it newly tags.
1997
1998
  const STATS_DELAY_MS = 1000;
1998
1999
  // Plain path segments only: the URL parser drops tabs and newlines and reads
@@ -2636,9 +2637,18 @@ const createSiteBridge = (win, basePath, { pagePath = (path)=>`/${path.replace(/
2636
2637
  const batch = ids.slice(0, MAX_STATS_IDS);
2637
2638
  if (!batch.length) return;
2638
2639
  batch.forEach((id)=>asked.add(id));
2640
+ // So a draft's copy of a live block gets the live one's clicks.
2641
+ const entries = [
2642
+ ...new Set([
2643
+ ...doc.querySelectorAll(`[${ENTRY_ATTRIBUTE}]`)
2644
+ ].map((element)=>element.getAttribute(ENTRY_ATTRIBUTE) ?? ''))
2645
+ ].filter(Boolean).slice(0, MAX_STATS_ENTRIES);
2639
2646
  try {
2640
2647
  const { stats } = await api('stats', {
2641
- uids: batch
2648
+ uids: batch,
2649
+ ...entries.length > 0 && {
2650
+ entries
2651
+ }
2642
2652
  });
2643
2653
  batch.forEach((id)=>answered.add(id));
2644
2654
  setState({
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@obelism/content",
3
3
  "description": "Obelism Content SDK: the delivery API client, the visual editor bridge with prompt editing, editing on your own site, webhook verification, and the content model CLI",
4
- "version": "0.28.1",
4
+ "version": "0.28.2",
5
5
  "keywords": [
6
6
  "cms",
7
7
  "headless-cms",