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