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