@panphora/hyper-cms 0.6.2 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
- var hypercms=(()=>{var bt=Object.defineProperty;var vn=Object.getOwnPropertyDescriptor;var xn=Object.getOwnPropertyNames;var wn=Object.prototype.hasOwnProperty;var kt=(e,t)=>{for(var r in t)bt(e,r,{get:t[r],enumerable:!0})},_n=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of xn(t))!wn.call(e,i)&&i!==r&&bt(e,i,{get:()=>t[i],enumerable:!(n=vn(t,i))||n.enumerable});return e};var An=e=>_n(bt({},"__esModule",{value:!0}),e);var Ko={};kt(Ko,{cms:()=>Vo,default:()=>Wo});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 En(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 Cn(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 Rn(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 Tn(e,t){return(e.textContent||"").replace(/\s+/g," ").trim().slice(0,t.textHintLength)}function On(e,t){let r=[e.tagName];return t.includeClasses&&r.push(Cn(e)),r.push(Rn(e,t)),En(r.join("|"))}function Mn(e){let t=e.tagName,r=1,n=e.previousElementSibling;for(;n;)n.tagName===t&&r++,n=n.previousElementSibling;return r}function Nn(e,t){return e.getAttribute?.("id")||e.getAttribute?.("role")?!0:t.landmarks.includes(e.tagName)}function In(e){let t=e.getAttribute?.("id");if(t)return`#${t}`;let r=e.getAttribute?.("role");return r?`@${r}`:e.tagName}function Ln(e,t){let r=[],n=e;for(;n&&n.tagName&&r.length<t.maxPathDepth;){let i=`${n.tagName}:${Mn(n)}`;if(r.unshift(i),n!==e&&Nn(n,t)){r.unshift(In(n));break}n=n.parentElement}return r}function jn(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 J(e,t,r){if(r.has(e))return r.get(e);let n={signature:On(e,t),path:Ln(e,t),textHint:Tn(e,t)};return r.set(e,n),n}function ar(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=J(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 Fn(e,t,r){r.delete(e),t.delete(e);let n=e.querySelectorAll("*");for(let i of n)t.delete(i)}function yt(e,t,r,n,i){let o=J(e,r,n),a=J(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 d=jn(o.path,a.path)*s.pathSegment;c+=d,l.path=d;let h=!0;if(o.textHint&&a.textHint?o.textHint===a.textHint?(c+=s.textMatch,l.text=s.textMatch):(c-=s.textMismatch,l.text=-s.textMismatch,h=!1):o.textHint!==a.textHint&&(c-=s.textMismatch,l.text=-s.textMismatch,h=!1),i.candidateCount===1&&h&&(c+=s.uniqueCandidate,l.unique=s.uniqueCandidate),typeof o.domIndex=="number"&&typeof a.domIndex=="number"){let f=Math.abs(o.domIndex-a.domIndex),k=Math.min(f*s.positionPenalty,s.maxDriftPenalty);c-=k,l.drift=-k}return{score:c,breakdown:l}}function ir(e,t,r,n,i){if(r.excludeIds&&e.getAttribute("id"))return null;let o=ar(t,r,n,i),a=J(e,r,n);if(typeof a.domIndex!="number"){let h=0,f=e.previousElementSibling;for(;f;)h++,f=f.previousElementSibling;a.domIndex=h}let s=o.get(a.signature)||[],l=r.excludeIds?s.filter(h=>!h.getAttribute("id")):s;if(l.length===0)return null;let c=null,m=0,d=null;for(let h of l){let{score:f,breakdown:k}=yt(e,h,r,n,{candidateCount:l.length});f>m&&(m=f,c=h,d=k)}return m<r.minConfidence?null:{element:c,confidence:m,breakdown:d}}function qn(e,t,r,n){let i=[],o=r.weights.signature+r.weights.slotMatch,a={slot:o};function s(d){if(d.children)return d.children;let h=d.childNodes;if(!h)return[];let f=[];for(let k=0;k<h.length;k++)h[k].nodeType===1&&f.push(h[k]);return f}function l(d,h){let f=s(d),k=s(h);if(f.length===k.length)for(let C=0;C<f.length;C++){let N=f[C],D=k[C];if(r.shouldIgnore?.(N)||r.shouldIgnore?.(D)||r.excludeIds&&(N.getAttribute("id")||D.getAttribute("id"))||N.tagName!==D.tagName)continue;let K=J(N,r,n).signature,F=J(D,r,n).signature;K!==F&&i.push({newEl:N,oldEl:D,score:o,breakdown:a}),l(N,D)}}function c(d,h){for(;;){if(d.tagName===h.tagName)return[d,h];let f=s(d);if(!d.tagName&&f.length===1){d=f[0];continue}let k=s(h);if(k.length===1&&k[0].tagName===d.tagName){h=k[0];continue}return null}}let m=c(e,t);return m&&l(m[0],m[1]),i}function or(e,t,r,n,i){let o=t.querySelectorAll("*"),a=ar(e,r,n,i),s=0;for(let f of o){let k=J(f,r,n);k.domIndex=s++}let l=[],c=new Map;function m(f,k,C){let N=new Set;if(f.textHint){let L=c.get(f.signature);if(!L){L=new Map;for(let X of k){let pe=J(X,r,n).textHint,le=L.get(pe);le||(le=[],L.set(pe,le)),le.push(X)}c.set(f.signature,L)}let V=L.get(f.textHint);if(V)for(let X=0;X<V.length&&X<C;X++)N.add(V[X])}let D=0,K=k.length;for(;D<K;){let L=D+K>>1;J(k[L],r,n).domIndex<f.domIndex?D=L+1:K=L}let F=Math.max(0,Math.min(D-(C>>1),k.length-C)),z=Math.min(F+C,k.length);for(let L=F;L<z;L++)N.add(k[L]);return[...N]}for(let f of o){if(r.shouldIgnore?.(f)||r.excludeIds&&f.getAttribute("id"))continue;let k=J(f,r,n),C=a.get(k.signature)||[],N=r.excludeIds?C.filter(F=>!F.getAttribute("id")):C,D=r.maxScoredCandidates,K=D&&N.length>D?m(k,N,D):N;for(let F of K){let{score:z,breakdown:L}=yt(f,F,r,n,{candidateCount:N.length});z>=r.minConfidence&&l.push({newEl:f,oldEl:F,score:z,breakdown:L})}}if(r.weights.slotMatch>0){let f=qn(t,e,r,n);for(let k of f)l.push(k)}l.sort((f,k)=>k.score-f.score);let d=new Map,h=new Set;for(let{newEl:f,oldEl:k}of l)d.has(f)||h.has(k)||(d.set(f,k),h.add(k));return d}function sr(e,t,r,n){let i=J(e,r,n),o=J(t,r,n),{score:a,breakdown:s}=yt(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 lr(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)=>or(i,o,t,r,n),explain:(i,o)=>sr(i,o,t,r),invalidate:i=>Fn(i,r,n),session:()=>{let i=new WeakMap,o=new WeakMap;return{findMatch:(a,s)=>ir(a,s,t,i,o),computeMatches:(a,s)=>or(a,s,t,i,o),explain:(a,s)=>sr(a,s,t,i)}},getConfig:()=>({...t})}}function vt(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 cr(e){return e.replace(/\\'/g,"'").replace(/(\\*)"/g,(t,r)=>r.length%2===0?r+'\\"':t)}var Dn=/^-?(0|[1-9]\d*)(\.\d+)?([eE][+-]?\d+)?$/,$n=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function He(e){try{return JSON.parse(e)}catch{return JSON.parse(Bn(e))}}function Bn(e){let t="",r=0,n=(i,o)=>{throw new Error(`Invalid relaxed JSON: ${i} at position ${o}`)};for(;r<e.length&&(r=vt(e,r),!(r>=e.length));){let i=e[r];if("{}[]:".includes(i)){t+=i,r++;continue}if(i===","){let s=vt(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=cr(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"||Dn.test(a)){t+=a,r=o;continue}if($n.test(a)){if(e[vt(e,o)]===":"){t+='"'+a+'"',r=o;continue}n("unquoted value "+JSON.stringify(a),r)}n("invalid token "+JSON.stringify(a),r)}return t}function dr(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 d=!1,h=a+1;for(;h<i.length&&/\s/.test(i[h]);)h++;if(h<i.length&&/[a-zA-Z_]/.test(i[h])&&(d=!0),!d){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 d=s,h=a+1;for(;h<i.length&&i[h]!==d;)i[h]==="\\"&&h++,h++;o.push({type:t.STRING,value:i.substring(a+1,h),quoted:!0,sourceQuote:d}),a=h+1;continue}let l=a,c;for(;l<i.length&&!/[{},]/.test(i[l]);)if(i[l]===":"){let d=[":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"],h=!1;for(let f of d){let k=f.substring(1);if(i.substring(l+1,l+1+k.length)===k){h=!0,l+=k.length;break}}if(!h)break}else if(i[l]==="["){for(l++;l<i.length&&i[l]!=="]";){if(i[l]==='"'||i[l]==="'"){let d=i[l];for(l++;l<i.length&&i[l]!==d;)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=cr(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 B=Symbol("hyper-morph-json-merge:missing"),mr=["id","_id","uuid","key","slug","code","name"];function ge(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Oe(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function zn(e,t,r){Object.defineProperty(e,t,{value:r,enumerable:!0,writable:!0,configurable:!0})}function ie(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(!ie(e[r],t[r]))return!1;return!0}if(ge(e)&&ge(t)){let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n of r)if(!Oe(t,n)||!ie(e[n],t[n]))return!1;return!0}return!1}function ur(e,t,r,n){return ie(t,r)?t:ie(t,e)?r:ie(r,e)?t:ge(t)&&ge(r)?Pn(ge(e)?e:{},t,r,n):Array.isArray(t)&&Array.isArray(r)?Wn(Array.isArray(e)?e:[],t,r,n):r}function hr(e,t,r,n){return t===B&&r===B?B:t===B?e===B?r:ie(r,e)?B:r:r===B?e===B?t:B:ur(e,t,r,n)}function Pn(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=hr(Oe(e,a)?e[a]:B,Oe(t,a)?t[a]:B,Oe(r,a)?r[a]:B,n);s!==B&&zn(i,a,s)}return i}function Un(e){return e===null||typeof e!="object"}function Ve(e){return typeof e+":"+String(e)}function Hn(e,t){for(let r of t){let n=new Set;for(let i of r){if(!Oe(i,e))return!1;let o=i[e];if(typeof o!="string"&&typeof o!="number")return!1;let a=Ve(o);if(n.has(a))return!1;n.add(a)}}return!0}function Vn(e,t,r,n){let i=[e,t,r],o=!0;for(let a of i)for(let s of a)ge(s)||(o=!1);if(o){for(let a of n.keyCandidates)if(Hn(a,i))return{kind:"keyed",field:a};return null}for(let a of i){let s=new Set;for(let l of a){if(!Un(l))return null;let c=Ve(l);if(s.has(c))return null;s.add(c)}}return{kind:"self"}}function Wn(e,t,r,n){let i=Vn(e,t,r,n);if(!i)return r;let o=i.kind==="self"?Ve:f=>Ve(f[i.field]),a=f=>{let k=new Map;for(let C of f)k.set(o(C),C);return k},s=a(e),l=a(t),c=a(r),m=new Map,d=new Set([...s.keys(),...l.keys(),...c.keys()]);for(let f of d){let k=hr(s.has(f)?s.get(f):B,l.has(f)?l.get(f):B,c.has(f)?c.get(f):B,n);k!==B&&m.set(f,k)}let h=[];for(let f of r){let k=o(f);m.has(k)&&h.push(k)}for(let f=0;f<t.length;f++){let k=o(t[f]);if(!m.has(k)||h.includes(k))continue;let C=0;for(let N=f-1;N>=0;N--){let D=h.indexOf(o(t[N]));if(D!==-1){C=D+1;break}}h.splice(C,0,k)}return h.map(f=>m.get(f))}function xt(e,t,r,n={}){let i=n.keyCandidates?[...n.keyCandidates,...mr]:mr;return ur(e===void 0?B:e,t,r,{keyCandidates:i})}function wt(e,t,r,n={}){let i=n.parse||He,o=[],a=(d,h)=>{if(typeof d!="string")return B;try{return i(d)}catch(f){return o.push(`${h} side is not valid JSON (${f.message})`),B}},s=a(t,"local"),l=a(r,"remote");if(s===B)return{text:r,warnings:o};if(l===B)return{text:t,warnings:o};let c=a(e,"base"),m=xt(c===B?void 0:c,s,l,n);return ie(m,l)?{text:r,warnings:o}:ie(m,s)?{text:t,warnings:o}:{text:JSON.stringify(m,null,2),warnings:o}}var _t=(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=lr({shouldIgnore:n});function o(v,E,S){if(S){let M=S.identityOf(v);if(M&&!S.disabled.has(M.key))return"hm-merge:"+M.key}if(E!=="smart")return v.outerHTML;let O=v.getAttribute("src"),R=v.getAttribute("type")||"text/javascript";if(O)try{let M=new URL(O,window.location.href);return`ext:${R}:${M.origin}${M.pathname}${M.search}`}catch{return`ext:${R}:${O}`}else{let M=v.textContent.trim(),y=5381;for(let A=0;A<M.length;A++)y=(y<<5)+y^M.charCodeAt(A);return`inline:${R}:${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 O of v.attributes)S.setAttribute(O.name,O.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 d={match:v=>v.hasAttribute("merge"),identity:v=>v.getAttribute("merge")};function h(v,E,S){if(S.merge===!1)return null;let O=[d,...S.mergeTags||[]],R=new WeakMap,M=g=>{if(R.has(g))return R.get(g);let w=null;if(s(g)&&!g.getAttribute("src")&&!n(g)){let _=g;for(let T=0;T<O.length;T++)if(O[T].match(_)){if(!m(_))console.warn("[hyper-morph] merge ignored: script type is not JSON",_);else{let j=O[T].identity(_);j!=null&&j!==""&&(w={key:T+":"+j,raw:j,recognizer:O[T]})}break}}return R.set(g,w),w},y=new Set,A=g=>{let w=new Map,_=T=>{let j=M(T);j&&(w.has(j.key)?(y.add(j.key),console.warn(`[hyper-morph] merge disabled for duplicate identity "${j.raw}"`)):w.set(j.key,T))};s(g)&&_(g);for(let T of g.querySelectorAll("script"))_(T);return w},b=A(v),p=A(E.__hyperMorphRoot||E);if(b.size===0&&p.size===0)return null;let u=null;return{identityOf:M,disabled:y,oldByKey:b,newByKey:p,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 j=M(T);j&&!u.has(j.key)&&u.set(j.key,T.textContent)};s(w)&&_(w);for(let T of w.querySelectorAll("script"))_(T);return u}}}function f(v,E,S){let O=v.merge;if(!O)return!1;let R=O.identityOf(E);if(!R||O.disabled.has(R.key))return!1;let M=O.identityOf(S);if(!M||M.key!==R.key)return!1;let y=E,A=S,b=A.getAttribute("merge-key")||y.getAttribute("merge-key"),{text:p,warnings:u}=wt(O.baseTexts().get(R.key),y.textContent,A.textContent,{parse:R.recognizer.parse,keyCandidates:b?b.split(/[\s,]+/).filter(Boolean):void 0});for(let x of u)console.warn(`[hyper-morph] merge "${R.raw}": ${x}`);return y.textContent!==p&&(y.textContent=p),!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},C={computeMatches(v,E){let{computeMatches:S}=i.session();return S(v,E)}};function N(v,E,S={}){v=yn(v);let O=Xt(E),R=kn(v,O,S),M=R.scripts.handle?new Set(Array.from(v.querySelectorAll("script")).map(p=>o(p,R.scripts.matchMode,R.merge))):null,y=F(R),A=X(R,v,O,p=>p.morphStyle==="innerHTML"?(L(p,v,O),Array.from(v.childNodes)):K(p,v,O)),b=p=>{y&&z(R,y),D(R);let u=M?bn(p,M,R):[];return u.length>0?Promise.all(u).then(()=>p):p};return A instanceof Promise?A.then(b):b(A)}function D(v){for(let E of Array.from(v.pantry.childNodes))v.callbacks.beforeNodeRemoved(E)!==!1&&v.callbacks.afterNodeRemoved(E);v.pantry.remove()}function K(v,E,S){let O=Xt(E);return L(v,O,S,E,E.nextSibling),Array.from(O.childNodes)}function F(v){if(!v.config.restoreFocus)return null;let E=document.activeElement;if(!(E instanceof HTMLInputElement||E instanceof HTMLTextAreaElement))return null;let{id:S,selectionStart:O,selectionEnd:R}=E;return{element:E,id:S,selectionStart:O,selectionEnd:R}}function z(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 L=(function(){function v(p,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 j=S(p,_,g,w);if(j){j!==g&&R(p,g,j),V(j,_,p),g=j.nextSibling;continue}}if(_ instanceof Element){let j=_.getAttribute("id");if(p.persistentIds.has(j)){let $=M(u,j,g,p);V($,_,p),g=$.nextSibling;continue}if(!p.idMap.has(_)){let $=p.hyperMatches.get(_);if($&&!p.idMap.has($)&&!b($,u)){A(u,$,g),V($,_,p),g=$.nextSibling;continue}}}let T=E(u,_,g,p);T&&(g=T.nextSibling)}for(;g&&g!=w;){let _=g;g=g.nextSibling,r(_)||O(p,_)}}function E(p,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 p.insertBefore(_,x),V(_,u,g),g.callbacks.afterNodeAdded(_),_}else{let w=c(document.importNode(u,!0));return p.insertBefore(w,x),g.callbacks.afterNodeAdded(w),w}}let S=(function(){function p(g,w,_,T){let j=w instanceof Element&&!g.idMap.has(w)?g.hyperMatches.get(w):null,$=null,H=w.nextSibling,Q=0,q=_;for(;q&&q!=T;){if(r(q)){q=q.nextSibling;continue}if(x(q,w)){if(u(g,q,w)||q===j&&!g.idMap.has(q))return q;if($===null){let G=q instanceof Element&&g.hyperMatchedOldElements.has(q);!g.idMap.has(q)&&!G&&($=q)}}if($===null&&H&&x(q,H)&&(Q++,H=H.nextSibling,Q>=2&&($=void 0)),g.activeElementAndParents.includes(q))break;q=q.nextSibling}return $||null}function u(g,w,_){let T=g.idMap.get(w),j=g.idMap.get(_);if(!j||!T)return!1;for(let $ of T)if(j.has($))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 p})();function O(p,u){let x=u instanceof Element&&p.hyperMatchedOldElements.has(u)&&!p.idMap.has(u);if(p.idMap.has(u)||x)A(p.pantry,u,null);else{if(p.callbacks.beforeNodeRemoved(u)===!1)return;u.parentNode?.removeChild(u),p.callbacks.afterNodeRemoved(u)}}function R(p,u,x){let g=u;for(;g&&g!==x;){let w=g;g=g.nextSibling,r(w)||O(p,w)}return g}function M(p,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(p,w,x),w}function y(p,u){let x=p.getAttribute("id");for(;p=p.parentNode;){let g=u.idMap.get(p);g&&(g.delete(x),g.size||u.idMap.delete(p))}}function A(p,u,x){if(p.moveBefore)try{p.moveBefore(u,x)}catch{p.insertBefore(u,x)}else p.insertBefore(u,x)}function b(p,u){let x=u instanceof Element?u:u.realParentNode;return!!x&&p.contains(x)}return v})(),V=(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"?le(y,A,b):(E(y,A,b),f(b,y,A)||M(y,b)||L(b,y,A))),b.callbacks.afterNodeMorphed(y,A)),y)}function E(y,A,b){let p=A.nodeType;if(p===1){let u=y,x=A,g=u.attributes,w=x.attributes;for(let _ of w)R(_.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(R(T.name,u,"remove",b))continue;u.removeAttribute(T.name)}}M(u,b)||S(u,x,b)}(p===8||p===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 p=A.value,u=y.value;O(y,A,"checked",b),O(y,A,"disabled",b),b.formStateSync==="property"&&y.indeterminate!==A.indeterminate&&(y.indeterminate=A.indeterminate),b.formStateSync==="property"?u!==p&&(R("value",y,"update",b)||(y.value=p)):A.hasAttribute("value")?u!==p&&(R("value",y,"update",b)||(y.setAttribute("value",p),y.value=p)):R("value",y,"remove",b)||(y.value="",y.removeAttribute("value"))}else if(y instanceof HTMLOptionElement&&A instanceof HTMLOptionElement)O(y,A,"selected",b);else if(y instanceof HTMLTextAreaElement&&A instanceof HTMLTextAreaElement){let p=A.value,u=y.value;if(R("value",y,"update",b)||(p!==u&&(y.value=p),b.formStateSync==="property"))return;y.firstChild&&y.firstChild.nodeValue!==p&&(y.firstChild.nodeValue=p)}}function O(y,A,b,p){let u=A[b],x=y[b];if(u!==x){let g=R(b,y,"update",p);if(g||(y[b]=A[b]),p.formStateSync==="property")return;u?g||y.setAttribute(b,""):R(b,y,"remove",p)||y.removeAttribute(b)}}function R(y,A,b,p){return y==="value"&&p.ignoreActiveValue&&A===document.activeElement?!0:p.callbacks.beforeAttributeUpdated(y,A,b)===!1}function M(y,A){return!!A.ignoreActiveValue&&y===document.activeElement&&y!==document.body}return v})();function X(v,E,S,O){if(v.head.block){let R=E.querySelector("head"),M=S.querySelector("head");if(R&&M){let y=le(R,M,v);return Promise.all(y).then(()=>(v.head.block=!1,v.head.ignore=!0,O(v)))}}return O(v)}function pe(v){return v.tagName==="SCRIPT"?!!v.getAttribute("src"):v.tagName==="LINK"?(v.getAttribute("rel")||"").toLowerCase().split(/\s+/).includes("stylesheet")&&!!v.getAttribute("href"):!1}function le(v,E,S){let O=[],R=[],M=[],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},p=new Map;for(let x of E.children){if(r(x))continue;let g=b(x),w=p.get(g);w||(w=[],p.set(g,w)),w.push(x)}for(let x of v.children){let g=b(x),w=p.get(g),_=!!(w&&w.length),T=S.head.shouldReAppend(x),j=S.head.shouldPreserve(x);if(_||j)if(T)R.push(x);else{if(w&&w.length){let $=w.pop();w.length||p.delete(g),f(S,x,$)}M.push(x)}else S.head.style==="append"?T&&(R.push(x),y.push(x)):S.head.shouldRemove(x)!==!1&&!r(x)&&R.push(x)}for(let x of p.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&&pe(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),O.push(g)}}for(let x of R)S.callbacks.beforeNodeRemoved(x)!==!1&&(v.removeChild(x),S.callbacks.afterNodeRemoved(x));return S.head.afterHeadMorphed(v,{added:O,kept:M,removed:R}),u}function bn(v,E,S){if(!S.scripts.handle)return[];let O=[],R=[],M=[],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?_?(R.push(u),y.push(u)):M.push(u):y.push(u)}let p=[];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()}),p.push(w)}u.replaceWith(x),S.callbacks.afterNodeAdded(x),O.push(x)}return S.scripts.afterScriptsHandled(S.target,{added:O,kept:M,removed:R}),p}let kn=(function(){function v(b,p,u){let{persistentIds:x,idMap:g}=y(b,p),w=C.computeMatches(b,p);if(typeof u.key=="function"){let H=new Map,Q=new Set,q=P=>{let U=u.key(P);U!=null&&(H.has(U)?Q.add(U):H.set(U,P))};b instanceof Element&&q(b);for(let P of b.querySelectorAll("*"))q(P);for(let P of Q)H.delete(P);let G=new Map;for(let[P,U]of w)G.set(U,P);let ce=p.__hyperMorphRoot||p,ne=new Map,Qt=new Set,er=P=>{let U=u.key(P);U!=null&&(ne.has(U)?Qt.add(U):ne.set(U,P))};ce instanceof Element&&er(ce);for(let P of ce.querySelectorAll("*"))er(P);for(let P of Qt)ne.delete(P);for(let[P,U]of ne){let fe=H.get(P);if(!fe||fe.tagName!==U.tagName)continue;let ft=G.get(fe);ft&&ft!==U&&w.delete(ft);let gt=w.get(U);gt&&gt!==fe&&G.delete(gt),w.set(U,fe),G.set(fe,U)}}let _=E(u),T=h(b,p,_.scripts);if(T){let H=new Map;for(let[Q,q]of w)H.set(q,Q);for(let[Q,q]of T.newByKey){if(T.disabled.has(Q))continue;let G=T.oldByKey.get(Q);if(!G)continue;let ce=H.get(G);ce&&ce!==q&&w.delete(ce);let ne=w.get(q);ne&&ne!==G&&H.delete(ne),w.set(q,G),H.set(G,q)}}let j=new Set;for(let H of w.values())j.add(H);let $=_.morphStyle||"outerHTML";if(!["innerHTML","outerHTML"].includes($))throw new Error(`Do not understand how to morph style ${$}`);return{target:b,newContent:p,config:_,morphStyle:$,ignoreActive:_.ignoreActive,ignoreActiveValue:_.ignoreActiveValue,restoreFocus:_.restoreFocus,formStateSync:_.formStateSync||"attribute",idMap:g,persistentIds:x,hyperMatches:w,hyperMatchedOldElements:j,merge:T,pantry:S(),activeElementAndParents:O(b),callbacks:_.callbacks,head:_.head,scripts:_.scripts}}function E(b){let p=Object.assign({},k);return Object.assign(p,b),p.callbacks=Object.assign({},k.callbacks,b.callbacks),p.head=Object.assign({},k.head,b.head),p.scripts=Object.assign({},k.scripts,b.scripts),p}function S(){let b=document.createElement("div");return b.hidden=!0,document.body.insertAdjacentElement("afterend",b),b}function O(b){let p=[],u=document.activeElement;if(u?.tagName!=="BODY"&&b.contains(u))for(;u&&(p.push(u),u!==b);)u=u.parentElement;return p}function R(b){let p=Array.from(b.querySelectorAll("[id]"));return b.getAttribute?.("id")&&p.push(b),p}function M(b,p,u,x){for(let g of x){let w=g.getAttribute("id");if(p.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,p){let u=R(b),x=R(p),g=A(u,x),w=new Map;M(w,g,b,u);let _=p.__hyperMorphRoot||p;return M(w,g,_,x),{persistentIds:g,idMap:w}}function A(b,p){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 p){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:yn,normalizeParent:Xt}=(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(M(y));if(v.has(y))return y;if(y instanceof Node){if(y.parentNode)return new O(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 O{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,p)=>{if(p instanceof Element){p.matches(A)&&b.push(p);let u=p.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 R(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 p=new RegExp(`${A("svg")}[\\s\\S]*?</svg\\s*>`,"gi"),u;do u=b,b=b.replace(p,"");while(b!==u);return b}function M(y){let A=new DOMParser,b=R(y);if(b.match(/<\/html>/)||b.match(/<\/head>/)||b.match(/<\/body>/)){let p=A.parseFromString(y,"text/html");if(b.match(/<\/html>/))return v.add(p),p;{let u=p.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:N,defaults:k,mergeJson:xt,mergeScriptText:wt,parseJsonRelaxed:He,parseRulesRelaxed:dr}})();var hs=_t.morph,ps=_t.defaults;var At=_t;var We=["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"],St=new Set(We),pr=new Set(["textContent","innerText","innerHTML","value","checked","selected","disabled","readOnly","type","id","className","title"]),fr=new Set(["tagName","nodeName","nodeType","nodeValue","childElementCount","classList","baseURI","documentURI","contentType","offsetWidth","offsetHeight","clientWidth","clientHeight","scrollWidth","scrollHeight","currentSrc","duration","paused","dataset"]);var Ke={};kt(Ke,{EmptyListInsert:()=>Ne,MAX_RULE_DEPTH:()=>ye,MaxRuleDepthExceeded:()=>de,RuleTargetReadOnly:()=>Ie,RulesParseError:()=>be,ShapeMismatch:()=>Me,UnknownRulesVersion:()=>ke});var be=class extends Error{constructor(t,r){super(t),this.name="RulesParseError",this.cause=r}},ke=class extends Error{constructor(t){super(`unknown rules version: ${t}. Library supports "1".`),this.name="UnknownRulesVersion",this.version=t}},ye=20,de=class extends Error{constructor(t){super(`rule depth exceeded ${ye} at path: ${t.join(".")}`),this.name="MaxRuleDepthExceeded",this.path=t}},Me=class extends Error{constructor(t){super(`shape mismatch: ${t.length} field(s) failed validation`),this.name="ShapeMismatch",this.mismatches=t}},Ne=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}},Ie=class extends Error{constructor(t){super(`cannot write to read-only DOM property "${t}"`),this.name="RuleTargetReadOnly",this.target=t}};function oe(e,t,r,n={}){return Et(e,t,r,{depth:0,path:[]},n)}function Et(e,t,r,n,i){if(n.depth>ye)throw new de(n.path);if(typeof r=="string")return Zn(e,t,r,i);if(Array.isArray(r)){let[o,a]=r;return e.find(t,o,i).map((l,c)=>Et(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]=Et(e,t,s,{depth:n.depth+1,path:[...n.path,a]},i);return o}return null}function Zn(e,t,r,n){if(r.endsWith("[]")){let o=r.slice(0,-2);return e.find(t,o,n).map(a=>e.text(a))}if(r.startsWith("@"))return gr(e,t,r.slice(1));if(r.includes("@")){let o=r.lastIndexOf("@"),a=r.slice(0,o),s=r.slice(o+1),l=a?e.find(t,a,n):[t];return l.length===0?null:gr(e,l[0],s)}if(r===".")return e.text(t);let i=e.find(t,r,n);return i.length===0?null:e.text(i[0])}function gr(e,t,r){if(St.has(r)){let i=e.prop(t,r);return i==null?null:String(i)}let n=e.attr(t,r);return n||null}function Xn(e){return e&&e.nodeType===1&&e.tagName==="SCRIPT"&&e.hasAttribute&&e.hasAttribute("data-rules-name")}function Qn(e){return e?(e.nodeType===9||e.nodeType===11,e):null}var ei={find(e,t,r={}){let n=Qn(e);if(!n||!n.querySelectorAll)return[];let i=Array.from(n.querySelectorAll(t));r.includeRulesTag||(i=i.filter(s=>!Xn(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}},se=ei;function Ct(e){try{return JSON.parse(e)}catch(t){throw new be(`Invalid strict JSON: ${t.message}`,t)}}function ve(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 d=!1,h=a+1;for(;h<i.length&&/\s/.test(i[h]);)h++;if(h<i.length&&/[a-zA-Z_]/.test(i[h])&&(d=!0),!d){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 d=s,h=a+1;for(;h<i.length&&i[h]!==d;)i[h]==="\\"&&h++,h++;o.push({type:t.STRING,value:i.substring(a+1,h),quoted:!0,sourceQuote:d}),a=h+1;continue}let l=a,c;for(;l<i.length&&!/[{},]/.test(i[l]);)if(i[l]===":"){let d=[":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"],h=!1;for(let f of d){let k=f.substring(1);if(i.substring(l+1,l+1+k.length)===k){h=!0,l+=k.length;break}}if(!h)break}else if(i[l]==="["){for(l++;l<i.length&&i[l]!=="]";){if(i[l]==='"'||i[l]==="'"){let d=i[l];for(l++;l<i.length&&i[l]!==d;)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 be("Invalid extraction rules syntax: "+i.message,i)}}var kr="1",br=/^[a-zA-Z0-9_-]+$/;function Le(e,t,r){let n;if(r===void 0)n="script[data-rules-name]";else{if(typeof r!="string"||!br.test(r))throw new Error(`hyper-html-api: invalid rules token ${JSON.stringify(r)} (must match ${br})`);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 ke(a);return{rules:ve(e.text(o)),tagNode:o}}var Hs=new Function("url","return import(url)");var ri=.5;function Rt(e,t,r,n,i,o,a,s={}){let l=e.find(t,r,s);if(i.length===0){l.forEach(F=>e.remove(F));return}let c=i.length>l.length,m=l[0]||null;if(c&&!m&&(m=ai(e,t,r,s),!m))throw new Ne(o.path);let d=l.map(F=>ni(e,F,n,s)),h=null;if(m){h=e.clone(m),s.templateAttr&&e.removeAttr(h,s.templateAttr);let F=e.stripIds(h);F>0&&console.warn(`[hyper-html-api] stripped ${F} id attribute(s) from cloned template at "${o.path.join(".")||"(root)"}"`)}let f=ii(i,d,n),k=l[0]||m,C=e.parent(k),N=l.length>0?si(e,C,k):0,D=new Set,K=i.map((F,z)=>{let L=f[z];if(L>=0)return D.add(L),l[L];let V=e.clone(h);return e.stripIds(V),V});l.forEach((F,z)=>{D.has(z)||e.remove(F)}),K.forEach((F,z)=>{let L=N+z;e.children(C).findIndex(pe=>e.sameNode(pe,F))!==L&&e.insertAt(C,F,L)}),K.forEach((F,z)=>{if(n===null){let L=i[z],V=L==null?"":String(L);e.text(F)!==V&&e.text(F,V)}else{let L=a(e,F,n,i[z],{depth:o.depth+1,path:[...o.path,z]},s);L&&L!==F&&(K[z]=L)}})}function ni(e,t,r,n){return r===null?e.text(t):oe(e,t,r,n)}function ii(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 d=oi(o,c,r),h=d===l&&s>=0?Math.abs(m-a)<Math.abs(s-a):!1;(d>l||h)&&(l=d,s=m)}),l>=ri&&(n[a]=s,i.add(s))}),n}function oi(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 si(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 ai(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}var wr=new Set(["checked","selected","disabled","readOnly","paused"]);function xe(e,t,r,n,i={}){let o=[];if(Tt(r,n,[],o),o.length)throw new Me(o);Ge(e,t,r,n,{depth:0,path:[]},i)}function Ge(e,t,r,n,i,o={}){if(i.depth>ye)throw new de(i.path);if(n===void 0)return t;if(typeof r=="string")return li(e,t,r,n,i,o);if(Array.isArray(r)){let[a,s]=r;return Rt(e,t,a,s,n,i,Ge,o),t}if(typeof r=="object"&&r!==null){for(let[a,s]of Object.entries(r)){let l=Ge(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 li(e,t,r,n,i,o){if(r.endsWith("[]")){let s=r.slice(0,-2);return Rt(e,t,s,null,n,i,Ge,o),t}if(r.startsWith("@"))return _r(e,t,r.slice(1),n);if(r.includes("@")){let s=r.lastIndexOf("@"),l=r.slice(0,s),c=r.slice(s+1),m=l?e.find(t,l,o):[t];return m.length===0||_r(e,m[0],c,n),t}if(r===".")return e.text(t,n==null?"":String(n)),t;let a=e.find(t,r,o);return a.length===0||e.text(a[0],n==null?"":String(n)),t}function _r(e,t,r,n){if(fr.has(r))throw new Ie(r);if(r==="outerHTML"){let i=n==null?"":String(n);return e.replaceWith(t,i)}return pr.has(r)?(e.prop(t,r,ci(r,n)),t):(e.attr(t,r,n==null?"":String(n)),t)}function ci(e,t){return t==null?wr.has(e)?!1:"":wr.has(e)?!!t:t}function Tt(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:Fe([...r,o]),expected:"scalar",got:je(i)})}):n.push({path:Fe(r),expected:"array",got:je(t)});return}t!==null&&typeof t=="object"&&n.push({path:Fe(r),expected:"scalar",got:je(t)});return}if(Array.isArray(e)){if(!Array.isArray(t)){n.push({path:Fe(r),expected:"array",got:je(t)});return}let i=e[1];t.forEach((o,a)=>Tt(i,o,[...r,a],n));return}if(typeof e=="object"&&e!==null){if(t===null||Array.isArray(t)||typeof t!="object"){n.push({path:Fe(r),expected:"object",got:je(t)});return}for(let[i,o]of Object.entries(e))Tt(o,t[i],[...r,i],n)}}}function je(e){return e===null?"null":Array.isArray(e)?"array":typeof e}function Fe(e){return e.join(".")}function Ot(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 Le(e,n,r)}return null}function Sr(e,t,r,n){let i=Ot(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:()=>oe(e,t,o,n),set:s=>xe(e,t,o,s,n)}}var W={extract:(e,t,r)=>oe(se,e,t,r),apply:(e,t,r,n)=>xe(se,e,t,r,n),findRulesIn:(e,t)=>Le(se,e,t),findRules:(e,t)=>Ot(se,e,t),bind:(e,t,r)=>Sr(se,e,t,r),parseStrict:Ct,parseRelaxed:ve,errors:Ke,DOM_PROPERTIES:We};var Nt={};kt(Nt,{fromString:()=>te,getRuleAtPath:()=>me,getValueAtPath:()=>_i,setAtPath:()=>Mt,toString:()=>wi});function wi(e){return e.map(String).join(".")}function te(e){return e===""?[]:e.split(".").map(t=>/^\d+$/.test(t)?Number(t):t)}function me(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 _i(e,t){let r=e;for(let n of t){if(r==null)return;r=r[n]}return r}function Mt(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]=Mt(o[n],i,r),o}return{...e&&typeof e=="object"?e:{},[n]:Mt((e||{})[n],i,r)}}function qe(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]=qe(n);return t}return""}function Je(e,t,{ignoreActiveValue:r=!0}={}){At.morph(e,t,{morphStyle:"innerHTML",ignoreActiveValue:r,restoreFocus:!0,formStateSync:"property"})}function Ze(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 Ai='<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>',It='<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>',Rr={"@scalar":`
1
+ var hypercms=(()=>{var St=Object.defineProperty;var Fn=Object.getOwnPropertyDescriptor;var qn=Object.getOwnPropertyNames;var Dn=Object.prototype.hasOwnProperty;var Et=(e,t)=>{for(var r in t)St(e,r,{get:t[r],enumerable:!0})},$n=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of qn(t))!Dn.call(e,i)&&i!==r&&St(e,i,{get:()=>t[i],enumerable:!(n=Fn(t,i))||n.enumerable});return e};var Bn=e=>$n(St({},"__esModule",{value:!0}),e);var bs={};Et(bs,{cms:()=>fs,default:()=>gs});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 Ke(e){let t=z(e);return t===-1?{selector:e,prop:null}:{selector:e.slice(0,t),prop:e.slice(t+1)||null}}var pr={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 zn(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 Un(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 Hn(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 Vn(e,t){return(e.textContent||"").replace(/\s+/g," ").trim().slice(0,t.textHintLength)}function Wn(e,t){let r=[e.tagName];return t.includeClasses&&r.push(Un(e)),r.push(Hn(e,t)),zn(r.join("|"))}function Kn(e){let t=e.tagName,r=1,n=e.previousElementSibling;for(;n;)n.tagName===t&&r++,n=n.previousElementSibling;return r}function Gn(e,t){return e.getAttribute?.("id")||e.getAttribute?.("role")?!0:t.landmarks.includes(e.tagName)}function Jn(e){let t=e.getAttribute?.("id");if(t)return`#${t}`;let r=e.getAttribute?.("role");return r?`@${r}`:e.tagName}function Yn(e,t){let r=[],n=e;for(;n&&n.tagName&&r.length<t.maxPathDepth;){let i=`${n.tagName}:${Kn(n)}`;if(r.unshift(i),n!==e&&Gn(n,t)){r.unshift(Jn(n));break}n=n.parentElement}return r}function Xn(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 X(e,t,r){if(r.has(e))return r.get(e);let n={signature:Wn(e,t),path:Yn(e,t),textHint:Vn(e,t)};return r.set(e,n),n}function kr(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=X(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 Zn(e,t,r){r.delete(e),t.delete(e);let n=e.querySelectorAll("*");for(let i of n)t.delete(i)}function Ct(e,t,r,n,i){let o=X(e,r,n),a=X(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 p=Xn(o.path,a.path)*s.pathSegment;c+=p,l.path=p;let d=!0;if(o.textHint&&a.textHint?o.textHint===a.textHint?(c+=s.textMatch,l.text=s.textMatch):(c-=s.textMismatch,l.text=-s.textMismatch,d=!1):o.textHint!==a.textHint&&(c-=s.textMismatch,l.text=-s.textMismatch,d=!1),i.candidateCount===1&&d&&(c+=s.uniqueCandidate,l.unique=s.uniqueCandidate),typeof o.domIndex=="number"&&typeof a.domIndex=="number"){let f=Math.abs(o.domIndex-a.domIndex),k=Math.min(f*s.positionPenalty,s.maxDriftPenalty);c-=k,l.drift=-k}return{score:c,breakdown:l}}function fr(e,t,r,n,i){if(r.excludeIds&&e.getAttribute("id"))return null;let o=kr(t,r,n,i),a=X(e,r,n);if(typeof a.domIndex!="number"){let d=0,f=e.previousElementSibling;for(;f;)d++,f=f.previousElementSibling;a.domIndex=d}let s=o.get(a.signature)||[],l=r.excludeIds?s.filter(d=>!d.getAttribute("id")):s;if(l.length===0)return null;let c=null,m=0,p=null;for(let d of l){let{score:f,breakdown:k}=Ct(e,d,r,n,{candidateCount:l.length});f>m&&(m=f,c=d,p=k)}return m<r.minConfidence?null:{element:c,confidence:m,breakdown:p}}function Qn(e,t,r,n){let i=[],o=r.weights.signature+r.weights.slotMatch,a={slot:o};function s(p){if(p.children)return p.children;let d=p.childNodes;if(!d)return[];let f=[];for(let k=0;k<d.length;k++)d[k].nodeType===1&&f.push(d[k]);return f}function l(p,d){let f=s(p),k=s(d);if(f.length===k.length)for(let R=0;R<f.length;R++){let O=f[R],F=k[R];if(r.shouldIgnore?.(O)||r.shouldIgnore?.(F)||r.excludeIds&&(O.getAttribute("id")||F.getAttribute("id"))||O.tagName!==F.tagName)continue;let J=X(O,r,n).signature,V=X(F,r,n).signature;J!==V&&i.push({newEl:O,oldEl:F,score:o,breakdown:a}),l(O,F)}}function c(p,d){for(;;){if(p.tagName===d.tagName)return[p,d];let f=s(p);if(!p.tagName&&f.length===1){p=f[0];continue}let k=s(d);if(k.length===1&&k[0].tagName===p.tagName){d=k[0];continue}return null}}let m=c(e,t);return m&&l(m[0],m[1]),i}function gr(e,t,r,n,i){let o=t.querySelectorAll("*"),a=kr(e,r,n,i),s=0;for(let f of o){let k=X(f,r,n);k.domIndex=s++}let l=[],c=new Map;function m(f,k,R){let O=new Set;if(f.textHint){let j=c.get(f.signature);if(!j){j=new Map;for(let U of k){let se=X(U,r,n).textHint,ae=j.get(se);ae||(ae=[],j.set(se,ae)),ae.push(U)}c.set(f.signature,j)}let G=j.get(f.textHint);if(G)for(let U=0;U<G.length&&U<R;U++)O.add(G[U])}let F=0,J=k.length;for(;F<J;){let j=F+J>>1;X(k[j],r,n).domIndex<f.domIndex?F=j+1:J=j}let V=Math.max(0,Math.min(F-(R>>1),k.length-R)),Q=Math.min(V+R,k.length);for(let j=V;j<Q;j++)O.add(k[j]);return[...O]}for(let f of o){if(r.shouldIgnore?.(f)||r.excludeIds&&f.getAttribute("id"))continue;let k=X(f,r,n),R=a.get(k.signature)||[],O=r.excludeIds?R.filter(V=>!V.getAttribute("id")):R,F=r.maxScoredCandidates,J=F&&O.length>F?m(k,O,F):O;for(let V of J){let{score:Q,breakdown:j}=Ct(f,V,r,n,{candidateCount:O.length});Q>=r.minConfidence&&l.push({newEl:f,oldEl:V,score:Q,breakdown:j})}}if(r.weights.slotMatch>0){let f=Qn(t,e,r,n);for(let k of f)l.push(k)}l.sort((f,k)=>k.score-f.score);let p=new Map,d=new Set;for(let{newEl:f,oldEl:k}of l)p.has(f)||d.has(k)||(p.set(f,k),d.add(k));return p}function br(e,t,r,n){let i=X(e,r,n),o=X(t,r,n),{score:a,breakdown:s}=Ct(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 yr(e={}){let t={...pr,...e,weights:{...pr.weights,...e.weights}},r=new WeakMap,n=new WeakMap;return{findMatch:(i,o)=>fr(i,o,t,r,n),computeMatches:(i,o)=>gr(i,o,t,r,n),explain:(i,o)=>br(i,o,t,r),invalidate:i=>Zn(i,r,n),session:()=>{let i=new WeakMap,o=new WeakMap;return{findMatch:(a,s)=>fr(a,s,t,i,o),computeMatches:(a,s)=>gr(a,s,t,i,o),explain:(a,s)=>br(a,s,t,i)}},getConfig:()=>({...t})}}function Rt(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 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":`
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 bt=Object.defineProperty;var vn=Object.getOwnPropertyDesc
39
39
  </section>
40
40
  `,"@object-array-item":`
41
41
  <article class="hcms-card mirk-sortable__item" draggable="true">
42
- ${Ai}
42
+ ${Pi}
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">${It}</button>
48
+ <button type="button" class="hcms-remove hcms-remove--card" data-hcms-action="remove" aria-label="Remove">${Pt}</button>
49
49
  </div>
50
50
  </div>
51
51
  <div class="hcms-error" hidden></div>
@@ -59,7 +59,7 @@ var hypercms=(()=>{var bt=Object.defineProperty;var vn=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">${It}</button>
62
+ <button type="button" class="hcms-upload-clear" data-hcms-action="clear-upload" aria-label="Remove file">${Pt}</button>
63
63
  </div>
64
64
  <div class="hcms-error" hidden></div>
65
65
  </div>
@@ -73,7 +73,7 @@ var hypercms=(()=>{var bt=Object.defineProperty;var vn=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">${It}</button>
76
+ <button type="button" class="hcms-upload-clear hcms-upload-clear--badge" data-hcms-action="clear-upload" aria-label="Remove image">${Pt}</button>
77
77
  </figure>
78
78
  </div>
79
79
  <div class="hcms-error" hidden></div>
@@ -147,11 +147,11 @@ var hypercms=(()=>{var bt=Object.defineProperty;var vn=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
- `},Si=["@scalar","@object","@scalar-array","@scalar-array-item","@object-array","@object-array-item"];function Xe(e){let t=e.head||e.documentElement;if(t)for(let r of Si)Nr(e,t,r)}function Lt(e,t){if(!Rr[t])return null;let r=e&&(e.head||e.documentElement);return r?Nr(e,r,t):null}var Er={src:"@image",checked:"@checkbox",innerHTML:"@richtext"},Ye={image:"@image",file:"@file",checkbox:"@checkbox",toggle:"@toggle",select:"@select",radio:"@radio",textarea:"@textarea",number:"@number",richtext:"@richtext"},Ei=new Set([...Object.values(Ye),"@chips","@chips-item"]);function De(e,t,r){if(typeof e!="string")return"@scalar";let n=e.lastIndexOf("@"),i=tt($e(e,n),t,"data-hcms-component");if(i&&Ye[i]){let o=Ye[i],a=Array.isArray(r)&&r.some(s=>s==="*"||typeof s=="number");return o==="@number"&&!Cr(e,n,t,a).every(Ri)||(o==="@checkbox"||o==="@toggle")&&(n<0||e.slice(n+1)!=="checked")&&!Cr(e,n,t,a).every(Ti)?"@scalar":o}if(n>=0){let o=e.slice(n+1);if(Er[o])return Er[o]}return"@scalar"}function Tr(e,t){if(typeof e!="string")return null;let r=e.lastIndexOf("@"),n=tt($e(e,r),t,"data-hcms-component");return n&&Ye[n]||null}var Ci=/^-?\d+(\.\d+)?([eE][+-]?\d+)?$/;function Ri(e){return e==null||e===""?!0:Ci.test(String(e))}function Ti(e){return e==null||e===""||e==="true"||e==="false"}function Cr(e,t,r,n){if(!r||!r.querySelectorAll)return[];let i=$e(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 Qe(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 we(e,t,r){let n=e.join("."),i=e.map(o=>typeof o=="number"?"*":o).join(".");return n&&Z(r,n)||i&&i!==n&&Z(r,i)||Z(r,t)}function et(e,t,r){let n=Qe(e,r);if(!n)return null;let i=we(t,n.array,r);return i&&i.getAttribute("data-hcms-tpl")===n.array?n:null}function Or(e,t){if(typeof e!="string")return null;let r=e.lastIndexOf("@"),n=tt($e(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 Mr(e,t){if(typeof e!="string")return null;let r=e.lastIndexOf("@");return tt($e(e,r),t,"data-hcms-crop")}function $e(e,t){return t>=0?e.slice(0,t):e}function tt(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 rt(e,t){if(!e||t==null)return;r(t);function r(n){let i=ue(n);if(i==="scalar"){let o=De(n,e);Ei.has(o)&&Lt(e,o);return}if(i==="scalar-array"){let o=Qe(n,e);o&&(Lt(e,o.array),Lt(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 Nr(e,t,r){let n=Z(e,r);if(n)return n;let i=e.createElement("template");return i.setAttribute("data-hcms-tpl",r),i.setAttribute("save-remove",""),i.innerHTML=Rr[r].trim(),t.appendChild(i),i}function Z(e,t){return!e||!e.querySelector?null:e.querySelector(`template[data-hcms-tpl="${Oi(t)}"]`)}function Oi(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}function ue(e){return typeof e=="string"?e.endsWith("[]")?"scalar-array":"scalar":Array.isArray(e)?"object-array":typeof e=="object"&&e!==null?"object":"scalar"}function Be(e){return e?!!(e.content||e).querySelector("[data-hcms-field]"):!1}var Ir={IMG:"src",A:"href"};function nt(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":Ir[t]?Ir[t]:e.hasAttribute&&e.hasAttribute("contenteditable")?"innerHTML":null}function Lr(e,t){let r=(e.tagName||"").toUpperCase(),n=(e.getAttribute&&e.getAttribute("type")||"").toLowerCase(),i=nt(e),a=`${Fr(r,n)}[data-hcms-field="${_e(t)}"]`;return r==="INPUT"&&n==="radio"?`${a}:checked@value`:i?`${a}@${i}`:a}function Mi(e){let t=(e.tagName||"").toUpperCase(),r=(e.getAttribute&&e.getAttribute("type")||"").toLowerCase(),n=nt(e),o=`${Fr(t,r)}[data-hcms-field]`;return t==="INPUT"&&r==="radio"?`${o}:checked@value`:n?`${o}@${n}`:o}function Fr(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 _e(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}var jr=new Set(["__proto__","constructor","prototype"]);function it(e,t){return r(e,[]);function r(c,m){let d=ue(c);if(d==="scalar")return n(c,m);if(d==="scalar-array")return i(c,m);if(d==="object-array")return o(c,m);if(d==="object"){let h=Object.create(null);for(let[f,k]of Object.entries(c)){if(jr.has(f))throw new Error(`hypercms: rule key "${f}" is forbidden at "${m.join(".")||"<root>"}"`);h[f]=r(k,[...m,f])}return h}return null}function n(c,m){let d=m.length?m[m.length-1]:null,h=typeof d=="string"?d:"__value",f=l(m,h);if(f)return Lr(f,h);let k=s(De(c,t,m),h);return k?Lr(k,h):`input[data-hcms-field="${_e(h)}"]@value`}function i(c,m){let d=et(c,m,t),h=d&&s(d.item,null)||s("@scalar-array-item",null),f=h?Mi(h):"input[data-hcms-field]@value";return[a(m,"[data-hcms-array-item]"),f]}function o(c,m){let[,d]=c,h=[...m,"*"],f=a(m,"[data-hcms-card]");if(d&&typeof d=="object"&&!Array.isArray(d)){let k=Object.create(null);for(let[C,N]of Object.entries(d)){if(jr.has(C))throw new Error(`hypercms: rule key "${C}" is forbidden at "${h.join(".")}"`);k[C]=r(N,[...h,C])}return[f,k]}return[f,r(d,[...h,0])]}function a(c,m){let d=c.length?c[c.length-1]:"",h=c.some(C=>C==="*"),f=c.join(".");return`${h?`[data-hcms-field="${_e(d)}"]`:`[data-hcms-path="${_e(f)}"]`} > .hcms-array-items > ${m}`}function s(c,m){if(!t)return null;let d=Z(t,c);if(!d)return null;let h=d.content||d;if(m){let f=h.querySelector(`[data-hcms-field="${_e(m)}"]`);if(f)return f}return h.querySelector("[data-hcms-field]")}function l(c,m){if(!t)return null;let d=c.map(k=>typeof k=="number"?"*":k).join("."),f=[c.join("."),d];for(let k=c.length-1;k>=0;k--){let C=c.slice(0,k).map(N=>typeof N=="number"?"*":N);C.push("*"),f.push(C.join("."))}for(let k of f){if(!k)continue;let C=Z(t,k);if(!C||!Be(C))continue;let N=C.content||C,D=N.querySelector(`[data-hcms-field="${_e(m)}"]`)||N.querySelector("[data-hcms-field]");if(D)return D}return null}}function jt(e){if(!e)return"";let t=String(e).split(/[?#]/)[0],r=t.split("/").pop()||t;try{return decodeURIComponent(r)}catch{return r}}function ot({pageRules:e,formRules:t,data:r,doc:n}){let i=n.createDocumentFragment(),o=Ft(e,[],r,n);return o&&i.appendChild(o),i}function Dr({shape:e,itemShape:t,pathArr:r,data:n,doc:i,itemKey:o}){if(e==="object-array-item")return Br(t,r,n,i);if(e==="scalar-array-item")return zr(r,n,i,o||null);throw new Error(`hypercms: buildItem called with unknown shape "${e}"`)}function Ft(e,t,r,n){let i=ue(e);return i==="scalar"?Ni(e,t,r,n):i==="object"?Fi(e,t,r,n):i==="object-array"?qi(e,t,r,n):i==="scalar-array"?Di(e,t,r,n):null}function Ni(e,t,r,n){let i=De(e,n,t),o=we(t,i,n);if(!o)throw new Error(`hypercms: missing template for scalar at "${t.join(".")}"`);let a=Tr(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`),$r(o,a===i?a:null,t);let s=Ae(o,n);Se(s,t);let l=o.getAttribute?.("data-hcms-tpl");if((i==="@select"||i==="@radio")&&l===i&&Ii(s,e,t,r,n,i),i==="@image"&&l==="@image"){let c=Mr(e,n);c!=null&&!s.hasAttribute("data-hcms-crop")&&s.setAttribute("data-hcms-crop",c)}return $i(s,re(t)),st(s,re(t)),at(s,re(t)),Wr(s,r),i==="@file"&&ji(s),s}function $r(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 Ii(e,t,r,n,i,o){let a=Or(t,i),s=a?[...a]:[],l=n==null?"":String(n);if(l!==""&&!s.includes(l)&&s.unshift(l),!a&&(Li(e,"data-hcms-options required (space-separated values)"),s.length===0)){e.querySelector(".mirk-radio")?.remove();return}if(o==="@select"){let d=e.querySelector("select[data-hcms-field]");if(!d)return;for(let h of s){let f=i.createElement("option");f.value=h,f.textContent=Ze(h),d.appendChild(f)}return}let c=e.querySelector(".mirk-radio");if(!c||!c.parentNode)return;let m=qt(r.join("."));for(let d of s){let h=c.cloneNode(!0),f=h.querySelector('input[type="radio"]');f&&(f.value=d,f.name=m);let k=h.querySelector(".mirk-radio__label");k&&(k.textContent=Ze(d)),c.parentNode.insertBefore(h,c)}c.remove()}function qt(e){return"hcms-"+String(e).replace(/[^A-Za-z0-9_-]/g,"-")}function Li(e,t){let r=e.querySelector?e.querySelector(".hcms-error"):null;r&&(r.textContent=t,r.hidden=!1)}function ji(e){let t=e.querySelector?e.querySelector("a.mirk-file__name[data-hcms-field]"):null;t&&(t.textContent=jt(t.getAttribute("href")))}function Fi(e,t,r,n){let i=we(t,"@object",n);if(!i)throw new Error(`hypercms: missing template for object at "${t.join(".")}"`);let o=Ae(i,n);if(Se(o,t),st(o,re(t)),at(o,re(t)),Be(i))return Gr(o,e,t),Kr(o,e,r),o;let a=lt(o,".hcms-object-fields",i,t);for(let[s,l]of Object.entries(e)){let c=r==null?null:r[s],m=Ft(l,[...t,s],c,n);m&&a.appendChild(m)}return o}function qi(e,t,r,n){let i=we(t,"@object-array",n);if(!i)throw new Error(`hypercms: missing template for object-array at "${t.join(".")}"`);let o=Ae(i,n);Se(o,t),st(o,re(t)),at(o,re(t)),Ur(o,i),Vr(o,i,t);let a=lt(o,".hcms-array-items",i,t),[,s]=e;return(Array.isArray(r)?r:[]).forEach((c,m)=>{let d=Br(s,[...t,m],c,n);d&&a.appendChild(d)}),Hr(o),o}function Br(e,t,r,n){let i=Pr(t,"object-array-item",n);if(!i)throw new Error(`hypercms: missing item template for "${t.join(".")}"`);let o=Ae(i,n);if(o.setAttribute("data-hcms-card",""),o.classList.contains("hcms-card")||o.classList.add("hcms-card"),Se(o,t),Be(i))return e&&typeof e=="object"&&!Array.isArray(e)&&(Gr(o,e,t),Kr(o,e,r)),o;let a=lt(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=Ft(l,[...t,s],c,n);m&&a.appendChild(m)}return o}function Di(e,t,r,n){let i=Qe(e,n),o=et(e,t,n),a=i?i.array:"@scalar-array",s=we(t,a,n);if(!s)throw new Error(`hypercms: missing template for scalar-array at "${t.join(".")}"`);$r(s,i?i.array:null,t);let l=Ae(s,n);Se(l,t),st(l,re(t)),at(l,re(t)),Ur(l,s),Vr(l,s,t),o&&l.setAttribute("data-hcms-item-tpl",o.item);let c=lt(l,".hcms-array-items",s,t);return(Array.isArray(r)?r:[]).forEach((d,h)=>{let f=zr([...t,h],d,n,o?o.item:null);f&&c.appendChild(f)}),Hr(l),l}function zr(e,t,r,n){let i=Pr(e,"scalar-array-item",r,n);if(!i)throw new Error(`hypercms: missing item template for "${e.join(".")}"`);let o=Ae(i,r);return o.setAttribute("data-hcms-array-item",""),o.classList.contains("hcms-array-item")||o.classList.add("hcms-array-item"),Se(o,e),Wr(o,t),o}function Pr(e,t,r,n){let i=e.map(o=>typeof o=="number"?"*":o).join(".");return Z(r,i)||n&&Z(r,n)||Z(r,"@"+t)}function Ae(e,t){let r=e.content||e,n=t.createElement("div");return n.appendChild(r.cloneNode(!0)),n.firstElementChild||n}function Se(e,t){e.setAttribute("data-hcms-path",t.join("."))}function $i(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 st(e,t){t==null||t===""||!e.setAttribute||e.hasAttribute?.("data-hcms-field")||e.setAttribute("data-hcms-field",String(t))}function at(e,t){if(t==null||t==="")return;(e.querySelectorAll?e.querySelectorAll("[data-hcms-label]"):[]).forEach(n=>{(n.textContent||"").trim()===""&&(n.textContent=Ze(String(t)))})}function Ur(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 Hr(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=qr(e,"data-hcms-max-items"),o=qr(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,d)=>{let h=m.querySelector('[data-hcms-action="remove"]');h&&(h.hidden=s||o!=null&&n<=o);let f=m.querySelector('[data-hcms-action="move-up"]');f&&(f.hidden=l||d===0);let k=m.querySelector('[data-hcms-action="move-down"]');k&&(k.hidden=l||d===n-1)})}function qr(e,t){if(!e||!e.hasAttribute(t))return null;let r=parseInt(e.getAttribute(t),10);return Number.isFinite(r)?r:null}function Vr(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 re(e){return e.length?e[e.length-1]:null}function Wr(e,t){let r=Bi(e);if(r.length!==0)for(let n of r)Jr(n,t)}function Bi(e){if(!e)return[];let t=[];return e.matches?.("[data-hcms-field]")&&zi(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 zi(e){let t=(e.tagName||"").toUpperCase();return!!(t==="INPUT"||t==="TEXTAREA"||t==="SELECT"||t==="IMG"||t==="A"||e.hasAttribute?.("contenteditable"))}function Kr(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];Jr(i,a)})}function Gr(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 lt(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 Jr(e,t){let r=nt(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 Yr={skip:"[data-hcms-shell]",templateAttr:"cms-template"};function Zr(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,Yr),{ok:!0}}catch(d){return{ok:!1,error:d}}let l=Pi(e,t,s),c=l?Hi(l):null,m=l?null:Wi(e,o);try{return W.apply(e,t,r,Yr),{ok:!0}}catch(d){return c?Vi(l,c):m&&Ki(e,o,m),{ok:!1,error:d}}}finally{i?.resume?.()}}function Pi(e,t,r){if(!r||!e)return null;let n=te(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:Ui(e,t,i)}function Ui(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 Hi(e){let t=[];for(let r of Array.from(e.childNodes))t.push(r.cloneNode(!0));return t}function Vi(e,t){for(;e.firstChild;)e.removeChild(e.firstChild);for(let r of t)e.appendChild(r)}function Wi(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 Ki(e,t,r){for(let i of Array.from(e.childNodes))i===t||t&&i.contains?.(t)||e.removeChild(i);let n=Gi(e,t);for(let i of r)e.insertBefore(i,n||null)}function Gi(e,t){if(!t)return null;for(let r of Array.from(e.childNodes))if(r===t||r.contains?.(t))return r;return null}function ct(e,t){if(!t||e==null)return e;return r(e);function r(n){if(typeof n=="string"){if(n.endsWith("[]")||n.lastIndexOf("@")>=0)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 Dt(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 Ee(e,t){if(!e||!e.querySelectorAll)return;e.querySelectorAll("textarea[data-hcms-field]").forEach(Dt);let r=t&&t.defaultView||(typeof window<"u"?window:null),n=r&&r.richclay&&r.richclay.RichClay||r&&r.hyperclay&&r.hyperclay.RichClay||(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 $t=new WeakSet;function Re(e,t){let r=typeof window<"u"&&window.hyperclay&&window.hyperclay.undo||null;if(!r)return t();r.pause();try{let n=t();return n&&n.ok?r.commitCaptured(e):r.discardCaptured(),n}finally{r.resume()}}function ut(e){let t=typeof window<"u"&&window.hyperclay&&window.hyperclay.undo||null;if(!t)return e();t.pause();try{return e()}finally{t.discardCaptured(),t.resume()}}function en(e){let{formRoot:t}=e;if(!t||$t.has(t))return;$t.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"&&Dt(s),!s.matches('input[type="file"]')&&(!s.closest("[data-hcms-field]")&&!s.hasAttribute?.("data-hcms-field")||Xr(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]')){to(s,e);return}s.matches('input[type="checkbox"], input[type="radio"], select')&&Xr(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 d=m.getAttribute("data-hcms-path");Bt(d,e)}else if(c==="remove"){let m=l.closest("[data-hcms-card], [data-hcms-array-item]");if(!m)return;ao(m,e)}else if(c==="move-up"||c==="move-down"){let m=l.closest("[data-hcms-card], [data-hcms-array-item]");if(!m)return;oo(m,c==="move-up"?-1:1,e)}else c==="clear-upload"?ro(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),$t.delete(t)}}var Ji=new Set(["value","checked"]);function Yi(e,t){if(!t)return null;let r=te(t);if(r.some(l=>typeof l=="number"||l==="*"))return null;let n=me(e.pageRules,r);if(typeof n!="string")return null;let i=n.lastIndexOf("@");if(i===-1)return null;let o=n.slice(i+1);if(!Ji.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 Xr(e,t){let n=(e.closest("[data-hcms-field]")||e).closest("[data-hcms-path]")?.getAttribute("data-hcms-path")||"",i=Yi(t,n);if(ee(Y(t),{path:n,structural:!1},t),i){let o=typeof window<"u"&&window.hyperclay&&window.hyperclay.undo||null;o&&typeof o.recordValue=="function"&&o.recordValue(i.el,{prop:i.prop,oldValue:i.oldValue,newValue:i.el[i.prop]})}}var Zi={type:"image/webp",quality:.85,maxWidth:2048,maxHeight:2048};async function Xi(e,t){let r=t&&t.getAttribute?t.getAttribute("data-hcms-crop"):null;if(r==null)return{file:e};let n=typeof window<"u"&&window.hyperclay&&window.hyperclay.quickcrop||null;if(typeof n!="function")return{file:e};try{let i=await n(e,{aspect:Qi(r),...Zi});return i===null?null:{file:eo(i.blob,e.name),dataURL:i.dataURL}}catch(i){return ze(t,i&&i.message||"Crop failed"),null}}function Qi(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 eo(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 to(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")||"";ze(n,null);let o=await Xi(r,n);if(!o||t.closed){he(e);return}let a=o.file,s=o.dataURL||null,l=typeof window<"u"&&window.hyperclay&&window.hyperclay.uploadFileBasic||null,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){he(e);return}ze(n,m&&m.message||"Upload failed"),t.dispatch?.("hcms:error",{error:m,path:i}),he(e);return}if(t.closed){he(e);return}if(c||(c=s||io(a)),!c){he(e);return}ze(n,null),tn(n,c,a.name),ee(Y(t),{path:i,structural:!1},t),he(e)}function ro(e,t){let r=e.closest("[data-hcms-path]");if(!r)return;let n=r.getAttribute("data-hcms-path")||"";tn(r,"","");let i=r.querySelector('input[type="file"][data-hcms-upload]');i&&he(i),ze(r,null),ee(Y(t),{path:n,structural:!1},t)}function no(e){return e.querySelector?e.querySelector("img[data-hcms-field], a[data-hcms-field]"):null}function tn(e,t,r){let n=no(e);if(!n)return;let i=(n.tagName||"").toUpperCase();i==="IMG"?n.src=t||"":i==="A"&&(n.href=t||"",n.textContent=t?r||jt(t):"")}function he(e){try{e.value=""}catch{}}function io(e){let t=typeof URL<"u"&&URL.createObjectURL?URL:null;if(!t)return"";try{return t.createObjectURL(e)}catch{return""}}function ze(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 Bt(e,t){let{formRoot:r,pageRules:n}=t,i=r.querySelector(`[data-hcms-path="${fo(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=te(e),s=uo(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=mt(i,"data-hcms-max-items"),d=o.querySelectorAll(":scope > [data-hcms-card], :scope > [data-hcms-array-item]");if(i.hasAttribute("data-hcms-no-add")||m!=null&&d.length>=m)return;let h=d.length,f=l?s[1]:s.replace(/\[\]$/,""),k=qe(l?f:"string"),C=Dr({shape:l?"object-array-item":"scalar-array-item",itemShape:f,pathArr:[...a,h],data:k,doc:t.doc,itemKey:i.getAttribute("data-hcms-item-tpl")||null});return o.appendChild(C),Ee(C,t.doc),Pt(i),Re(`Add ${e}`,()=>ee(Y(t),{path:e,structural:!0},t))}function oo(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),Ht(i),Pt(n),l&&typeof l.focus=="function"&&e.querySelector(`[data-hcms-action="${t<0?"move-up":"move-down"}"]`)?.focus?.(),Re(`Reorder ${n.getAttribute("data-hcms-path")||""}`,()=>ee(Y(r),{path:n.getAttribute("data-hcms-path")||"",structural:!0},r))}var dt="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||dt;let n=t&&t.confirmRemove;return n===!1?null:typeof n=="string"?n||dt:n===!0||e&&e.getAttribute("data-hcms-shape")==="object-array"?dt:null}function ao(e,t){let r=e.closest('[data-hcms-shape="object-array"], [data-hcms-shape="scalar-array"]'),n=so(r,t);if(n==null)return Ce(e,t);let i=typeof window<"u"&&(window.hyperclay?.consent||window.consent);typeof i=="function"?Promise.resolve(i(n)).then(()=>Ce(e,t),()=>{}):typeof window<"u"&&typeof window.confirm=="function"?window.confirm(n)&&Ce(e,t):Ce(e,t)}function Ce(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=mt(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&&Ht(n),i&&Pt(i),Re(`Remove ${r}`,()=>ee(Y(t),{path:r,structural:!0},t))}}function ee(e,t,r){let n=Pe(e);if(n===r.lastFingerprint)return{ok:!0,skipped:!0};let i=Zr(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,Qr(r,null),r.dispatch?.("hcms:change",{data:e,path:t.path,structural:!!t.structural}),r.onChange?.(e,t)):(Qr(r,mo(i.error,t.path)),r.dispatch?.("hcms:error",{error:i.error,attemptedData:e}),r.onError?.(i.error)),i}function Y(e){let t=W.extract(e.formRoot,e.formRules);return ae(t,e.formRules)}function ae(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=>ae(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]=ae(e[n],i);return r}return e}function Qr(e,t){e.lastErrors=t&&t.length?t:null,zt(e)}function zt(e){if(lo(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=co(e.formRoot,n);if(i){i.textContent=i.textContent?`${i.textContent}
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}
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 lo(e){if(e.formRoot)for(let t of e.formRoot.querySelectorAll(".hcms-error"))t.textContent="",t.hidden=!0}function co(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 mo(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 uo(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 mt(e,t){if(!e||!e.hasAttribute(t))return null;let r=parseInt(e.getAttribute(t),10);return Number.isFinite(r)?r:null}function Pt(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=mt(e,"data-hcms-max-items"),o=mt(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((m,d)=>{let h=m.querySelector('[data-hcms-action="remove"]');h&&(h.hidden=s||o!=null&&n<=o);let f=m.querySelector('[data-hcms-action="move-up"]');f&&(f.hidden=l||d===0);let k=m.querySelector('[data-hcms-action="move-down"]');k&&(k.hidden=l||d===n-1)})}function Ut(e){!e||!e.querySelectorAll||e.querySelectorAll(".hcms-array-items").forEach(t=>Ht(t))}function Ht(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&&ho(n,i,a),r++}for(let[n,i]of t)n.checked!==i&&(n.checked=i)}function ho(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))}po(e)}function po(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=qt(r.getAttribute("data-hcms-path")))}}function Pe(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 fo(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}var wo={},ht="hcms-shell-styles",go="hcms-bundled-styles-installed",bo='a[href], area[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',Te=new WeakSet,Vt="";function nn(e){Vt=e}var ko=0;function rn(e){return String(e).replace(/[&<>"]/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[t])}function on({mountTo:e,side:t="right",overlay:r=!1,showSaveButton:n=!1,title:i="Page content",eyebrow:o="Edit",theme:a=null,doc:s}){sn(s);let l=`hcms-shell-title-${++ko}`,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 m=a==="dark"?" dark":a==="light"?" light":"";c.className="hcms-shell pixel-quiet hcms-side-"+t+(r?" hcms-overlay":"")+m;let d=rn(i),h=rn(o);c.innerHTML=`
152
+ `),e.errorEl.hidden=!1)}function Co(e){if(e.formRoot)for(let t of e.formRoot.querySelectorAll(".hcms-error"))t.textContent="",t.hidden=!0}function Ro(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 To(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 Mo(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 ft(e,t){if(!e||!e.hasAttribute(t))return null;let r=parseInt(e.getAttribute(t),10);return Number.isFinite(r)?r:null}function Xt(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=ft(e,"data-hcms-max-items"),o=ft(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((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 Zt(e){!e||!e.querySelectorAll||e.querySelectorAll(".hcms-array-items").forEach(t=>Qt(t))}function Qt(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&&Oo(n,i,a),r++}for(let[n,i]of t)n.checked!==i&&(n.checked=i)}function Oo(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))}No(e)}function No(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=Vt(r.getAttribute("data-hcms-path")))}}function He(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 Io(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}var Bo={},bt="hcms-shell-styles",jo="hcms-bundled-styles-installed",Lo='a[href], area[href], button:not([disabled]), input:not([disabled]):not([type="hidden"]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex="-1"])',Oe=new WeakSet,er="";function yn(e){er=e}var Fo=0;function kn(e){return String(e).replace(/[&<>"]/g,t=>({"&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;"})[t])}function vn({mountTo:e,side:t="right",overlay:r=!1,showSaveButton:n=!1,title:i="Page content",eyebrow:o="Edit",theme:a=null,doc:s}){xn(s);let l=`hcms-shell-title-${++Fo}`,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 m=a==="dark"?" dark":a==="light"?" light":"";c.className="hcms-shell pixel-quiet hcms-side-"+t+(r?" hcms-overlay":"")+m;let p=kn(i),d=kn(o);c.innerHTML=`
153
153
  <div class="hcms-shell-minibar" aria-hidden="true">
154
- <span class="hcms-shell-minibar-title">${d}</span>
154
+ <span class="hcms-shell-minibar-title">${p}</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,13 +159,14 @@ ${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">${h}</div>
163
- <h2 class="hcms-shell-title" id="${l}">${d}</h2>
162
+ <div class="hcms-shell-eyebrow">${d}</div>
163
+ <h2 class="hcms-shell-title" id="${l}">${p}</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>
167
167
  </button>
168
168
  </header>
169
+ <div class="hcms-shell-notice" role="status" hidden></div>
169
170
  <div class="hcms-shell-error" role="alert" hidden></div>
170
171
  <div data-hcms-form-root class="hcms-form"></div>
171
172
  <footer class="hcms-shell-footer"${n?"":" hidden"}>
@@ -174,7 +175,7 @@ ${r}`:r,i.hidden=!1;continue}}t.push(r)}t.length&&e.errorEl&&(e.errorEl.textCont
174
175
  </button>
175
176
  </footer>
176
177
  </div>
177
- `,(e||s.body).appendChild(c);let k=s.body;k.classList.add("hcms-open"),r&&k.classList.add("hcms-overlay"),t==="left"&&k.classList.add("hcms-side-left");let C=xo(c,s),N=vo(c);return{root:c,formRoot:c.querySelector("[data-hcms-form-root]"),errorEl:c.querySelector(".hcms-shell-error"),saveButton:c.querySelector(".hcms-shell-save"),destroy(){C.detach(),N.detach(),c.remove(),k.classList.remove("hcms-open","hcms-overlay","hcms-side-left")},restoreChrome(){yo(s),k.classList.add("hcms-open"),r&&k.classList.add("hcms-overlay"),t==="left"&&k.classList.add("hcms-side-left")}}}function yo(e){e&&(e.getElementById(ht)||e.querySelector("style[data-hcms-bundled-styles]")||(Te.delete(e),sn(e)))}function sn(e){if(e&&!Te.has(e)){if(e[go]){Te.add(e);return}if(e.getElementById(ht)||e.querySelector("style[data-hcms-bundled-styles]")){Te.add(e);return}if(Vt){let t=e.createElement("style");t.id=ht,t.setAttribute("save-remove",""),t.setAttribute("save-ignore",""),t.textContent=Vt,(e.head||e.documentElement).appendChild(t),Te.add(e);return}try{let t=new URL("./theme.generated.css",wo.url).href,r=e.createElement("link");r.rel="stylesheet",r.id=ht,r.setAttribute("save-remove",""),r.setAttribute("save-ignore",""),r.href=t,(e.head||e.documentElement).appendChild(r),Te.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 vo(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 xo(e,t){function r(n){if(n.key!=="Tab"||!e.contains(t.activeElement))return;let i=Array.from(e.querySelectorAll(bo));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 _o={skip:"[data-hcms-shell]",templateAttr:"cms-template"};function pt(e,{ignoreActiveValue:t}={}){let r=W.findRules(e.doc,e.rulesSource||"cms");r&&(e.pageRules=e.richText?ct(r.rules,e.pageRoot):r.rules,e.rulesTagNode=r.tagNode),Xe(e.doc),rt(e.doc,e.pageRules),e.formRules=it(e.pageRules,e.doc);let n=ae(W.extract(e.pageRoot,e.pageRules,_o),e.pageRules),i=ot({pageRules:e.pageRules,formRules:e.formRules,data:n,doc:e.doc});Je(e.formRoot,i,{ignoreActiveValue:t}),Ee(e.formRoot,e.doc),zt(e),e.updateFingerprint&&e.updateFingerprint()}function an({debounce:e=100,onRefresh:t}){let r=typeof window<"u"&&window.hyperclay&&window.hyperclay.Mutation||null;if(!r||typeof r.onAnyChange!="function")throw new Error("hypercms: window.hyperclay.Mutation is required. Load 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 Ao="[hypercms]";function ln(e,t){if(!e||!e.querySelectorAll||!t)return;let r=So(t);e.querySelectorAll("template[data-hcms-tpl]").forEach(i=>{let o=i.getAttribute("data-hcms-tpl");o&&(o.startsWith("@")||r.has(o)||console.warn(`${Ao} template "${o}" doesn't match any rule path; ignored`))})}function So(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=ue(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(m=>typeof m=="number"?"*":m).join(".");if(t.add(c),s==="object-array"){let m=i[1];if(m&&typeof m=="object"&&!Array.isArray(m))for(let[d,h]of Object.entries(m))r([...l,d],h)}}}}var cn="hcms-toggle",dn="hcms-toggle-style",Eo=`
178
+ `,(e||s.body).appendChild(c);let k=s.body;k.classList.add("hcms-open"),r&&k.classList.add("hcms-overlay"),t==="left"&&k.classList.add("hcms-side-left");let R=$o(c,s),O=Do(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(){R.detach(),O.detach(),c.remove(),k.classList.remove("hcms-open","hcms-overlay","hcms-side-left")},restoreChrome(){qo(s),k.classList.add("hcms-open"),r&&k.classList.add("hcms-overlay"),t==="left"&&k.classList.add("hcms-side-left")}}}function qo(e){e&&(e.getElementById(bt)||e.querySelector("style[data-hcms-bundled-styles]")||(Oe.delete(e),xn(e)))}function xn(e){if(e&&!Oe.has(e)){if(e[jo]){Oe.add(e);return}if(e.getElementById(bt)||e.querySelector("style[data-hcms-bundled-styles]")){Oe.add(e);return}if(er){let t=e.createElement("style");t.id=bt,t.setAttribute("save-remove",""),t.setAttribute("save-ignore",""),t.textContent=er,(e.head||e.documentElement).appendChild(t),Oe.add(e);return}try{let t=new URL("./theme.generated.css",Bo.url).href,r=e.createElement("link");r.rel="stylesheet",r.id=bt,r.setAttribute("save-remove",""),r.setAttribute("save-ignore",""),r.href=t,(e.head||e.documentElement).appendChild(r),Oe.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 Do(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 $o(e,t){function r(n){if(n.key!=="Tab"||!e.contains(t.activeElement))return;let i=Array.from(e.querySelectorAll(Lo));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 Po="[hypercms]",wn={skip:"[data-hcms-shell]",templateAttr:"cms-template"},_n={skip:"[data-hcms-shell]",templateAttr:null},tr=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 yt(e,t){let r=[],n=[];return rr(e,t,[],r,n),{missing:Vo(r),twins:Wo(n)}}function rr(e,t,r,n,i){if(typeof t=="string"){let o=zo(t);if(!o)return;let a=kt(e,o,wn,r);if(t.endsWith("[]")){a.length===0&&kt(e,o,_n,r).length===0&&n.push(Ve(r));return}a.length===0?n.push(Ve(r)):a.length>1&&i.push({path:Ve(r),count:a.length});return}if(Array.isArray(t)){let[o,a]=t;if(typeof o!="string"||!o)return;let s=kt(e,o,wn,r);if(s.length===0){kt(e,o,_n,r).length===0&&n.push(Ve(r));return}for(let l of s)rr(l,a,[...r,"*"],n,i);return}if(t&&typeof t=="object")for(let[o,a]of Object.entries(t))rr(e,a,[...r,o],n,i)}function kt(e,t,r,n){try{return re.find(e,t,r)}catch(i){throw new tr(Ve(n),t,i)}}function zo(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 vt(e){Uo(e),Ho(e)}function Uo(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 Ho(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(`${Po} "${n}" matches ${i} elements; edits go to the first one.`)}}function Vo(e){return[...new Set(e)]}function Wo(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 Ve(e){return e.length?e.join("."):"(whole page)"}var Ko={skip:"[data-hcms-shell]",templateAttr:"cms-template"};function xt(e,{ignoreActiveValue:t}={}){let r=W.findRules(e.doc,e.rulesSource||"cms");r&&(e.pageRules=e.richText?ht(r.rules,e.pageRoot):r.rules,e.rulesTagNode=r.tagNode),rt(e.doc),st(e.doc,e.pageRules),e.formRules=lt(e.pageRules,e.doc),e.unresolved=yt(e.pageRoot,e.pageRules);let n=me(W.extract(e.pageRoot,e.pageRules,Ko),e.pageRules),i=ct({pageRules:e.pageRules,formRules:e.formRules,data:n,doc:e.doc});Qe(e.formRoot,i,{ignoreActiveValue:t}),Re(e.formRoot,e.doc),Yt(e),vt(e),e.updateFingerprint&&e.updateFingerprint()}function An({debounce:e=100,onRefresh:t}){let r=K("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 Go="[hypercms]";function Sn(e,t){if(!e||!e.querySelectorAll||!t)return;let r=Jo(t);e.querySelectorAll("template[data-hcms-tpl]").forEach(i=>{let o=i.getAttribute("data-hcms-tpl");o&&(o.startsWith("@")||r.has(o)||console.warn(`${Go} template "${o}" doesn't match any rule path; ignored`))})}function Jo(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=fe(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(m=>typeof m=="number"?"*":m).join(".");if(t.add(c),s==="object-array"){let m=i[1];if(m&&typeof m=="object"&&!Array.isArray(m))for(let[p,d]of Object.entries(m))r([...l,p],d)}}}}var En="hcms-toggle",Cn="hcms-toggle-style",Yo=`
178
179
  #hcms-toggle {
179
180
  position: fixed; right: 16px; bottom: 16px; z-index: 2147482900;
180
181
  display: inline-flex; align-items: center; gap: 7px; padding: 9px 14px;
@@ -188,7 +189,7 @@ body.hcms-open #hcms-toggle .hcms-toggle__open { display: none; }
188
189
  body.hcms-open #hcms-toggle .hcms-toggle__close { display: inline; }
189
190
  body.hcms-open:not(.hcms-overlay):not(.hcms-side-left) #hcms-toggle { right: calc(380px + 16px); }
190
191
  body.hcms-open.hcms-overlay #hcms-toggle { display: none; }
191
- `;function Co({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 Ro({open:e,close:t,isOpen:r},n=document){let i=n.getElementById(cn);if(i)return i;if(!n.getElementById(dn)){let a=n.createElement("style");a.id=dn,a.setAttribute("snapshot-remove",""),a.textContent=Eo,n.head.appendChild(a)}let o=n.createElement("button");return o.type="button",o.id=cn,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 mn(e){if(typeof window>"u"||typeof document>"u")return;let t=window.__hyperclayEditMode!=null?window.__hyperclayEditMode:null;if(!Co({search:window.location.search,cookie:document.cookie,forced:t}))return;let r=()=>{document.body&&e.hasRules(document)&&Ro(e)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",r,{once:!0}):r()}function pn(e){nn(e)}var I={isOpen:!1,ctx:null,shell:null,opts:null};function un(e,t){if(I.ctx!==e)return;let r=t==="livesync";t==="livesync"&&I.shell?.restoreChrome?.(),pt(e,{ignoreActiveValue:r})}var hn=!1;function To(){if(hn)return;let e=typeof window<"u"&&window.hyperclay&&window.hyperclay.onPrepareForSave||null;typeof e=="function"&&(e(t=>{let r=t&&t.querySelector&&t.querySelector("body");r&&r.classList.remove("hcms-open","hcms-overlay","hcms-side-left")}),hn=!0)}function Gt(e={}){if(I.isOpen){console.warn("cms.open() called while already open; ignoring");return}To();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=W.findRules(r,n);if(!i){let h=typeof n=="string"?`data-rules-name~="${n}"`:"the provided rules object";throw new Error(`hypercms: no rules found for ${h}`)}let o=e.richText!==!1,a=o?ct(i.rules,t):i.rules,s=i.tagNode;Xe(r),rt(r,a),ln(r,a);let l=it(a,r),c=ae(W.extract(t,a,{skip:"[data-hcms-shell]",templateAttr:"cms-template"}),a),m=ut(()=>on({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})),d={doc:r,pageRoot:t,pageRules:a,formRules:l,rulesTagNode:s,rulesSource:n,richText:o,formRoot:m.formRoot,shellRoot:m.root,errorEl:m.errorEl,lastFingerprint:null,lastData:null,observerHandle:null,undoUnsub:null,livesyncUnsub:null,onChange:e.onChange,onError:e.onError,confirmRemove:e.confirmRemove,previouslyFocused:r.activeElement,dispatch(h,f){let k=r.defaultView&&r.defaultView.CustomEvent||(typeof CustomEvent<"u"?CustomEvent:null);if(!k)return;let C=new k(h,{bubbles:!0,cancelable:h==="hcms:change",detail:f});m.root.dispatchEvent(C)},onCloseRequested(){Jt()}};d.updateFingerprint=()=>{d.lastFingerprint=Pe(Y(d))};try{let h=ot({pageRules:a,formRules:l,data:c,doc:r});m.formRoot.appendChild(h),Ee(m.formRoot,r),en(d),d.updateFingerprint(),d.observerHandle=an({onRefresh:()=>pt(d)});let f=typeof window<"u"&&window.hyperclay&&window.hyperclay.undo||null;if(f&&typeof f.on=="function"){let C=()=>{if(I.ctx!==d)return;un(d,"undo");let N=ae(W.extract(d.pageRoot,d.pageRules,{skip:"[data-hcms-shell]",templateAttr:"cms-template"}),d.pageRules);Pe(N)!==Pe(d.lastData)&&(d.lastData=N,d.onChange?.(N,{path:"",structural:!1}))};f.on("undo",C),f.on("redo",C),d.undoUnsub=()=>{f.off("undo",C),f.off("redo",C)}}let k=()=>un(d,"livesync");r.addEventListener("hyperclay:livesync-applied",k),d.livesyncUnsub=()=>r.removeEventListener("hyperclay:livesync-applied",k),Ue.ctx=d,Mo(r),Oo(m.root),I.isOpen=!0,I.ctx=d,I.shell=m,I.opts=e,d.dispatch("hcms:open",{pageRoot:t})}catch(h){throw d.observerHandle?.unsubscribe?.(),d.undoUnsub?.(),d.livesyncUnsub?.(),d.detachEvents?.(),Ue.ctx===d&&(Ue.ctx=null),ut(()=>m.destroy()),I.isOpen=!1,I.ctx=null,I.shell=null,I.opts=null,h}}function Oo(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 Ue={ctx:null};function Mo(e){let t=e.defaultView||(typeof globalThis<"u"?globalThis:null);if(!t)return;let r=function(){let i=Ue.ctx;if(i)return Ut(i.formRoot),Re("Reorder",()=>ee(Y(i),{path:"",structural:!0},i))};typeof t.hypercmsCommit!="function"&&(t.hypercmsCommit=r),typeof globalThis<"u"&&typeof globalThis.hypercmsCommit!="function"&&(globalThis.hypercmsCommit=r)}var Kt="cms";function No(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(Kt)!=="true"?t:(i.set(Kt,"false"),"?"+i.toString())}function Io(e){let t=typeof e=="string"?e:"",r=t.indexOf("?"),n=r===-1?t:t.slice(r+1);return n?new URLSearchParams(n).get(Kt)==="true":!1}function Lo(){if(typeof window>"u"||!window.location||!window.history||typeof window.history.replaceState!="function")return;let e=window.location.search,t=No(e);t!==e&&window.history.replaceState(window.history.state,"",t+window.location.hash)}function Jt(){if(!I.isOpen)return;let{ctx:e,shell:t}=I;e.closed=!0;let r=e.previouslyFocused;if(e.dispatch("hcms:close",null),Lo(),e.observerHandle?.unsubscribe?.(),e.undoUnsub?.(),e.livesyncUnsub?.(),e.detachEvents?.(),ut(()=>t.destroy()),I.isOpen=!1,I.ctx=null,I.shell=null,I.opts=null,Ue.ctx=null,r&&typeof r.focus=="function")try{r.focus()}catch{}}function fn(){I.isOpen&&pt(I.ctx)}function jo(){return I.isOpen}var Fo={getData(){return I.isOpen?Y(I.ctx):null},setValue(e,t){if(!I.isOpen)throw new Error("hypercms: cms is not open");let r=I.ctx,n=te(e),i=me(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=qo(r.formRoot,e);if(!o)throw new Error(`hypercms: no field element at path "${e}"`);Do(o,t,r.formRoot,e),ee(Y(r),{path:e,structural:!1},r)},addItem(e){if(!I.isOpen)throw new Error("hypercms: cms is not open");Bt(e,I.ctx)},removeItem(e){if(!I.isOpen)throw new Error("hypercms: cms is not open");let t=I.ctx,r=te(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=me(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="${Zt(e)}"]`);if(!a)throw new Error(`hypercms: no element at path "${e}"`);Ce(a,t)},refresh:fn,_commit(){if(!I.isOpen)return;let e=I.ctx;return Ut(e.formRoot),Re("Update",()=>ee(Y(e),{path:"",structural:!0},e))}};function qo(e,t){let r=Zt(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 Do(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=Zt(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 $o=250,Bo=1e4;function zo(){typeof window>"u"||typeof document>"u"||Io(window.location?window.location.search:"")&&(I.isOpen||Po(()=>{if(!I.isOpen)try{Gt()}catch(e){console.warn("hypercms: auto-open failed",e)}}))}function Wt(){return!!document.body&&!!(window.hyperclay&&window.hyperclay.Mutation)}function Po(e){if(Wt()){queueMicrotask(e);return}let t=Date.now()+Bo,r=!1,n=null,i=()=>{r||(r=!0,n!==null&&clearInterval(n),document.removeEventListener("hyperclay:mutation-ready",o))};function o(){if(I.isOpen){i();return}Wt()&&(i(),e())}document.addEventListener("hyperclay:mutation-ready",o,{once:!0}),n=setInterval(()=>{if(I.isOpen){i();return}if(Wt()){i(),e();return}Date.now()>=t&&(i(),console.warn("hypercms: ?cms=true auto-open gave up \u2014 window.hyperclay.Mutation never appeared. Load hyperclayjs (or the mutation utility) so the CMS can initialize."))},$o)}zo();mn({open:Gt,close:Jt,isOpen:jo,hasRules:e=>!!W.findRules(e,"cms")});var Yt={open:Gt,close:Jt,refresh:fn,api:Fo,get isOpen(){return I.isOpen},path:Nt,scaffold:qe,morphForm:Je};function Zt(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}var gn=`/* GENERATED by scripts/build-theme.js from mirk-interface/mirk.css \u2014 DO NOT EDIT.
192
+ `;function Xo({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 Zo({open:e,close:t,isOpen:r},n=document){let i=n.getElementById(En);if(i)return i;if(!n.getElementById(Cn)){let a=n.createElement("style");a.id=Cn,a.setAttribute("snapshot-remove",""),a.textContent=Yo,n.head.appendChild(a)}let o=n.createElement("button");return o.type="button",o.id=En,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 Rn(e){if(typeof window>"u"||typeof document>"u")return;let t=window.__hyperclayEditMode!=null?window.__hyperclayEditMode:null;if(!Xo({search:window.location.search,cookie:document.cookie,forced:t}))return;let r=()=>{document.body&&e.hasRules(document)&&Zo(e)};document.readyState==="loading"?document.addEventListener("DOMContentLoaded",r,{once:!0}):r()}function On(e){yn(e)}var I={isOpen:!1,ctx:null,shell:null,opts:null};function Tn(e,t){if(I.ctx!==e)return;let r=t==="livesync";t==="livesync"&&I.shell?.restoreChrome?.(),xt(e,{ignoreActiveValue:r})}var Mn=!1;function Qo(){if(Mn)return;let e=K("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")}),Mn=!0)}function or(e={}){if(I.isOpen){console.warn("cms.open() called while already open; ignoring");return}Qo();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=W.findRules(r,n);if(!i){let f=typeof n=="string"?`data-rules-name~="${n}"`:"the provided rules object";throw new Error(`hypercms: no rules found for ${f}`)}let o=e.richText!==!1,a=o?ht(i.rules,t):i.rules,s=i.tagNode;rt(r),st(r,a),Sn(r,a);let l=lt(a,r),c=yt(t,a),m=me(W.extract(t,a,{skip:"[data-hcms-shell]",templateAttr:"cms-template"}),a),p=gt(()=>vn({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})),d={doc:r,pageRoot:t,pageRules:a,formRules:l,rulesTagNode:s,rulesSource:n,richText:o,formRoot:p.formRoot,shellRoot:p.root,errorEl:p.errorEl,noticeEl:p.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(f,k){let R=r.defaultView&&r.defaultView.CustomEvent||(typeof CustomEvent<"u"?CustomEvent:null);if(!R)return;let O=new R(f,{bubbles:!0,cancelable:f==="hcms:change",detail:k});p.root.dispatchEvent(O)},onCloseRequested(){sr()}};d.updateFingerprint=()=>{d.lastFingerprint=He(Z(d))};try{let f=ct({pageRules:a,formRules:l,data:m,doc:r});p.formRoot.appendChild(f),Re(p.formRoot,r),vt(d),gn(d),d.updateFingerprint(),d.observerHandle=An({onRefresh:()=>xt(d)});let k=K("undo");if(k&&typeof k.on=="function"){let O=()=>{if(I.ctx!==d)return;Tn(d,"undo");let F=me(W.extract(d.pageRoot,d.pageRules,{skip:"[data-hcms-shell]",templateAttr:"cms-template"}),d.pageRules);He(F)!==He(d.lastData)&&(d.lastData=F,d.onChange?.(F,{path:"",structural:!1}))};k.on("undo",O),k.on("redo",O),d.undoUnsub=()=>{k.off("undo",O),k.off("redo",O)}}let R=()=>Tn(d,"livesync");d.livesyncUnsub=Wt(r,hn,R),We.ctx=d,ts(r),es(p.root),I.isOpen=!0,I.ctx=d,I.shell=p,I.opts=e,d.dispatch("hcms:open",{pageRoot:t})}catch(f){throw d.observerHandle?.unsubscribe?.(),d.undoUnsub?.(),d.livesyncUnsub?.(),d.detachEvents?.(),We.ctx===d&&(We.ctx=null),gt(()=>p.destroy()),I.isOpen=!1,I.ctx=null,I.shell=null,I.opts=null,f}}function es(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 We={ctx:null};function ts(e){let t=e.defaultView||(typeof globalThis<"u"?globalThis:null);if(!t)return;let r=function(){let i=We.ctx;if(i)return Zt(i.formRoot),Me("Reorder",()=>ne(Z(i),{path:"",structural:!0},i))};typeof t.hypercmsCommit!="function"&&(t.hypercmsCommit=r),typeof globalThis<"u"&&typeof globalThis.hypercmsCommit!="function"&&(globalThis.hypercmsCommit=r)}var ir="cms";function rs(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(ir)!=="true"?t:(i.set(ir,"false"),"?"+i.toString())}function ns(e){let t=typeof e=="string"?e:"",r=t.indexOf("?"),n=r===-1?t:t.slice(r+1);return n?new URLSearchParams(n).get(ir)==="true":!1}function is(){if(typeof window>"u"||!window.location||!window.history||typeof window.history.replaceState!="function")return;let e=window.location.search,t=rs(e);t!==e&&window.history.replaceState(window.history.state,"",t+window.location.hash)}function sr(){if(!I.isOpen)return;let{ctx:e,shell:t}=I;e.closed=!0;let r=e.previouslyFocused;if(e.dispatch("hcms:close",null),is(),e.observerHandle?.unsubscribe?.(),e.undoUnsub?.(),e.livesyncUnsub?.(),e.detachEvents?.(),gt(()=>t.destroy()),I.isOpen=!1,I.ctx=null,I.shell=null,I.opts=null,We.ctx=null,r&&typeof r.focus=="function")try{r.focus()}catch{}}function Nn(){I.isOpen&&xt(I.ctx)}function os(){return I.isOpen}var ss={getData(){return I.isOpen?Z(I.ctx):null},setValue(e,t){if(!I.isOpen)throw new Error("hypercms: cms is not open");let r=I.ctx,n=ie(e),i=pe(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=as(r.formRoot,e);if(!o)throw new Error(`hypercms: no field element at path "${e}"`);ls(o,t,r.formRoot,e),ne(Z(r),{path:e,structural:!1},r)},addItem(e){if(!I.isOpen)throw new Error("hypercms: cms is not open");Jt(e,I.ctx)},removeItem(e){if(!I.isOpen)throw new Error("hypercms: cms is not open");let t=I.ctx,r=ie(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=pe(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="${lr(e)}"]`);if(!a)throw new Error(`hypercms: no element at path "${e}"`);Te(a,t)},refresh:Nn,_commit(){if(!I.isOpen)return;let e=I.ctx;return Zt(e.formRoot),Me("Update",()=>ne(Z(e),{path:"",structural:!0},e))}};function as(e,t){let r=lr(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 ls(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=lr(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 cs=250,ds=1e4;function ms(){typeof window>"u"||typeof document>"u"||ns(window.location?window.location.search:"")&&(I.isOpen||us(()=>{if(!I.isOpen)try{or()}catch(e){console.warn("hypercms: auto-open failed",e)}}))}function nr(){return!!document.body&&!!K("Mutation")}function us(e){if(nr()){queueMicrotask(e);return}let t=Date.now()+ds,r=!1,n=null,i=null,o=()=>{r||(r=!0,n!==null&&clearInterval(n),i&&i())};function a(){if(I.isOpen){o();return}nr()&&(o(),e())}i=Wt(document,un,a),n=setInterval(()=>{if(I.isOpen){o();return}if(nr()){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."))},cs)}ms();Rn({open:or,close:sr,isOpen:os,hasRules:e=>!!W.findRules(e,"cms")});var ar={open:or,close:sr,refresh:Nn,api:ss,get isOpen(){return I.isOpen},path:Bt,scaffold:$e,morphForm:Qe};function lr(e){return typeof CSS<"u"&&CSS.escape?CSS.escape(e):String(e).replace(/[^a-zA-Z0-9_\-.*]/g,t=>"\\"+t)}var In=`/* GENERATED by scripts/build-theme.js from mirk-interface/mirk.css \u2014 DO NOT EDIT.
192
193
  Source of truth: mirk-interface/mirk.css + src/theme/pixel-quiet.overrides.css.
193
194
  Regenerate with: npm run build:theme */
194
195
 
@@ -1685,6 +1686,18 @@ body.hcms-open.hcms-overlay { overflow: hidden; }
1685
1686
  .hcms-upload-clear--badge:hover { color: var(--mirk-destructive); border-color: var(--mirk-destructive); }
1686
1687
  .hcms-upload-clear--badge .hcms-x { width: 10px; height: 10px; }
1687
1688
 
1689
+ /* ---------- UNRESOLVED-FIELDS NOTICE ---------- */
1690
+ .hcms-shell-notice {
1691
+ font-size: 12px;
1692
+ line-height: 1.45;
1693
+ color: var(--mirk-mark-fg);
1694
+ background: var(--mirk-bevel-bg);
1695
+ border: 1px solid var(--mirk-input-border);
1696
+ padding: 8px 12px;
1697
+ margin: 0 24px 8px;
1698
+ }
1699
+ .hcms-shell-notice[hidden] { display: none; }
1700
+
1688
1701
  /* ---------- ERROR BANNER + inline errors ---------- */
1689
1702
  .hcms-shell-error,
1690
1703
  .hcms-error {
@@ -1736,4 +1749,4 @@ body.hcms-open.hcms-overlay { overflow: hidden; }
1736
1749
  cursor: pointer;
1737
1750
  }
1738
1751
  .hcms-sr-only[hidden] { display: none; }
1739
- `;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)})})})();pn(gn);var Vo=Yt,Wo={cms:Yt};return An(Ko);})();
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)})})})();On(In);var fs=ar,gs={cms:ar};return Bn(bs);})();