@panphora/clayjs 0.4.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/src/core/admin-contenteditable.js +4 -3
- package/src/core/admin-inputs.js +5 -3
- package/src/core/admin-onclick.js +4 -3
- package/src/core/admin-resources.js +8 -4
- package/src/core/is-edit-mode.js +3 -2
- package/src/core/save.js +16 -3
- package/src/core/snapshot.js +59 -4
- package/src/lib/dirty-gate.js +152 -0
- package/src/lib/root-attrs.js +5 -1
- package/src/sync/live-sync.js +440 -38
- package/src/sync/splice-merge.js +259 -0
- package/src/vendor/hyper-morph.vendor.js +4 -2
- package/src/vendor/hypercms.vendor.js +14 -14
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
var hypercms=(()=>{var
|
|
2
|
-
`;)t++;continue}if(e[t]==="/"&&e[t+1]==="*"){let r=e.indexOf("*/",t+2);if(r===-1)return e.length;t=r+2;continue}return t}}function vr(e){return e.replace(/\\'/g,"'").replace(/(\\*)"/g,(t,r)=>r.length%2===0?r+'\\"':t)}var ei=/^-?(0|[1-9]\d*)(\.\d+)?([eE][+-]?\d+)?$/,ti=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function Ge(e){try{return JSON.parse(e)}catch{return JSON.parse(ri(e))}}function ri(e){let t="",r=0,n=(i,o)=>{throw new Error(`Invalid relaxed JSON: ${i} at position ${o}`)};for(;r<e.length&&(r=Rt(e,r),!(r>=e.length));){let i=e[r];if("{}[]:".includes(i)){t+=i,r++;continue}if(i===","){let s=Rt(e,r+1);if(e[s]==="}"||e[s]==="]"){r++;continue}t+=i,r++;continue}if(i==='"'||i==="'"){let s=r+1;for(;s<e.length&&e[s]!==i;)e[s]==="\\"&&s++,s++;s>=e.length&&n("unterminated string",r);let l=e.slice(r+1,s);i==="'"&&(l=vr(l)),t+='"'+l+'"',r=s+1;continue}let o=r;for(;o<e.length&&/[A-Za-z0-9_$.+\-]/.test(e[o]);)o++;o===r&&n("unexpected character "+JSON.stringify(i),r);let a=e.slice(r,o);if(a==="true"||a==="false"||a==="null"||ei.test(a)){t+=a,r=o;continue}if(ti.test(a)){if(e[Rt(e,o)]===":"){t+='"'+a+'"',r=o;continue}n("unquoted value "+JSON.stringify(a),r)}n("invalid token "+JSON.stringify(a),r)}return t}function xr(e){try{return JSON.parse(e)}catch{}let t={BRACE_OPEN:"{",BRACE_CLOSE:"}",BRACKET_OPEN:"[",BRACKET_CLOSE:"]",COLON:":",COMMA:",",STRING:"STRING",SELECTOR:"SELECTOR",IDENTIFIER:"IDENTIFIER",NUMBER:"NUMBER",BOOLEAN:"BOOLEAN"};function r(i){let o=[],a=0;for(;a<i.length;){let s=i[a];if(/\s/.test(s)){a++;continue}if("{}".includes(s)){o.push({type:s,value:s}),a++;continue}if(s==="["){let p=!1,d=a+1;for(;d<i.length&&/\s/.test(i[d]);)d++;if(d<i.length&&/[a-zA-Z_]/.test(i[d])&&(p=!0),!p){o.push({type:s,value:s}),a++;continue}}if(s==="]"){o.push({type:s,value:s}),a++;continue}if(s===":"){o.push({type:t.COLON,value:s}),a++;continue}if(s===","){o.push({type:t.COMMA,value:s}),a++;continue}if(s==='"'||s==="'"){let p=s,d=a+1;for(;d<i.length&&i[d]!==p;)i[d]==="\\"&&d++,d++;o.push({type:t.STRING,value:i.substring(a+1,d),quoted:!0,sourceQuote:p}),a=d+1;continue}let l=a,c;for(;l<i.length&&!/[{},]/.test(i[l]);)if(i[l]===":"){let p=[":first",":last",":nth-child",":nth-of-type",":first-child",":last-child",":first-of-type",":last-of-type",":only-child",":only-of-type",":hover",":focus",":active",":visited",":disabled",":enabled",":checked",":empty",":root",":target",":not",":before",":after",":nth-last-child",":nth-last-of-type"],d=!1;for(let f of p){let k=f.substring(1);if(i.substring(l+1,l+1+k.length)===k){d=!0,l+=k.length;break}}if(!d)break}else if(i[l]==="["){for(l++;l<i.length&&i[l]!=="]";){if(i[l]==='"'||i[l]==="'"){let p=i[l];for(l++;l<i.length&&i[l]!==p;)i[l]==="\\"&&l++,l++}l++}l<i.length&&i[l]==="]"&&l++}else l++;c=i.substring(a,l);let m=t.IDENTIFIER;/^-?\d+(\.\d+)?$/.test(c)?m=t.NUMBER:c==="true"||c==="false"||c==="null"?m=t.BOOLEAN:/^[.#@\[]|[.#@\[]| /.test(c)&&(m=t.SELECTOR),o.push({type:m,value:c,quoted:!1}),a=l}return o}function n(i){let o="";for(let a=0;a<i.length;a++){let s=i[a];if("{}".includes(s.type)||"[]".includes(s.type)){o+=s.value;continue}if(s.type===t.COLON){o+=s.value;continue}if(s.type===t.COMMA){let l=i[a+1];if(l&&(l.type==="}"||l.type==="]"))continue;o+=s.value;continue}if(s.type===t.STRING){let l=s.value;s.sourceQuote==="'"&&(l=vr(l)),o+=`"${l}"`;continue}if(s.type===t.NUMBER||s.type===t.BOOLEAN){o+=s.value;continue}o+=`"${s.value}"`}return o}try{let i=r(e),o=n(i);return JSON.parse(o)}catch(i){throw new Error("Invalid extraction rules syntax: "+i.message)}}var $=Symbol("hyper-morph-json-merge:missing"),wr=["id","_id","uuid","key","slug","code","name"];function ke(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ne(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function ni(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:!0,writable:!0,configurable:!0})}function ce(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!ce(e[r],t[r]))return!1;return!0}if(ke(e)&&ke(t)){let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n of r)if(!Ne(t,n)||!ce(e[n],t[n]))return!1;return!0}return!1}function _r(e,t,r,n){return ce(t,r)?t:ce(t,e)?r:ce(r,e)?t:ke(t)&&ke(r)?ii(ke(e)?e:{},t,r,n):Array.isArray(t)&&Array.isArray(r)?li(Array.isArray(e)?e:[],t,r,n):r}function Ar(e,t,r,n){return t===$&&r===$?$:t===$?e===$?r:ce(r,e)?$:r:r===$?e===$?t:$:_r(e,t,r,n)}function ii(e,t,r,n){let i={},o=new Set([...Object.keys(e),...Object.keys(t),...Object.keys(r)]);for(let a of o){let s=Ar(Ne(e,a)?e[a]:$,Ne(t,a)?t[a]:$,Ne(r,a)?r[a]:$,n);s!==$&&ni(i,a,s)}return i}function oi(e){return e===null||typeof e!="object"}function Je(e){return typeof e+":"+String(e)}function si(e,t){for(let r of t){let n=new Set;for(let i of r){if(!Ne(i,e))return!1;let o=i[e];if(typeof o!="string"&&typeof o!="number")return!1;let a=Je(o);if(n.has(a))return!1;n.add(a)}}return!0}function ai(e,t,r,n){let i=[e,t,r],o=!0;for(let a of i)for(let s of a)ke(s)||(o=!1);if(o){for(let a of n.keyCandidates)if(si(a,i))return{kind:"keyed",field:a};return null}for(let a of i){let s=new Set;for(let l of a){if(!oi(l))return null;let c=Je(l);if(s.has(c))return null;s.add(c)}}return{kind:"self"}}function li(e,t,r,n){let i=ai(e,t,r,n);if(!i)return r;let o=i.kind==="self"?Je:f=>Je(f[i.field]),a=f=>{let k=new Map;for(let R of f)k.set(o(R),R);return k},s=a(e),l=a(t),c=a(r),m=new Map,p=new Set([...s.keys(),...l.keys(),...c.keys()]);for(let f of p){let k=Ar(s.has(f)?s.get(f):$,l.has(f)?l.get(f):$,c.has(f)?c.get(f):$,n);k!==$&&m.set(f,k)}let d=[];for(let f of r){let k=o(f);m.has(k)&&d.push(k)}for(let f=0;f<t.length;f++){let k=o(t[f]);if(!m.has(k)||d.includes(k))continue;let R=0;for(let O=f-1;O>=0;O--){let F=d.indexOf(o(t[O]));if(F!==-1){R=F+1;break}}d.splice(R,0,k)}return d.map(f=>m.get(f))}function Tt(e,t,r,n={}){let i=n.keyCandidates?[...n.keyCandidates,...wr]:wr;return _r(e===void 0?$:e,t,r,{keyCandidates:i})}function Mt(e,t,r,n={}){let i=n.parse||Ge,o=[],a=(p,d)=>{if(typeof p!="string")return $;try{return i(p)}catch(f){return o.push(`${d} side is not valid JSON (${f.message})`),$}},s=a(t,"local"),l=a(r,"remote");if(s===$)return{text:r,warnings:o};if(l===$)return{text:t,warnings:o};let c=a(e,"base"),m=Tt(c===$?void 0:c,s,l,n);return ce(m,l)?{text:r,warnings:o}:ce(m,s)?{text:t,warnings:o}:{text:JSON.stringify(m,null,2),warnings:o}}var Ot=(function(){"use strict";let e=()=>{},t='[save-ignore],[snapshot-remove],[no-snapshot],[no-save],[save-remove],[freeze],[save-freeze],[clay~="no-save"],[clay~="no-snapshot"],[clay~="freeze"]';function r(v){if(!(v instanceof Element))return!1;if(v.matches(t))return!0;if(v.tagName==="LINK"||v.tagName==="SCRIPT"){let E=v.getAttribute("src")||v.getAttribute("href")||"";if(E.startsWith("chrome-extension://")||E.startsWith("moz-extension://")||E.startsWith("safari-web-extension://"))return!0}return!1}function n(v){return v instanceof Element?v.closest(t)?!0:r(v):!1}let i=yr({shouldIgnore:n});function o(v,E,S){if(S){let N=S.identityOf(v);if(N&&!S.disabled.has(N.key))return"hm-merge:"+N.key}if(E!=="smart")return v.outerHTML;let M=v.getAttribute("src"),C=v.getAttribute("type")||"text/javascript";if(M)try{let N=new URL(M,window.location.href);return`ext:${C}:${N.origin}${N.pathname}${N.search}`}catch{return`ext:${C}:${M}`}else{let N=v.textContent.trim(),y=5381;for(let A=0;A<N.length;A++)y=(y<<5)+y^N.charCodeAt(A);return`inline:${C}:${Math.abs(y).toString(36)}`}}let a="http://www.w3.org/1999/xhtml";function s(v){return v instanceof Element&&v.tagName==="SCRIPT"&&v.namespaceURI===a}function l(v){let E=document.createElement("div");E.innerHTML="<script><\/script>";let S=E.firstChild;for(let M of v.attributes)S.setAttribute(M.name,M.value);return S.textContent=v.textContent,S}function c(v){if(s(v))return l(v);if(v instanceof Element)for(let E of v.querySelectorAll("script"))s(E)&&E.replaceWith(l(E));return v}function m(v){let E=(v.getAttribute("type")||"").split(";")[0].trim().toLowerCase();return E==="application/json"||E.endsWith("+json")}let p={match:v=>v.hasAttribute("merge"),identity:v=>v.getAttribute("merge")};function d(v,E,S){if(S.merge===!1)return null;let M=[p,...S.mergeTags||[]],C=new WeakMap,N=g=>{if(C.has(g))return C.get(g);let w=null;if(s(g)&&!g.getAttribute("src")&&!n(g)){let _=g;for(let T=0;T<M.length;T++)if(M[T].match(_)){if(!m(_))console.warn("[hyper-morph] merge ignored: script type is not JSON",_);else{let L=M[T].identity(_);L!=null&&L!==""&&(w={key:T+":"+L,raw:L,recognizer:M[T]})}break}}return C.set(g,w),w},y=new Set,A=g=>{let w=new Map,_=T=>{let L=N(T);L&&(w.has(L.key)?(y.add(L.key),console.warn(`[hyper-morph] merge disabled for duplicate identity "${L.raw}"`)):w.set(L.key,T))};s(g)&&_(g);for(let T of g.querySelectorAll("script"))_(T);return w},b=A(v),h=A(E.__hyperMorphRoot||E);if(b.size===0&&h.size===0)return null;let u=null;return{identityOf:N,disabled:y,oldByKey:b,newByKey:h,baseTexts:()=>{if(u)return u;u=new Map;let g=S.mergeBase;if(!g)return u;let w;typeof g=="string"?w=new DOMParser().parseFromString(g,"text/html").documentElement:g instanceof Document?w=g.documentElement:w=g;let _=T=>{let L=N(T);L&&!u.has(L.key)&&u.set(L.key,T.textContent)};s(w)&&_(w);for(let T of w.querySelectorAll("script"))_(T);return u}}}function f(v,E,S){let M=v.merge;if(!M)return!1;let C=M.identityOf(E);if(!C||M.disabled.has(C.key))return!1;let N=M.identityOf(S);if(!N||N.key!==C.key)return!1;let y=E,A=S,b=A.getAttribute("merge-key")||y.getAttribute("merge-key"),{text:h,warnings:u}=Mt(M.baseTexts().get(C.key),y.textContent,A.textContent,{parse:C.recognizer.parse,keyCandidates:b?b.split(/[\s,]+/).filter(Boolean):void 0});for(let x of u)console.warn(`[hyper-morph] merge "${C.raw}": ${x}`);return y.textContent!==h&&(y.textContent=h),!0}let k={morphStyle:"outerHTML",callbacks:{beforeNodeAdded:e,afterNodeAdded:e,beforeNodeMorphed:e,afterNodeMorphed:e,beforeNodeRemoved:e,afterNodeRemoved:e,beforeAttributeUpdated:e},head:{style:"merge",shouldPreserve:v=>v.getAttribute("im-preserve")==="true",shouldReAppend:v=>v.getAttribute("im-re-append")==="true",shouldRemove:e,afterHeadMorphed:e},scripts:{handle:!0,matchMode:"outerHTML",shouldPreserve:v=>v.getAttribute("im-preserve")==="true",shouldReAppend:v=>v.getAttribute("im-re-append")==="true",shouldRemove:e,afterScriptsHandled:e},restoreFocus:!0},R={computeMatches(v,E){let{computeMatches:S}=i.session();return S(v,E)}};function O(v,E,S={}){v=Ln(v);let M=cr(E),C=jn(v,M,S),N=C.scripts.handle?new Set(Array.from(v.querySelectorAll("script")).map(h=>o(h,C.scripts.matchMode,C.merge))):null,y=V(C),A=U(C,v,M,h=>h.morphStyle==="innerHTML"?(j(h,v,M),Array.from(v.childNodes)):J(h,v,M)),b=h=>{y&&Q(C,y),F(C);let u=N?wt(h,N,C):[];return u.length>0?Promise.all(u).then(()=>h):h};return A instanceof Promise?A.then(b):b(A)}function F(v){for(let E of Array.from(v.pantry.childNodes))v.callbacks.beforeNodeRemoved(E)!==!1&&v.callbacks.afterNodeRemoved(E);v.pantry.remove()}function J(v,E,S){let M=cr(E);return j(v,M,S,E,E.nextSibling),Array.from(M.childNodes)}function V(v){if(!v.config.restoreFocus)return null;let E=document.activeElement;if(!(E instanceof HTMLInputElement||E instanceof HTMLTextAreaElement))return null;let{id:S,selectionStart:M,selectionEnd:C}=E;return{element:E,id:S,selectionStart:M,selectionEnd:C}}function Q(v,E){let S=E.element;if(E.id&&E.id!==document.activeElement?.getAttribute("id")&&(S=v.target.querySelector(`[id="${CSS.escape(E.id)}"]`),S?.focus()),S&&!S.selectionEnd&&E.selectionEnd!=null)try{S.setSelectionRange(E.selectionStart,E.selectionEnd)}catch{}}let j=(function(){function v(h,u,x,g=null,w=null){u instanceof HTMLTemplateElement&&x instanceof HTMLTemplateElement&&(u=u.content,x=x.content),g||=u.firstChild;for(let _ of x.childNodes){if(r(_))continue;if(g&&g!=w){let L=S(h,_,g,w);if(L){L!==g&&C(h,g,L),G(L,_,h),g=L.nextSibling;continue}}if(_ instanceof Element){let L=_.getAttribute("id");if(h.persistentIds.has(L)){let D=N(u,L,g,h);G(D,_,h),g=D.nextSibling;continue}if(!h.idMap.has(_)){let D=h.hyperMatches.get(_);if(D&&!h.idMap.has(D)&&!b(D,u)){A(u,D,g),G(D,_,h),g=D.nextSibling;continue}}}let T=E(u,_,g,h);T&&(g=T.nextSibling)}for(;g&&g!=w;){let _=g;g=g.nextSibling,r(_)||M(h,_)}}function E(h,u,x,g){if(g.callbacks.beforeNodeAdded(u)===!1)return null;if(g.idMap.has(u)){let w=u,_=document.createElementNS(w.namespaceURI,w.localName);return h.insertBefore(_,x),G(_,u,g),g.callbacks.afterNodeAdded(_),_}else{let w=c(document.importNode(u,!0));return h.insertBefore(w,x),g.callbacks.afterNodeAdded(w),w}}let S=(function(){function h(g,w,_,T){let L=w instanceof Element&&!g.idMap.has(w)?g.hyperMatches.get(w):null,D=null,H=w.nextSibling,te=0,q=_;for(;q&&q!=T;){if(r(q)){q=q.nextSibling;continue}if(x(q,w)){if(u(g,q,w)||q===L&&!g.idMap.has(q))return q;if(D===null){let Y=q instanceof Element&&g.hyperMatchedOldElements.has(q);!g.idMap.has(q)&&!Y&&(D=q)}}if(D===null&&H&&x(q,H)&&(te++,H=H.nextSibling,te>=2&&(D=void 0)),g.activeElementAndParents.includes(q))break;q=q.nextSibling}return D||null}function u(g,w,_){let T=g.idMap.get(w),L=g.idMap.get(_);if(!L||!T)return!1;for(let D of T)if(L.has(D))return!0;return!1}function x(g,w){let _=g,T=w;return _.nodeType===T.nodeType&&_.tagName===T.tagName&&(!_.getAttribute?.("id")||_.getAttribute?.("id")===T.getAttribute?.("id"))}return h})();function M(h,u){let x=u instanceof Element&&h.hyperMatchedOldElements.has(u)&&!h.idMap.has(u);if(h.idMap.has(u)||x)A(h.pantry,u,null);else{if(h.callbacks.beforeNodeRemoved(u)===!1)return;u.parentNode?.removeChild(u),h.callbacks.afterNodeRemoved(u)}}function C(h,u,x){let g=u;for(;g&&g!==x;){let w=g;g=g.nextSibling,r(w)||M(h,w)}return g}function N(h,u,x,g){let w=g.target.getAttribute?.("id")===u&&g.target||g.target.querySelector(`[id="${CSS.escape(u)}"]`)||g.pantry.querySelector(`[id="${CSS.escape(u)}"]`);return y(w,g),A(h,w,x),w}function y(h,u){let x=h.getAttribute("id");for(;h=h.parentNode;){let g=u.idMap.get(h);g&&(g.delete(x),g.size||u.idMap.delete(h))}}function A(h,u,x){if(h.moveBefore)try{h.moveBefore(u,x)}catch{h.insertBefore(u,x)}else h.insertBefore(u,x)}function b(h,u){let x=u instanceof Element?u:u.realParentNode;return!!x&&h.contains(x)}return v})(),G=(function(){function v(y,A,b){return b.ignoreActive&&y===document.activeElement?null:(b.callbacks.beforeNodeMorphed(y,A)===!1||(y instanceof HTMLHeadElement&&b.head.ignore||(y instanceof HTMLHeadElement&&b.head.style!=="morph"?ae(y,A,b):(E(y,A,b),f(b,y,A)||N(y,b)||j(b,y,A))),b.callbacks.afterNodeMorphed(y,A)),y)}function E(y,A,b){let h=A.nodeType;if(h===1){let u=y,x=A,g=u.attributes,w=x.attributes;for(let _ of w)C(_.name,u,"update",b)||u.getAttribute(_.name)!==_.value&&u.setAttribute(_.name,_.value);for(let _=g.length-1;0<=_;_--){let T=g[_];if(T&&!x.hasAttribute(T.name)){if(C(T.name,u,"remove",b))continue;u.removeAttribute(T.name)}}N(u,b)||S(u,x,b)}(h===8||h===3)&&y.nodeValue!==A.nodeValue&&(y.nodeValue=A.nodeValue)}function S(y,A,b){if(y instanceof HTMLInputElement&&A instanceof HTMLInputElement&&A.type!=="file"){let h=A.value,u=y.value;M(y,A,"checked",b),M(y,A,"disabled",b),b.formStateSync==="property"&&y.indeterminate!==A.indeterminate&&(y.indeterminate=A.indeterminate),b.formStateSync==="property"?u!==h&&(C("value",y,"update",b)||(y.value=h)):A.hasAttribute("value")?u!==h&&(C("value",y,"update",b)||(y.setAttribute("value",h),y.value=h)):C("value",y,"remove",b)||(y.value="",y.removeAttribute("value"))}else if(y instanceof HTMLOptionElement&&A instanceof HTMLOptionElement)M(y,A,"selected",b);else if(y instanceof HTMLTextAreaElement&&A instanceof HTMLTextAreaElement){let h=A.value,u=y.value;if(C("value",y,"update",b)||(h!==u&&(y.value=h),b.formStateSync==="property"))return;y.firstChild&&y.firstChild.nodeValue!==h&&(y.firstChild.nodeValue=h)}}function M(y,A,b,h){let u=A[b],x=y[b];if(u!==x){let g=C(b,y,"update",h);if(g||(y[b]=A[b]),h.formStateSync==="property")return;u?g||y.setAttribute(b,""):C(b,y,"remove",h)||y.removeAttribute(b)}}function C(y,A,b,h){return y==="value"&&h.ignoreActiveValue&&A===document.activeElement?!0:h.callbacks.beforeAttributeUpdated(y,A,b)===!1}function N(y,A){return!!A.ignoreActiveValue&&y===document.activeElement&&y!==document.body}return v})();function U(v,E,S,M){if(v.head.block){let C=E.querySelector("head"),N=S.querySelector("head");if(C&&N){let y=ae(C,N,v);return Promise.all(y).then(()=>(v.head.block=!1,v.head.ignore=!0,M(v)))}}return M(v)}function se(v){return v.tagName==="SCRIPT"?!!v.getAttribute("src"):v.tagName==="LINK"?(v.getAttribute("rel")||"").toLowerCase().split(/\s+/).includes("stylesheet")&&!!v.getAttribute("href"):!1}function ae(v,E,S){let M=[],C=[],N=[],y=[],A=S.scripts.matchMode,b=x=>{if(x.tagName==="SCRIPT")return o(x,A,S.merge);if(x.tagName==="LINK"&&A==="smart"){let g=x.getAttribute("href");if(g)try{let w=new URL(g,window.location.href);return`link:${x.getAttribute("rel")||""}:${w.origin}${w.pathname}${w.search}`}catch{}}return x.outerHTML},h=new Map;for(let x of E.children){if(r(x))continue;let g=b(x),w=h.get(g);w||(w=[],h.set(g,w)),w.push(x)}for(let x of v.children){let g=b(x),w=h.get(g),_=!!(w&&w.length),T=S.head.shouldReAppend(x),L=S.head.shouldPreserve(x);if(_||L)if(T)C.push(x);else{if(w&&w.length){let D=w.pop();w.length||h.delete(g),f(S,x,D)}N.push(x)}else S.head.style==="append"?T&&(C.push(x),y.push(x)):S.head.shouldRemove(x)!==!1&&!r(x)&&C.push(x)}for(let x of h.values())y.push(...x);let u=[];for(let x of y){let g=document.createRange().createContextualFragment(x.outerHTML).firstChild;if(S.callbacks.beforeNodeAdded(g)!==!1){if(g instanceof Element&&se(g)){let w,_=new Promise(function(T){w=T});g.addEventListener("load",function(){w()}),g.addEventListener("error",function(){w()}),u.push(_)}v.appendChild(g),S.callbacks.afterNodeAdded(g),M.push(g)}}for(let x of C)S.callbacks.beforeNodeRemoved(x)!==!1&&(v.removeChild(x),S.callbacks.afterNodeRemoved(x));return S.head.afterHeadMorphed(v,{added:M,kept:N,removed:C}),u}function wt(v,E,S){if(!S.scripts.handle)return[];let M=[],C=[],N=[],y=[],A=S.scripts.matchMode,b=[];for(let u of v)if(u instanceof Element){s(u)&&b.push(u);for(let x of u.querySelectorAll("script"))s(x)&&b.push(x)}for(let u of b){if(u.closest("head")||n(u))continue;let x=o(u,A,S.merge),g=E.has(x),w=S.scripts.shouldPreserve(u),_=S.scripts.shouldReAppend(u);g||w?_?(C.push(u),y.push(u)):N.push(u):y.push(u)}let h=[];for(let u of y){if(S.callbacks.beforeNodeAdded(u)===!1)continue;let x=document.createElement("script");for(let g of u.attributes)x.setAttribute(g.name,g.value);if(x.textContent=u.textContent,x.src){let g,w=new Promise(function(_){g=_});x.addEventListener("load",function(){g()}),x.addEventListener("error",function(){g()}),h.push(w)}u.replaceWith(x),S.callbacks.afterNodeAdded(x),M.push(x)}return S.scripts.afterScriptsHandled(S.target,{added:M,kept:N,removed:C}),h}let jn=(function(){function v(b,h,u){let{persistentIds:x,idMap:g}=y(b,h),w=R.computeMatches(b,h);if(typeof u.key=="function"){let H=new Map,te=new Set,q=B=>{let P=u.key(B);P!=null&&(H.has(P)?te.add(P):H.set(P,B))};b instanceof Element&&q(b);for(let B of b.querySelectorAll("*"))q(B);for(let B of te)H.delete(B);let Y=new Map;for(let[B,P]of w)Y.set(P,B);let ue=h.__hyperMorphRoot||h,le=new Map,dr=new Set,mr=B=>{let P=u.key(B);P!=null&&(le.has(P)?dr.add(P):le.set(P,B))};ue instanceof Element&&mr(ue);for(let B of ue.querySelectorAll("*"))mr(B);for(let B of dr)le.delete(B);for(let[B,P]of le){let be=H.get(B);if(!be||be.tagName!==P.tagName)continue;let _t=Y.get(be);_t&&_t!==P&&w.delete(_t);let At=w.get(P);At&&At!==be&&Y.delete(At),w.set(P,be),Y.set(be,P)}}let _=E(u),T=d(b,h,_.scripts);if(T){let H=new Map;for(let[te,q]of w)H.set(q,te);for(let[te,q]of T.newByKey){if(T.disabled.has(te))continue;let Y=T.oldByKey.get(te);if(!Y)continue;let ue=H.get(Y);ue&&ue!==q&&w.delete(ue);let le=w.get(q);le&&le!==Y&&H.delete(le),w.set(q,Y),H.set(Y,q)}}let L=new Set;for(let H of w.values())L.add(H);let D=_.morphStyle||"outerHTML";if(!["innerHTML","outerHTML"].includes(D))throw new Error(`Do not understand how to morph style ${D}`);return{target:b,newContent:h,config:_,morphStyle:D,ignoreActive:_.ignoreActive,ignoreActiveValue:_.ignoreActiveValue,restoreFocus:_.restoreFocus,formStateSync:_.formStateSync||"attribute",idMap:g,persistentIds:x,hyperMatches:w,hyperMatchedOldElements:L,merge:T,pantry:S(),activeElementAndParents:M(b),callbacks:_.callbacks,head:_.head,scripts:_.scripts}}function E(b){let h=Object.assign({},k);return Object.assign(h,b),h.callbacks=Object.assign({},k.callbacks,b.callbacks),h.head=Object.assign({},k.head,b.head),h.scripts=Object.assign({},k.scripts,b.scripts),h}function S(){let b=document.createElement("div");return b.hidden=!0,document.body.insertAdjacentElement("afterend",b),b}function M(b){let h=[],u=document.activeElement;if(u?.tagName!=="BODY"&&b.contains(u))for(;u&&(h.push(u),u!==b);)u=u.parentElement;return h}function C(b){let h=Array.from(b.querySelectorAll("[id]"));return b.getAttribute?.("id")&&h.push(b),h}function N(b,h,u,x){for(let g of x){let w=g.getAttribute("id");if(h.has(w)){let _=g;for(;_;){let T=b.get(_);if(T==null&&(T=new Set,b.set(_,T)),T.add(w),_===u)break;_=_.parentElement}}}}function y(b,h){let u=C(b),x=C(h),g=A(u,x),w=new Map;N(w,g,b,u);let _=h.__hyperMorphRoot||h;return N(w,g,_,x),{persistentIds:g,idMap:w}}function A(b,h){let u=new Set,x=new Map;for(let w of b){let _=w.getAttribute("id");x.has(_)?u.add(_):x.set(_,w.tagName)}let g=new Set;for(let w of h){let _=w.getAttribute("id");g.has(_)?u.add(_):x.get(_)===w.tagName&&g.add(_)}for(let w of u)g.delete(w);return g}return v})(),{normalizeElement:Ln,normalizeParent:cr}=(function(){let v=new WeakSet;function E(y){return y instanceof Document?y.documentElement:y}function S(y){if(y==null)return document.createElement("div");if(typeof y=="string")return S(N(y));if(v.has(y))return y;if(y instanceof Node){if(y.parentNode)return new M(y);{let A=document.createElement("div");return A.append(y),A}}else{let A=document.createElement("div");for(let b of[...y])A.append(b);return A}}class M{constructor(A){this.originalNode=A,this.realParentNode=A.parentNode,this.previousSibling=A.previousSibling,this.nextSibling=A.nextSibling}get childNodes(){let A=[],b=this.previousSibling?this.previousSibling.nextSibling:this.realParentNode.firstChild;for(;b&&b!=this.nextSibling;)A.push(b),b=b.nextSibling;return A}querySelectorAll(A){return this.childNodes.reduce((b,h)=>{if(h instanceof Element){h.matches(A)&&b.push(h);let u=h.querySelectorAll(A);for(let x=0;x<u.length;x++)b.push(u[x])}return b},[])}insertBefore(A,b){return this.realParentNode.insertBefore(A,b)}moveBefore(A,b){return this.realParentNode.moveBefore(A,b)}get __hyperMorphRoot(){return this.originalNode}}function C(y){let A=x=>`<${x}(?:\\s(?:[^>"']|"[^"]*"|'[^']*')*)?>`,b=y.replace(/<!--[\s\S]*?-->/g,"");for(let x of["script","style","textarea","title"])b=b.replace(new RegExp(`${A(x)}[\\s\\S]*?</${x}\\s*>`,"gi"),"");let h=new RegExp(`${A("svg")}[\\s\\S]*?</svg\\s*>`,"gi"),u;do u=b,b=b.replace(h,"");while(b!==u);return b}function N(y){let A=new DOMParser,b=C(y);if(b.match(/<\/html>/)||b.match(/<\/head>/)||b.match(/<\/body>/)){let h=A.parseFromString(y,"text/html");if(b.match(/<\/html>/))return v.add(h),h;{let u=h.firstChild;return u&&v.add(u),u}}else{let u=A.parseFromString("<body><template>"+y+"</template></body>","text/html").body.querySelector("template").content;return v.add(u),u}}return{normalizeElement:E,normalizeParent:S}})();return{morph:O,defaults:k,mergeJson:Tt,mergeScriptText:Mt,parseJsonRelaxed:Ge,parseRulesRelaxed:xr}})();var $s=Ot.morph,Bs=Ot.defaults;var Nt=Ot;var Ye=["textContent","innerText","innerHTML","outerHTML","value","checked","selected","disabled","readOnly","type","tagName","nodeName","nodeType","nodeValue","childElementCount","id","className","classList","baseURI","offsetWidth","offsetHeight","clientWidth","clientHeight","scrollWidth","scrollHeight","dataset","currentSrc","duration","paused","title","documentURI","contentType"],It=new Set(Ye),Sr=new Set(["textContent","innerText","innerHTML","value","checked","selected","disabled","readOnly","type","id","className","title"]),Er=new Set(["tagName","nodeName","nodeType","nodeValue","childElementCount","classList","baseURI","documentURI","contentType","offsetWidth","offsetHeight","clientWidth","clientHeight","scrollWidth","scrollHeight","currentSrc","duration","paused","dataset"]);var Xe={};Et(Xe,{EmptyListInsert:()=>je,MAX_RULE_DEPTH:()=>xe,MaxRuleDepthExceeded:()=>he,RuleTargetReadOnly:()=>Le,RulesParseError:()=>ye,ShapeMismatch:()=>Ie,UnknownRulesVersion:()=>ve});var ye=class extends Error{constructor(t,r){super(t),this.name="RulesParseError",this.cause=r}},ve=class extends Error{constructor(t){super(`unknown rules version: ${t}. Library supports "1".`),this.name="UnknownRulesVersion",this.version=t}},xe=20,he=class extends Error{constructor(t){super(`rule depth exceeded ${xe} at path: ${t.join(".")}`),this.name="MaxRuleDepthExceeded",this.path=t}},Ie=class extends Error{constructor(t){super(`shape mismatch: ${t.length} field(s) failed validation`),this.name="ShapeMismatch",this.mismatches=t}},je=class extends Error{constructor(t){super(`cannot add items to empty list at "${t.join(".")}" \u2014 no sibling to clone as template. Seed the list with a hidden item first.`),this.name="EmptyListInsert",this.path=t}},Le=class extends Error{constructor(t){super(`cannot write to read-only DOM property "${t}"`),this.name="RuleTargetReadOnly",this.target=t}};function de(e,t,r,n={}){return jt(e,t,r,{depth:0,path:[]},n)}function jt(e,t,r,n,i){if(n.depth>xe)throw new he(n.path);if(typeof r=="string")return hi(e,t,r,i);if(Array.isArray(r)){let[o,a]=r;return e.find(t,o,i).map((l,c)=>jt(e,l,a,{depth:n.depth+1,path:[...n.path,c]},i))}if(typeof r=="object"&&r!==null){let o={};for(let[a,s]of Object.entries(r))o[a]=jt(e,t,s,{depth:n.depth+1,path:[...n.path,a]},i);return o}return null}function hi(e,t,r,n){if(r.endsWith("[]")){let a=r.slice(0,-2);return e.find(t,a,n).map(s=>e.text(s))}if(r.startsWith("@"))return Cr(e,t,r.slice(1));let i=z(r);if(i!==-1){let a=r.slice(0,i),s=r.slice(i+1),l=a?e.find(t,a,n):[t];return l.length===0?null:Cr(e,l[0],s)}if(r===".")return e.text(t);let o=e.find(t,r,n);return o.length===0?null:e.text(o[0])}function Cr(e,t,r){if(It.has(r)){let i=e.prop(t,r);return i==null?null:String(i)}let n=e.attr(t,r);return n||null}function pi(e){return e&&e.nodeType===1&&e.tagName==="SCRIPT"&&e.hasAttribute&&e.hasAttribute("data-rules-name")}function fi(e){return e?(e.nodeType===9||e.nodeType===11,e):null}var gi={find(e,t,r={}){let n=fi(e);if(!n||!n.querySelectorAll)return[];let i=Array.from(n.querySelectorAll(t));r.includeRulesTag||(i=i.filter(s=>!pi(s)));let o=[];r.skip&&o.push(r.skip);let a=r.templateAttr===null?null:r.templateAttr||"cms-template";if(a&&o.push("["+a+"]"),o.length){let s=o.join(", ");i=i.filter(l=>!l.closest||!l.closest(s))}return i},parent(e){return e?e.parentElement:null},children(e){return e?Array.from(e.children):[]},text(e,t){if(t===void 0)return(e.textContent||"").trim();e.textContent=t},attr(e,t,r){if(r===void 0)return e.hasAttribute&&e.hasAttribute(t)?e.getAttribute(t):null;e.setAttribute(t,r)},removeAttr(e,t){e&&e.removeAttribute&&e.removeAttribute(t)},prop(e,t,r){if(r===void 0){let n=e?e[t]:void 0;return n!==void 0?n:null}e[t]=r},clone(e){return e.cloneNode(!0)},insertAt(e,t,r){let n=e.children[r]||null;e.insertBefore(t,n)},remove(e){e&&e.parentNode&&e.parentNode.removeChild(e)},replaceWith(e,t){if(!e||!e.parentNode)throw new Error("dom.replaceWith: node has no parent");let n=e.ownerDocument.createElement("template");n.innerHTML=t;let i=n.content.firstElementChild;if(!i)throw new Error("dom.replaceWith: html did not parse to an element");return e.parentNode.replaceChild(i,e),i},stripIds(e){let t=0;return e.id&&(e.removeAttribute("id"),t++),(e.querySelectorAll?e.querySelectorAll("[id]"):[]).forEach(n=>{n.removeAttribute("id"),t++}),t},sameNode(e,t){return e===t}},re=gi;function Lt(e){try{return JSON.parse(e)}catch(t){throw new ye(`Invalid strict JSON: ${t.message}`,t)}}function we(e){try{return JSON.parse(e)}catch{}let t={BRACE_OPEN:"{",BRACE_CLOSE:"}",BRACKET_OPEN:"[",BRACKET_CLOSE:"]",COLON:":",COMMA:",",STRING:"STRING",SELECTOR:"SELECTOR",IDENTIFIER:"IDENTIFIER",NUMBER:"NUMBER",BOOLEAN:"BOOLEAN"};function r(i){let o=[],a=0;for(;a<i.length;){let s=i[a];if(/\s/.test(s)){a++;continue}if("{}".includes(s)){o.push({type:s,value:s}),a++;continue}if(s==="["){let p=!1,d=a+1;for(;d<i.length&&/\s/.test(i[d]);)d++;if(d<i.length&&/[a-zA-Z_]/.test(i[d])&&(p=!0),!p){o.push({type:s,value:s}),a++;continue}}if(s==="]"){o.push({type:s,value:s}),a++;continue}if(s===":"){o.push({type:t.COLON,value:s}),a++;continue}if(s===","){o.push({type:t.COMMA,value:s}),a++;continue}if(s==='"'||s==="'"){let p=s,d=a+1;for(;d<i.length&&i[d]!==p;)i[d]==="\\"&&d++,d++;o.push({type:t.STRING,value:i.substring(a+1,d),quoted:!0,sourceQuote:p}),a=d+1;continue}let l=a,c;for(;l<i.length&&!/[{},]/.test(i[l]);)if(i[l]===":"){let p=[":first",":last",":nth-child",":nth-of-type",":first-child",":last-child",":first-of-type",":last-of-type",":only-child",":only-of-type",":hover",":focus",":active",":visited",":disabled",":enabled",":checked",":empty",":root",":target",":not",":before",":after",":nth-last-child",":nth-last-of-type"],d=!1;for(let f of p){let k=f.substring(1);if(i.substring(l+1,l+1+k.length)===k){d=!0,l+=k.length;break}}if(!d)break}else if(i[l]==="["){for(l++;l<i.length&&i[l]!=="]";){if(i[l]==='"'||i[l]==="'"){let p=i[l];for(l++;l<i.length&&i[l]!==p;)i[l]==="\\"&&l++,l++}l++}l<i.length&&i[l]==="]"&&l++}else l++;c=i.substring(a,l);let m=t.IDENTIFIER;/^-?\d+(\.\d+)?$/.test(c)?m=t.NUMBER:c==="true"||c==="false"||c==="null"?m=t.BOOLEAN:/^[.#@\[]|[.#@\[]| /.test(c)&&(m=t.SELECTOR),o.push({type:m,value:c,quoted:!1}),a=l}return o}function n(i){let o="";for(let a=0;a<i.length;a++){let s=i[a];if("{}".includes(s.type)||"[]".includes(s.type)){o+=s.value;continue}if(s.type===t.COLON){o+=s.value;continue}if(s.type===t.COMMA){let l=i[a+1];if(l&&(l.type==="}"||l.type==="]"))continue;o+=s.value;continue}if(s.type===t.STRING&&s.quoted){let l=s.value;s.sourceQuote==="'"&&(l=l.replace(/\\'/g,"'"),l=l.replace(/(\\*)"/g,(c,m)=>m.length%2===0?m+'\\"':c)),o+=`"${l}"`;continue}if(s.type===t.NUMBER||s.type===t.BOOLEAN){o+=s.value;continue}if(s.type===t.SELECTOR||s.type===t.IDENTIFIER){o+=`"${s.value}"`;continue}o+=`"${s.value}"`}return o}try{let i=r(e),o=n(i);return JSON.parse(o)}catch(i){throw new ye("Invalid extraction rules syntax: "+i.message,i)}}var Tr="1",Rr=/^[a-zA-Z0-9_-]+$/;function Fe(e,t,r){let n;if(r===void 0)n="script[data-rules-name]";else{if(typeof r!="string"||!Rr.test(r))throw new Error(`hyper-html-api: invalid rules token ${JSON.stringify(r)} (must match ${Rr})`);n=`script[data-rules-name~="${r}"]`}let i=e.find(t,n,{includeRulesTag:!0});if(i.length===0)return null;r!==void 0&&i.length>1&&console.warn(`hyper-html-api: ${i.length} rules tags match data-rules-name~="${r}"; using the first.`);let o=i[0],a=e.attr(o,"data-rules-version");if(a!==Tr)throw new ve(a);return{rules:we(e.text(o)),tagNode:o}}var ba=new Function("url","return import(url)");var ki=.5;function Ft(e,t,r,n,i,o,a,s={}){let l=e.find(t,r,s);if(i.length===0){l.forEach(j=>e.remove(j));return}let c=i.length>l.length,m=l[0]||null;if(c&&!m&&(m=wi(e,t,r,s),!m))throw new je(o.path);let p=l.map(j=>yi(e,j,n,s)),d=null;if(m){d=e.clone(m),s.templateAttr&&e.removeAttr(d,s.templateAttr);let j=e.stripIds(d);j>0&&console.warn(`[hyper-html-api] stripped ${j} id attribute(s) from cloned template at "${o.path.join(".")||"(root)"}"`)}let f=vi(i,p,n),k=l[0]||m,R=e.parent(k),O=l.length>0?jr(e,R,k):0,F=_i(e,l),J=new Set,V=[],Q=i.map((j,G)=>{let U=f[G];if(U>=0)return J.add(U),V.push(!1),l[U];V.push(!0);let se=e.clone(d);return e.stripIds(se),se});if(l.forEach((j,G)=>{J.has(G)||e.remove(j)}),F){Q.forEach((j,G)=>{let U=O+G;e.children(R).findIndex(wt=>e.sameNode(wt,j))!==U&&e.insertAt(R,j,U)}),Ir(e,Q,n,i,o,a,s);return}Ai(e,Q,V,R,O),Ir(e,Q,n,i,o,a,s)}function Ir(e,t,r,n,i,o,a){t.forEach((s,l)=>{if(r===null){let c=n[l],m=c==null?"":String(c);e.text(s)!==m&&e.text(s,m)}else{let c=o(e,s,r,n[l],{depth:i.depth+1,path:[...i.path,l]},a);c&&c!==s&&(t[l]=c)}})}function yi(e,t,r,n){return r===null?e.text(t):de(e,t,r,n)}function vi(e,t,r){let n=new Array(e.length).fill(-1),i=new Set;return e.forEach((o,a)=>{let s=-1,l=-1;t.forEach((c,m)=>{if(i.has(m))return;let p=xi(o,c,r),d=p===l&&s>=0?Math.abs(m-a)<Math.abs(s-a):!1;(p>l||d)&&(l=p,s=m)}),l>=ki&&(n[a]=s,i.add(s))}),n}function xi(e,t,r){if(r===null)return e===t?1:0;let n=Object.keys(r||{});if(n.length===0)return 0;let i=0;for(let o of n)JSON.stringify(e?.[o])===JSON.stringify(t?.[o])&&i++;return i/n.length}function jr(e,t,r){let n=e.children(t);for(let i=0;i<n.length;i++)if(e.sameNode(n[i],r))return i;return-1}function wi(e,t,r,n){if(!n.templateAttr)return null;let i=t;for(;i;){let o=e.find(i,r,{includeRulesTag:!1,templateAttr:null});for(let a of o)if(e.attr(a,n.templateAttr)!=null)return a;i=e.parent(i)}return null}function _i(e,t){if(t.length<=1)return!0;let r=e.parent(t[0]);if(!r)return!1;let n=e.children(r),i=[];for(let o of t){let a=n.findIndex(s=>e.sameNode(s,o));if(a===-1)return!1;i.push(a)}return i.sort((o,a)=>o-a),i[i.length-1]-i[0]===i.length-1}function Ai(e,t,r,n,i){let o=null,a=i;for(let s=0;s<t.length;s++){if(!r[s]){o=t[s];continue}let l=o?e.parent(o):n;if(!l)continue;let c=o?jr(e,l,o)+1:a++;e.insertAt(l,t[s],c),o=t[s]}}var Lr=new Set(["checked","selected","disabled","readOnly","paused"]);function _e(e,t,r,n,i={}){let o=[];if(qt(r,n,[],o),o.length)throw new Ie(o);Ze(e,t,r,n,{depth:0,path:[]},i)}function Ze(e,t,r,n,i,o={}){if(i.depth>xe)throw new he(i.path);if(n===void 0)return t;if(typeof r=="string")return Si(e,t,r,n,i,o);if(Array.isArray(r)){let[a,s]=r;return Ft(e,t,a,s,n,i,Ze,o),t}if(typeof r=="object"&&r!==null){for(let[a,s]of Object.entries(r)){let l=Ze(e,t,s,n==null?n:n[a],{depth:i.depth+1,path:[...i.path,a]},o);l&&l!==t&&(t=l)}return t}return t}function Si(e,t,r,n,i,o){if(r.endsWith("[]")){let l=r.slice(0,-2);return Ft(e,t,l,null,n,i,Ze,o),t}if(r.startsWith("@"))return Fr(e,t,r.slice(1),n);let a=z(r);if(a!==-1){let l=r.slice(0,a),c=r.slice(a+1),m=l?e.find(t,l,o):[t];return m.length===0||Fr(e,m[0],c,n),t}if(r===".")return e.text(t,n==null?"":String(n)),t;let s=e.find(t,r,o);return s.length===0||e.text(s[0],n==null?"":String(n)),t}function Fr(e,t,r,n){if(Er.has(r))throw new Le(r);if(r==="outerHTML"){let i=n==null?"":String(n);return e.replaceWith(t,i)}return Sr.has(r)?(e.prop(t,r,Ei(r,n)),t):(e.attr(t,r,n==null?"":String(n)),t)}function Ei(e,t){return t==null?Lr.has(e)?!1:"":Lr.has(e)?!!t:t}function qt(e,t,r,n){if(t!==void 0){if(typeof e=="string"){if(e.endsWith("[]")){Array.isArray(t)?t.forEach((i,o)=>{typeof i=="object"&&i!==null&&n.push({path:De([...r,o]),expected:"scalar",got:qe(i)})}):n.push({path:De(r),expected:"array",got:qe(t)});return}t!==null&&typeof t=="object"&&n.push({path:De(r),expected:"scalar",got:qe(t)});return}if(Array.isArray(e)){if(!Array.isArray(t)){n.push({path:De(r),expected:"array",got:qe(t)});return}let i=e[1];t.forEach((o,a)=>qt(i,o,[...r,a],n));return}if(typeof e=="object"&&e!==null){if(t===null||Array.isArray(t)||typeof t!="object"){n.push({path:De(r),expected:"object",got:qe(t)});return}for(let[i,o]of Object.entries(e))qt(o,t[i],[...r,i],n)}}}function qe(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function De(e){return e.join(".")}function Dt(e,t,r){if(r&&typeof r=="object")return{rules:r,tagNode:null};if(typeof r=="string"){let n=t&&t.ownerDocument?t.ownerDocument:t;return Fe(e,n,r)}return null}function Dr(e,t,r,n){let i=Dt(e,t,r);if(!i){let s=typeof r=="string"?`data-rules-name~="${r}"`:"the provided rules object";throw new Error(`hyper-html-api: could not resolve rules for ${s}`)}let{rules:o,tagNode:a}=i;return{rules:o,tagNode:a,get:()=>de(e,t,o,n),set:s=>_e(e,t,o,s,n)}}var W={extract:(e,t,r)=>de(re,e,t,r),apply:(e,t,r,n)=>_e(re,e,t,r,n),findRulesIn:(e,t)=>Fe(re,e,t),findRules:(e,t)=>Dt(re,e,t),bind:(e,t,r)=>Dr(re,e,t,r),parseStrict:Lt,parseRelaxed:we,ruleAttrIndex:z,splitRule:Ke,errors:Xe,DOM_PROPERTIES:Ye};var Bt={};Et(Bt,{fromString:()=>ie,getRuleAtPath:()=>pe,getValueAtPath:()=>Bi,setAtPath:()=>$t,toString:()=>$i});function $i(e){return e.map(String).join(".")}function ie(e){return e===""?[]:e.split(".").map(t=>/^\d+$/.test(t)?Number(t):t)}function pe(e,t){let r=e;for(let n of t){if(r==null)return;if(typeof r=="string"){if(r.endsWith("[]")&&(typeof n=="number"||n==="*")){r=r.slice(0,-2);continue}return}if(Array.isArray(r)){if(typeof n!="number"&&n!=="*")return;r=r[1];continue}if(typeof r=="object"){if(typeof n=="number"||!(n in r))return;r=r[n];continue}return}return r}function Bi(e,t){let r=e;for(let n of t){if(r==null)return;r=r[n]}return r}function $t(e,t,r){if(t.length===0)return r;let[n,...i]=t;if(typeof n=="number"){let o=Array.isArray(e)?[...e]:[];return o[n]=$t(o[n],i,r),o}return{...e&&typeof e=="object"?e:{},[n]:$t((e||{})[n],i,r)}}function $e(e){if(typeof e=="string")return e.endsWith("[]")?[]:"";if(Array.isArray(e))return[];if(typeof e=="object"&&e!==null){let t={};for(let[r,n]of Object.entries(e))t[r]=$e(n);return t}return""}function Qe(e,t,{ignoreActiveValue:r=!0}={}){Nt.morph(e,t,{morphStyle:"innerHTML",ignoreActiveValue:r,restoreFocus:!0,formStateSync:"property"})}function tt(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/[-_]/g," ").replace(/\s+/g," ").trim().replace(/^./,t=>t.toUpperCase())}var Pi='<div class="hcms-drag-handle mirk-sortable__grip" aria-hidden="true"><div class="mirk-sortable__dots"><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span></div></div>',Pt='<svg class="hcms-x" viewBox="0 0 16 16" shape-rendering="crispEdges" aria-hidden="true"><path d="M4 4 L12 12 M12 4 L4 12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="square"></path></svg>',Pr={"@scalar":`
|
|
1
|
+
var hypercms=(()=>{var Dt=Object.defineProperty;var ri=Object.getOwnPropertyDescriptor;var ni=Object.getOwnPropertyNames;var ii=Object.prototype.hasOwnProperty;var $t=(e,t)=>{for(var r in t)Dt(e,r,{get:t[r],enumerable:!0})},oi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of ni(t))!ii.call(e,i)&&i!==r&&Dt(e,i,{get:()=>t[i],enumerable:!(n=ri(t,i))||n.enumerable});return e};var si=e=>oi(Dt({},"__esModule",{value:!0}),e);var $s={};$t($s,{cms:()=>qs,default:()=>Ds});function Z(e){let t=0,r=null,n=-1;for(let i=0;i<e.length;i++){let o=e[i];o==="\\"?i++:r?o===r&&(r=null):o==='"'||o==="'"?r=o:o==="["||o==="("?t++:o==="]"||o===")"?t>0&&t--:o==="@"&&t===0&&(n=i)}return n}function it(e){let t=Z(e);return t===-1?{selector:e,prop:null}:{selector:e.slice(0,t),prop:e.slice(t+1)||null}}var Nr={includeClasses:!0,includeAttributes:["href","src","name","type","role","aria-label","alt","title"],excludeAttributePrefixes:["data-morph-","data-hyper-","data-im-"],textHintLength:64,excludeIds:!0,maxPathDepth:4,landmarks:["HEADER","NAV","MAIN","ASIDE","FOOTER","SECTION","ARTICLE"],weights:{signature:100,pathSegment:10,textMatch:20,textMismatch:25,uniqueCandidate:50,positionPenalty:1,maxDriftPenalty:19,slotMatch:30},minConfidence:101,maxScoredCandidates:16};function li(e){let t=5381;for(let r=0;r<e.length;r++)t=(t<<5)+t^e.charCodeAt(r);return Math.abs(t).toString(36)}function ci(e){if(e.classList&&e.classList.length>0)return Array.from(e.classList).sort().join(" ");let t=e.getAttribute?.("class");return t?t.split(/\s+/).filter(Boolean).sort().join(" "):""}function ui(e,t){let r=[];for(let n of e.attributes||[]){let i=n.name;i==="id"||i==="class"||t.excludeAttributePrefixes.some(o=>i.startsWith(o))||t.includeAttributes.includes(i)&&r.push(`${i}=${n.value}`)}return r.sort().join("|")}function di(e,t){return(e.textContent||"").replace(/\s+/g," ").trim().slice(0,t.textHintLength)}function mi(e,t){let r=[e.tagName];return t.includeClasses&&r.push(ci(e)),r.push(ui(e,t)),li(r.join("|"))}function hi(e){let t=e.tagName,r=1,n=e.previousElementSibling;for(;n;)n.tagName===t&&r++,n=n.previousElementSibling;return r}function pi(e,t){return e.getAttribute?.("id")||e.getAttribute?.("role")?!0:t.landmarks.includes(e.tagName)}function fi(e){let t=e.getAttribute?.("id");if(t)return`#${t}`;let r=e.getAttribute?.("role");return r?`@${r}`:e.tagName}function gi(e,t){let r=[],n=e;for(;n&&n.tagName&&r.length<t.maxPathDepth;){let i=`${n.tagName}:${hi(n)}`;if(r.unshift(i),n!==e&&pi(n,t)){r.unshift(fi(n));break}n=n.parentElement}return r}function bi(e,t){let r=0,n=e.length-1,i=t.length-1;for(;n>=0&&i>=0&&e[n]===t[i];)r++,n--,i--;return r}function se(e,t,r){if(r.has(e))return r.get(e);let n={signature:mi(e,t),path:gi(e,t),textHint:di(e,t)};return r.set(e,n),n}function Fr(e,t,r,n){if(n.has(e))return n.get(e);let i=new Map,o=e.querySelectorAll("*"),a=0;for(let s of o){let l=se(s,t,r);l.domIndex=a++,!t.shouldIgnore?.(s)&&(i.has(l.signature)||i.set(l.signature,[]),i.get(l.signature).push(s))}return n.set(e,i),i}function ki(e,t,r){r.delete(e),t.delete(e);let n=e.querySelectorAll("*");for(let i of n)t.delete(i)}function Bt(e,t,r,n,i){let o=se(e,r,n),a=se(t,r,n),s=r.weights,l={},c=0;if(o.signature!==a.signature)return{score:0,breakdown:{rejected:"signature mismatch"}};c+=s.signature,l.signature=s.signature;let b=bi(o.path,a.path)*s.pathSegment;c+=b,l.path=b;let u=!0;if(o.textHint&&a.textHint?o.textHint===a.textHint?(c+=s.textMatch,l.text=s.textMatch):(c-=s.textMismatch,l.text=-s.textMismatch,u=!1):o.textHint!==a.textHint&&(c-=s.textMismatch,l.text=-s.textMismatch,u=!1),i.candidateCount===1&&u&&(c+=s.uniqueCandidate,l.unique=s.uniqueCandidate),typeof o.domIndex=="number"&&typeof a.domIndex=="number"){let k=Math.abs(o.domIndex-a.domIndex),y=Math.min(k*s.positionPenalty,s.maxDriftPenalty);c-=y,l.drift=-y}return{score:c,breakdown:l}}function Ir(e,t,r,n,i){if(r.excludeIds&&e.getAttribute("id"))return null;let o=Fr(t,r,n,i),a=se(e,r,n);if(typeof a.domIndex!="number"){let u=0,k=e.previousElementSibling;for(;k;)u++,k=k.previousElementSibling;a.domIndex=u}let s=o.get(a.signature)||[],l=r.excludeIds?s.filter(u=>!u.getAttribute("id")):s;if(l.length===0)return null;let c=null,d=0,b=null;for(let u of l){let{score:k,breakdown:y}=Bt(e,u,r,n,{candidateCount:l.length});k>d&&(d=k,c=u,b=y)}return d<r.minConfidence?null:{element:c,confidence:d,breakdown:b}}function yi(e,t,r,n){let i=[],o=r.weights.signature+r.weights.slotMatch,a={slot:o};function s(b){if(b.children)return b.children;let u=b.childNodes;if(!u)return[];let k=[];for(let y=0;y<u.length;y++)u[y].nodeType===1&&k.push(u[y]);return k}function l(b,u){let k=s(b),y=s(u);if(k.length===y.length)for(let N=0;N<k.length;N++){let q=k[N],H=y[N];if(r.shouldIgnore?.(q)||r.shouldIgnore?.(H)||r.excludeIds&&(q.getAttribute("id")||H.getAttribute("id"))||q.tagName!==H.tagName)continue;let oe=se(q,r,n).signature,ee=se(H,r,n).signature;oe!==ee&&i.push({newEl:q,oldEl:H,score:o,breakdown:a}),l(q,H)}}function c(b,u){for(;;){if(b.tagName===u.tagName)return[b,u];let k=s(b);if(!b.tagName&&k.length===1){b=k[0];continue}let y=s(u);if(y.length===1&&y[0].tagName===b.tagName){u=y[0];continue}return null}}let d=c(e,t);return d&&l(d[0],d[1]),i}function Lr(e,t,r,n,i){let o=t.querySelectorAll("*"),a=Fr(e,r,n,i),s=0;for(let k of o){let y=se(k,r,n);y.domIndex=s++}let l=[],c=new Map;function d(k,y,N){let q=new Set;if(k.textHint){let z=c.get(k.signature);if(!z){z=new Map;for(let Q of y){let pe=se(Q,r,n).textHint,fe=z.get(pe);fe||(fe=[],z.set(pe,fe)),fe.push(Q)}c.set(k.signature,z)}let ie=z.get(k.textHint);if(ie)for(let Q=0;Q<ie.length&&Q<N;Q++)q.add(ie[Q])}let H=0,oe=y.length;for(;H<oe;){let z=H+oe>>1;se(y[z],r,n).domIndex<k.domIndex?H=z+1:oe=z}let ee=Math.max(0,Math.min(H-(N>>1),y.length-N)),le=Math.min(ee+N,y.length);for(let z=ee;z<le;z++)q.add(y[z]);return[...q]}for(let k of o){if(r.shouldIgnore?.(k)||r.excludeIds&&k.getAttribute("id"))continue;let y=se(k,r,n),N=a.get(y.signature)||[],q=r.excludeIds?N.filter(ee=>!ee.getAttribute("id")):N,H=r.maxScoredCandidates,oe=H&&q.length>H?d(y,q,H):q;for(let ee of oe){let{score:le,breakdown:z}=Bt(k,ee,r,n,{candidateCount:q.length});le>=r.minConfidence&&l.push({newEl:k,oldEl:ee,score:le,breakdown:z})}}if(r.weights.slotMatch>0){let k=yi(t,e,r,n);for(let y of k)l.push(y)}l.sort((k,y)=>y.score-k.score);let b=new Map,u=new Set;for(let{newEl:k,oldEl:y}of l)b.has(k)||u.has(y)||(b.set(k,y),u.add(y));return b}function jr(e,t,r,n){let i=se(e,r,n),o=se(t,r,n),{score:a,breakdown:s}=Bt(e,t,r,n,{candidateCount:1});return{matches:a>=r.minConfidence,score:a,breakdown:s,newMeta:{signature:i.signature,path:i.path,textHint:i.textHint},oldMeta:{signature:o.signature,path:o.path,textHint:o.textHint}}}function qr(e={}){let t={...Nr,...e,weights:{...Nr.weights,...e.weights}},r=new WeakMap,n=new WeakMap;return{findMatch:(i,o)=>Ir(i,o,t,r,n),computeMatches:(i,o)=>Lr(i,o,t,r,n),explain:(i,o)=>jr(i,o,t,r),invalidate:i=>ki(i,r,n),session:()=>{let i=new WeakMap,o=new WeakMap;return{findMatch:(a,s)=>Ir(a,s,t,i,o),computeMatches:(a,s)=>Lr(a,s,t,i,o),explain:(a,s)=>jr(a,s,t,i)}},getConfig:()=>({...t})}}function Pt(e,t){for(;;){for(;t<e.length&&/\s/.test(e[t]);)t++;if(e[t]==="/"&&e[t+1]==="/"){for(;t<e.length&&e[t]!==`
|
|
2
|
+
`;)t++;continue}if(e[t]==="/"&&e[t+1]==="*"){let r=e.indexOf("*/",t+2);if(r===-1)return e.length;t=r+2;continue}return t}}function Dr(e){return e.replace(/\\'/g,"'").replace(/(\\*)"/g,(t,r)=>r.length%2===0?r+'\\"':t)}var vi=/^-?(0|[1-9]\d*)(\.\d+)?([eE][+-]?\d+)?$/,xi=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function ot(e){try{return JSON.parse(e)}catch{return JSON.parse(wi(e))}}function wi(e){let t="",r=0,n=(i,o)=>{throw new Error(`Invalid relaxed JSON: ${i} at position ${o}`)};for(;r<e.length&&(r=Pt(e,r),!(r>=e.length));){let i=e[r];if("{}[]:".includes(i)){t+=i,r++;continue}if(i===","){let s=Pt(e,r+1);if(e[s]==="}"||e[s]==="]"){r++;continue}t+=i,r++;continue}if(i==='"'||i==="'"){let s=r+1;for(;s<e.length&&e[s]!==i;)e[s]==="\\"&&s++,s++;s>=e.length&&n("unterminated string",r);let l=e.slice(r+1,s);i==="'"&&(l=Dr(l)),t+='"'+l+'"',r=s+1;continue}let o=r;for(;o<e.length&&/[A-Za-z0-9_$.+\-]/.test(e[o]);)o++;o===r&&n("unexpected character "+JSON.stringify(i),r);let a=e.slice(r,o);if(a==="true"||a==="false"||a==="null"||vi.test(a)){t+=a,r=o;continue}if(xi.test(a)){if(e[Pt(e,o)]===":"){t+='"'+a+'"',r=o;continue}n("unquoted value "+JSON.stringify(a),r)}n("invalid token "+JSON.stringify(a),r)}return t}function $r(e){try{return JSON.parse(e)}catch{}let t={BRACE_OPEN:"{",BRACE_CLOSE:"}",BRACKET_OPEN:"[",BRACKET_CLOSE:"]",COLON:":",COMMA:",",STRING:"STRING",SELECTOR:"SELECTOR",IDENTIFIER:"IDENTIFIER",NUMBER:"NUMBER",BOOLEAN:"BOOLEAN"};function r(i){let o=[],a=0;for(;a<i.length;){let s=i[a];if(/\s/.test(s)){a++;continue}if("{}".includes(s)){o.push({type:s,value:s}),a++;continue}if(s==="["){let b=!1,u=a+1;for(;u<i.length&&/\s/.test(i[u]);)u++;if(u<i.length&&/[a-zA-Z_]/.test(i[u])&&(b=!0),!b){o.push({type:s,value:s}),a++;continue}}if(s==="]"){o.push({type:s,value:s}),a++;continue}if(s===":"){o.push({type:t.COLON,value:s}),a++;continue}if(s===","){o.push({type:t.COMMA,value:s}),a++;continue}if(s==='"'||s==="'"){let b=s,u=a+1;for(;u<i.length&&i[u]!==b;)i[u]==="\\"&&u++,u++;o.push({type:t.STRING,value:i.substring(a+1,u),quoted:!0,sourceQuote:b}),a=u+1;continue}let l=a,c;for(;l<i.length&&!/[{},]/.test(i[l]);)if(i[l]===":"){let b=[":first",":last",":nth-child",":nth-of-type",":first-child",":last-child",":first-of-type",":last-of-type",":only-child",":only-of-type",":hover",":focus",":active",":visited",":disabled",":enabled",":checked",":empty",":root",":target",":not",":before",":after",":nth-last-child",":nth-last-of-type"],u=!1;for(let k of b){let y=k.substring(1);if(i.substring(l+1,l+1+y.length)===y){u=!0,l+=y.length;break}}if(!u)break}else if(i[l]==="["){for(l++;l<i.length&&i[l]!=="]";){if(i[l]==='"'||i[l]==="'"){let b=i[l];for(l++;l<i.length&&i[l]!==b;)i[l]==="\\"&&l++,l++}l++}l<i.length&&i[l]==="]"&&l++}else l++;c=i.substring(a,l);let d=t.IDENTIFIER;/^-?\d+(\.\d+)?$/.test(c)?d=t.NUMBER:c==="true"||c==="false"||c==="null"?d=t.BOOLEAN:/^[.#@\[]|[.#@\[]| /.test(c)&&(d=t.SELECTOR),o.push({type:d,value:c,quoted:!1}),a=l}return o}function n(i){let o="";for(let a=0;a<i.length;a++){let s=i[a];if("{}".includes(s.type)||"[]".includes(s.type)){o+=s.value;continue}if(s.type===t.COLON){o+=s.value;continue}if(s.type===t.COMMA){let l=i[a+1];if(l&&(l.type==="}"||l.type==="]"))continue;o+=s.value;continue}if(s.type===t.STRING){let l=s.value;s.sourceQuote==="'"&&(l=Dr(l)),o+=`"${l}"`;continue}if(s.type===t.NUMBER||s.type===t.BOOLEAN){o+=s.value;continue}o+=`"${s.value}"`}return o}try{let i=r(e),o=n(i);return JSON.parse(o)}catch(i){throw new Error("Invalid extraction rules syntax: "+i.message)}}var J=Symbol("hyper-morph-json-merge:missing"),Br=["id","_id","uuid","key","slug","code","name"];function Ce(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ue(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _i(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:!0,writable:!0,configurable:!0})}function be(e,t){if(e===t)return!0;if(Array.isArray(e)&&Array.isArray(t)){if(e.length!==t.length)return!1;for(let r=0;r<e.length;r++)if(!be(e[r],t[r]))return!1;return!0}if(Ce(e)&&Ce(t)){let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n of r)if(!Ue(t,n)||!be(e[n],t[n]))return!1;return!0}return!1}function Pr(e,t,r,n){return be(t,r)?t:be(t,e)?r:be(r,e)?t:Ce(t)&&Ce(r)?Ai(Ce(e)?e:{},t,r,n):Array.isArray(t)&&Array.isArray(r)?Ti(Array.isArray(e)?e:[],t,r,n):r}function zr(e,t,r,n){return t===J&&r===J?J:t===J?e===J?r:be(r,e)?J:r:r===J?e===J?t:J:Pr(e,t,r,n)}function Ai(e,t,r,n){let i={},o=new Set([...Object.keys(e),...Object.keys(t),...Object.keys(r)]);for(let a of o){let s=zr(Ue(e,a)?e[a]:J,Ue(t,a)?t[a]:J,Ue(r,a)?r[a]:J,n);s!==J&&_i(i,a,s)}return i}function Si(e){return e===null||typeof e!="object"}function st(e){return typeof e+":"+String(e)}function Ei(e,t){for(let r of t){let n=new Set;for(let i of r){if(!Ue(i,e))return!1;let o=i[e];if(typeof o!="string"&&typeof o!="number")return!1;let a=st(o);if(n.has(a))return!1;n.add(a)}}return!0}function Ci(e,t,r,n){let i=[e,t,r],o=!0;for(let a of i)for(let s of a)Ce(s)||(o=!1);if(o){for(let a of n.keyCandidates)if(Ei(a,i))return{kind:"keyed",field:a};return null}for(let a of i){let s=new Set;for(let l of a){if(!Si(l))return null;let c=st(l);if(s.has(c))return null;s.add(c)}}return{kind:"self"}}function Ti(e,t,r,n){let i=Ci(e,t,r,n);if(!i)return r;let o=i.kind==="self"?st:k=>st(k[i.field]),a=k=>{let y=new Map;for(let N of k)y.set(o(N),N);return y},s=a(e),l=a(t),c=a(r),d=new Map,b=new Set([...s.keys(),...l.keys(),...c.keys()]);for(let k of b){let y=zr(s.has(k)?s.get(k):J,l.has(k)?l.get(k):J,c.has(k)?c.get(k):J,n);y!==J&&d.set(k,y)}let u=[];for(let k of r){let y=o(k);d.has(y)&&u.push(y)}for(let k=0;k<t.length;k++){let y=o(t[k]);if(!d.has(y)||u.includes(y))continue;let N=0;for(let q=k-1;q>=0;q--){let H=u.indexOf(o(t[q]));if(H!==-1){N=H+1;break}}u.splice(N,0,y)}return u.map(k=>d.get(k))}function zt(e,t,r,n={}){let i=n.keyCandidates?[...n.keyCandidates,...Br]:Br;return Pr(e===void 0?J:e,t,r,{keyCandidates:i})}function Ut(e,t,r,n={}){let i=n.parse||ot,o=[],a=(b,u)=>{if(typeof b!="string")return J;try{return i(b)}catch(k){return o.push(`${u} side is not valid JSON (${k.message})`),J}},s=a(t,"local"),l=a(r,"remote");if(s===J)return{text:r,warnings:o};if(l===J)return{text:t,warnings:o};let c=a(e,"base"),d=zt(c===J?void 0:c,s,l,n);return be(d,l)?{text:r,warnings:o}:be(d,s)?{text:t,warnings:o}:{text:JSON.stringify(d,null,2),warnings:o}}var He=(function(){"use strict";let e=()=>{},t='[save-ignore],[snapshot-remove],[no-snapshot],[no-save],[save-remove],[freeze],[save-freeze],[clay~="no-save"],[clay~="no-snapshot"],[clay~="freeze"]';function r(p){if(!(p instanceof Element))return!1;if(p.matches(t))return!0;if(p.tagName==="LINK"||p.tagName==="SCRIPT"){let T=p.getAttribute("src")||p.getAttribute("href")||"";if(T.startsWith("chrome-extension://")||T.startsWith("moz-extension://")||T.startsWith("safari-web-extension://"))return!0}return!1}function n(p){return p instanceof Element?p.closest(t)?!0:r(p):!1}let i=qr({shouldIgnore:n});function o(p,T,E){if(E){let O=E.identityOf(p);if(O&&!E.disabled.has(O.key))return"hm-merge:"+O.key}if(T!=="smart")return p.outerHTML;let R=p.getAttribute("src"),C=p.getAttribute("type")||"text/javascript";if(R)try{let O=new URL(R,window.location.href);return`ext:${C}:${O.origin}${O.pathname}${O.search}`}catch{return`ext:${C}:${R}`}else{let O=p.textContent.trim(),v=5381;for(let A=0;A<O.length;A++)v=(v<<5)+v^O.charCodeAt(A);return`inline:${C}:${Math.abs(v).toString(36)}`}}let a="http://www.w3.org/1999/xhtml";function s(p){return p instanceof Element&&p.tagName==="SCRIPT"&&p.namespaceURI===a}function l(p){let T=document.createElement("div");T.innerHTML="<script><\/script>";let E=T.firstChild;for(let R of p.attributes)E.setAttribute(R.name,R.value);return E.textContent=p.textContent,E}function c(p){if(s(p))return l(p);if(p instanceof Element)for(let T of p.querySelectorAll("script"))s(T)&&T.replaceWith(l(T));return p}function d(p){let T=(p.getAttribute("type")||"").split(";")[0].trim().toLowerCase();return T==="application/json"||T.endsWith("+json")}let b={match:p=>p.hasAttribute("merge"),identity:p=>p.getAttribute("merge")};function u(p,T,E){if(E.merge===!1)return null;let R=[b,...E.mergeTags||[]],C=new WeakMap,O=f=>{if(C.has(f))return C.get(f);let w=null;if(s(f)&&!f.getAttribute("src")&&!n(f)){let _=f;for(let I=0;I<R.length;I++)if(R[I].match(_)){if(!d(_))console.warn("[hyper-morph] merge ignored: script type is not JSON",_);else{let B=R[I].identity(_);B!=null&&B!==""&&(w={key:I+":"+B,raw:B,recognizer:R[I]})}break}}return C.set(f,w),w},v=new Set,A=f=>{let w=new Map,_=I=>{let B=O(I);B&&(w.has(B.key)?(v.add(B.key),console.warn(`[hyper-morph] merge disabled for duplicate identity "${B.raw}"`)):w.set(B.key,I))};s(f)&&_(f);for(let I of f.querySelectorAll("script"))_(I);return w},g=A(p),h=A(T.__hyperMorphRoot||T);if(g.size===0&&h.size===0)return null;let m=null;return{identityOf:O,disabled:v,oldByKey:g,newByKey:h,baseTexts:()=>{if(m)return m;m=new Map;let f=E.mergeBase;if(!f)return m;let w;typeof f=="string"?w=new DOMParser().parseFromString(f,"text/html").documentElement:f instanceof Document?w=f.documentElement:w=f;let _=I=>{let B=O(I);B&&!m.has(B.key)&&m.set(B.key,I.textContent)};s(w)&&_(w);for(let I of w.querySelectorAll("script"))_(I);return m}}}function k(p,T,E){let R=p.merge;if(!R)return!1;let C=R.identityOf(T);if(!C||R.disabled.has(C.key))return!1;let O=R.identityOf(E);if(!O||O.key!==C.key)return!1;let v=T,A=E,g=A.getAttribute("merge-key")||v.getAttribute("merge-key"),{text:h,warnings:m}=Ut(R.baseTexts().get(C.key),v.textContent,A.textContent,{parse:C.recognizer.parse,keyCandidates:g?g.split(/[\s,]+/).filter(Boolean):void 0});for(let x of m)console.warn(`[hyper-morph] merge "${C.raw}": ${x}`);return v.textContent!==h&&(v.textContent=h),!0}let y={morphStyle:"outerHTML",callbacks:{beforeNodeAdded:e,afterNodeAdded:e,beforeNodeMorphed:e,afterNodeMorphed:e,beforeNodeRemoved:e,afterNodeRemoved:e,beforeAttributeUpdated:e},head:{style:"merge",shouldPreserve:p=>p.getAttribute("im-preserve")==="true",shouldReAppend:p=>p.getAttribute("im-re-append")==="true",shouldRemove:e,afterHeadMorphed:e},scripts:{handle:!0,matchMode:"outerHTML",shouldPreserve:p=>p.getAttribute("im-preserve")==="true",shouldReAppend:p=>p.getAttribute("im-re-append")==="true",shouldRemove:e,afterScriptsHandled:e},restoreFocus:!0},N={computeMatches(p,T){let{computeMatches:E}=i.session();return E(p,T)}};function q(p,T,E={}){p=Qn(p);let R=xr(T),C=Zn(p,R,E),O=C.scripts.handle?new Set(Array.from(p.querySelectorAll("script")).map(h=>o(h,C.scripts.matchMode,C.merge))):null,v=ee(C),A=Q(C,p,R,h=>h.morphStyle==="innerHTML"?(z(h,p,R),Array.from(p.childNodes)):oe(h,p,R)),g=h=>{v&&le(C,v),H(C);let m=O?Lt(h,O,C):[];return m.length>0?Promise.all(m).then(()=>h):h};return A instanceof Promise?A.then(g):g(A)}function H(p){for(let T of Array.from(p.pantry.childNodes))p.callbacks.beforeNodeRemoved(T)!==!1&&p.callbacks.afterNodeRemoved(T);p.pantry.remove()}function oe(p,T,E){let R=xr(T);return z(p,R,E,T,T.nextSibling),Array.from(R.childNodes)}function ee(p){if(!p.config.restoreFocus)return null;let T=document.activeElement;if(!(T instanceof HTMLInputElement||T instanceof HTMLTextAreaElement))return null;let{id:E,selectionStart:R,selectionEnd:C}=T;return{element:T,id:E,selectionStart:R,selectionEnd:C}}function le(p,T){let E=T.element;if(T.id&&T.id!==document.activeElement?.getAttribute("id")&&(E=p.target.querySelector(`[id="${CSS.escape(T.id)}"]`),E?.focus()),E&&!E.selectionEnd&&T.selectionEnd!=null)try{E.setSelectionRange(T.selectionStart,T.selectionEnd)}catch{}}let z=(function(){function p(h,m,x,f=null,w=null){m instanceof HTMLTemplateElement&&x instanceof HTMLTemplateElement&&(m=m.content,x=x.content),f||=m.firstChild;for(let _ of x.childNodes){if(r(_))continue;if(f&&f!=w){let B=E(h,_,f,w);if(B){B!==f&&C(h,f,B),ie(B,_,h),f=B.nextSibling;continue}}if(_ instanceof Element){let B=_.getAttribute("id");if(h.persistentIds.has(B)){let S=O(m,B,f,h);ie(S,_,h),f=S.nextSibling;continue}if(!h.idMap.has(_)){let S=h.hyperMatches.get(_);if(S&&!h.idMap.has(S)&&!g(S,m)){A(m,S,f),ie(S,_,h),f=S.nextSibling;continue}}}let I=T(m,_,f,h);I&&(f=I.nextSibling)}for(;f&&f!=w;){let _=f;f=f.nextSibling,r(_)||R(h,_)}}function T(h,m,x,f){if(f.callbacks.beforeNodeAdded(m)===!1)return null;if(f.idMap.has(m)){let w=m,_=document.createElementNS(w.namespaceURI,w.localName);return h.insertBefore(_,x),ie(_,m,f),f.callbacks.afterNodeAdded(_),_}else{let w=c(document.importNode(m,!0));return h.insertBefore(w,x),f.callbacks.afterNodeAdded(w),w}}let E=(function(){function h(f,w,_,I){let B=w instanceof Element&&!f.idMap.has(w)?f.hyperMatches.get(w):null,S=null,M=w.nextSibling,V=0,D=_;for(;D&&D!=I;){if(r(D)){D=D.nextSibling;continue}if(x(D,w)){if(m(f,D,w)||D===B&&!f.idMap.has(D))return D;if(S===null){let W=D instanceof Element&&f.hyperMatchedOldElements.has(D);!f.idMap.has(D)&&!W&&(S=D)}}if(S===null&&M&&x(D,M)&&(V++,M=M.nextSibling,V>=2&&(S=void 0)),f.activeElementAndParents.includes(D))break;D=D.nextSibling}return S||null}function m(f,w,_){let I=f.idMap.get(w),B=f.idMap.get(_);if(!B||!I)return!1;for(let S of I)if(B.has(S))return!0;return!1}function x(f,w){let _=f,I=w;return _.nodeType===I.nodeType&&_.tagName===I.tagName&&(!_.getAttribute?.("id")||_.getAttribute?.("id")===I.getAttribute?.("id"))}return h})();function R(h,m){let x=m instanceof Element&&h.hyperMatchedOldElements.has(m)&&!h.idMap.has(m);if(h.idMap.has(m)||x)A(h.pantry,m,null);else{if(h.callbacks.beforeNodeRemoved(m)===!1)return;m.parentNode?.removeChild(m),h.callbacks.afterNodeRemoved(m)}}function C(h,m,x){let f=m;for(;f&&f!==x;){let w=f;f=f.nextSibling,r(w)||R(h,w)}return f}function O(h,m,x,f){let w=f.target.getAttribute?.("id")===m&&f.target||f.target.querySelector(`[id="${CSS.escape(m)}"]`)||f.pantry.querySelector(`[id="${CSS.escape(m)}"]`);return v(w,f),A(h,w,x),w}function v(h,m){let x=h.getAttribute("id");for(;h=h.parentNode;){let f=m.idMap.get(h);f&&(f.delete(x),f.size||m.idMap.delete(h))}}function A(h,m,x){if(h.moveBefore)try{h.moveBefore(m,x)}catch{h.insertBefore(m,x)}else h.insertBefore(m,x)}function g(h,m){let x=m instanceof Element?m:m.realParentNode;return!!x&&h.contains(x)}return p})(),ie=(function(){function p(v,A,g){return g.ignoreActive&&v===document.activeElement?null:(g.callbacks.beforeNodeMorphed(v,A)===!1||(v instanceof HTMLHeadElement&&g.head.ignore||(v instanceof HTMLHeadElement&&g.head.style!=="morph"?fe(v,A,g):(T(v,A,g),k(g,v,A)||O(v,g)||z(g,v,A))),g.callbacks.afterNodeMorphed(v,A)),v)}function T(v,A,g){let h=A.nodeType;if(h===1){let m=v,x=A,f=m.attributes,w=x.attributes;for(let _ of w)C(_.name,m,"update",g)||m.getAttribute(_.name)!==_.value&&m.setAttribute(_.name,_.value);for(let _=f.length-1;0<=_;_--){let I=f[_];if(I&&!x.hasAttribute(I.name)){if(C(I.name,m,"remove",g))continue;m.removeAttribute(I.name)}}O(m,g)||E(m,x,g)}(h===8||h===3)&&v.nodeValue!==A.nodeValue&&(v.nodeValue=A.nodeValue)}function E(v,A,g){if(v instanceof HTMLInputElement&&A instanceof HTMLInputElement&&A.type!=="file"){let h=A.value,m=v.value;R(v,A,"checked",g),R(v,A,"disabled",g),g.formStateSync==="property"&&v.indeterminate!==A.indeterminate&&(v.indeterminate=A.indeterminate),g.formStateSync==="property"?m!==h&&(C("value",v,"update",g)||(v.value=h)):A.hasAttribute("value")?m!==h&&(C("value",v,"update",g)||(v.setAttribute("value",h),v.value=h)):C("value",v,"remove",g)||(v.value="",v.removeAttribute("value"))}else if(v instanceof HTMLOptionElement&&A instanceof HTMLOptionElement)R(v,A,"selected",g);else if(v instanceof HTMLTextAreaElement&&A instanceof HTMLTextAreaElement){let h=A.value,m=v.value;if(C("value",v,"update",g)||(h!==m&&(v.value=h),g.formStateSync==="property"))return;v.firstChild&&v.firstChild.nodeValue!==h&&(v.firstChild.nodeValue=h)}}function R(v,A,g,h){let m=A[g],x=v[g];if(m!==x){let f=C(g,v,"update",h);if(f||(v[g]=A[g]),h.formStateSync==="property")return;m?f||v.setAttribute(g,""):C(g,v,"remove",h)||v.removeAttribute(g)}}function C(v,A,g,h){return v==="value"&&h.ignoreActiveValue&&A===document.activeElement?!0:h.callbacks.beforeAttributeUpdated(v,A,g)===!1}function O(v,A){return!!A.ignoreActiveValue&&v===document.activeElement&&v!==document.body}return p})();function Q(p,T,E,R){if(p.head.block){let C=T.querySelector("head"),O=E.querySelector("head");if(C&&O){let v=fe(C,O,p);return Promise.all(v).then(()=>(p.head.block=!1,p.head.ignore=!0,R(p)))}}return R(p)}function pe(p){return p.tagName==="SCRIPT"?!!p.getAttribute("src"):p.tagName==="LINK"?(p.getAttribute("rel")||"").toLowerCase().split(/\s+/).includes("stylesheet")&&!!p.getAttribute("href"):!1}function fe(p,T,E){let R=[],C=[],O=[],v=[],A=E.scripts.matchMode,g=x=>{if(x.tagName==="SCRIPT")return o(x,A,E.merge);if(x.tagName==="LINK"&&A==="smart"){let f=x.getAttribute("href");if(f)try{let w=new URL(f,window.location.href);return`link:${x.getAttribute("rel")||""}:${w.origin}${w.pathname}${w.search}`}catch{}}return x.outerHTML},h=new Map;for(let x of T.children){if(r(x))continue;let f=g(x),w=h.get(f);w||(w=[],h.set(f,w)),w.push(x)}for(let x of p.children){let f=g(x),w=h.get(f),_=!!(w&&w.length),I=E.head.shouldReAppend(x),B=E.head.shouldPreserve(x);if(_||B)if(I)C.push(x);else{if(w&&w.length){let S=w.pop();w.length||h.delete(f),k(E,x,S)}O.push(x)}else E.head.style==="append"?I&&(C.push(x),v.push(x)):E.head.shouldRemove(x)!==!1&&!r(x)&&C.push(x)}for(let x of h.values())v.push(...x);let m=[];for(let x of v){let f=document.createRange().createContextualFragment(x.outerHTML).firstChild;if(E.callbacks.beforeNodeAdded(f)!==!1){if(f instanceof Element&&pe(f)){let w,_=new Promise(function(I){w=I});f.addEventListener("load",function(){w()}),f.addEventListener("error",function(){w()}),m.push(_)}p.appendChild(f),E.callbacks.afterNodeAdded(f),R.push(f)}}for(let x of C)E.callbacks.beforeNodeRemoved(x)!==!1&&(p.removeChild(x),E.callbacks.afterNodeRemoved(x));return E.head.afterHeadMorphed(p,{added:R,kept:O,removed:C}),m}function Lt(p,T,E){if(!E.scripts.handle)return[];let R=[],C=[],O=[],v=[],A=E.scripts.matchMode,g=[];for(let m of p)if(m instanceof Element){s(m)&&g.push(m);for(let x of m.querySelectorAll("script"))s(x)&&g.push(x)}for(let m of g){if(m.closest("head")||n(m))continue;let x=o(m,A,E.merge),f=T.has(x),w=E.scripts.shouldPreserve(m),_=E.scripts.shouldReAppend(m);f||w?_?(C.push(m),v.push(m)):O.push(m):v.push(m)}let h=[];for(let m of v){if(E.callbacks.beforeNodeAdded(m)===!1)continue;let x=document.createElement("script");for(let f of m.attributes)x.setAttribute(f.name,f.value);if(x.textContent=m.textContent,x.src){let f,w=new Promise(function(_){f=_});x.addEventListener("load",function(){f()}),x.addEventListener("error",function(){f()}),h.push(w)}m.replaceWith(x),E.callbacks.afterNodeAdded(x),R.push(x)}return E.scripts.afterScriptsHandled(E.target,{added:R,kept:O,removed:C}),h}let Zn=(function(){function p(g,h,m){let{persistentIds:x,idMap:f}=v(g,h),w=N.computeMatches(g,h);if(typeof m.key=="function"){let M=new Map,V=new Set,D=F=>{let L=m.key(F);L!=null&&(M.has(L)?V.add(L):M.set(L,F))};g instanceof Element&&D(g);for(let F of g.querySelectorAll("*"))D(F);for(let F of V)M.delete(F);let W=new Map;for(let[F,L]of w)W.set(L,F);let te=h.__hyperMorphRoot||h,X=new Map,G=new Set,j=F=>{let L=m.key(F);L!=null&&(X.has(L)?G.add(L):X.set(L,F))};te instanceof Element&&j(te);for(let F of te.querySelectorAll("*"))j(F);for(let F of G)X.delete(F);for(let[F,L]of X){let U=M.get(F);if(!U||U.tagName!==L.tagName)continue;let K=W.get(U);K&&K!==L&&w.delete(K);let ve=w.get(L);ve&&ve!==U&&W.delete(ve),w.set(L,U),W.set(U,L)}}let _=T(m),I=u(g,h,_.scripts);if(I){let M=new Map;for(let[V,D]of w)M.set(D,V);for(let[V,D]of I.newByKey){if(I.disabled.has(V))continue;let W=I.oldByKey.get(V);if(!W)continue;let te=M.get(W);te&&te!==D&&w.delete(te);let X=w.get(D);X&&X!==W&&M.delete(X),w.set(D,W),M.set(W,D)}}let B=new Set;for(let M of w.values())B.add(M);let S=_.morphStyle||"outerHTML";if(!["innerHTML","outerHTML"].includes(S))throw new Error(`Do not understand how to morph style ${S}`);return{target:g,newContent:h,config:_,morphStyle:S,ignoreActive:_.ignoreActive,ignoreActiveValue:_.ignoreActiveValue,restoreFocus:_.restoreFocus,formStateSync:_.formStateSync||"attribute",idMap:f,persistentIds:x,hyperMatches:w,hyperMatchedOldElements:B,merge:I,pantry:E(),activeElementAndParents:R(g),callbacks:_.callbacks,head:_.head,scripts:_.scripts}}function T(g){let h=Object.assign({},y);return Object.assign(h,g),h.callbacks=Object.assign({},y.callbacks,g.callbacks),h.head=Object.assign({},y.head,g.head),h.scripts=Object.assign({},y.scripts,g.scripts),h}function E(){let g=document.createElement("div");return g.hidden=!0,document.body.insertAdjacentElement("afterend",g),g}function R(g){let h=[],m=document.activeElement;if(m?.tagName!=="BODY"&&g.contains(m))for(;m&&(h.push(m),m!==g);)m=m.parentElement;return h}function C(g){let h=Array.from(g.querySelectorAll("[id]"));return g.getAttribute?.("id")&&h.push(g),h}function O(g,h,m,x){for(let f of x){let w=f.getAttribute("id");if(h.has(w)){let _=f;for(;_;){let I=g.get(_);if(I==null&&(I=new Set,g.set(_,I)),I.add(w),_===m)break;_=_.parentElement}}}}function v(g,h){let m=C(g),x=C(h),f=A(m,x),w=new Map;O(w,f,g,m);let _=h.__hyperMorphRoot||h;return O(w,f,_,x),{persistentIds:f,idMap:w}}function A(g,h){let m=new Set,x=new Map;for(let w of g){let _=w.getAttribute("id");x.has(_)?m.add(_):x.set(_,w.tagName)}let f=new Set;for(let w of h){let _=w.getAttribute("id");f.has(_)?m.add(_):x.get(_)===w.tagName&&f.add(_)}for(let w of m)f.delete(w);return f}return p})(),{normalizeElement:Qn,normalizeParent:xr}=(function(){let p=new WeakSet;function T(v){return v instanceof Document?v.documentElement:v}function E(v){if(v==null)return document.createElement("div");if(typeof v=="string")return E(O(v));if(p.has(v))return v;if(v instanceof Node){if(v.parentNode)return new R(v);{let A=document.createElement("div");return A.append(v),A}}else{let A=document.createElement("div");for(let g of[...v])A.append(g);return A}}class R{constructor(A){this.originalNode=A,this.realParentNode=A.parentNode,this.previousSibling=A.previousSibling,this.nextSibling=A.nextSibling}get childNodes(){let A=[],g=this.previousSibling?this.previousSibling.nextSibling:this.realParentNode.firstChild;for(;g&&g!=this.nextSibling;)A.push(g),g=g.nextSibling;return A}querySelectorAll(A){return this.childNodes.reduce((g,h)=>{if(h instanceof Element){h.matches(A)&&g.push(h);let m=h.querySelectorAll(A);for(let x=0;x<m.length;x++)g.push(m[x])}return g},[])}insertBefore(A,g){return this.realParentNode.insertBefore(A,g)}moveBefore(A,g){return this.realParentNode.moveBefore(A,g)}get __hyperMorphRoot(){return this.originalNode}}function C(v){let A=x=>`<${x}(?:\\s(?:[^>"']|"[^"]*"|'[^']*')*)?>`,g=v.replace(/<!--[\s\S]*?-->/g,"");for(let x of["script","style","textarea","title"])g=g.replace(new RegExp(`${A(x)}[\\s\\S]*?</${x}\\s*>`,"gi"),"");let h=new RegExp(`${A("svg")}[\\s\\S]*?</svg\\s*>`,"gi"),m;do m=g,g=g.replace(h,"");while(g!==m);return g}function O(v){let A=new DOMParser,g=C(v);if(g.match(/<\/html>/)||g.match(/<\/head>/)||g.match(/<\/body>/)){let h=A.parseFromString(v,"text/html");if(g.match(/<\/html>/))return p.add(h),h;{let m=h.firstChild;return m&&p.add(m),m}}else{let m=A.parseFromString("<body><template>"+v+"</template></body>","text/html").body.querySelector("template").content;return p.add(m),m}}return{normalizeElement:T,normalizeParent:E}})(),wr=Symbol("hyper-morph-duplicate-key"),_r=[p=>p.getAttribute("data-id"),p=>p.getAttribute("id")];function Pe(p,T){return T.map(E=>{let R=new Map;for(let C of p){if(C.nodeType!==1)continue;let O=E(C);O==null||O===""||R.set(O,R.has(O)?wr:C)}return R})}function Ar(p,T,E,R){for(let C=0;C<R.length;C++){let O=R[C](p);if(O==null||O===""||T[C].get(O)!==p)continue;let v=E[C].get(O);if(!(!v||v===wr)&&v.tagName===p.tagName)return v}return null}function Se(p,T,E){for(let R=0;R<E.length;R++){let C=E[R](p);if(!(C==null||C==="")&&T[R].get(C)===p)return!0}return!1}function ei(p,T,E={}){let R=E.skip||(()=>!1),C=E.ignoreAttr||(()=>!1),O=E.tiers&&E.tiers.length?E.tiers:_r,v=null;function A(){return v||(v=Pe([p,...p.querySelectorAll("*")],O)),v}let g=null;function h(){return g||(g=Pe([T,...T.querySelectorAll("*")],O)),g}function m(j){return!j.parentElement||!j.parentElement.parentElement}function x(j,F,L){return m(j)||Se(j,A(),O)?(L.push({type:"subtree",el:j,base:F}),!1):!0}function f(j,F){let L=[];for(let U of j.attributes)C(j,U.name)||F.getAttribute(U.name)!==U.value&&L.push(U.name);for(let U of F.attributes)C(j,U.name)||j.hasAttribute(U.name)||L.push(U.name);return L}function w(j){let F=[],L=null,U=()=>{L!==null&&(F.push({nodeType:3,nodeValue:L}),L=null)};for(let K of j.childNodes){if(K.nodeType===3){L=(L===null?"":L)+K.nodeValue;continue}K.nodeType===1&&R(K)||(U(),(K.nodeType===1||K.nodeType===8)&&F.push(K))}return U(),F}function _(j,F){if(j.nodeType!==F.nodeType)return!1;if(j.nodeType!==1)return!0;if(j.tagName!==F.tagName)return!1;for(let L of O){let U=L(j),K=L(F);if(U!=null&&U!==""&&K!=null&&K!==""&&U!==K)return!1}return!0}function I(j){let F="";for(let L of j)L.nodeType===3&&L.nodeValue.trim()!==""?F+="\0"+L.nodeValue:L.nodeType===8&&(F+=""+L.nodeValue);return F}function B(j,F,L){let U=w(j),K=w(F);if(U.length===K.length){let $=!0;for(let Y=0;Y<U.length;Y++)if(!_(U[Y],K[Y])){$=!1;break}if($){for(let Y=0;Y<U.length;Y++){let Ee=U[Y];if(Ee.nodeType===1){if(S(Ee,K[Y],L))return!0}else if(Ee.nodeValue!==K[Y].nodeValue)return!0}return!1}}let ve=U.filter($=>$.nodeType===1),jt=K.filter($=>$.nodeType===1);if(I(U)!==I(K))return!0;let Sr=Pe(ve,O),Er=Pe(jt,O),Ft=[],qt=new Set,Cr=[];for(let $ of ve){let Y=Ar($,Sr,Er,O);Y&&!qt.has(Y)?(Ft.push([$,Y]),qt.add(Y)):Cr.push($)}let ge=[];for(let $ of Cr)Se($,Sr,O)?L.push({type:"subtree",el:$,base:null}):ge.push($);let ze=[];for(let $ of jt)qt.has($)||(Se($,Er,O)?L.push({type:"deletion",el:$}):ze.push($));if(ge.length!==ze.length)return!0;for(let $=0;$<ge.length;$++)if(!_(ge[$],ze[$]))return!0;let Tr=new Map(Ft);for(let $=0;$<ge.length;$++)Tr.set(ge[$],ze[$]);let Rr=-1;for(let $ of ve){let Y=Tr.get($);if(!Y)continue;let Ee=jt.indexOf(Y);if(Ee<Rr)return!0;Rr=Ee}for(let $=0;$<ge.length;$++)if(S(ge[$],ze[$],L))return!0;for(let[$,Y]of Ft)if(S($,Y,L))return!0;return!1}function S(j,F,L){if(j.tagName!==F.tagName)return x(j,F,L);let U=f(j,F),K=[];if(B(j,F,K))return x(j,F,L);if(U.length){if(!m(j)&&!Se(F,h(),O))return!0;L.push({type:"attrs",el:j,names:U,base:F})}return L.push(...K),!1}let M=[],V=f(p,T);V.length&&M.push({type:"attrs",el:p,names:V});let D=(j,F)=>Array.from(j.children).find(L=>L.tagName===F)||null,W=D(p,"HEAD"),te=D(T,"HEAD");if(W&&te){let j=[];S(W,te,j),j.length&&M.push({type:"head",el:W})}else(W||te)&&W&&M.push({type:"head",el:W});let X=D(p,"BODY"),G=D(T,"BODY");return X&&G?S(X,G,M):X&&M.push({type:"subtree",el:X,base:null}),{entries:M}}function ti(p,T,E={}){let R=E.tiers&&E.tiers.length?E.tiers:_r,C=p.documentElement,O=[],v=0,A=S=>({ok:!1,placed:O,held:S,skippedAttrs:v});if(!C)return A(null);function g(S){let M=[S,...S.querySelectorAll("*")];return Pe(M,R)}let h=g(C),m=new Map,x=S=>{let M=S.getRootNode(),V=m.get(M);if(!V){let D=M.nodeType===9?M.documentElement:M;V=g(D),m.set(M,V)}return V};function f(S){if(!S.parentElement&&S.tagName==="HTML")return C;if(S.parentElement&&!S.parentElement.parentElement&&S.parentElement.tagName==="HTML"){if(S.tagName==="BODY")return p.body||null;if(S.tagName==="HEAD")return p.head||null}return null}function w(S){let M=f(S);return M||Ar(S,x(S),h,R)}function _(S){if(!S)return null;let M=w(S);return M&&M.isConnected?M:null}function I(S){for(let M=0;M<R.length;M++){let V=R[M](S);V!=null&&V!==""&&h[M].set(V,S)}}for(let S of T){if(S.type!=="deletion")continue;let M=w(S.el);M&&M!==C&&M.remove()}let B=T.filter(S=>S.type!=="deletion").sort((S,M)=>S.el===M.el?0:S.el.compareDocumentPosition(M.el)&Node.DOCUMENT_POSITION_FOLLOWING?-1:1);for(let S of B){if(S.type==="head"){let G=p.importNode(S.el,!0);p.head?p.head.replaceWith(G):C.insertBefore(G,C.firstChild),O.push({entry:S,imported:G});continue}if(S.type==="attrs"){let G=_(S.el)||_(S.base);if(!G){v++;continue}for(let j of S.names)S.el.hasAttribute(j)?G.setAttribute(j,S.el.getAttribute(j)):G.removeAttribute(j);continue}let M=S.el;if(f(M))return A(S);let V=_(M)||_(S.base);if(V){let G=p.importNode(M,!0);V.replaceWith(G),I(G),O.push({entry:S,imported:G});continue}if(S.base!=null&&!Se(S.base,x(S.base),R)||!Se(M,x(M),R))return A(S);let D=M.parentElement;if(!D)return A(S);let W=_(D);if(!W)return A(S);let te=null;for(let G=M.previousElementSibling;G;G=G.previousElementSibling){let j=_(G);if(j&&j.parentNode===W){te=j;break}}let X=p.importNode(M,!0);if(te)W.insertBefore(X,te.nextSibling);else{let G=Array.prototype.indexOf.call(D.children,M);W.insertBefore(X,W.children[G]||null)}I(X),O.push({entry:S,imported:X})}return{ok:!0,placed:O,held:null,skippedAttrs:v}}return{morph:q,defaults:y,findChangedRoots:ei,spliceProtected:ti,mergeJson:zt,mergeScriptText:Ut,parseJsonRelaxed:ot,parseRulesRelaxed:$r}})();var aa=He.morph,la=He.defaults,ca=He.findChangedRoots,ua=He.spliceProtected;var Ht=He;var at=["textContent","innerText","innerHTML","outerHTML","value","checked","selected","disabled","readOnly","type","tagName","nodeName","nodeType","nodeValue","childElementCount","id","className","classList","baseURI","offsetWidth","offsetHeight","clientWidth","clientHeight","scrollWidth","scrollHeight","dataset","currentSrc","duration","paused","title","documentURI","contentType"],Vt=new Set(at),Ur=new Set(["textContent","innerText","innerHTML","value","checked","selected","disabled","readOnly","type","id","className","title"]),Hr=new Set(["tagName","nodeName","nodeType","nodeValue","childElementCount","classList","baseURI","documentURI","contentType","offsetWidth","offsetHeight","clientWidth","clientHeight","scrollWidth","scrollHeight","currentSrc","duration","paused","dataset"]);var lt={};$t(lt,{EmptyListInsert:()=>We,MAX_RULE_DEPTH:()=>Oe,MaxRuleDepthExceeded:()=>xe,RuleTargetReadOnly:()=>Ke,RulesParseError:()=>Te,ShapeMismatch:()=>Ve,UnknownRulesVersion:()=>Re});var Te=class extends Error{constructor(t,r){super(t),this.name="RulesParseError",this.cause=r}},Re=class extends Error{constructor(t){super(`unknown rules version: ${t}. Library supports "1".`),this.name="UnknownRulesVersion",this.version=t}},Oe=20,xe=class extends Error{constructor(t){super(`rule depth exceeded ${Oe} at path: ${t.join(".")}`),this.name="MaxRuleDepthExceeded",this.path=t}},Ve=class extends Error{constructor(t){super(`shape mismatch: ${t.length} field(s) failed validation`),this.name="ShapeMismatch",this.mismatches=t}},We=class extends Error{constructor(t){super(`cannot add items to empty list at "${t.join(".")}" \u2014 no sibling to clone as template. Seed the list with a hidden item first.`),this.name="EmptyListInsert",this.path=t}},Ke=class extends Error{constructor(t){super(`cannot write to read-only DOM property "${t}"`),this.name="RuleTargetReadOnly",this.target=t}};function ke(e,t,r,n={}){return Wt(e,t,r,{depth:0,path:[]},n)}function Wt(e,t,r,n,i){if(n.depth>Oe)throw new xe(n.path);if(typeof r=="string")return Ii(e,t,r,i);if(Array.isArray(r)){let[o,a]=r;return e.find(t,o,i).map((l,c)=>Wt(e,l,a,{depth:n.depth+1,path:[...n.path,c]},i))}if(typeof r=="object"&&r!==null){let o={};for(let[a,s]of Object.entries(r))o[a]=Wt(e,t,s,{depth:n.depth+1,path:[...n.path,a]},i);return o}return null}function Ii(e,t,r,n){if(r.endsWith("[]")){let a=r.slice(0,-2);return e.find(t,a,n).map(s=>e.text(s))}if(r.startsWith("@"))return Vr(e,t,r.slice(1));let i=Z(r);if(i!==-1){let a=r.slice(0,i),s=r.slice(i+1),l=a?e.find(t,a,n):[t];return l.length===0?null:Vr(e,l[0],s)}if(r===".")return e.text(t);let o=e.find(t,r,n);return o.length===0?null:e.text(o[0])}function Vr(e,t,r){if(Vt.has(r)){let i=e.prop(t,r);return i==null?null:String(i)}let n=e.attr(t,r);return n||null}function Li(e){return e&&e.nodeType===1&&e.tagName==="SCRIPT"&&e.hasAttribute&&e.hasAttribute("data-rules-name")}function ji(e){return e?(e.nodeType===9||e.nodeType===11,e):null}var Fi={find(e,t,r={}){let n=ji(e);if(!n||!n.querySelectorAll)return[];let i=Array.from(n.querySelectorAll(t));r.includeRulesTag||(i=i.filter(s=>!Li(s)));let o=[];r.skip&&o.push(r.skip);let a=r.templateAttr===null?null:r.templateAttr||"cms-template";if(a&&o.push("["+a+"]"),o.length){let s=o.join(", ");i=i.filter(l=>!l.closest||!l.closest(s))}return i},parent(e){return e?e.parentElement:null},children(e){return e?Array.from(e.children):[]},text(e,t){if(t===void 0)return(e.textContent||"").trim();e.textContent=t},attr(e,t,r){if(r===void 0)return e.hasAttribute&&e.hasAttribute(t)?e.getAttribute(t):null;e.setAttribute(t,r)},removeAttr(e,t){e&&e.removeAttribute&&e.removeAttribute(t)},prop(e,t,r){if(r===void 0){let n=e?e[t]:void 0;return n!==void 0?n:null}e[t]=r},clone(e){return e.cloneNode(!0)},insertAt(e,t,r){let n=e.children[r]||null;e.insertBefore(t,n)},remove(e){e&&e.parentNode&&e.parentNode.removeChild(e)},replaceWith(e,t){if(!e||!e.parentNode)throw new Error("dom.replaceWith: node has no parent");let n=e.ownerDocument.createElement("template");n.innerHTML=t;let i=n.content.firstElementChild;if(!i)throw new Error("dom.replaceWith: html did not parse to an element");return e.parentNode.replaceChild(i,e),i},stripIds(e){let t=0;return e.id&&(e.removeAttribute("id"),t++),(e.querySelectorAll?e.querySelectorAll("[id]"):[]).forEach(n=>{n.removeAttribute("id"),t++}),t},sameNode(e,t){return e===t}},ue=Fi;function Kt(e){try{return JSON.parse(e)}catch(t){throw new Te(`Invalid strict JSON: ${t.message}`,t)}}function Me(e){try{return JSON.parse(e)}catch{}let t={BRACE_OPEN:"{",BRACE_CLOSE:"}",BRACKET_OPEN:"[",BRACKET_CLOSE:"]",COLON:":",COMMA:",",STRING:"STRING",SELECTOR:"SELECTOR",IDENTIFIER:"IDENTIFIER",NUMBER:"NUMBER",BOOLEAN:"BOOLEAN"};function r(i){let o=[],a=0;for(;a<i.length;){let s=i[a];if(/\s/.test(s)){a++;continue}if("{}".includes(s)){o.push({type:s,value:s}),a++;continue}if(s==="["){let b=!1,u=a+1;for(;u<i.length&&/\s/.test(i[u]);)u++;if(u<i.length&&/[a-zA-Z_]/.test(i[u])&&(b=!0),!b){o.push({type:s,value:s}),a++;continue}}if(s==="]"){o.push({type:s,value:s}),a++;continue}if(s===":"){o.push({type:t.COLON,value:s}),a++;continue}if(s===","){o.push({type:t.COMMA,value:s}),a++;continue}if(s==='"'||s==="'"){let b=s,u=a+1;for(;u<i.length&&i[u]!==b;)i[u]==="\\"&&u++,u++;o.push({type:t.STRING,value:i.substring(a+1,u),quoted:!0,sourceQuote:b}),a=u+1;continue}let l=a,c;for(;l<i.length&&!/[{},]/.test(i[l]);)if(i[l]===":"){let b=[":first",":last",":nth-child",":nth-of-type",":first-child",":last-child",":first-of-type",":last-of-type",":only-child",":only-of-type",":hover",":focus",":active",":visited",":disabled",":enabled",":checked",":empty",":root",":target",":not",":before",":after",":nth-last-child",":nth-last-of-type"],u=!1;for(let k of b){let y=k.substring(1);if(i.substring(l+1,l+1+y.length)===y){u=!0,l+=y.length;break}}if(!u)break}else if(i[l]==="["){for(l++;l<i.length&&i[l]!=="]";){if(i[l]==='"'||i[l]==="'"){let b=i[l];for(l++;l<i.length&&i[l]!==b;)i[l]==="\\"&&l++,l++}l++}l<i.length&&i[l]==="]"&&l++}else l++;c=i.substring(a,l);let d=t.IDENTIFIER;/^-?\d+(\.\d+)?$/.test(c)?d=t.NUMBER:c==="true"||c==="false"||c==="null"?d=t.BOOLEAN:/^[.#@\[]|[.#@\[]| /.test(c)&&(d=t.SELECTOR),o.push({type:d,value:c,quoted:!1}),a=l}return o}function n(i){let o="";for(let a=0;a<i.length;a++){let s=i[a];if("{}".includes(s.type)||"[]".includes(s.type)){o+=s.value;continue}if(s.type===t.COLON){o+=s.value;continue}if(s.type===t.COMMA){let l=i[a+1];if(l&&(l.type==="}"||l.type==="]"))continue;o+=s.value;continue}if(s.type===t.STRING&&s.quoted){let l=s.value;s.sourceQuote==="'"&&(l=l.replace(/\\'/g,"'"),l=l.replace(/(\\*)"/g,(c,d)=>d.length%2===0?d+'\\"':c)),o+=`"${l}"`;continue}if(s.type===t.NUMBER||s.type===t.BOOLEAN){o+=s.value;continue}if(s.type===t.SELECTOR||s.type===t.IDENTIFIER){o+=`"${s.value}"`;continue}o+=`"${s.value}"`}return o}try{let i=r(e),o=n(i);return JSON.parse(o)}catch(i){throw new Te("Invalid extraction rules syntax: "+i.message,i)}}var Kr="1",Wr=/^[a-zA-Z0-9_-]+$/;function Ge(e,t,r){let n;if(r===void 0)n="script[data-rules-name]";else{if(typeof r!="string"||!Wr.test(r))throw new Error(`hyper-html-api: invalid rules token ${JSON.stringify(r)} (must match ${Wr})`);n=`script[data-rules-name~="${r}"]`}let i=e.find(t,n,{includeRulesTag:!0});if(i.length===0)return null;r!==void 0&&i.length>1&&console.warn(`hyper-html-api: ${i.length} rules tags match data-rules-name~="${r}"; using the first.`);let o=i[0],a=e.attr(o,"data-rules-version");if(a!==Kr)throw new Re(a);return{rules:Me(e.text(o)),tagNode:o}}var Pa=new Function("url","return import(url)");var Di=.5;function Gt(e,t,r,n,i,o,a,s={}){let l=e.find(t,r,s);if(i.length===0){l.forEach(z=>e.remove(z));return}let c=i.length>l.length,d=l[0]||null;if(c&&!d&&(d=zi(e,t,r,s),!d))throw new We(o.path);let b=l.map(z=>$i(e,z,n,s)),u=null;if(d){u=e.clone(d),s.templateAttr&&e.removeAttr(u,s.templateAttr);let z=e.stripIds(u);z>0&&console.warn(`[hyper-html-api] stripped ${z} id attribute(s) from cloned template at "${o.path.join(".")||"(root)"}"`)}let k=Bi(i,b,n),y=l[0]||d,N=e.parent(y),q=l.length>0?Zr(e,N,y):0,H=Ui(e,l),oe=new Set,ee=[],le=i.map((z,ie)=>{let Q=k[ie];if(Q>=0)return oe.add(Q),ee.push(!1),l[Q];ee.push(!0);let pe=e.clone(u);return e.stripIds(pe),pe});if(l.forEach((z,ie)=>{oe.has(ie)||e.remove(z)}),H){le.forEach((z,ie)=>{let Q=q+ie;e.children(N).findIndex(Lt=>e.sameNode(Lt,z))!==Q&&e.insertAt(N,z,Q)}),Xr(e,le,n,i,o,a,s);return}Hi(e,le,ee,N,q),Xr(e,le,n,i,o,a,s)}function Xr(e,t,r,n,i,o,a){t.forEach((s,l)=>{if(r===null){let c=n[l],d=c==null?"":String(c);e.text(s)!==d&&e.text(s,d)}else{let c=o(e,s,r,n[l],{depth:i.depth+1,path:[...i.path,l]},a);c&&c!==s&&(t[l]=c)}})}function $i(e,t,r,n){return r===null?e.text(t):ke(e,t,r,n)}function Bi(e,t,r){let n=new Array(e.length).fill(-1),i=new Set;return e.forEach((o,a)=>{let s=-1,l=-1;t.forEach((c,d)=>{if(i.has(d))return;let b=Pi(o,c,r),u=b===l&&s>=0?Math.abs(d-a)<Math.abs(s-a):!1;(b>l||u)&&(l=b,s=d)}),l>=Di&&(n[a]=s,i.add(s))}),n}function Pi(e,t,r){if(r===null)return e===t?1:0;let n=Object.keys(r||{});if(n.length===0)return 0;let i=0;for(let o of n)JSON.stringify(e?.[o])===JSON.stringify(t?.[o])&&i++;return i/n.length}function Zr(e,t,r){let n=e.children(t);for(let i=0;i<n.length;i++)if(e.sameNode(n[i],r))return i;return-1}function zi(e,t,r,n){if(!n.templateAttr)return null;let i=t;for(;i;){let o=e.find(i,r,{includeRulesTag:!1,templateAttr:null});for(let a of o)if(e.attr(a,n.templateAttr)!=null)return a;i=e.parent(i)}return null}function Ui(e,t){if(t.length<=1)return!0;let r=e.parent(t[0]);if(!r)return!1;let n=e.children(r),i=[];for(let o of t){let a=n.findIndex(s=>e.sameNode(s,o));if(a===-1)return!1;i.push(a)}return i.sort((o,a)=>o-a),i[i.length-1]-i[0]===i.length-1}function Hi(e,t,r,n,i){let o=null,a=i;for(let s=0;s<t.length;s++){if(!r[s]){o=t[s];continue}let l=o?e.parent(o):n;if(!l)continue;let c=o?Zr(e,l,o)+1:a++;e.insertAt(l,t[s],c),o=t[s]}}var Qr=new Set(["checked","selected","disabled","readOnly","paused"]);function Ne(e,t,r,n,i={}){let o=[];if(Jt(r,n,[],o),o.length)throw new Ve(o);ct(e,t,r,n,{depth:0,path:[]},i)}function ct(e,t,r,n,i,o={}){if(i.depth>Oe)throw new xe(i.path);if(n===void 0)return t;if(typeof r=="string")return Vi(e,t,r,n,i,o);if(Array.isArray(r)){let[a,s]=r;return Gt(e,t,a,s,n,i,ct,o),t}if(typeof r=="object"&&r!==null){for(let[a,s]of Object.entries(r)){let l=ct(e,t,s,n==null?n:n[a],{depth:i.depth+1,path:[...i.path,a]},o);l&&l!==t&&(t=l)}return t}return t}function Vi(e,t,r,n,i,o){if(r.endsWith("[]")){let l=r.slice(0,-2);return Gt(e,t,l,null,n,i,ct,o),t}if(r.startsWith("@"))return en(e,t,r.slice(1),n);let a=Z(r);if(a!==-1){let l=r.slice(0,a),c=r.slice(a+1),d=l?e.find(t,l,o):[t];return d.length===0||en(e,d[0],c,n),t}if(r===".")return e.text(t,n==null?"":String(n)),t;let s=e.find(t,r,o);return s.length===0||e.text(s[0],n==null?"":String(n)),t}function en(e,t,r,n){if(Hr.has(r))throw new Ke(r);if(r==="outerHTML"){let i=n==null?"":String(n);return e.replaceWith(t,i)}return Ur.has(r)?(e.prop(t,r,Wi(r,n)),t):(e.attr(t,r,n==null?"":String(n)),t)}function Wi(e,t){return t==null?Qr.has(e)?!1:"":Qr.has(e)?t==="false"?!1:!!t:t}function Jt(e,t,r,n){if(t!==void 0){if(typeof e=="string"){if(e.endsWith("[]")){Array.isArray(t)?t.forEach((i,o)=>{typeof i=="object"&&i!==null&&n.push({path:Ye([...r,o]),expected:"scalar",got:Je(i)})}):n.push({path:Ye(r),expected:"array",got:Je(t)});return}t!==null&&typeof t=="object"&&n.push({path:Ye(r),expected:"scalar",got:Je(t)});return}if(Array.isArray(e)){if(!Array.isArray(t)){n.push({path:Ye(r),expected:"array",got:Je(t)});return}let i=e[1];t.forEach((o,a)=>Jt(i,o,[...r,a],n));return}if(typeof e=="object"&&e!==null){if(t===null||Array.isArray(t)||typeof t!="object"){n.push({path:Ye(r),expected:"object",got:Je(t)});return}for(let[i,o]of Object.entries(e))Jt(o,t[i],[...r,i],n)}}}function Je(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Ye(e){return e.join(".")}function Yt(e,t,r){if(r&&typeof r=="object")return{rules:r,tagNode:null};if(typeof r=="string"){let n=t&&t.ownerDocument?t.ownerDocument:t;return Ge(e,n,r)}return null}function rn(e,t,r,n){let i=Yt(e,t,r);if(!i){let s=typeof r=="string"?`data-rules-name~="${r}"`:"the provided rules object";throw new Error(`hyper-html-api: could not resolve rules for ${s}`)}let{rules:o,tagNode:a}=i;return{rules:o,tagNode:a,get:()=>ke(e,t,o,n),set:s=>Ne(e,t,o,s,n)}}var re={extract:(e,t,r)=>ke(ue,e,t,r),apply:(e,t,r,n)=>Ne(ue,e,t,r,n),findRulesIn:(e,t)=>Ge(ue,e,t),findRules:(e,t)=>Yt(ue,e,t),bind:(e,t,r)=>rn(ue,e,t,r),parseStrict:Kt,parseRelaxed:Me,ruleAttrIndex:Z,splitRule:it,errors:lt,DOM_PROPERTIES:at};var Zt={};$t(Zt,{fromString:()=>me,getRuleAtPath:()=>we,getValueAtPath:()=>so,setAtPath:()=>Xt,toString:()=>oo});function oo(e){return e.map(String).join(".")}function me(e){return e===""?[]:e.split(".").map(t=>/^\d+$/.test(t)?Number(t):t)}function we(e,t){let r=e;for(let n of t){if(r==null)return;if(typeof r=="string"){if(r.endsWith("[]")&&(typeof n=="number"||n==="*")){r=r.slice(0,-2);continue}return}if(Array.isArray(r)){if(typeof n!="number"&&n!=="*")return;r=r[1];continue}if(typeof r=="object"){if(typeof n=="number"||!(n in r))return;r=r[n];continue}return}return r}function so(e,t){let r=e;for(let n of t){if(r==null)return;r=r[n]}return r}function Xt(e,t,r){if(t.length===0)return r;let[n,...i]=t;if(typeof n=="number"){let o=Array.isArray(e)?[...e]:[];return o[n]=Xt(o[n],i,r),o}return{...e&&typeof e=="object"?e:{},[n]:Xt((e||{})[n],i,r)}}function Xe(e){if(typeof e=="string")return e.endsWith("[]")?[]:"";if(Array.isArray(e))return[];if(typeof e=="object"&&e!==null){let t={};for(let[r,n]of Object.entries(e))t[r]=Xe(n);return t}return""}function ut(e,t,{ignoreActiveValue:r=!0}={}){Ht.morph(e,t,{morphStyle:"innerHTML",ignoreActiveValue:r,restoreFocus:!0,formStateSync:"property"})}function mt(e){return e.replace(/([a-z])([A-Z])/g,"$1 $2").replace(/([A-Z]+)([A-Z][a-z])/g,"$1 $2").replace(/[-_]/g," ").replace(/\s+/g," ").trim().replace(/^./,t=>t.toUpperCase())}var ao='<div class="hcms-drag-handle mirk-sortable__grip" aria-hidden="true"><div class="mirk-sortable__dots"><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span><span class="mirk-sortable__dot"></span></div></div>',Qt='<svg class="hcms-x" viewBox="0 0 16 16" shape-rendering="crispEdges" aria-hidden="true"><path d="M4 4 L12 12 M12 4 L4 12" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="square"></path></svg>',sn={"@scalar":`
|
|
3
3
|
<label class="hcms-field" data-hcms-shape="scalar">
|
|
4
4
|
<span class="hcms-label" data-hcms-label></span>
|
|
5
5
|
<textarea class="mirk-textarea" rows="1" data-hcms-field></textarea>
|
|
@@ -39,13 +39,13 @@ var hypercms=(()=>{var St=Object.defineProperty;var Fn=Object.getOwnPropertyDesc
|
|
|
39
39
|
</section>
|
|
40
40
|
`,"@object-array-item":`
|
|
41
41
|
<article class="hcms-card mirk-sortable__item" draggable="true">
|
|
42
|
-
${
|
|
42
|
+
${ao}
|
|
43
43
|
<div class="hcms-card-body mirk-sortable__body">
|
|
44
44
|
<div class="hcms-card-fields"></div>
|
|
45
45
|
<div class="hcms-card-controls">
|
|
46
46
|
<button type="button" class="hcms-move hcms-move-up hcms-sr-only" data-hcms-action="move-up" aria-label="Move up">\u2191</button>
|
|
47
47
|
<button type="button" class="hcms-move hcms-move-down hcms-sr-only" data-hcms-action="move-down" aria-label="Move down">\u2193</button>
|
|
48
|
-
<button type="button" class="hcms-remove hcms-remove--card" data-hcms-action="remove" aria-label="Remove">${
|
|
48
|
+
<button type="button" class="hcms-remove hcms-remove--card" data-hcms-action="remove" aria-label="Remove">${Qt}</button>
|
|
49
49
|
</div>
|
|
50
50
|
</div>
|
|
51
51
|
<div class="hcms-error" hidden></div>
|
|
@@ -59,7 +59,7 @@ var hypercms=(()=>{var St=Object.defineProperty;var Fn=Object.getOwnPropertyDesc
|
|
|
59
59
|
<span class="mirk-button__label">Choose</span>
|
|
60
60
|
</label>
|
|
61
61
|
<a class="mirk-file__name" data-hcms-field></a>
|
|
62
|
-
<button type="button" class="hcms-upload-clear" data-hcms-action="clear-upload" aria-label="Remove file">${
|
|
62
|
+
<button type="button" class="hcms-upload-clear" data-hcms-action="clear-upload" aria-label="Remove file">${Qt}</button>
|
|
63
63
|
</div>
|
|
64
64
|
<div class="hcms-error" hidden></div>
|
|
65
65
|
</div>
|
|
@@ -73,7 +73,7 @@ var hypercms=(()=>{var St=Object.defineProperty;var Fn=Object.getOwnPropertyDesc
|
|
|
73
73
|
</label>
|
|
74
74
|
<figure class="mirk-image__thumb">
|
|
75
75
|
<span class="mirk-image__frame"><img class="mirk-image__preview" data-hcms-field alt="" /></span>
|
|
76
|
-
<button type="button" class="hcms-upload-clear hcms-upload-clear--badge" data-hcms-action="clear-upload" aria-label="Remove image">${
|
|
76
|
+
<button type="button" class="hcms-upload-clear hcms-upload-clear--badge" data-hcms-action="clear-upload" aria-label="Remove image">${Qt}</button>
|
|
77
77
|
</figure>
|
|
78
78
|
</div>
|
|
79
79
|
<div class="hcms-error" hidden></div>
|
|
@@ -147,11 +147,11 @@ var hypercms=(()=>{var St=Object.defineProperty;var Fn=Object.getOwnPropertyDesc
|
|
|
147
147
|
<input class="hcms-chip-field" data-hcms-field aria-label="Item" placeholder="\u2026" />
|
|
148
148
|
<button type="button" class="hcms-remove" data-hcms-action="remove" aria-label="Remove">\xD7</button>
|
|
149
149
|
</span>
|
|
150
|
-
`},zi=["@scalar","@object","@scalar-array","@scalar-array-item","@object-array","@object-array-item"];function rt(e){let t=e.head||e.documentElement;if(t)for(let r of zi)Vr(e,t,r)}function zt(e,t){if(!Pr[t])return null;let r=e&&(e.head||e.documentElement);return r?Vr(e,r,t):null}var $r={src:"@image",checked:"@checkbox",innerHTML:"@richtext"},et={image:"@image",file:"@file",checkbox:"@checkbox",toggle:"@toggle",select:"@select",radio:"@radio",textarea:"@textarea",number:"@number",richtext:"@richtext"},Ui=new Set([...Object.values(et),"@chips","@chips-item"]);function Be(e,t,r){if(typeof e!="string")return"@scalar";let n=z(e),i=ot(Pe(e,n),t,"data-hcms-component");if(i&&et[i]){let o=et[i],a=Array.isArray(r)&&r.some(s=>s==="*"||typeof s=="number");return o==="@number"&&!Br(e,n,t,a).every(Vi)||(o==="@checkbox"||o==="@toggle")&&(n<0||e.slice(n+1)!=="checked")&&!Br(e,n,t,a).every(Wi)?"@scalar":o}if(n>=0){let o=e.slice(n+1);if($r[o])return $r[o]}return"@scalar"}function zr(e,t){if(typeof e!="string")return null;let r=z(e),n=ot(Pe(e,r),t,"data-hcms-component");return n&&et[n]||null}var Hi=/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/;function Vi(e){return e==null||e===""?!0:Hi.test(String(e))}function Wi(e){return e==null||e===""||e==="true"||e==="false"}function Br(e,t,r,n){if(!r||!r.querySelectorAll)return[];let i=Pe(e,t);if(!i||i===".")return[];let o=null;try{o=r.querySelectorAll(i)}catch{return[]}let a=t>=0?e.slice(t+1):null,s=[];for(let l of o)if(!(l.closest&&l.closest("[cms-template], [data-hcms-shell]"))&&(a?a==="value"&&"value"in l?s.push(l.value):s.push(l.getAttribute?l.getAttribute(a):null):s.push((l.textContent||"").trim()),!n))break;return s}function nt(e,t){if(typeof e!="string"||!e.endsWith("[]")||!t||!t.querySelector)return null;let r=e.slice(0,-2).trim();if(!r)return null;let n=null;try{n=t.querySelector(r)}catch{return null}let i=n&&n.closest?n.closest("[data-hcms-component]"):null;return(i&&i.getAttribute?i.getAttribute("data-hcms-component"):null)==="chips"?{array:"@chips",item:"@chips-item"}:null}function Ae(e,t,r){let n=e.join("."),i=e.map(o=>typeof o=="number"?"*":o).join(".");return n&&ee(r,n)||i&&i!==n&&ee(r,i)||ee(r,t)}function it(e,t,r){let n=nt(e,r);if(!n)return null;let i=Ae(t,n.array,r);return i&&i.getAttribute("data-hcms-tpl")===n.array?n:null}function Ur(e,t){if(typeof e!="string")return null;let r=z(e),n=ot(Pe(e,r),t,"data-hcms-options");if(n==null)return null;let i=n.trim().split(/\s+/).filter(Boolean);return i.length?i:null}function Hr(e,t){if(typeof e!="string")return null;let r=z(e);return ot(Pe(e,r),t,"data-hcms-crop")}function Pe(e,t){return t>=0?e.slice(0,t):e}function ot(e,t,r){if(!t||!t.querySelector||!e||e===".")return null;let n=null;try{n=t.querySelector(e)}catch{return null}return n&&n.getAttribute?n.getAttribute(r):null}function st(e,t){if(!e||t==null)return;r(t);function r(n){let i=fe(n);if(i==="scalar"){let o=Be(n,e);Ui.has(o)&&zt(e,o);return}if(i==="scalar-array"){let o=nt(n,e);o&&(zt(e,o.array),zt(e,o.item));return}if(i==="object"){for(let o of Object.values(n))r(o);return}if(i==="object-array"){let o=n[1];if(o&&typeof o=="object"&&!Array.isArray(o))for(let a of Object.values(o))r(a);else r(o)}}}function Vr(e,t,r){let n=ee(e,r);if(n)return n;let i=e.createElement("template");return i.setAttribute("data-hcms-tpl",r),i.setAttribute("save-remove",""),i.innerHTML=Pr[r].trim(),t.appendChild(i),i}function ee(e,t){return!e||!e.querySelector?null:e.querySelector(`template[data-hcms-tpl="${Ki(t)}"]`)}function Ki(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}function fe(e){return typeof e=="string"?e.endsWith("[]")?"scalar-array":"scalar":Array.isArray(e)?"object-array":typeof e=="object"&&e!==null?"object":"scalar"}function ze(e){return e?!!(e.content||e).querySelector("[data-hcms-field]"):!1}var Wr={IMG:"src",A:"href"};function at(e){if(!e)return"value";let t=(e.tagName||"").toUpperCase();return t==="INPUT"?(e.getAttribute("type")||"text").toLowerCase()==="checkbox"?"checked":"value":t==="TEXTAREA"||t==="SELECT"?"value":Wr[t]?Wr[t]:e.hasAttribute&&e.hasAttribute("contenteditable")?"innerHTML":null}function Kr(e,t){let r=(e.tagName||"").toUpperCase(),n=(e.getAttribute&&e.getAttribute("type")||"").toLowerCase(),i=at(e),a=`${Jr(r,n)}[data-hcms-field="${Se(t)}"]`;return r==="INPUT"&&n==="radio"?`${a}:checked@value`:i?`${a}@${i}`:a}function Gi(e){let t=(e.tagName||"").toUpperCase(),r=(e.getAttribute&&e.getAttribute("type")||"").toLowerCase(),n=at(e),o=`${Jr(t,r)}[data-hcms-field]`;return t==="INPUT"&&r==="radio"?`${o}:checked@value`:n?`${o}@${n}`:o}function Jr(e,t){return e==="INPUT"?t?`input[type="${t}"]`:"input":e==="TEXTAREA"?"textarea":e==="SELECT"?"select":e==="IMG"?"img":e==="A"?"a":':not([data-hcms-shape="scalar"]):not([data-hcms-shape="object"]):not([data-hcms-shape="object-array"]):not([data-hcms-shape="scalar-array"])'}function Se(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}var Gr=new Set(["__proto__","constructor","prototype"]);function lt(e,t){return r(e,[]);function r(c,m){let p=fe(c);if(p==="scalar")return n(c,m);if(p==="scalar-array")return i(c,m);if(p==="object-array")return o(c,m);if(p==="object"){let d=Object.create(null);for(let[f,k]of Object.entries(c)){if(Gr.has(f))throw new Error(`hypercms: rule key "${f}" is forbidden at "${m.join(".")||"<root>"}"`);d[f]=r(k,[...m,f])}return d}return null}function n(c,m){let p=m.length?m[m.length-1]:null,d=typeof p=="string"?p:"__value",f=l(m,d);if(f)return Kr(f,d);let k=s(Be(c,t,m),d);return k?Kr(k,d):`input[data-hcms-field="${Se(d)}"]@value`}function i(c,m){let p=it(c,m,t),d=p&&s(p.item,null)||s("@scalar-array-item",null),f=d?Gi(d):"input[data-hcms-field]@value";return[a(m,"[data-hcms-array-item]"),f]}function o(c,m){let[,p]=c,d=[...m,"*"],f=a(m,"[data-hcms-card]");if(p&&typeof p=="object"&&!Array.isArray(p)){let k=Object.create(null);for(let[R,O]of Object.entries(p)){if(Gr.has(R))throw new Error(`hypercms: rule key "${R}" is forbidden at "${d.join(".")}"`);k[R]=r(O,[...d,R])}return[f,k]}return[f,r(p,[...d,0])]}function a(c,m){let p=c.length?c[c.length-1]:"",d=c.some(R=>R==="*"),f=c.join(".");return`${d?`[data-hcms-field="${Se(p)}"]`:`[data-hcms-path="${Se(f)}"]`} > .hcms-array-items > ${m}`}function s(c,m){if(!t)return null;let p=ee(t,c);if(!p)return null;let d=p.content||p;if(m){let f=d.querySelector(`[data-hcms-field="${Se(m)}"]`);if(f)return f}return d.querySelector("[data-hcms-field]")}function l(c,m){if(!t)return null;let p=c.map(k=>typeof k=="number"?"*":k).join("."),f=[c.join("."),p];for(let k=c.length-1;k>=0;k--){let R=c.slice(0,k).map(O=>typeof O=="number"?"*":O);R.push("*"),f.push(R.join("."))}for(let k of f){if(!k)continue;let R=ee(t,k);if(!R||!ze(R))continue;let O=R.content||R,F=O.querySelector(`[data-hcms-field="${Se(m)}"]`)||O.querySelector("[data-hcms-field]");if(F)return F}return null}}function Ut(e){if(!e)return"";let t=String(e).split(/[?#]/)[0],r=t.split("/").pop()||t;try{return decodeURIComponent(r)}catch{return r}}function ct({pageRules:e,formRules:t,data:r,doc:n}){let i=n.createDocumentFragment(),o=Ht(e,[],r,n);return o&&i.appendChild(o),i}function Xr({shape:e,itemShape:t,pathArr:r,data:n,doc:i,itemKey:o}){if(e==="object-array-item")return Qr(t,r,n,i);if(e==="scalar-array-item")return en(r,n,i,o||null);throw new Error(`hypercms: buildItem called with unknown shape "${e}"`)}function Ht(e,t,r,n){let i=fe(e);return i==="scalar"?Ji(e,t,r,n):i==="object"?Qi(e,t,r,n):i==="object-array"?eo(e,t,r,n):i==="scalar-array"?to(e,t,r,n):null}function Ji(e,t,r,n){let i=Be(e,n,t),o=Ae(t,i,n);if(!o)throw new Error(`hypercms: missing template for scalar at "${t.join(".")}"`);let a=zr(e,n);a==="@number"&&i==="@scalar"&&console.info(`[hypercms] field "${t.join(".")}" declares component "@number" but its value isn't a plain number; rendering a text input so the value is preserved`),(a==="@checkbox"||a==="@toggle")&&i==="@scalar"&&console.info(`[hypercms] field "${t.join(".")}" declares component "${a}" but its value isn't true/false; rendering a text input so the value is preserved`),Zr(o,a===i?a:null,t);let s=Ee(o,n);Ce(s,t);let l=o.getAttribute?.("data-hcms-tpl");if((i==="@select"||i==="@radio")&&l===i&&Yi(s,e,t,r,n,i),i==="@image"&&l==="@image"){let c=Hr(e,n);c!=null&&!s.hasAttribute("data-hcms-crop")&&s.setAttribute("data-hcms-crop",c)}return ro(s,oe(t)),dt(s,oe(t)),mt(s,oe(t)),sn(s,r),i==="@file"&&Zi(s),s}function Zr(e,t,r){if(!t)return;let n=e.getAttribute?.("data-hcms-tpl");n&&n!==t&&console.info(`[hypercms] field "${r.join(".")}" declares component "${t}" but custom template "${n}" wins`)}function Yi(e,t,r,n,i,o){let a=Ur(t,i),s=a?[...a]:[],l=n==null?"":String(n);if(l!==""&&!s.includes(l)&&s.unshift(l),!a&&(Xi(e,"data-hcms-options required (space-separated values)"),s.length===0)){e.querySelector(".mirk-radio")?.remove();return}if(o==="@select"){let p=e.querySelector("select[data-hcms-field]");if(!p)return;for(let d of s){let f=i.createElement("option");f.value=d,f.textContent=tt(d),p.appendChild(f)}return}let c=e.querySelector(".mirk-radio");if(!c||!c.parentNode)return;let m=Vt(r.join("."));for(let p of s){let d=c.cloneNode(!0),f=d.querySelector('input[type="radio"]');f&&(f.value=p,f.name=m);let k=d.querySelector(".mirk-radio__label");k&&(k.textContent=tt(p)),c.parentNode.insertBefore(d,c)}c.remove()}function Vt(e){return"hcms-"+String(e).replace(/[^A-Za-z0-9_-]/g,"-")}function Xi(e,t){let r=e.querySelector?e.querySelector(".hcms-error"):null;r&&(r.textContent=t,r.hidden=!1)}function Zi(e){let t=e.querySelector?e.querySelector("a.mirk-file__name[data-hcms-field]"):null;t&&(t.textContent=Ut(t.getAttribute("href")))}function Qi(e,t,r,n){let i=Ae(t,"@object",n);if(!i)throw new Error(`hypercms: missing template for object at "${t.join(".")}"`);let o=Ee(i,n);if(Ce(o,t),dt(o,oe(t)),mt(o,oe(t)),ze(i))return ln(o,e,t),an(o,e,r),o;let a=ut(o,".hcms-object-fields",i,t);for(let[s,l]of Object.entries(e)){let c=r==null?null:r[s],m=Ht(l,[...t,s],c,n);m&&a.appendChild(m)}return o}function eo(e,t,r,n){let i=Ae(t,"@object-array",n);if(!i)throw new Error(`hypercms: missing template for object-array at "${t.join(".")}"`);let o=Ee(i,n);Ce(o,t),dt(o,oe(t)),mt(o,oe(t)),rn(o,i),on(o,i,t);let a=ut(o,".hcms-array-items",i,t),[,s]=e;return(Array.isArray(r)?r:[]).forEach((c,m)=>{let p=Qr(s,[...t,m],c,n);p&&a.appendChild(p)}),nn(o),o}function Qr(e,t,r,n){let i=tn(t,"object-array-item",n);if(!i)throw new Error(`hypercms: missing item template for "${t.join(".")}"`);let o=Ee(i,n);if(o.setAttribute("data-hcms-card",""),o.classList.contains("hcms-card")||o.classList.add("hcms-card"),Ce(o,t),ze(i))return e&&typeof e=="object"&&!Array.isArray(e)&&(ln(o,e,t),an(o,e,r)),o;let a=ut(o,".hcms-card-fields",i,t);if(e&&typeof e=="object"&&!Array.isArray(e))for(let[s,l]of Object.entries(e)){let c=r==null?null:r[s],m=Ht(l,[...t,s],c,n);m&&a.appendChild(m)}return o}function to(e,t,r,n){let i=nt(e,n),o=it(e,t,n),a=i?i.array:"@scalar-array",s=Ae(t,a,n);if(!s)throw new Error(`hypercms: missing template for scalar-array at "${t.join(".")}"`);Zr(s,i?i.array:null,t);let l=Ee(s,n);Ce(l,t),dt(l,oe(t)),mt(l,oe(t)),rn(l,s),on(l,s,t),o&&l.setAttribute("data-hcms-item-tpl",o.item);let c=ut(l,".hcms-array-items",s,t);return(Array.isArray(r)?r:[]).forEach((p,d)=>{let f=en([...t,d],p,n,o?o.item:null);f&&c.appendChild(f)}),nn(l),l}function en(e,t,r,n){let i=tn(e,"scalar-array-item",r,n);if(!i)throw new Error(`hypercms: missing item template for "${e.join(".")}"`);let o=Ee(i,r);return o.setAttribute("data-hcms-array-item",""),o.classList.contains("hcms-array-item")||o.classList.add("hcms-array-item"),Ce(o,e),sn(o,t),o}function tn(e,t,r,n){let i=e.map(o=>typeof o=="number"?"*":o).join(".");return ee(r,i)||n&&ee(r,n)||ee(r,"@"+t)}function Ee(e,t){let r=e.content||e,n=t.createElement("div");return n.appendChild(r.cloneNode(!0)),n.firstElementChild||n}function Ce(e,t){e.setAttribute("data-hcms-path",t.join("."))}function ro(e,t){let r=t==null?"":String(t);if(e.matches&&e.matches("[data-hcms-field]")){e.getAttribute("data-hcms-field")||e.setAttribute("data-hcms-field",r);return}(e.querySelectorAll?e.querySelectorAll("[data-hcms-field]"):[]).forEach(i=>{i.getAttribute("data-hcms-field")||i.setAttribute("data-hcms-field",r)})}function dt(e,t){t==null||t===""||!e.setAttribute||e.hasAttribute?.("data-hcms-field")||e.setAttribute("data-hcms-field",String(t))}function mt(e,t){if(t==null||t==="")return;(e.querySelectorAll?e.querySelectorAll("[data-hcms-label]"):[]).forEach(n=>{(n.textContent||"").trim()===""&&(n.textContent=tt(String(t)))})}function rn(e,t){["data-hcms-no-add","data-hcms-no-remove","data-hcms-no-reorder"].forEach(r=>{t.hasAttribute(r)&&e.setAttribute(r,"")}),["data-hcms-min-items","data-hcms-max-items"].forEach(r=>{t.hasAttribute(r)&&e.setAttribute(r,t.getAttribute(r))})}function nn(e){let t=e.querySelector?e.querySelector(".hcms-array-items"):null;if(!t)return;let r=Array.from(t.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]")),n=r.length,i=Yr(e,"data-hcms-max-items"),o=Yr(e,"data-hcms-min-items"),a=e.hasAttribute("data-hcms-no-add"),s=e.hasAttribute("data-hcms-no-remove"),l=e.hasAttribute("data-hcms-no-reorder"),c=e.querySelector('[data-hcms-action="add"]');c&&(c.hidden=a||i!=null&&n>=i),r.forEach((m,p)=>{let d=m.querySelector('[data-hcms-action="remove"]');d&&(d.hidden=s||o!=null&&n<=o);let f=m.querySelector('[data-hcms-action="move-up"]');f&&(f.hidden=l||p===0);let k=m.querySelector('[data-hcms-action="move-down"]');k&&(k.hidden=l||p===n-1)})}function Yr(e,t){if(!e||!e.hasAttribute(t))return null;let r=parseInt(e.getAttribute(t),10);return Number.isFinite(r)?r:null}function on(e,t,r){if(e.hasAttribute("data-hcms-no-reorder")||t.hasAttribute("data-hcms-no-reorder"))return;let n=e.querySelector(".hcms-array-items");if(!n)return;let i="hcms-"+r.join(".");n.setAttribute("sortable",i),n.setAttribute("onsorted","hypercmsCommit && hypercmsCommit()")}function oe(e){return e.length?e[e.length-1]:null}function sn(e,t){let r=no(e);if(r.length!==0)for(let n of r)cn(n,t)}function no(e){if(!e)return[];let t=[];return e.matches?.("[data-hcms-field]")&&io(e)&&t.push(e),(e.querySelectorAll?e.querySelectorAll("input[data-hcms-field], textarea[data-hcms-field], select[data-hcms-field], img[data-hcms-field], a[data-hcms-field], [contenteditable][data-hcms-field]"):[]).forEach(n=>t.push(n)),t}function io(e){let t=(e.tagName||"").toUpperCase();return!!(t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||t==="IMG"||t==="A"||e.hasAttribute?.("contenteditable"))}function an(e,t,r){(e.querySelectorAll?e.querySelectorAll("[data-hcms-field]"):[]).forEach(i=>{let o=i.getAttribute("data-hcms-field");if(!o)return;if(!t||typeof t!="object"||!(o in t)){console.warn(`[hypercms] inline template field "${o}" is not in the rule shape; ignoring`);return}let a=r==null?null:r[o];cn(i,a)})}function ln(e,t,r){if(!e.querySelectorAll)return;e.querySelectorAll("[data-hcms-field]").forEach(i=>{let o=i.getAttribute("data-hcms-field");if(!o||t&&typeof t=="object"&&!(o in t))return;let a=[...r,o].join(".");i.setAttribute("data-hcms-path",a)})}function ut(e,t,r,n){if(!e.querySelector)return e;let i=e.querySelector(t);if(i)return i;let o=r?.getAttribute?.("data-hcms-tpl")||n.join(".");throw new Error(`hypercms: template "${o}" is in slotted mode but has no ${t} element`)}function cn(e,t){let r=at(e),n=(e.tagName||"").toUpperCase(),i=(e.getAttribute("type")||"").toLowerCase();if(n==="INPUT"&&i==="radio"){e.checked=e.value!=null&&String(e.value)===String(t??"");return}if(r==="checked"){e.checked=t===!0||t==="true";return}if(r){e[r]=t==null?"":String(t);return}e.textContent=t==null?"":String(t)}var dn={skip:"[data-hcms-shell]",templateAttr:"cms-template"};function mn(e,t,r,n={}){let{observerHandle:i,shellRoot:o,structural:a,structuralPath:s}=n;i?.pause?.();try{if(!a)try{return W.apply(e,t,r,dn),{ok:!0}}catch(p){return{ok:!1,error:p}}let l=oo(e,t,s),c=l?ao(l):null,m=l?null:co(e,o);try{return W.apply(e,t,r,dn),{ok:!0}}catch(p){return c?lo(l,c):m&&mo(e,o,m),{ok:!1,error:p}}}finally{i?.resume?.()}}function oo(e,t,r){if(!r||!e)return null;let n=ie(r),i=[],o=t;for(let a of n){if(typeof o=="string"||o==null||Array.isArray(o))break;if(typeof o=="object"&&a in o){if(i.push(a),o=o[a],Array.isArray(o)||typeof o=="string"&&o.endsWith("[]"))break}else return null}return!Array.isArray(o)&&!(typeof o=="string"&&o.endsWith("[]"))?null:so(e,t,i)}function so(e,t,r){if(r.length===0)return null;let n=e,i=t;for(let o=0;o<r.length;o++){let a=r[o];if(!i||typeof i!="object"||Array.isArray(i))return null;let s=i[a];if(s==null)return null;if(o===r.length-1){if(Array.isArray(s)){let[l]=s;return n.querySelector?.(l)?.parentElement||null}if(typeof s=="string"&&s.endsWith("[]")){let l=s.slice(0,-2);return n.querySelector?.(l)?.parentElement||null}return null}i=s}return null}function ao(e){let t=[];for(let r of Array.from(e.childNodes))t.push(r.cloneNode(!0));return t}function lo(e,t){for(;e.firstChild;)e.removeChild(e.firstChild);for(let r of t)e.appendChild(r)}function co(e,t){let r=[];for(let n of Array.from(e.childNodes))n===t||t&&n.contains?.(t)||r.push(n.cloneNode(!0));return r}function mo(e,t,r){for(let i of Array.from(e.childNodes))i===t||t&&i.contains?.(t)||e.removeChild(i);let n=uo(e,t);for(let i of r)e.insertBefore(i,n||null)}function uo(e,t){if(!t)return null;for(let r of Array.from(e.childNodes))if(r===t||r.contains?.(t))return r;return null}var ho={Mutation:(e,t)=>e?.Mutation??t?.Mutation,undo:(e,t)=>e?.undo??t?.undo,onPrepareForSave:(e,t)=>e?.addDocumentTransform??t?.onPrepareForSave,consent:(e,t)=>e?.confirm??t?.consent,RichClay:(e,t)=>e?.RichClay??t?.RichClay,quickcrop:(e,t)=>e?.quickcrop??t?.quickcrop,uploadFileBasic:(e,t)=>e?.uploadFileBasic??t?.uploadFileBasic};function K(e,t){let r=ho[e];if(!r)throw new Error(`hypercms: unknown platform capability "${e}"`);let n=t||(typeof window<"u"?window:null);return n&&r(n.clay,n.hyperclay)||null}var un=["clay:mutation-ready","hyperclay:mutation-ready"],hn=["clay:sync-applied","hyperclay:livesync-applied"];function Wt(e,t,r){let n=null,i=o=>{n!==null&&n!==o.type||(n=o.type,queueMicrotask(()=>{n=null}),r(o))};for(let o of t)e.addEventListener(o,i);return()=>{for(let o of t)e.removeEventListener(o,i)}}function ht(e,t){if(!t||e==null)return e;return r(e);function r(n){if(typeof n=="string"){if(n.endsWith("[]")||z(n)!==-1)return n;let i=null;try{i=t.querySelector(n)}catch{return n}return i&&i.children.length>0?n+"@innerHTML":n}if(Array.isArray(n))return n;if(n&&typeof n=="object"){let i=Object.create(null);for(let[o,a]of Object.entries(n))i[o]=r(a);return i}return n}}function Kt(e){if(!e||e.tagName!=="TEXTAREA")return;let t=e.ownerDocument.defaultView||(typeof window<"u"?window:null);t&&t.CSS&&t.CSS.supports&&t.CSS.supports("field-sizing: content")||(e.style.height="auto",e.style.height=e.scrollHeight+"px")}function Re(e,t){if(!e||!e.querySelectorAll)return;e.querySelectorAll("textarea[data-hcms-field]").forEach(Kt);let r=t&&t.defaultView||(typeof window<"u"?window:null),n=r&&r.richclay&&r.richclay.RichClay||K("RichClay",r)||(r&&typeof r.RichClay=="function"?r.RichClay:null);n&&e.querySelectorAll("[contenteditable][data-hcms-field]").forEach(i=>{if(i.__hcmsRichclay)return;let o;try{o=new n(i,{inline:!0,hyperclay:!1,toolbar:["bold","italic","link","undo","redo"]})}catch(s){console.warn("[hypercms] richclay activation failed; field stays plain contenteditable",s);return}i.__hcmsRichclay=o;let a=o&&o.squire;a&&typeof a.addEventListener=="function"&&a.addEventListener("input",()=>{let s=r&&r.Event||Event;i.dispatchEvent(new s("input",{bubbles:!0}))})})}var Gt=new WeakSet;function Me(e,t){let r=K("undo");if(!r)return t();r.pause();try{let n=t();return n&&n.ok?r.commitCaptured(e):r.discardCaptured(),n}finally{r.resume()}}function gt(e){let t=K("undo");if(!t)return e();t.pause();try{return e()}finally{t.discardCaptured(),t.resume()}}function gn(e){let{formRoot:t}=e;if(!t||Gt.has(t))return;Gt.add(t);let r=a=>{let s=a.target;!s||!s.closest||s.closest("[data-hcms-form-root]")&&s.matches("input, textarea, select, [contenteditable][data-hcms-field]")&&(s.tagName==="TEXTAREA"&&Kt(s),!s.matches('input[type="file"]')&&(!s.closest("[data-hcms-field]")&&!s.hasAttribute?.("data-hcms-field")||pn(s,e)))},n=a=>{let s=a.target;if(!(!s||!s.closest)&&s.closest("[data-hcms-form-root]")){if(s.matches('input[type="file"][data-hcms-upload]')){vo(s,e);return}s.matches('input[type="checkbox"], input[type="radio"], select')&&pn(s,e)}},i=a=>{let s=a.target;if(!s||!s.closest)return;let l=s.closest("[data-hcms-action]");if(!l)return;let c=l.getAttribute("data-hcms-action");if(c==="add"||c==="remove"||c==="move-up"||c==="move-down"||c==="clear-upload"){if(!l.closest("[data-hcms-form-root]"))return}else if(c==="close"&&!l.closest("[data-hcms-shell]"))return;if(c==="add"){let m=l.closest("[data-hcms-path]");if(!m)return;let p=m.getAttribute("data-hcms-path");Jt(p,e)}else if(c==="remove"){let m=l.closest("[data-hcms-card], [data-hcms-array-item]");if(!m)return;Eo(m,e)}else if(c==="move-up"||c==="move-down"){let m=l.closest("[data-hcms-card], [data-hcms-array-item]");if(!m)return;Ao(m,c==="move-up"?-1:1,e)}else c==="clear-upload"?xo(l,e):c==="close"&&e.onCloseRequested?.()},o=t.ownerDocument;o.addEventListener("input",r,!0),o.addEventListener("change",n,!0),o.addEventListener("click",i,!0),e.detachEvents=()=>{o.removeEventListener("input",r,!0),o.removeEventListener("change",n,!0),o.removeEventListener("click",i,!0),Gt.delete(t)}}var po=new Set(["value","checked"]);function fo(e,t){if(!t)return null;let r=ie(t);if(r.some(l=>typeof l=="number"||l==="*"))return null;let n=pe(e.pageRules,r);if(typeof n!="string")return null;let i=W.ruleAttrIndex(n);if(i===-1)return null;let o=n.slice(i+1);if(!po.has(o))return null;let a=n.slice(0,i),s=a?e.pageRoot.querySelector(a):e.pageRoot;return s?{el:s,prop:o,oldValue:s[o]}:null}function pn(e,t){let n=(e.closest("[data-hcms-field]")||e).closest("[data-hcms-path]")?.getAttribute("data-hcms-path")||"",i=fo(t,n);if(ne(Z(t),{path:n,structural:!1},t),i){let o=K("undo");o&&typeof o.recordValue=="function"&&o.recordValue(i.el,{prop:i.prop,oldValue:i.oldValue,newValue:i.el[i.prop]})}}var go={type:"image/webp",quality:.85,maxWidth:2048,maxHeight:2048};async function bo(e,t){let r=t&&t.getAttribute?t.getAttribute("data-hcms-crop"):null;if(r==null)return{file:e};let n=K("quickcrop");if(typeof n!="function")return{file:e};try{let i=await n(e,{aspect:ko(r),...go});return i===null?null:{file:yo(i.blob,e.name),dataURL:i.dataURL}}catch(i){return Ue(t,i&&i.message||"Crop failed"),null}}function ko(e){let t=String(e??"").trim().toLowerCase();if(t===""||t==="free")return null;let r=t.match(/^(\d+(?:\.\d+)?)\s*[:/]\s*(\d+(?:\.\d+)?)$/);if(!r)return null;let n=parseFloat(r[1]),i=parseFloat(r[2]);return!n||!i?null:n/i}function yo(e,t){let r=e.type==="image/webp"?".webp":e.type==="image/jpeg"?".jpg":".png",n=String(t||"image").replace(/\.[^.]+$/,"");try{return new File([e],n+r,{type:e.type})}catch{return e}}async function vo(e,t){let r=e.files&&e.files[0];if(!r)return;let n=e.closest("[data-hcms-path]");if(!n)return;let i=n.getAttribute("data-hcms-path")||"";Ue(n,null);let o=await bo(r,n);if(!o||t.closed){ge(e);return}let a=o.file,s=o.dataURL||null,l=K("uploadFileBasic"),c=null;if(typeof l=="function")try{let m=await l(a);c=m&&m.uploads&&m.uploads[0]&&m.uploads[0].url}catch(m){if(t.closed){ge(e);return}Ue(n,m&&m.message||"Upload failed"),t.dispatch?.("hcms:error",{error:m,path:i}),ge(e);return}if(t.closed){ge(e);return}if(c||(c=s||_o(a)),!c){ge(e);return}Ue(n,null),bn(n,c,a.name),ne(Z(t),{path:i,structural:!1},t),ge(e)}function xo(e,t){let r=e.closest("[data-hcms-path]");if(!r)return;let n=r.getAttribute("data-hcms-path")||"";bn(r,"","");let i=r.querySelector('input[type="file"][data-hcms-upload]');i&&ge(i),Ue(r,null),ne(Z(t),{path:n,structural:!1},t)}function wo(e){return e.querySelector?e.querySelector("img[data-hcms-field], a[data-hcms-field]"):null}function bn(e,t,r){let n=wo(e);if(!n)return;let i=(n.tagName||"").toUpperCase();i==="IMG"?n.src=t||"":i==="A"&&(n.href=t||"",n.textContent=t?r||Ut(t):"")}function ge(e){try{e.value=""}catch{}}function _o(e){let t=typeof URL<"u"&&URL.createObjectURL?URL:null;if(!t)return"";try{return t.createObjectURL(e)}catch{return""}}function Ue(e,t){let r=e.querySelector?e.querySelector(":scope > .hcms-error"):null;r&&(t?(r.textContent=t,r.hidden=!1):(r.textContent="",r.hidden=!0))}function Jt(e,t){let{formRoot:r,pageRules:n}=t,i=r.querySelector(`[data-hcms-path="${Io(e)}"]`);if(!i)throw new Error(`hypercms: no element at path "${e}"`);let o=i.querySelector(".hcms-array-items");if(!o)throw new Error(`hypercms: array container missing .hcms-array-items at "${e}"`);let a=ie(e),s=Mo(n,a),l=Array.isArray(s),c=typeof s=="string"&&s.endsWith("[]");if(!l&&!c)throw new Error(`hypercms: path "${e}" is not an array`);let m=ft(i,"data-hcms-max-items"),p=o.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]");if(i.hasAttribute("data-hcms-no-add")||m!=null&&p.length>=m)return;let d=p.length,f=l?s[1]:s.replace(/\[\]$/,""),k=$e(l?f:"string"),R=Xr({shape:l?"object-array-item":"scalar-array-item",itemShape:f,pathArr:[...a,d],data:k,doc:t.doc,itemKey:i.getAttribute("data-hcms-item-tpl")||null});return o.appendChild(R),Re(R,t.doc),Xt(i),Me(`Add ${e}`,()=>ne(Z(t),{path:e,structural:!0},t))}function Ao(e,t,r){let n=e.closest('[data-hcms-shape="object-array"], [data-hcms-shape="scalar-array"]');if(!n||n.hasAttribute("data-hcms-no-reorder"))return;let i=n.querySelector(".hcms-array-items");if(!i)return;let o=Array.from(i.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]")),a=o.indexOf(e);if(a<0)return;let s=a+t;if(s<0||s>=o.length)return;let l=e.querySelector(`[data-hcms-action="${t<0?"move-up":"move-down"}"]`);return t<0?i.insertBefore(e,o[s]):i.insertBefore(e,o[s].nextSibling),Qt(i),Xt(n),l&&typeof l.focus=="function"&&e.querySelector(`[data-hcms-action="${t<0?"move-up":"move-down"}"]`)?.focus?.(),Me(`Reorder ${n.getAttribute("data-hcms-path")||""}`,()=>ne(Z(r),{path:n.getAttribute("data-hcms-path")||"",structural:!0},r))}var pt="Delete this item?";function So(e,t){let r=e&&e.getAttribute("data-hcms-confirm-remove");if(r!=null)return/^(off|false|no|0)$/i.test(r.trim())?null:r||pt;let n=t&&t.confirmRemove;return n===!1?null:typeof n=="string"?n||pt:n===!0||e&&e.getAttribute("data-hcms-shape")==="object-array"?pt:null}function Eo(e,t){let r=e.closest('[data-hcms-shape="object-array"], [data-hcms-shape="scalar-array"]'),n=So(r,t);if(n==null)return Te(e,t);let i=K("consent")||typeof window<"u"&&window.consent;typeof i=="function"?Promise.resolve(i(n)).then(()=>Te(e,t),()=>{}):typeof window<"u"&&typeof window.confirm=="function"?window.confirm(n)&&Te(e,t):Te(e,t)}function Te(e,t){let r=e.getAttribute("data-hcms-path")||"",n=e.parentElement,i=e.closest('[data-hcms-shape="object-array"], [data-hcms-shape="scalar-array"]');if(!i?.hasAttribute("data-hcms-no-remove")){if(i){let o=ft(i,"data-hcms-min-items"),a=i.querySelector(".hcms-array-items"),s=a?a.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]").length:0;if(o!=null&&s<=o)return}return e.remove(),n&&Qt(n),i&&Xt(i),Me(`Remove ${r}`,()=>ne(Z(t),{path:r,structural:!0},t))}}function ne(e,t,r){let n=He(e);if(n===r.lastFingerprint)return{ok:!0,skipped:!0};let i=mn(r.pageRoot,r.pageRules,e,{observerHandle:r.observerHandle,shellRoot:r.shellRoot,structural:!!t.structural,structuralPath:t.path||null});return i.ok?(r.lastFingerprint=n,r.lastData=e,fn(r,null),r.dispatch?.("hcms:change",{data:e,path:t.path,structural:!!t.structural}),r.onChange?.(e,t)):(fn(r,To(i.error,t.path)),r.dispatch?.("hcms:error",{error:i.error,attemptedData:e}),r.onError?.(i.error)),i}function Z(e){let t=W.extract(e.formRoot,e.formRules);return me(t,e.formRules)}function me(e,t){if(t==null||e==null)return e;if(typeof t=="string")return t.endsWith("@checked")?e===!0||e==="true":e;if(Array.isArray(t)){if(!Array.isArray(e))return e;let[,r]=t;return e.map(n=>me(n,r))}if(typeof t=="object"){if(typeof e!="object"||Array.isArray(e))return e;let r={};for(let[n,i]of Object.entries(t))r[n]=me(e[n],i);return r}return e}function fn(e,t){e.lastErrors=t&&t.length?t:null,Yt(e)}function Yt(e){if(Co(e),e.errorEl&&(e.errorEl.textContent="",e.errorEl.hidden=!0),!e.lastErrors)return;let t=[];for(let{message:r,path:n}of e.lastErrors){if(n!=null&&n!==""){let i=Ro(e.formRoot,n);if(i){i.textContent=i.textContent?`${i.textContent}
|
|
150
|
+
`},lo=["@scalar","@object","@scalar-array","@scalar-array-item","@object-array","@object-array-item"];function ht(e){let t=e.head||e.documentElement;if(t)for(let r of lo)un(e,t,r)}function er(e,t){if(!sn[t])return null;let r=e&&(e.head||e.documentElement);return r?un(e,r,t):null}var nn={src:"@image",checked:"@checkbox",innerHTML:"@richtext"},dt={image:"@image",file:"@file",checkbox:"@checkbox",toggle:"@toggle",select:"@select",radio:"@radio",textarea:"@textarea",number:"@number",richtext:"@richtext"},co=new Set([...Object.values(dt),"@chips","@chips-item"]);function Ze(e,t,r,n){if(typeof e!="string")return"@scalar";let i=Z(e),o=gt(e,i,r,n),a=bt(o,t,"data-hcms-component");if(a&&dt[a]){let s=dt[a],l=Array.isArray(r)&&r.some(c=>c==="*"||typeof c=="number");return s==="@number"&&!on(e,i,t,l,o).every(mo)||(s==="@checkbox"||s==="@toggle")&&(i<0||e.slice(i+1)!=="checked")&&!on(e,i,t,l,o).every(ho)?"@scalar":s}if(i>=0){let s=e.slice(i+1);if(nn[s])return nn[s]}return"@scalar"}function an(e,t,r,n){if(typeof e!="string")return null;let i=Z(e),o=bt(gt(e,i,r,n),t,"data-hcms-component");return o&&dt[o]||null}var uo=/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/;function mo(e){return e==null||e===""?!0:uo.test(String(e))}function ho(e){return e==null||e===""||e==="true"||e==="false"}function on(e,t,r,n,i){if(!r||!r.querySelectorAll)return[];if(!i||i===".")return[];let o=null;try{o=r.querySelectorAll(i)}catch{return[]}let a=t>=0?e.slice(t+1):null,s=[];for(let l of o)if(!(l.closest&&l.closest("[cms-template], [data-hcms-shell]"))&&(a?a==="value"&&"value"in l?s.push(l.value):s.push(l.getAttribute?l.getAttribute(a):null):s.push((l.textContent||"").trim()),!n))break;return s}function pt(e,t){if(typeof e!="string"||!e.endsWith("[]")||!t||!t.querySelector)return null;let r=e.slice(0,-2).trim();if(!r)return null;let n=null;try{n=t.querySelector(r)}catch{return null}let i=n&&n.closest?n.closest("[data-hcms-component]"):null;return(i&&i.getAttribute?i.getAttribute("data-hcms-component"):null)==="chips"?{array:"@chips",item:"@chips-item"}:null}function Ie(e,t,r){let n=e.join("."),i=e.map(o=>typeof o=="number"?"*":o).join(".");return n&&ce(r,n)||i&&i!==n&&ce(r,i)||ce(r,t)}function ft(e,t,r){let n=pt(e,r);if(!n)return null;let i=Ie(t,n.array,r);return i&&i.getAttribute("data-hcms-tpl")===n.array?n:null}function ln(e,t,r,n){if(typeof e!="string")return null;let i=Z(e),o=bt(gt(e,i,r,n),t,"data-hcms-options");if(o==null)return null;let a=o.trim().split(/\s+/).filter(Boolean);return a.length?a:null}function cn(e,t,r,n){if(typeof e!="string")return null;let i=Z(e);return bt(gt(e,i,r,n),t,"data-hcms-crop")}function po(e,t){return t>=0?e.slice(0,t):e}function gt(e,t,r,n){let i=po(e,t);return i&&i!=="."?i:fo(n,r)}function fo(e,t){if(e==null||!Array.isArray(t))return"";let r=[],n=e;for(let i of t){if(n==null||typeof n=="string")break;if(Array.isArray(n)){if(typeof n[0]!="string"||i!=="*"&&typeof i!="number")return"";r.push(n[0]),n=n[1];continue}if(typeof n!="object"||!Object.prototype.hasOwnProperty.call(n,i))return"";n=n[i]}return r.join(" ")}function bt(e,t,r){if(!t||!t.querySelector||!e||e===".")return null;let n=null;try{n=t.querySelector(e)}catch{return null}return n&&n.getAttribute?n.getAttribute(r):null}function kt(e,t){if(!e||t==null)return;r(t,[]);function r(n,i){let o=_e(n);if(o==="scalar"){let a=Ze(n,e,i,t);co.has(a)&&er(e,a);return}if(o==="scalar-array"){let a=pt(n,e);a&&(er(e,a.array),er(e,a.item));return}if(o==="object"){for(let[a,s]of Object.entries(n))r(s,[...i,a]);return}if(o==="object-array"){let a=n[1],s=[...i,"*"];if(a&&typeof a=="object"&&!Array.isArray(a))for(let[l,c]of Object.entries(a))r(c,[...s,l]);else r(a,s)}}}function un(e,t,r){let n=ce(e,r);if(n)return n;let i=e.createElement("template");return i.setAttribute("data-hcms-tpl",r),i.setAttribute("save-remove",""),i.innerHTML=sn[r].trim(),t.appendChild(i),i}function ce(e,t){return!e||!e.querySelector?null:e.querySelector(`template[data-hcms-tpl="${go(t)}"]`)}function go(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}function _e(e){return typeof e=="string"?e.endsWith("[]")?"scalar-array":"scalar":Array.isArray(e)?"object-array":typeof e=="object"&&e!==null?"object":"scalar"}function Qe(e){return e?!!(e.content||e).querySelector("[data-hcms-field]"):!1}var dn={IMG:"src",A:"href"};function yt(e){if(!e)return"value";let t=(e.tagName||"").toUpperCase();return t==="INPUT"?(e.getAttribute("type")||"text").toLowerCase()==="checkbox"?"checked":"value":t==="TEXTAREA"||t==="SELECT"?"value":dn[t]?dn[t]:e.hasAttribute&&e.hasAttribute("contenteditable")?"innerHTML":null}function mn(e,t){let r=(e.tagName||"").toUpperCase(),n=(e.getAttribute&&e.getAttribute("type")||"").toLowerCase(),i=yt(e),a=`${pn(r,n)}[data-hcms-field="${Le(t)}"]`;return r==="INPUT"&&n==="radio"?`${a}:checked@value`:i?`${a}@${i}`:a}function bo(e){let t=(e.tagName||"").toUpperCase(),r=(e.getAttribute&&e.getAttribute("type")||"").toLowerCase(),n=yt(e),o=`${pn(t,r)}[data-hcms-field]`;return t==="INPUT"&&r==="radio"?`${o}:checked@value`:n?`${o}@${n}`:o}function pn(e,t){return e==="INPUT"?t?`input[type="${t}"]`:"input":e==="TEXTAREA"?"textarea":e==="SELECT"?"select":e==="IMG"?"img":e==="A"?"a":':not([data-hcms-shape="scalar"]):not([data-hcms-shape="object"]):not([data-hcms-shape="object-array"]):not([data-hcms-shape="scalar-array"])'}function Le(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}var hn=new Set(["__proto__","constructor","prototype"]);function vt(e,t){return r(e,[]);function r(c,d){let b=_e(c);if(b==="scalar")return n(c,d);if(b==="scalar-array")return i(c,d);if(b==="object-array")return o(c,d);if(b==="object"){let u=Object.create(null);for(let[k,y]of Object.entries(c)){if(hn.has(k))throw new Error(`hypercms: rule key "${k}" is forbidden at "${d.join(".")||"<root>"}"`);u[k]=r(y,[...d,k])}return u}return null}function n(c,d){let b=d.length?d[d.length-1]:null,u=typeof b=="string"?b:"__value",k=l(d,u);if(k)return mn(k,u);let y=s(Ze(c,t,d,e),u);return y?mn(y,u):`input[data-hcms-field="${Le(u)}"]@value`}function i(c,d){let b=ft(c,d,t),u=b&&s(b.item,null)||s("@scalar-array-item",null),k=u?bo(u):"input[data-hcms-field]@value";return[a(d,"[data-hcms-array-item]"),k]}function o(c,d){let[,b]=c,u=[...d,"*"],k=a(d,"[data-hcms-card]");if(b&&typeof b=="object"&&!Array.isArray(b)){let y=Object.create(null);for(let[N,q]of Object.entries(b)){if(hn.has(N))throw new Error(`hypercms: rule key "${N}" is forbidden at "${u.join(".")}"`);y[N]=r(q,[...u,N])}return[k,y]}return[k,r(b,[...u,0])]}function a(c,d){let b=c.length?c[c.length-1]:"",u=c.some(N=>N==="*"),k=c.join(".");return`${u?`[data-hcms-field="${Le(b)}"]`:`[data-hcms-path="${Le(k)}"]`} > .hcms-array-items > ${d}`}function s(c,d){if(!t)return null;let b=ce(t,c);if(!b)return null;let u=b.content||b;if(d){let k=u.querySelector(`[data-hcms-field="${Le(d)}"]`);if(k)return k}return u.querySelector("[data-hcms-field]")}function l(c,d){if(!t)return null;let b=c.map(y=>typeof y=="number"?"*":y).join("."),k=[c.join("."),b];for(let y=c.length-1;y>=0;y--){let N=c.slice(0,y).map(q=>typeof q=="number"?"*":q);N.push("*"),k.push(N.join("."))}for(let y of k){if(!y)continue;let N=ce(t,y);if(!N||!Qe(N))continue;let q=N.content||N,H=q.querySelector(`[data-hcms-field="${Le(d)}"]`)||q.querySelector("[data-hcms-field]");if(H)return H}return null}}function tr(e){if(!e)return"";let t=String(e).split(/[?#]/)[0],r=t.split("/").pop()||t;try{return decodeURIComponent(r)}catch{return r}}function xt({pageRules:e,formRules:t,data:r,doc:n}){let i=n.createDocumentFragment(),o=rr(e,[],r,n,e);return o&&i.appendChild(o),i}function gn({shape:e,itemShape:t,pathArr:r,data:n,doc:i,itemKey:o,pageRules:a}){if(e==="object-array-item")return kn(t,r,n,i,a);if(e==="scalar-array-item")return yn(r,n,i,o||null);throw new Error(`hypercms: buildItem called with unknown shape "${e}"`)}function rr(e,t,r,n,i){let o=_e(e);return o==="scalar"?ko(e,t,r,n,i):o==="object"?wo(e,t,r,n,i):o==="object-array"?_o(e,t,r,n,i):o==="scalar-array"?Ao(e,t,r,n):null}function ko(e,t,r,n,i){let o=Ze(e,n,t,i),a=Ie(t,o,n);if(!a)throw new Error(`hypercms: missing template for scalar at "${t.join(".")}"`);let s=an(e,n,t,i);s==="@number"&&o==="@scalar"&&console.info(`[hypercms] field "${t.join(".")}" declares component "@number" but its value isn't a plain number; rendering a text input so the value is preserved`),(s==="@checkbox"||s==="@toggle")&&o==="@scalar"&&console.info(`[hypercms] field "${t.join(".")}" declares component "${s}" but its value isn't true/false; rendering a text input so the value is preserved`),bn(a,s===o?s:null,t);let l=je(a,n);Fe(l,t);let c=a.getAttribute?.("data-hcms-tpl");if((o==="@select"||o==="@radio")&&c===o&&yo(l,e,t,r,n,o,i),o==="@image"&&c==="@image"){let d=cn(e,n,t,i);d!=null&&!l.hasAttribute("data-hcms-crop")&&l.setAttribute("data-hcms-crop",d)}return So(l,he(t)),wt(l,he(t)),_t(l,he(t)),An(l,r),o==="@file"&&xo(l),l}function bn(e,t,r){if(!t)return;let n=e.getAttribute?.("data-hcms-tpl");n&&n!==t&&console.info(`[hypercms] field "${r.join(".")}" declares component "${t}" but custom template "${n}" wins`)}function yo(e,t,r,n,i,o,a){let s=ln(t,i,r,a),l=s?[...s]:[],c=n==null?"":String(n);if(c!==""&&!l.includes(c)&&l.unshift(c),!s&&(vo(e,"data-hcms-options required (space-separated values)"),l.length===0)){e.querySelector(".mirk-radio")?.remove();return}if(o==="@select"){let u=e.querySelector("select[data-hcms-field]");if(!u)return;for(let k of l){let y=i.createElement("option");y.value=k,y.textContent=mt(k),u.appendChild(y)}return}let d=e.querySelector(".mirk-radio");if(!d||!d.parentNode)return;let b=nr(r.join("."));for(let u of l){let k=d.cloneNode(!0),y=k.querySelector('input[type="radio"]');y&&(y.value=u,y.name=b);let N=k.querySelector(".mirk-radio__label");N&&(N.textContent=mt(u)),d.parentNode.insertBefore(k,d)}d.remove()}function nr(e){return"hcms-"+String(e).replace(/[^A-Za-z0-9_-]/g,"-")}function vo(e,t){let r=e.querySelector?e.querySelector(".hcms-error"):null;r&&(r.textContent=t,r.hidden=!1)}function xo(e){let t=e.querySelector?e.querySelector("a.mirk-file__name[data-hcms-field]"):null;t&&(t.textContent=tr(t.getAttribute("href")))}function wo(e,t,r,n,i){let o=Ie(t,"@object",n);if(!o)throw new Error(`hypercms: missing template for object at "${t.join(".")}"`);let a=je(o,n);if(Fe(a,t),wt(a,he(t)),_t(a,he(t)),Qe(o))return En(a,e,t),Sn(a,e,r),a;let s=At(a,".hcms-object-fields",o,t);for(let[l,c]of Object.entries(e)){let d=r==null?null:r[l],b=rr(c,[...t,l],d,n,i);b&&s.appendChild(b)}return a}function _o(e,t,r,n,i){let o=Ie(t,"@object-array",n);if(!o)throw new Error(`hypercms: missing template for object-array at "${t.join(".")}"`);let a=je(o,n);Fe(a,t),wt(a,he(t)),_t(a,he(t)),xn(a,o),_n(a,o,t);let s=At(a,".hcms-array-items",o,t),[,l]=e;return(Array.isArray(r)?r:[]).forEach((d,b)=>{let u=kn(l,[...t,b],d,n,i);u&&s.appendChild(u)}),wn(a),a}function kn(e,t,r,n,i){let o=vn(t,"object-array-item",n);if(!o)throw new Error(`hypercms: missing item template for "${t.join(".")}"`);let a=je(o,n);if(a.setAttribute("data-hcms-card",""),a.classList.contains("hcms-card")||a.classList.add("hcms-card"),Fe(a,t),Qe(o))return e&&typeof e=="object"&&!Array.isArray(e)&&(En(a,e,t),Sn(a,e,r)),a;let s=At(a,".hcms-card-fields",o,t);if(e&&typeof e=="object"&&!Array.isArray(e))for(let[l,c]of Object.entries(e)){let d=r==null?null:r[l],b=rr(c,[...t,l],d,n,i);b&&s.appendChild(b)}return a}function Ao(e,t,r,n){let i=pt(e,n),o=ft(e,t,n),a=i?i.array:"@scalar-array",s=Ie(t,a,n);if(!s)throw new Error(`hypercms: missing template for scalar-array at "${t.join(".")}"`);bn(s,i?i.array:null,t);let l=je(s,n);Fe(l,t),wt(l,he(t)),_t(l,he(t)),xn(l,s),_n(l,s,t),o&&l.setAttribute("data-hcms-item-tpl",o.item);let c=At(l,".hcms-array-items",s,t);return(Array.isArray(r)?r:[]).forEach((b,u)=>{let k=yn([...t,u],b,n,o?o.item:null);k&&c.appendChild(k)}),wn(l),l}function yn(e,t,r,n){let i=vn(e,"scalar-array-item",r,n);if(!i)throw new Error(`hypercms: missing item template for "${e.join(".")}"`);let o=je(i,r);return o.setAttribute("data-hcms-array-item",""),o.classList.contains("hcms-array-item")||o.classList.add("hcms-array-item"),Fe(o,e),An(o,t),o}function vn(e,t,r,n){let i=e.map(o=>typeof o=="number"?"*":o).join(".");return ce(r,i)||n&&ce(r,n)||ce(r,"@"+t)}function je(e,t){let r=e.content||e,n=t.createElement("div");return n.appendChild(r.cloneNode(!0)),n.firstElementChild||n}function Fe(e,t){e.setAttribute("data-hcms-path",t.join("."))}function So(e,t){let r=t==null?"":String(t);if(e.matches&&e.matches("[data-hcms-field]")){e.getAttribute("data-hcms-field")||e.setAttribute("data-hcms-field",r);return}(e.querySelectorAll?e.querySelectorAll("[data-hcms-field]"):[]).forEach(i=>{i.getAttribute("data-hcms-field")||i.setAttribute("data-hcms-field",r)})}function wt(e,t){t==null||t===""||!e.setAttribute||e.hasAttribute?.("data-hcms-field")||e.setAttribute("data-hcms-field",String(t))}function _t(e,t){if(t==null||t==="")return;(e.querySelectorAll?e.querySelectorAll("[data-hcms-label]"):[]).forEach(n=>{(n.textContent||"").trim()===""&&(n.textContent=mt(String(t)))})}function xn(e,t){["data-hcms-no-add","data-hcms-no-remove","data-hcms-no-reorder"].forEach(r=>{t.hasAttribute(r)&&e.setAttribute(r,"")}),["data-hcms-min-items","data-hcms-max-items"].forEach(r=>{t.hasAttribute(r)&&e.setAttribute(r,t.getAttribute(r))})}function wn(e){let t=e.querySelector?e.querySelector(".hcms-array-items"):null;if(!t)return;let r=Array.from(t.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]")),n=r.length,i=fn(e,"data-hcms-max-items"),o=fn(e,"data-hcms-min-items"),a=e.hasAttribute("data-hcms-no-add"),s=e.hasAttribute("data-hcms-no-remove"),l=e.hasAttribute("data-hcms-no-reorder"),c=e.querySelector('[data-hcms-action="add"]');c&&(c.hidden=a||i!=null&&n>=i),r.forEach((d,b)=>{let u=d.querySelector('[data-hcms-action="remove"]');u&&(u.hidden=s||o!=null&&n<=o);let k=d.querySelector('[data-hcms-action="move-up"]');k&&(k.hidden=l||b===0);let y=d.querySelector('[data-hcms-action="move-down"]');y&&(y.hidden=l||b===n-1)})}function fn(e,t){if(!e||!e.hasAttribute(t))return null;let r=parseInt(e.getAttribute(t),10);return Number.isFinite(r)?r:null}function _n(e,t,r){if(e.hasAttribute("data-hcms-no-reorder")||t.hasAttribute("data-hcms-no-reorder"))return;let n=e.querySelector(".hcms-array-items");if(!n)return;let i="hcms-"+r.join(".");n.setAttribute("sortable",i),n.setAttribute("onsorted","hypercmsCommit && hypercmsCommit()")}function he(e){return e.length?e[e.length-1]:null}function An(e,t){let r=Eo(e);if(r.length!==0)for(let n of r)Cn(n,t)}function Eo(e){if(!e)return[];let t=[];return e.matches?.("[data-hcms-field]")&&Co(e)&&t.push(e),(e.querySelectorAll?e.querySelectorAll("input[data-hcms-field], textarea[data-hcms-field], select[data-hcms-field], img[data-hcms-field], a[data-hcms-field], [contenteditable][data-hcms-field]"):[]).forEach(n=>t.push(n)),t}function Co(e){let t=(e.tagName||"").toUpperCase();return!!(t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||t==="IMG"||t==="A"||e.hasAttribute?.("contenteditable"))}function Sn(e,t,r){(e.querySelectorAll?e.querySelectorAll("[data-hcms-field]"):[]).forEach(i=>{let o=i.getAttribute("data-hcms-field");if(!o)return;if(!t||typeof t!="object"||!(o in t)){console.warn(`[hypercms] inline template field "${o}" is not in the rule shape; ignoring`);return}let a=r==null?null:r[o];Cn(i,a)})}function En(e,t,r){if(!e.querySelectorAll)return;e.querySelectorAll("[data-hcms-field]").forEach(i=>{let o=i.getAttribute("data-hcms-field");if(!o||t&&typeof t=="object"&&!(o in t))return;let a=[...r,o].join(".");i.setAttribute("data-hcms-path",a)})}function At(e,t,r,n){if(!e.querySelector)return e;let i=e.querySelector(t);if(i)return i;let o=r?.getAttribute?.("data-hcms-tpl")||n.join(".");throw new Error(`hypercms: template "${o}" is in slotted mode but has no ${t} element`)}function Cn(e,t){let r=yt(e),n=(e.tagName||"").toUpperCase(),i=(e.getAttribute("type")||"").toLowerCase();if(n==="INPUT"&&i==="radio"){e.checked=e.value!=null&&String(e.value)===String(t??"");return}if(r==="checked"){e.checked=t===!0||t==="true";return}if(r){e[r]=t==null?"":String(t);return}e.textContent=t==null?"":String(t)}var Tn={skip:"[data-hcms-shell]",templateAttr:"cms-template"};function Rn(e,t,r,n={}){let{observerHandle:i,shellRoot:o,structural:a,structuralPath:s}=n;i?.pause?.();try{if(!a)try{return re.apply(e,t,r,Tn),{ok:!0}}catch(b){return{ok:!1,error:b}}let l=To(e,t,s),c=l?Oo(l):null,d=l?null:No(e,o);try{return re.apply(e,t,r,Tn),{ok:!0}}catch(b){return c?Mo(l,c):d&&Io(e,o,d),{ok:!1,error:b}}}finally{i?.resume?.()}}function To(e,t,r){if(!r||!e)return null;let n=me(r),i=[],o=t;for(let a of n){if(typeof o=="string"||o==null||Array.isArray(o))break;if(typeof o=="object"&&a in o){if(i.push(a),o=o[a],Array.isArray(o)||typeof o=="string"&&o.endsWith("[]"))break}else return null}return!Array.isArray(o)&&!(typeof o=="string"&&o.endsWith("[]"))?null:Ro(e,t,i)}function Ro(e,t,r){if(r.length===0)return null;let n=e,i=t;for(let o=0;o<r.length;o++){let a=r[o];if(!i||typeof i!="object"||Array.isArray(i))return null;let s=i[a];if(s==null)return null;if(o===r.length-1){if(Array.isArray(s)){let[l]=s;return n.querySelector?.(l)?.parentElement||null}if(typeof s=="string"&&s.endsWith("[]")){let l=s.slice(0,-2);return n.querySelector?.(l)?.parentElement||null}return null}i=s}return null}function Oo(e){let t=[];for(let r of Array.from(e.childNodes))t.push(r.cloneNode(!0));return t}function Mo(e,t){for(;e.firstChild;)e.removeChild(e.firstChild);for(let r of t)e.appendChild(r)}function No(e,t){let r=[];for(let n of Array.from(e.childNodes))n===t||t&&n.contains?.(t)||r.push(n.cloneNode(!0));return r}function Io(e,t,r){for(let i of Array.from(e.childNodes))i===t||t&&i.contains?.(t)||e.removeChild(i);let n=Lo(e,t);for(let i of r)e.insertBefore(i,n||null)}function Lo(e,t){if(!t)return null;for(let r of Array.from(e.childNodes))if(r===t||r.contains?.(t))return r;return null}var jo={Mutation:(e,t)=>e?.Mutation??t?.Mutation,undo:(e,t)=>e?.undo??t?.undo,onPrepareForSave:(e,t)=>e?.addDocumentTransform??t?.onPrepareForSave,consent:(e,t)=>e?.confirm??t?.consent,RichClay:(e,t)=>e?.RichClay??t?.RichClay,quickcrop:(e,t)=>e?.quickcrop??t?.quickcrop,uploadFileBasic:(e,t)=>e?.uploadFileBasic??t?.uploadFileBasic};function ne(e,t){let r=jo[e];if(!r)throw new Error(`hypercms: unknown platform capability "${e}"`);let n=t||(typeof window<"u"?window:null);return n&&r(n.clay,n.hyperclay)||null}var On=["clay:mutation-ready","hyperclay:mutation-ready"],Mn=["clay:sync-applied","hyperclay:livesync-applied"];function ir(e,t,r){let n=null,i=o=>{n!==null&&n!==o.type||(n=o.type,queueMicrotask(()=>{n=null}),r(o))};for(let o of t)e.addEventListener(o,i);return()=>{for(let o of t)e.removeEventListener(o,i)}}function St(e,t){if(!t||e==null)return e;return r(e);function r(n){if(typeof n=="string"){if(n.endsWith("[]")||Z(n)!==-1)return n;let i=null;try{i=t.querySelector(n)}catch{return n}return i&&i.children.length>0?n+"@innerHTML":n}if(Array.isArray(n))return n;if(n&&typeof n=="object"){let i=Object.create(null);for(let[o,a]of Object.entries(n))i[o]=r(a);return i}return n}}function or(e){if(!e||e.tagName!=="TEXTAREA")return;let t=e.ownerDocument.defaultView||(typeof window<"u"?window:null);t&&t.CSS&&t.CSS.supports&&t.CSS.supports("field-sizing: content")||(e.style.height="auto",e.style.height=e.scrollHeight+"px")}function qe(e,t){if(!e||!e.querySelectorAll)return;e.querySelectorAll("textarea[data-hcms-field]").forEach(or);let r=t&&t.defaultView||(typeof window<"u"?window:null),n=r&&r.richclay&&r.richclay.RichClay||ne("RichClay",r)||(r&&typeof r.RichClay=="function"?r.RichClay:null);n&&e.querySelectorAll("[contenteditable][data-hcms-field]").forEach(i=>{if(i.__hcmsRichclay)return;let o;try{o=new n(i,{inline:!0,hyperclay:!1,toolbar:["bold","italic","link","undo","redo"]})}catch(s){console.warn("[hypercms] richclay activation failed; field stays plain contenteditable",s);return}i.__hcmsRichclay=o;let a=o&&o.squire;a&&typeof a.addEventListener=="function"&&a.addEventListener("input",()=>{let s=r&&r.Event||Event;i.dispatchEvent(new s("input",{bubbles:!0}))})})}var sr=new WeakSet;function $e(e,t){let r=ne("undo");if(!r)return t();r.pause();try{let n=t();return n&&n.ok?r.commitCaptured(e):r.discardCaptured(),n}finally{r.resume()}}function Tt(e){let t=ne("undo");if(!t)return e();t.pause();try{return e()}finally{t.discardCaptured(),t.resume()}}function Ln(e){let{formRoot:t}=e;if(!t||sr.has(t))return;sr.add(t);let r=a=>{let s=a.target;!s||!s.closest||s.closest("[data-hcms-form-root]")&&s.matches("input, textarea, select, [contenteditable][data-hcms-field]")&&(s.tagName==="TEXTAREA"&&or(s),!s.matches('input[type="file"]')&&(!s.closest("[data-hcms-field]")&&!s.hasAttribute?.("data-hcms-field")||Nn(s,e)))},n=a=>{let s=a.target;if(!(!s||!s.closest)&&s.closest("[data-hcms-form-root]")){if(s.matches('input[type="file"][data-hcms-upload]')){zo(s,e);return}s.matches('input[type="checkbox"], input[type="radio"], select')&&Nn(s,e)}},i=a=>{let s=a.target;if(!s||!s.closest)return;let l=s.closest("[data-hcms-action]");if(!l)return;let c=l.getAttribute("data-hcms-action");if(c==="add"||c==="remove"||c==="move-up"||c==="move-down"||c==="clear-upload"){if(!l.closest("[data-hcms-form-root]"))return}else if(c==="close"&&!l.closest("[data-hcms-shell]"))return;if(c==="add"){let d=l.closest("[data-hcms-path]");if(!d)return;let b=d.getAttribute("data-hcms-path");ar(b,e)}else if(c==="remove"){let d=l.closest("[data-hcms-card], [data-hcms-array-item]");if(!d)return;Go(d,e)}else if(c==="move-up"||c==="move-down"){let d=l.closest("[data-hcms-card], [data-hcms-array-item]");if(!d)return;Wo(d,c==="move-up"?-1:1,e)}else c==="clear-upload"?Uo(l,e):c==="close"&&e.onCloseRequested?.()},o=t.ownerDocument;o.addEventListener("input",r,!0),o.addEventListener("change",n,!0),o.addEventListener("click",i,!0),e.detachEvents=()=>{o.removeEventListener("input",r,!0),o.removeEventListener("change",n,!0),o.removeEventListener("click",i,!0),sr.delete(t)}}var Fo=new Set(["value","checked"]);function qo(e,t){if(!t)return null;let r=me(t);if(r.some(l=>typeof l=="number"||l==="*"))return null;let n=we(e.pageRules,r);if(typeof n!="string")return null;let i=re.ruleAttrIndex(n);if(i===-1)return null;let o=n.slice(i+1);if(!Fo.has(o))return null;let a=n.slice(0,i),s=a?e.pageRoot.querySelector(a):e.pageRoot;return s?{el:s,prop:o,oldValue:s[o]}:null}function Nn(e,t){let n=(e.closest("[data-hcms-field]")||e).closest("[data-hcms-path]")?.getAttribute("data-hcms-path")||"",i=qo(t,n);if(de(ae(t),{path:n,structural:!1},t),i){let o=ne("undo");o&&typeof o.recordValue=="function"&&o.recordValue(i.el,{prop:i.prop,oldValue:i.oldValue,newValue:i.el[i.prop]})}}var Do={type:"image/webp",quality:.85,maxWidth:2048,maxHeight:2048};async function $o(e,t){let r=t&&t.getAttribute?t.getAttribute("data-hcms-crop"):null;if(r==null)return{file:e};let n=ne("quickcrop");if(typeof n!="function")return{file:e};try{let i=await n(e,{aspect:Bo(r),...Do});return i===null?null:{file:Po(i.blob,e.name),dataURL:i.dataURL}}catch(i){return et(t,i&&i.message||"Crop failed"),null}}function Bo(e){let t=String(e??"").trim().toLowerCase();if(t===""||t==="free")return null;let r=t.match(/^(\d+(?:\.\d+)?)\s*[:/]\s*(\d+(?:\.\d+)?)$/);if(!r)return null;let n=parseFloat(r[1]),i=parseFloat(r[2]);return!n||!i?null:n/i}function Po(e,t){let r=e.type==="image/webp"?".webp":e.type==="image/jpeg"?".jpg":".png",n=String(t||"image").replace(/\.[^.]+$/,"");try{return new File([e],n+r,{type:e.type})}catch{return e}}async function zo(e,t){let r=e.files&&e.files[0];if(!r)return;let n=e.closest("[data-hcms-path]");if(!n)return;let i=n.getAttribute("data-hcms-path")||"";et(n,null);let o=await $o(r,n);if(!o||t.closed){Ae(e);return}let a=o.file,s=o.dataURL||null,l=ne("uploadFileBasic"),c=null;if(typeof l=="function")try{let d=await l(a);c=d&&d.uploads&&d.uploads[0]&&d.uploads[0].url}catch(d){if(t.closed){Ae(e);return}et(n,d&&d.message||"Upload failed"),t.dispatch?.("hcms:error",{error:d,path:i}),Ae(e);return}if(t.closed){Ae(e);return}if(c||(c=s||Vo(a)),!c){Ae(e);return}et(n,null),jn(n,c,a.name),de(ae(t),{path:i,structural:!1},t),Ae(e)}function Uo(e,t){let r=e.closest("[data-hcms-path]");if(!r)return;let n=r.getAttribute("data-hcms-path")||"";jn(r,"","");let i=r.querySelector('input[type="file"][data-hcms-upload]');i&&Ae(i),et(r,null),de(ae(t),{path:n,structural:!1},t)}function Ho(e){return e.querySelector?e.querySelector("img[data-hcms-field], a[data-hcms-field]"):null}function jn(e,t,r){let n=Ho(e);if(!n)return;let i=(n.tagName||"").toUpperCase();i==="IMG"?n.src=t||"":i==="A"&&(n.href=t||"",n.textContent=t?r||tr(t):"")}function Ae(e){try{e.value=""}catch{}}function Vo(e){let t=typeof URL<"u"&&URL.createObjectURL?URL:null;if(!t)return"";try{return t.createObjectURL(e)}catch{return""}}function et(e,t){let r=e.querySelector?e.querySelector(":scope > .hcms-error"):null;r&&(t?(r.textContent=t,r.hidden=!1):(r.textContent="",r.hidden=!0))}function ar(e,t){let{formRoot:r,pageRules:n}=t,i=r.querySelector(`[data-hcms-path="${ts(e)}"]`);if(!i)throw new Error(`hypercms: no element at path "${e}"`);let o=i.querySelector(".hcms-array-items");if(!o)throw new Error(`hypercms: array container missing .hcms-array-items at "${e}"`);let a=me(e),s=Zo(n,a),l=Array.isArray(s),c=typeof s=="string"&&s.endsWith("[]");if(!l&&!c)throw new Error(`hypercms: path "${e}" is not an array`);let d=Ct(i,"data-hcms-max-items"),b=o.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]");if(i.hasAttribute("data-hcms-no-add")||d!=null&&b.length>=d)return;let u=b.length,k=l?s[1]:s.replace(/\[\]$/,""),y=Xe(l?k:"string"),N=gn({shape:l?"object-array-item":"scalar-array-item",itemShape:k,pathArr:[...a,u],data:y,doc:t.doc,itemKey:i.getAttribute("data-hcms-item-tpl")||null,pageRules:n});return o.appendChild(N),qe(N,t.doc),cr(i),$e(`Add ${e}`,()=>de(ae(t),{path:e,structural:!0},t))}function Wo(e,t,r){let n=e.closest('[data-hcms-shape="object-array"], [data-hcms-shape="scalar-array"]');if(!n||n.hasAttribute("data-hcms-no-reorder"))return;let i=n.querySelector(".hcms-array-items");if(!i)return;let o=Array.from(i.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]")),a=o.indexOf(e);if(a<0)return;let s=a+t;if(s<0||s>=o.length)return;let l=e.querySelector(`[data-hcms-action="${t<0?"move-up":"move-down"}"]`);return t<0?i.insertBefore(e,o[s]):i.insertBefore(e,o[s].nextSibling),dr(i),cr(n),l&&typeof l.focus=="function"&&e.querySelector(`[data-hcms-action="${t<0?"move-up":"move-down"}"]`)?.focus?.(),$e(`Reorder ${n.getAttribute("data-hcms-path")||""}`,()=>de(ae(r),{path:n.getAttribute("data-hcms-path")||"",structural:!0},r))}var Et="Delete this item?";function Ko(e,t){let r=e&&e.getAttribute("data-hcms-confirm-remove");if(r!=null)return/^(off|false|no|0)$/i.test(r.trim())?null:r||Et;let n=t&&t.confirmRemove;return n===!1?null:typeof n=="string"?n||Et:n===!0||e&&e.getAttribute("data-hcms-shape")==="object-array"?Et:null}function Go(e,t){let r=e.closest('[data-hcms-shape="object-array"], [data-hcms-shape="scalar-array"]'),n=Ko(r,t);if(n==null)return De(e,t);let i=ne("consent")||typeof window<"u"&&window.consent;typeof i=="function"?Promise.resolve(i(n)).then(()=>De(e,t),()=>{}):typeof window<"u"&&typeof window.confirm=="function"?window.confirm(n)&&De(e,t):De(e,t)}function De(e,t){let r=e.getAttribute("data-hcms-path")||"",n=e.parentElement,i=e.closest('[data-hcms-shape="object-array"], [data-hcms-shape="scalar-array"]');if(!i?.hasAttribute("data-hcms-no-remove")){if(i){let o=Ct(i,"data-hcms-min-items"),a=i.querySelector(".hcms-array-items"),s=a?a.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]").length:0;if(o!=null&&s<=o)return}return e.remove(),n&&dr(n),i&&cr(i),$e(`Remove ${r}`,()=>de(ae(t),{path:r,structural:!0},t))}}function de(e,t,r){let n=tt(e);if(n===r.lastFingerprint)return{ok:!0,skipped:!0};let i=Rn(r.pageRoot,r.pageRules,e,{observerHandle:r.observerHandle,shellRoot:r.shellRoot,structural:!!t.structural,structuralPath:t.path||null});return i.ok?(r.lastFingerprint=n,r.lastData=e,In(r,null),r.dispatch?.("hcms:change",{data:e,path:t.path,structural:!!t.structural}),r.onChange?.(e,t)):(In(r,Xo(i.error,t.path)),r.dispatch?.("hcms:error",{error:i.error,attemptedData:e}),r.onError?.(i.error)),i}function ae(e){let t=re.extract(e.formRoot,e.formRules);return ye(t,e.formRules)}function ye(e,t){if(t==null||e==null)return e;if(typeof t=="string")return t.endsWith("@checked")?e===!0||e==="true":e;if(Array.isArray(t)){if(!Array.isArray(e))return e;let[,r]=t;return e.map(n=>ye(n,r))}if(typeof t=="object"){if(typeof e!="object"||Array.isArray(e))return e;let r={};for(let[n,i]of Object.entries(t))r[n]=ye(e[n],i);return r}return e}function In(e,t){e.lastErrors=t&&t.length?t:null,lr(e)}function lr(e){if(Jo(e),e.errorEl&&(e.errorEl.textContent="",e.errorEl.hidden=!0),!e.lastErrors)return;let t=[];for(let{message:r,path:n}of e.lastErrors){if(n!=null&&n!==""){let i=Yo(e.formRoot,n);if(i){i.textContent=i.textContent?`${i.textContent}
|
|
151
151
|
${r}`:r,i.hidden=!1;continue}}t.push(r)}t.length&&e.errorEl&&(e.errorEl.textContent=t.join(`
|
|
152
|
-
`),e.errorEl.hidden=!1)}function
|
|
152
|
+
`),e.errorEl.hidden=!1)}function Jo(e){if(e.formRoot)for(let t of e.formRoot.querySelectorAll(".hcms-error"))t.textContent="",t.hidden=!0}function Yo(e,t){if(!e)return null;let r=t.split(".");for(;r.length>0;){let n=r.join("."),i=typeof CSS<"u"&&CSS.escape?CSS.escape(n):n.replace(/[^a-zA-Z0-9_\-.*]/g,a=>"\\"+a),o=e.querySelector(`[data-hcms-path="${i}"]`);if(o){for(let a of o.children)if(a.classList&&a.classList.contains("hcms-error"))return a}r.pop()}return null}function Xo(e,t){return e?e.name==="EmptyListInsert"?[{message:"Add a seed item in HTML first.",path:t}]:e.name==="ShapeMismatch"&&Array.isArray(e.mismatches)&&e.mismatches.length?e.mismatches.map(r=>({message:`Shape mismatch: expected ${r.expected}, got ${r.got}`,path:r.path})):[{message:e.message||String(e),path:t}]:[{message:"unknown error",path:t}]}function Zo(e,t){let r=e;for(let n of t){if(r==null||typeof r=="string")return;if(Array.isArray(r)){if(typeof n!="number"&&n!=="*")return;r=r[1];continue}if(typeof r=="object"){if(typeof n=="number"||!(n in r))return;r=r[n];continue}return}return r}function Ct(e,t){if(!e||!e.hasAttribute(t))return null;let r=parseInt(e.getAttribute(t),10);return Number.isFinite(r)?r:null}function cr(e){if(!e)return;let t=e.querySelector(".hcms-array-items");if(!t)return;let r=Array.from(t.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]")),n=r.length,i=Ct(e,"data-hcms-max-items"),o=Ct(e,"data-hcms-min-items"),a=e.hasAttribute("data-hcms-no-add"),s=e.hasAttribute("data-hcms-no-remove"),l=e.hasAttribute("data-hcms-no-reorder"),c=e.querySelector(':scope > .hcms-add, :scope > * > .hcms-add, :scope > [data-hcms-action="add"]');c&&(c.hidden=a||i!=null&&n>=i),r.forEach((d,b)=>{let u=d.querySelector('[data-hcms-action="remove"]');u&&(u.hidden=s||o!=null&&n<=o);let k=d.querySelector('[data-hcms-action="move-up"]');k&&(k.hidden=l||b===0);let y=d.querySelector('[data-hcms-action="move-down"]');y&&(y.hidden=l||b===n-1)})}function ur(e){!e||!e.querySelectorAll||e.querySelectorAll(".hcms-array-items").forEach(t=>dr(t))}function dr(e){let t=e.querySelectorAll?Array.from(e.querySelectorAll('input[type="radio"][data-hcms-field]'),n=>[n,n.checked]):[],r=0;for(let n of e.children){if(!n.matches?.("[data-hcms-card], [data-hcms-array-item]"))continue;let i=n.getAttribute("data-hcms-path");if(!i)continue;let o=i.split(".");o[o.length-1]=String(r);let a=o.join(".");a!==i&&Qo(n,i,a),r++}for(let[n,i]of t)n.checked!==i&&(n.checked=i)}function Qo(e,t,r){let n=e.querySelectorAll("[data-hcms-path]");e.setAttribute("data-hcms-path",r);for(let i of n){let o=i.getAttribute("data-hcms-path");o===t?i.setAttribute("data-hcms-path",r):o&&o.startsWith(t+".")&&i.setAttribute("data-hcms-path",r+o.slice(t.length))}es(e)}function es(e){for(let t of e.querySelectorAll('input[type="radio"][data-hcms-field]')){if(!t.name||!t.name.startsWith("hcms-"))continue;let r=t.closest("[data-hcms-path]");r&&(t.name=nr(r.getAttribute("data-hcms-path")))}}function tt(e){return JSON.stringify(e,(t,r)=>{if(r&&typeof r=="object"&&!Array.isArray(r)){let n=Object.create(null);for(let i of Object.keys(r).sort())n[i]=r[i];return n}return r})}function ts(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}var ls={},Rt="hcms-shell-styles",rs="hcms-bundled-styles-installed",ns='a[href], area[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',Be=new WeakSet,mr="";function qn(e){mr=e}var is=0;function Fn(e){return String(e).replace(/[&<>"]/g,t=>({"&":"&","<":"<",">":">",'"':"""})[t])}function Dn({mountTo:e,side:t="right",overlay:r=!1,showSaveButton:n=!1,title:i="Page content",eyebrow:o="Edit",theme:a=null,doc:s}){$n(s);let l=`hcms-shell-title-${++is}`,c=s.createElement("div");c.setAttribute("data-hcms-shell",""),c.setAttribute("save-remove",""),c.setAttribute("save-ignore",""),c.setAttribute("tabindex","-1"),c.setAttribute("role","dialog"),c.setAttribute("aria-modal","true"),c.setAttribute("aria-labelledby",l);let d=a==="dark"?" dark":a==="light"?" light":"";c.className="hcms-shell pixel-quiet hcms-side-"+t+(r?" hcms-overlay":"")+d;let b=Fn(i),u=Fn(o);c.innerHTML=`
|
|
153
153
|
<div class="hcms-shell-minibar" aria-hidden="true">
|
|
154
|
-
<span class="hcms-shell-minibar-title">${
|
|
154
|
+
<span class="hcms-shell-minibar-title">${b}</span>
|
|
155
155
|
<button type="button" class="hcms-shell-close mirk-button mirk-button--small" data-hcms-action="close" aria-label="Close">
|
|
156
156
|
<span class="mirk-button__label">\xD7</span>
|
|
157
157
|
</button>
|
|
@@ -159,8 +159,8 @@ ${r}`:r,i.hidden=!1;continue}}t.push(r)}t.length&&e.errorEl&&(e.errorEl.textCont
|
|
|
159
159
|
<div class="hcms-shell-body">
|
|
160
160
|
<header class="hcms-shell-header">
|
|
161
161
|
<div class="hcms-shell-heading">
|
|
162
|
-
<div class="hcms-shell-eyebrow">${
|
|
163
|
-
<h2 class="hcms-shell-title" id="${l}">${
|
|
162
|
+
<div class="hcms-shell-eyebrow">${u}</div>
|
|
163
|
+
<h2 class="hcms-shell-title" id="${l}">${b}</h2>
|
|
164
164
|
</div>
|
|
165
165
|
<button type="button" class="hcms-shell-close mirk-button mirk-button--small" data-hcms-action="close" aria-label="Close">
|
|
166
166
|
<span class="mirk-button__label">\xD7</span>
|
|
@@ -175,7 +175,7 @@ ${r}`:r,i.hidden=!1;continue}}t.push(r)}t.length&&e.errorEl&&(e.errorEl.textCont
|
|
|
175
175
|
</button>
|
|
176
176
|
</footer>
|
|
177
177
|
</div>
|
|
178
|
-
`,(e||s.body).appendChild(c);let
|
|
178
|
+
`,(e||s.body).appendChild(c);let y=s.body;y.classList.add("hcms-open"),r&&y.classList.add("hcms-overlay"),t==="left"&&y.classList.add("hcms-side-left");let N=as(c,s),q=ss(c);return{root:c,formRoot:c.querySelector("[data-hcms-form-root]"),noticeEl:c.querySelector(".hcms-shell-notice"),errorEl:c.querySelector(".hcms-shell-error"),saveButton:c.querySelector(".hcms-shell-save"),destroy(){N.detach(),q.detach(),c.remove(),y.classList.remove("hcms-open","hcms-overlay","hcms-side-left")},restoreChrome(){os(s),y.classList.add("hcms-open"),r&&y.classList.add("hcms-overlay"),t==="left"&&y.classList.add("hcms-side-left")}}}function os(e){e&&(e.getElementById(Rt)||e.querySelector("style[data-hcms-bundled-styles]")||(Be.delete(e),$n(e)))}function $n(e){if(e&&!Be.has(e)){if(e[rs]){Be.add(e);return}if(e.getElementById(Rt)||e.querySelector("style[data-hcms-bundled-styles]")){Be.add(e);return}if(mr){let t=e.createElement("style");t.id=Rt,t.setAttribute("save-remove",""),t.setAttribute("save-ignore",""),t.textContent=mr,(e.head||e.documentElement).appendChild(t),Be.add(e);return}try{let t=new URL("./theme.generated.css",ls.url).href,r=e.createElement("link");r.rel="stylesheet",r.id=Rt,r.setAttribute("save-remove",""),r.setAttribute("save-ignore",""),r.href=t,(e.head||e.documentElement).appendChild(r),Be.add(e)}catch{console.warn("hypercms: shell stylesheet not applied \u2014 cssText is empty and the co-located theme fallback is unavailable. Call installStyles(themeText) before opening the CMS.")}}}function ss(e){let t=e.querySelector(".hcms-shell-body"),r=e.querySelector(".hcms-shell-header");if(!t||!r||typeof t.addEventListener!="function")return{detach(){}};let n=()=>{let i=(r.offsetHeight||0)-12;e.classList.toggle("is-condensed",t.scrollTop>i)};return t.addEventListener("scroll",n,{passive:!0}),n(),{detach(){t.removeEventListener("scroll",n)}}}function as(e,t){function r(n){if(n.key!=="Tab"||!e.contains(t.activeElement))return;let i=Array.from(e.querySelectorAll(ns));if(i.length===0)return;let o=i[0],a=i[i.length-1];n.shiftKey&&t.activeElement===o?(n.preventDefault(),a.focus()):!n.shiftKey&&t.activeElement===a&&(n.preventDefault(),o.focus())}return t.addEventListener("keydown",r),{detach:()=>t.removeEventListener("keydown",r)}}var cs="[hypercms]",Bn={skip:"[data-hcms-shell]",templateAttr:"cms-template"},Pn={skip:"[data-hcms-shell]",templateAttr:null},hr=class extends Error{constructor(t,r,n){super(`hypercms: rule at "${t}" has an invalid CSS selector: "${r}"`),this.name="InvalidRuleSelector",this.path=t,this.selector=r,this.cause=n}};function Mt(e,t){let r=[],n=[];return pr(e,t,[],r,n),{missing:hs(r),twins:ps(n)}}function pr(e,t,r,n,i){if(typeof t=="string"){let o=us(t);if(!o)return;let a=Ot(e,o,Bn,r);if(t.endsWith("[]")){a.length===0&&Ot(e,o,Pn,r).length===0&&n.push(rt(r));return}a.length===0?n.push(rt(r)):a.length>1&&i.push({path:rt(r),count:a.length});return}if(Array.isArray(t)){let[o,a]=t;if(typeof o!="string"||!o)return;let s=Ot(e,o,Bn,r);if(s.length===0){Ot(e,o,Pn,r).length===0&&n.push(rt(r));return}for(let l of s)pr(l,a,[...r,"*"],n,i);return}if(t&&typeof t=="object")for(let[o,a]of Object.entries(t))pr(e,a,[...r,o],n,i)}function Ot(e,t,r,n){try{return ue.find(e,t,r)}catch(i){throw new hr(rt(n),t,i)}}function us(e){if(e==="."||e.startsWith("@"))return null;if(e.endsWith("[]"))return e.slice(0,-2)||null;let t=Z(e);return(t===-1?e:e.slice(0,t))||null}function Nt(e){ds(e),ms(e)}function ds(e){let t=e.noticeEl;if(!t)return;let r=e.unresolved&&e.unresolved.missing||[];if(r.length===0){t.textContent="",t.hidden=!0;return}let n=r.length===1?"1 field no longer matches this page":`${r.length} fields no longer match this page`;t.textContent=`${n}: ${r.join(", ")}`,t.hidden=!1}function ms(e){let t=e.unresolved&&e.unresolved.twins||[],r=t.map(n=>`${n.path}:${n.count}`).join("|");if(r!==e.lastTwinSignature){e.lastTwinSignature=r;for(let{path:n,count:i}of t)console.warn(`${cs} "${n}" matches ${i} elements; edits go to the first one.`)}}function hs(e){return[...new Set(e)]}function ps(e){let t=new Map;for(let r of e){let n=t.get(r.path);(!n||r.count>n.count)&&t.set(r.path,r)}return[...t.values()]}function rt(e){return e.length?e.join("."):"(whole page)"}var fs={skip:"[data-hcms-shell]",templateAttr:"cms-template"};function It(e,{ignoreActiveValue:t}={}){let r=re.findRules(e.doc,e.rulesSource||"cms");r&&(e.pageRules=e.richText?St(r.rules,e.pageRoot):r.rules,e.rulesTagNode=r.tagNode),ht(e.doc),kt(e.doc,e.pageRules),e.formRules=vt(e.pageRules,e.doc),e.unresolved=Mt(e.pageRoot,e.pageRules);let n=ye(re.extract(e.pageRoot,e.pageRules,fs),e.pageRules),i=xt({pageRules:e.pageRules,formRules:e.formRules,data:n,doc:e.doc});ut(e.formRoot,i,{ignoreActiveValue:t}),qe(e.formRoot,e.doc),lr(e),Nt(e),e.updateFingerprint&&e.updateFingerprint()}function zn({debounce:e=100,onRefresh:t}){let r=ne("Mutation");if(!r||typeof r.onAnyChange!="function")throw new Error("hypercms: a mutation hub is required (clay.Mutation or hyperclay.Mutation). Load clayjs or hyperclayjs, or just the mutation utility, before initializing hypercms.");let n=0,i=r.onAnyChange({debounce:e},()=>{n>0||t()});return{unsubscribe:typeof i=="function"?i:()=>{},pause(){n++},resume(){n=Math.max(0,n-1)}}}var gs="[hypercms]";function Un(e,t){if(!e||!e.querySelectorAll||!t)return;let r=bs(t);e.querySelectorAll("template[data-hcms-tpl]").forEach(i=>{let o=i.getAttribute("data-hcms-tpl");o&&(o.startsWith("@")||r.has(o)||console.warn(`${gs} template "${o}" doesn't match any rule path; ignored`))})}function bs(e){let t=new Set;return r([],e),t;function r(n,i){let o=n.join("."),a=n.map(l=>typeof l=="number"?"*":l).join(".");o&&t.add(o),a&&t.add(a);let s=_e(i);if(s==="object")for(let[l,c]of Object.entries(i))r([...n,l],c);else if(s==="object-array"||s==="scalar-array"){let l=[...n,"*"],c=l.map(d=>typeof d=="number"?"*":d).join(".");if(t.add(c),s==="object-array"){let d=i[1];if(d&&typeof d=="object"&&!Array.isArray(d))for(let[b,u]of Object.entries(d))r([...l,b],u)}}}}var Hn="hcms-toggle",Vn="hcms-toggle-style",ks=`
|
|
179
179
|
#hcms-toggle {
|
|
180
180
|
position: fixed; right: 16px; bottom: 16px; z-index: 2147482900;
|
|
181
181
|
display: inline-flex; align-items: center; gap: 7px; padding: 9px 14px;
|
|
@@ -189,7 +189,7 @@ body.hcms-open #hcms-toggle .hcms-toggle__open { display: none; }
|
|
|
189
189
|
body.hcms-open #hcms-toggle .hcms-toggle__close { display: inline; }
|
|
190
190
|
body.hcms-open:not(.hcms-overlay):not(.hcms-side-left) #hcms-toggle { right: calc(380px + 16px); }
|
|
191
191
|
body.hcms-open.hcms-overlay #hcms-toggle { display: none; }
|
|
192
|
-
`;function
|
|
192
|
+
`;function ys({search:e="",cookie:t="",forced:r=null}={}){let n=typeof e=="string"?e:"",i=n.indexOf("?"),o=i===-1?n:n.slice(i+1),a=new URLSearchParams(o).get("editmode");return a?a==="true":r!=null?!!r:/(?:^|;\s*)isAdminOfCurrentResource=[^;]/.test(t)}function vs({open:e,close:t,isOpen:r},n=document){let i=n.getElementById(Hn);if(i)return i;if(!n.getElementById(Vn)){let a=n.createElement("style");a.id=Vn,a.setAttribute("snapshot-remove",""),a.textContent=ks,n.head.appendChild(a)}let o=n.createElement("button");return o.type="button",o.id=Hn,o.setAttribute("no-save",""),o.setAttribute("snapshot-remove",""),o.setAttribute("save-ignore",""),o.setAttribute("aria-label","Toggle content editor"),o.innerHTML='<span class="hcms-toggle__open">Edit content</span><span class="hcms-toggle__close">Close editor</span>',o.addEventListener("click",async()=>{try{r()?t():await e()}catch(a){console.warn("hypercms: toggle failed to open the CMS",a)}}),n.body.appendChild(o),o}function Wn(e){if(typeof window>"u"||typeof document>"u")return;let t=window.__hyperclayEditMode!=null?window.__hyperclayEditMode:null;if(!ys({search:window.location.search,cookie:document.cookie,forced:t}))return;let r=()=>{document.body&&e.hasRules(document)&&vs(e)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",r,{once:!0}):r()}function Jn(e){qn(e)}var P={isOpen:!1,ctx:null,shell:null,opts:null};function Kn(e,t){if(P.ctx!==e)return;let r=t==="livesync";t==="livesync"&&P.shell?.restoreChrome?.(),It(e,{ignoreActiveValue:r})}var Gn=!1;function xs(){if(Gn)return;let e=ne("onPrepareForSave");typeof e=="function"&&(e(t=>{let r=t&&t.querySelector&&t.querySelector("body");r&&r.classList.remove("hcms-open","hcms-overlay","hcms-side-left")}),Gn=!0)}function br(e={}){if(P.isOpen){console.warn("cms.open() called while already open; ignoring");return}xs();let t=e.pageRoot||(typeof document<"u"?document.body:null);if(!t)throw new Error("hypercms: no pageRoot available");let r=t.ownerDocument||(typeof document<"u"?document:null);if(!r)throw new Error("hypercms: no document available");let n=e.rules!==void 0?e.rules:"cms",i=re.findRules(r,n);if(!i){let k=typeof n=="string"?`data-rules-name~="${n}"`:"the provided rules object";throw new Error(`hypercms: no rules found for ${k}`)}let o=e.richText!==!1,a=o?St(i.rules,t):i.rules,s=i.tagNode;ht(r),kt(r,a),Un(r,a);let l=vt(a,r),c=Mt(t,a),d=ye(re.extract(t,a,{skip:"[data-hcms-shell]",templateAttr:"cms-template"}),a),b=Tt(()=>Dn({mountTo:e.mountTo||r.body,side:e.side||"right",overlay:!!e.overlay,showSaveButton:!!e.showSaveButton,title:e.title,eyebrow:e.eyebrow,theme:e.theme,doc:r})),u={doc:r,pageRoot:t,pageRules:a,formRules:l,rulesTagNode:s,rulesSource:n,richText:o,formRoot:b.formRoot,shellRoot:b.root,errorEl:b.errorEl,noticeEl:b.noticeEl,unresolved:c,lastTwinSignature:null,lastFingerprint:null,lastData:null,observerHandle:null,undoUnsub:null,livesyncUnsub:null,onChange:e.onChange,onError:e.onError,confirmRemove:e.confirmRemove,previouslyFocused:r.activeElement,dispatch(k,y){let N=r.defaultView&&r.defaultView.CustomEvent||(typeof CustomEvent<"u"?CustomEvent:null);if(!N)return;let q=new N(k,{bubbles:!0,cancelable:k==="hcms:change",detail:y});b.root.dispatchEvent(q)},onCloseRequested(){kr()}};u.updateFingerprint=()=>{u.lastFingerprint=tt(ae(u))};try{let k=xt({pageRules:a,formRules:l,data:d,doc:r});b.formRoot.appendChild(k),qe(b.formRoot,r),Nt(u),Ln(u),u.updateFingerprint(),u.observerHandle=zn({onRefresh:()=>It(u)});let y=ne("undo");if(y&&typeof y.on=="function"){let q=()=>{if(P.ctx!==u)return;Kn(u,"undo");let H=ye(re.extract(u.pageRoot,u.pageRules,{skip:"[data-hcms-shell]",templateAttr:"cms-template"}),u.pageRules);tt(H)!==tt(u.lastData)&&(u.lastData=H,u.onChange?.(H,{path:"",structural:!1}))};y.on("undo",q),y.on("redo",q),u.undoUnsub=()=>{y.off("undo",q),y.off("redo",q)}}let N=()=>Kn(u,"livesync");u.livesyncUnsub=ir(r,Mn,N),nt.ctx=u,_s(r),ws(b.root),P.isOpen=!0,P.ctx=u,P.shell=b,P.opts=e,u.dispatch("hcms:open",{pageRoot:t})}catch(k){throw u.observerHandle?.unsubscribe?.(),u.undoUnsub?.(),u.livesyncUnsub?.(),u.detachEvents?.(),nt.ctx===u&&(nt.ctx=null),Tt(()=>b.destroy()),P.isOpen=!1,P.ctx=null,P.shell=null,P.opts=null,k}}function ws(e){let r=e.querySelector('input:not([disabled]):not([type="hidden"]), textarea:not([disabled]), select:not([disabled]), button:not([disabled]), [tabindex]:not([tabindex="-1"])');r&&typeof r.focus=="function"&&r.focus()}var nt={ctx:null};function _s(e){let t=e.defaultView||(typeof globalThis<"u"?globalThis:null);if(!t)return;let r=function(){let i=nt.ctx;if(i)return ur(i.formRoot),$e("Reorder",()=>de(ae(i),{path:"",structural:!0},i))};typeof t.hypercmsCommit!="function"&&(t.hypercmsCommit=r),typeof globalThis<"u"&&typeof globalThis.hypercmsCommit!="function"&&(globalThis.hypercmsCommit=r)}var gr="cms";function As(e){let t=typeof e=="string"?e:"",r=t.indexOf("?"),n=r===-1?t:t.slice(r+1);if(!n)return t;let i=new URLSearchParams(n);return i.get(gr)!=="true"?t:(i.set(gr,"false"),"?"+i.toString())}function Ss(e){let t=typeof e=="string"?e:"",r=t.indexOf("?"),n=r===-1?t:t.slice(r+1);return n?new URLSearchParams(n).get(gr)==="true":!1}function Es(){if(typeof window>"u"||!window.location||!window.history||typeof window.history.replaceState!="function")return;let e=window.location.search,t=As(e);t!==e&&window.history.replaceState(window.history.state,"",t+window.location.hash)}function kr(){if(!P.isOpen)return;let{ctx:e,shell:t}=P;e.closed=!0;let r=e.previouslyFocused;if(e.dispatch("hcms:close",null),Es(),e.observerHandle?.unsubscribe?.(),e.undoUnsub?.(),e.livesyncUnsub?.(),e.detachEvents?.(),Tt(()=>t.destroy()),P.isOpen=!1,P.ctx=null,P.shell=null,P.opts=null,nt.ctx=null,r&&typeof r.focus=="function")try{r.focus()}catch{}}function Yn(){P.isOpen&&It(P.ctx)}function Cs(){return P.isOpen}var Ts={getData(){return P.isOpen?ae(P.ctx):null},setValue(e,t){if(!P.isOpen)throw new Error("hypercms: cms is not open");let r=P.ctx,n=me(e),i=we(r.pageRules,n);if(i===void 0)throw new Error(`hypercms: no rule at path "${e}"`);if(typeof i!="string"||i.endsWith("[]"))throw new Error(`hypercms: setValue requires a leaf scalar path; "${e}" is not a leaf`);let o=Rs(r.formRoot,e);if(!o)throw new Error(`hypercms: no field element at path "${e}"`);Os(o,t,r.formRoot,e),de(ae(r),{path:e,structural:!1},r)},addItem(e){if(!P.isOpen)throw new Error("hypercms: cms is not open");ar(e,P.ctx)},removeItem(e){if(!P.isOpen)throw new Error("hypercms: cms is not open");let t=P.ctx,r=me(e);if(typeof r[r.length-1]!="number")throw new Error(`hypercms: removeItem requires an item path; "${e}" is not an array index`);let i=we(t.pageRules,r.slice(0,-1));if(!(Array.isArray(i)||typeof i=="string"&&i.endsWith("[]")))throw new Error(`hypercms: removeItem requires an item path; parent of "${e}" is not an array`);let a=t.formRoot.querySelector(`[data-hcms-path="${vr(e)}"]`);if(!a)throw new Error(`hypercms: no element at path "${e}"`);De(a,t)},refresh:Yn,_commit(){if(!P.isOpen)return;let e=P.ctx;return ur(e.formRoot),$e("Update",()=>de(ae(e),{path:"",structural:!0},e))}};function Rs(e,t){let r=vr(t),n=`[data-hcms-path="${r}"] input[data-hcms-field], [data-hcms-path="${r}"] textarea[data-hcms-field], [data-hcms-path="${r}"] select[data-hcms-field], [data-hcms-path="${r}"] img[data-hcms-field], [data-hcms-path="${r}"] a[data-hcms-field], [data-hcms-path="${r}"] [contenteditable][data-hcms-field], input[data-hcms-path="${r}"][data-hcms-field], textarea[data-hcms-path="${r}"][data-hcms-field], select[data-hcms-path="${r}"][data-hcms-field], img[data-hcms-path="${r}"][data-hcms-field], a[data-hcms-path="${r}"][data-hcms-field], [contenteditable][data-hcms-path="${r}"][data-hcms-field]`;return e.querySelector(n)}function Os(e,t,r,n){let i=(e.tagName||"").toUpperCase(),o=(e.getAttribute("type")||"").toLowerCase();if(i==="INPUT"&&o==="checkbox"){e.checked=t===!0||t==="true";return}if(i==="INPUT"&&o==="radio"){let a=vr(n),s=r.querySelectorAll(`[data-hcms-path="${a}"][data-hcms-field][type="radio"], [data-hcms-path="${a}"] [data-hcms-field][type="radio"]`);s.length?s.forEach(l=>{l.checked=String(l.value)===String(t??"")}):e.checked=String(e.value)===String(t??"");return}if(i==="IMG"){e.src=t==null?"":String(t);return}if(i==="A"){e.href=t==null?"":String(t);return}if(e.hasAttribute&&e.hasAttribute("contenteditable")){e.innerHTML=t==null?"":String(t);return}if("value"in e){e.value=t==null?"":String(t);return}e.textContent=t==null?"":String(t)}var Ms=250,Ns=1e4;function Is(){typeof window>"u"||typeof document>"u"||Ss(window.location?window.location.search:"")&&(P.isOpen||Ls(()=>{if(!P.isOpen)try{br()}catch(e){console.warn("hypercms: auto-open failed",e)}}))}function fr(){return!!document.body&&!!ne("Mutation")}function Ls(e){if(fr()){queueMicrotask(e);return}let t=Date.now()+Ns,r=!1,n=null,i=null,o=()=>{r||(r=!0,n!==null&&clearInterval(n),i&&i())};function a(){if(P.isOpen){o();return}fr()&&(o(),e())}i=ir(document,On,a),n=setInterval(()=>{if(P.isOpen){o();return}if(fr()){o(),e();return}Date.now()>=t&&(o(),console.warn("hypercms: ?cms=true auto-open gave up \u2014 no mutation hub appeared. Load clayjs or hyperclayjs (or just the mutation utility) so the CMS can initialize."))},Ms)}Is();Wn({open:br,close:kr,isOpen:Cs,hasRules:e=>!!re.findRules(e,"cms")});var yr={open:br,close:kr,refresh:Yn,api:Ts,get isOpen(){return P.isOpen},path:Zt,scaffold:Xe,morphForm:ut};function vr(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}var Xn=`/* GENERATED by scripts/build-theme.js from mirk-interface/mirk.css \u2014 DO NOT EDIT.
|
|
193
193
|
Source of truth: mirk-interface/mirk.css + src/theme/pixel-quiet.overrides.css.
|
|
194
194
|
Regenerate with: npm run build:theme */
|
|
195
195
|
|
|
@@ -1749,7 +1749,7 @@ body.hcms-open.hcms-overlay { overflow: hidden; }
|
|
|
1749
1749
|
cursor: pointer;
|
|
1750
1750
|
}
|
|
1751
1751
|
.hcms-sr-only[hidden] { display: none; }
|
|
1752
|
-
`;typeof window<"u"&&typeof document<"u"&&(function(){if(window.__mirk)return;window.__mirk=!0;let e='<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 4 12 12M12 4 4 12" stroke="currentColor" stroke-width="2" stroke-linecap="square" fill="none"/></svg>';document.addEventListener("click",r=>{let n=r.target.closest(".mirk-number__step");if(!n)return;let i=n.closest(".mirk-number").querySelector("input[type=number]");i&&(n.dataset.step==="up"?i.stepUp():i.stepDown(),i.dispatchEvent(new Event("change",{bubbles:!0})))}),document.addEventListener("input",r=>{let n=r.target.closest(".mirk-slider__input");n&&n.closest(".mirk-slider").style.setProperty("--mirk-value",`${n.value}%`)}),document.addEventListener("change",r=>{let n=r.target.closest(".mirk-file__input");if(!n||!n.files.length)return;let i=n.closest(".mirk-file"),o=i.querySelector(".mirk-file__name");if(!o)return;let a=n.files[0],s=document.createElement("a");if(s.className="mirk-file__name",s.dataset.filled="",s.href=URL.createObjectURL(a),s.target="_blank",s.rel="noopener",s.textContent=a.name,o.replaceWith(s),!i.querySelector(".mirk-file__remove")){let l=document.createElement("button");l.type="button",l.className="mirk-file__remove",l.setAttribute("aria-label","Remove file"),l.innerHTML=e,s.after(l)}}),document.addEventListener("change",r=>{let n=r.target.closest(".mirk-image__input");if(!n||!n.files.length)return;let i=n.closest(".mirk-image"),o=i.querySelector(".mirk-image__preview");if(!o)return;let a=i.querySelector(".mirk-image__placeholder"),s=new FileReader;s.onload=l=>{o.src=l.target.result,o.removeAttribute("hidden"),a&&a.setAttribute("hidden",""),i.querySelector(".mirk-image__thumb")?.removeAttribute("hidden"),i.querySelector(".mirk-image__upload")?.setAttribute("hidden","")},s.readAsDataURL(n.files[0])}),document.addEventListener("click",r=>{let n=r.target.closest(".mirk-file__remove");if(n){let o=n.closest(".mirk-file"),a=o?.querySelector(".mirk-file__input"),s=o?.querySelector(".mirk-file__name");if(a&&(a.value=""),s){let l=document.createElement("span");l.className="mirk-file__name",l.textContent="No file chosen",s.replaceWith(l)}n.remove();return}let i=r.target.closest(".mirk-image__remove");if(i){let o=i.closest(".mirk-image"),a=o?.querySelector(".mirk-image__input"),s=o?.querySelector(".mirk-image__preview");a&&(a.value=""),s&&(s.removeAttribute("src"),s.setAttribute("hidden","")),o?.querySelector(".mirk-image__thumb")?.setAttribute("hidden",""),o?.querySelector(".mirk-image__upload")?.removeAttribute("hidden")}});function t(r,n){let i=document.createElement("span");i.textContent=r;let o=document.createElement("input");o.type="hidden",o.name="tags[]",o.value=r;let a=document.createElement("button");a.type="button",a.className="mirk-tags__remove",a.textContent="\xD7";let s=document.createElement("span");if(s.className="mirk-tags__chip",n){let l=document.createElement("span");l.className="mirk-tags__chip-inner",l.append(i,o,a),s.append(l)}else s.append(i,o,a);return s}document.addEventListener("keydown",r=>{let n=r.target.closest(".mirk-tags__input");if(!n)return;let i=n.closest(".mirk-tags");if(r.key==="Enter"||r.key===","){let o=n.value.trim();if(!o)return;r.preventDefault(),n.before(t(o,i.classList.contains("mirk-tags--round"))),n.value=""}else if(r.key==="Backspace"&&!n.value){let o=i.querySelectorAll(".mirk-tags__chip");o[o.length-1]?.remove()}}),document.addEventListener("click",r=>{let n=r.target.closest(".mirk-tags__remove");if(n){n.closest(".mirk-tags__chip").remove();return}let i=r.target.closest(".mirk-tags");i&&r.target===i&&i.querySelector(".mirk-tags__input")?.focus()}),document.addEventListener("click",r=>{let n=r.target.closest("[data-mirk-chip]");if(!n)return;let i=n.getAttribute("data-mirk-chip");if(i==="open")n.closest(".mirk-chip")?.classList.add("mirk-chip--open");else if(i==="collapse")n.closest(".mirk-chip")?.classList.remove("mirk-chip--open");else if(i==="changes"){let o=n.closest(".mirk-chip__panel")?.classList.toggle("is-changes");n.textContent=o?"(hide changes)":"(view changes)"}}),document.addEventListener("click",r=>{let n=r.target.closest("[data-copy-btn]");if(!n)return;let i=n.closest("[data-copy]");if(!i)return;let o=i.cloneNode(!0);o.querySelectorAll("[data-copy-btn]").forEach(l=>l.remove());let s=i.getAttribute("data-copy")==="text"?o.textContent.replace(/^\s+|\s+$/g,""):o.innerHTML.replace(/\s+data-copy(="[^"]*")?/g,"").replace(/^\s*\n/gm,"").trim();navigator.clipboard.writeText(s).then(()=>{let l=n.textContent;n.textContent="copied",n.dataset.copied="",setTimeout(()=>{n.textContent=l,delete n.dataset.copied},1200)}).catch(()=>{n.textContent="error",setTimeout(()=>{n.textContent="copy"},1200)})})})();
|
|
1752
|
+
`;typeof window<"u"&&typeof document<"u"&&(function(){if(window.__mirk)return;window.__mirk=!0;let e='<svg viewBox="0 0 16 16" aria-hidden="true"><path d="M4 4 12 12M12 4 4 12" stroke="currentColor" stroke-width="2" stroke-linecap="square" fill="none"/></svg>';document.addEventListener("click",r=>{let n=r.target.closest(".mirk-number__step");if(!n)return;let i=n.closest(".mirk-number").querySelector("input[type=number]");i&&(n.dataset.step==="up"?i.stepUp():i.stepDown(),i.dispatchEvent(new Event("change",{bubbles:!0})))}),document.addEventListener("input",r=>{let n=r.target.closest(".mirk-slider__input");n&&n.closest(".mirk-slider").style.setProperty("--mirk-value",`${n.value}%`)}),document.addEventListener("change",r=>{let n=r.target.closest(".mirk-file__input");if(!n||!n.files.length)return;let i=n.closest(".mirk-file"),o=i.querySelector(".mirk-file__name");if(!o)return;let a=n.files[0],s=document.createElement("a");if(s.className="mirk-file__name",s.dataset.filled="",s.href=URL.createObjectURL(a),s.target="_blank",s.rel="noopener",s.textContent=a.name,o.replaceWith(s),!i.querySelector(".mirk-file__remove")){let l=document.createElement("button");l.type="button",l.className="mirk-file__remove",l.setAttribute("aria-label","Remove file"),l.innerHTML=e,s.after(l)}}),document.addEventListener("change",r=>{let n=r.target.closest(".mirk-image__input");if(!n||!n.files.length)return;let i=n.closest(".mirk-image"),o=i.querySelector(".mirk-image__preview");if(!o)return;let a=i.querySelector(".mirk-image__placeholder"),s=new FileReader;s.onload=l=>{o.src=l.target.result,o.removeAttribute("hidden"),a&&a.setAttribute("hidden",""),i.querySelector(".mirk-image__thumb")?.removeAttribute("hidden"),i.querySelector(".mirk-image__upload")?.setAttribute("hidden","")},s.readAsDataURL(n.files[0])}),document.addEventListener("click",r=>{let n=r.target.closest(".mirk-file__remove");if(n){let o=n.closest(".mirk-file"),a=o?.querySelector(".mirk-file__input"),s=o?.querySelector(".mirk-file__name");if(a&&(a.value=""),s){let l=document.createElement("span");l.className="mirk-file__name",l.textContent="No file chosen",s.replaceWith(l)}n.remove();return}let i=r.target.closest(".mirk-image__remove");if(i){let o=i.closest(".mirk-image"),a=o?.querySelector(".mirk-image__input"),s=o?.querySelector(".mirk-image__preview");a&&(a.value=""),s&&(s.removeAttribute("src"),s.setAttribute("hidden","")),o?.querySelector(".mirk-image__thumb")?.setAttribute("hidden",""),o?.querySelector(".mirk-image__upload")?.removeAttribute("hidden")}});function t(r,n){let i=document.createElement("span");i.textContent=r;let o=document.createElement("input");o.type="hidden",o.name="tags[]",o.value=r;let a=document.createElement("button");a.type="button",a.className="mirk-tags__remove",a.textContent="\xD7";let s=document.createElement("span");if(s.className="mirk-tags__chip",n){let l=document.createElement("span");l.className="mirk-tags__chip-inner",l.append(i,o,a),s.append(l)}else s.append(i,o,a);return s}document.addEventListener("keydown",r=>{let n=r.target.closest(".mirk-tags__input");if(!n)return;let i=n.closest(".mirk-tags");if(r.key==="Enter"||r.key===","){let o=n.value.trim();if(!o)return;r.preventDefault(),n.before(t(o,i.classList.contains("mirk-tags--round"))),n.value=""}else if(r.key==="Backspace"&&!n.value){let o=i.querySelectorAll(".mirk-tags__chip");o[o.length-1]?.remove()}}),document.addEventListener("click",r=>{let n=r.target.closest(".mirk-tags__remove");if(n){n.closest(".mirk-tags__chip").remove();return}let i=r.target.closest(".mirk-tags");i&&r.target===i&&i.querySelector(".mirk-tags__input")?.focus()}),document.addEventListener("click",r=>{let n=r.target.closest("[data-mirk-chip]");if(!n)return;let i=n.getAttribute("data-mirk-chip");if(i==="open")n.closest(".mirk-chip")?.classList.add("mirk-chip--open");else if(i==="collapse")n.closest(".mirk-chip")?.classList.remove("mirk-chip--open");else if(i==="changes"){let o=n.closest(".mirk-chip__panel")?.classList.toggle("is-changes");n.textContent=o?"(hide changes)":"(view changes)"}}),document.addEventListener("click",r=>{let n=r.target.closest("[data-copy-btn]");if(!n)return;let i=n.closest("[data-copy]");if(!i)return;let o=i.cloneNode(!0);o.querySelectorAll("[data-copy-btn]").forEach(l=>l.remove());let s=i.getAttribute("data-copy")==="text"?o.textContent.replace(/^\s+|\s+$/g,""):o.innerHTML.replace(/\s+data-copy(="[^"]*")?/g,"").replace(/^\s*\n/gm,"").trim();navigator.clipboard.writeText(s).then(()=>{let l=n.textContent;n.textContent="copied",n.dataset.copied="",setTimeout(()=>{n.textContent=l,delete n.dataset.copied},1200)}).catch(()=>{n.textContent="error",setTimeout(()=>{n.textContent="copy"},1200)})})})();Jn(Xn);var qs=yr,Ds={cms:yr};return si($s);})();
|
|
1753
1753
|
|
|
1754
1754
|
// Auto-export to window unless suppressed by loader.
|
|
1755
1755
|
// Per hypercms plan locked decision 3: flatten to hyperclay.hypercms.open(),
|