@vcp-dev/site-edit-bridge 0.7.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,12 +1,12 @@
1
- function Z(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function Jt(e){if(!Ln(e))return e;let t=new Map,n=e.pageComposition.status==="supported"?e.pageComposition.placementUnitKeys:[],r=new Map(e.dynamicDataSummaries??[]),i=o=>{let s=t.get(o);if(s)return s;let c=e.nodes[o];if(!c)throw new Error(`Missing compact document node ${o}`);let[a,l]=c,u=e.tokens[l];if(typeof u!="string")throw new Error(`Missing compact document token ${l}`);let p=`${a===null?"":i(a)}${u}`;return t.set(o,p),p};return{siteId:e.siteId,snapshotId:e.snapshotId,composition:{...e.composition},routeId:e.composition.routeId,version:e.version,pageComposition:e.pageComposition,entries:e.entries.map((o,s)=>{let[c,a,l]=o,u=l===void 0?void 0:n[l];if(l!==void 0&&!u)throw new Error(`Missing page composition unit ${l}`);return{key:i(c),...u?{pageCompositionUnitKey:u}:{},operationSummary:Zn(a),...r.get(s)?{dynamicDataSummary:r.get(s)}:{}}})}}function Zn(e){return{canUpdateText:(e&1)!==0,canInsertChild:(e&2)!==0,canMove:(e&4)!==0,canRemove:(e&8)!==0}}function Ln(e){if(typeof e!="object"||e===null)return!1;let t=e;if(t.encoding!=="segment-trie-v1"||typeof t.siteId!="string"||typeof t.snapshotId!="string"||!er(t.composition)||typeof t.routeId!="string"||t.routeId!==t.composition.routeId||!Number.isInteger(t.version)||t.version<0||!yt(t.pageComposition)||!Array.isArray(t.tokens)||!t.tokens.every(i=>typeof i=="string")||!Array.isArray(t.nodes)||!Array.isArray(t.entries))return!1;let n=t.nodes;if(!n.every((i,o)=>Array.isArray(i)&&i.length===2&&(i[0]===null||Ae(i[0])&&i[0]<o)&&Ae(i[1])&&i[1]<t.tokens.length)||!t.entries.every(i=>Array.isArray(i)&&(i.length===2||i.length===3)&&Ae(i[0])&&i[0]<n.length&&Ae(i[1])&&i[1]<=15&&(i.length===2||Ae(i[2]))))return!1;let r=t.dynamicDataSummaries;return r===void 0||Array.isArray(r)&&r.every(i=>Array.isArray(i)&&i.length===2&&Ae(i[0])&&i[0]<t.entries.length&&yt(i[1]))}function yt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function er(e){return!yt(e)||typeof e.routeId!="string"?!1:e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string"}function Ae(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0}var Ee=class e{constructor(){}static parseMessage(t,n={}){let r=JSON.parse(t);if(!e.isMessage(r,n))throw new Error("Invalid site edit bridge message");return r}static stringifyMessage(t){return JSON.stringify(t)}static extractRequestInfo(t){if(ie(t)&&ie(t.payload)){let n=typeof t.payload.id=="string"?t.payload.id:"unknown",r=this.isRequestKind(t.payload.kind)?t.payload.kind:"get-document";return{id:n,kind:r}}return{id:"unknown",kind:"get-document"}}static isRequestKind(t){return t==="initialize-session"||t==="get-document"||t==="get-history-status"||t==="get-style-context"||t==="get-object-edit-context"||t==="get-class-name-source"||t==="get-source-tree"||t==="get-source-file"||t==="resolve-source-location"||t==="execute"||t==="undo"||t==="redo"}static isMessage(t,n={}){return!ie(t)||typeof t.type!="string"?!1:t.type==="request"?tr(t.payload,n):t.type==="response"||t.type==="error"?ie(t.payload)&&typeof t.payload.id=="string":t.type==="event"?ie(t.payload)&&ie(t.payload.event):t.type==="auth"?ie(t.payload)&&typeof t.payload.key=="string":t.type==="auth-ok"&&ie(t.payload)&&t.payload.ok===!0}};function tr(e,t){if(!ie(e)||typeof e.id!="string"||!Ee.isRequestKind(e.kind))return!1;let n=Et(e.composition);switch(e.kind){case"initialize-session":return n&&(e.mutationContext===void 0||bt(e.mutationContext));case"get-document":case"get-style-context":return n;case"get-object-edit-context":case"get-class-name-source":case"resolve-source-location":return typeof e.key=="string"&&n;case"get-history-status":return n;case"get-source-tree":return n;case"get-source-file":return typeof e.path=="string"&&n;case"execute":return n&&nr(e.request)&&(e.request.mutationContext===void 0||bt(e.request.mutationContext))&&(t.validateOperationRequest?.(e.request)??!0);case"undo":case"redo":return n&&e.mutationContext===void 0||n&&bt(e.mutationContext)}}function nr(e){return ie(e)&&typeof e.id=="string"&&typeof e.siteId=="string"&&typeof e.baseSnapshotId=="string"&&Et(e.composition)&&typeof e.kind=="string"&&ie(e.target)&&(e.target.kind!=="route"||Et(e.target.composition))&&typeof e.documentVersion=="number"&&Number.isInteger(e.documentVersion)&&e.documentVersion>=0&&ie(e.params)}function Et(e){return ie(e)&&typeof e.routeId=="string"&&e.routeId.length>0&&(e.templateId===void 0||typeof e.templateId=="string"&&e.templateId.length>0)&&Object.keys(e).every(t=>t==="routeId"||t==="templateId")}function ie(e){return typeof e=="object"&&e!==null}function bt(e){return ie(e)&&typeof e.editingSessionId=="string"&&e.editingSessionId.length>0&&typeof e.lockId=="string"&&e.lockId.length>0&&typeof e.ownerId=="string"&&e.ownerId.length>0&&typeof e.leaseAssertion=="string"&&e.leaseAssertion.length>0}var rr="vcp:designer:trace",or="designer_trace",Qt="__VCP_DESIGNER_TRACE__";var ir=/(authorization|cookie|token|secret|providerTrace|headers?|sourceCode|rawSource|fullSource)/i;function sr(e=globalThis){let t=e;try{if(t.localStorage?.getItem(rr)==="1")return!0}catch{}try{let n=t.location?.search??"";return new URLSearchParams(n).get(or)==="1"}catch{return!1}}function Se(e,t={},n=globalThis){if(!sr(n))return;let r={type:e,timestamp:Date.now(),payload:cr(t)},i=n,o=i[Qt]??[];o.push(r),o.length>1e3&&o.splice(0,o.length-1e3),i[Qt]=o;let s=n.console?.debug;r.payload.diagnosticOnly!==!0&&typeof s=="function"&&s.call(n.console,"[designer-trace]",r)}function cr(e){return St(e,0)}function St(e,t){if(t>4)return"[truncated]";if(Array.isArray(e))return e.map(r=>St(r,t+1));if(!e||typeof e!="object")return e;let n={};for(let[r,i]of Object.entries(e)){if(ir.test(r)){n[r]="[redacted]";continue}n[r]=St(i,t+1)}return n}var Ye=class{constructor(t){this.options=t,this.socket=null,this.connectPromise=null,this.connectAttempt=null,this.connectionState="idle",this.intentionalClose=!1,this.sequence=0,this.pending=new Map,this.listeners=new Set,this.connectionStatusListeners=new Set}connect(){return this.socket?.readyState===It&&this.connectionState==="open"?(this.setConnectionState("open"),Promise.resolve()):this.connectPromise?this.connectPromise:(this.intentionalClose=!1,this.setConnectionState("connecting"),this.connectPromise=new Promise((t,n)=>{let r;try{r=this.createSocket(this.options.url)}catch(c){let a=ke(c,"WebSocket failed");this.socket=null,this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("failed",a.message),n(a);return}let i={socket:r,settled:!1,reject:n};this.connectAttempt=i,this.socket=r;let o=()=>{this.socket!==r||this.connectAttempt!==i||(i.settled=!0,this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("open"),t())},s=(c,a)=>{this.cleanupSocket(r,c,a)};r.onopen=()=>{if(!(this.socket!==r||this.connectAttempt!==i)){if(this.options.authKey){try{r.send(Ee.stringifyMessage({type:"auth",payload:{key:this.options.authKey}}))}catch(c){s(ke(c,"WebSocket auth failed"),"failed")}return}o()}},r.onerror=c=>{if(this.socket!==r)return;let a=ke(c,"WebSocket failed");s(a,"failed")},r.onmessage=c=>{if(this.socket===r){if(this.options.authKey&&this.connectAttempt===i&&!i.settled){this.handleAuthHandshakeMessage(c.data,r,i,()=>{o()});return}this.handleMessage(c.data)}},r.onclose=c=>{if(this.socket!==r)return;let a=this.intentionalClose,l=new Error(dr(c,{intentional:a}));s(l,a?"closed":"failed")}}),this.connectPromise)}disconnect(){this.intentionalClose=!0,this.setConnectionState("closing");let t=this.socket;if(!t){this.rejectAll(new Error("WebSocket disconnected")),this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("closed");return}this.cleanupSocket(t,new Error("WebSocket disconnected"),"closed")}getConnectionState(){return this.connectionState}subscribeConnectionStatus(t){return this.connectionStatusListeners.add(t),t({state:this.connectionState}),()=>{this.connectionStatusListeners.delete(t)}}getDocument(t){let n=this.selector(t);return this.request("get-document",{composition:n})}async initializeSession(t){let n=this.selector(t.composition);return await this.request("initialize-session",{composition:n,...t.mutationContext?{mutationContext:t.mutationContext}:{}})}getHistoryStatus(t){return this.request("get-history-status",{composition:this.selector(t)})}getStyleContext(t){let n=this.selector(t);return this.request("get-style-context",{composition:n})}getObjectEditContext(t,n){let r=this.selector(n);return this.request("get-object-edit-context",{key:t,composition:r})}getClassNameSource(t,n){let r=this.selector(n);return this.request("get-class-name-source",{key:t,composition:r})}getSourceTree(t){return this.request("get-source-tree",{composition:this.selector(t)})}getSourceFile(t){return this.request("get-source-file",{path:t.path,composition:this.selector(t.composition)})}resolveSourceLocation(t){return this.request("resolve-source-location",{key:t.key,composition:this.selector(t.composition)})}execute(t,n){let r=Xe(t),i={...t,composition:Ie(r)};return this.request("execute",{request:i})}undo(t,n){return this.request("undo",{composition:this.selector(t)})}redo(t,n){return this.request("redo",{composition:this.selector(t)})}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}selector(t){return Ie(t)}request(t,n){let r=this.socket;if(!r||r.readyState!==It||this.connectionState!=="open")return Promise.reject(new Error(`WebSocket is not open (state: ${this.connectionState}, readyState: ${r?.readyState??"none"})`));let i=`${t}-${this.sequence+=1}`,o=hr(i,t,n);return Se("bridge.request",{id:i,kind:t,routeId:typeof n.routeId=="string"?n.routeId:null,key:typeof n.key=="string"?n.key:null,operationKind:Zt(n.request,"kind"),documentVersion:Zt(n.request,"documentVersion")}),new Promise((s,c)=>{let a=this.resolveRequestTimeoutMs(t),l=a>0?setTimeout(()=>{let u=this.pending.get(i);u&&(this.pending.delete(i),Se("bridge.response",{id:i,kind:t,ok:!1,timedOut:!0}),u.reject(new Error(`Bridge request timed out after ${a}ms: ${t}`)))},a):null;l?.unref?.(),this.pending.set(i,{kind:t,timeout:l,resolve:u=>s(u),reject:c});try{r.send(Ee.stringifyMessage(o))}catch(u){let p=ke(u,"WebSocket send failed");this.clearPendingRequest(i),c(p),this.cleanupSocket(r,p,"failed")}})}handleAuthHandshakeMessage(t,n,r,i){try{if(Ee.parseMessage(t).type==="auth-ok"){i();return}throw new Error("Bridge authentication failed")}catch(o){let s=ke(o,"Bridge authentication failed");this.connectAttempt===r&&this.cleanupSocket(n,s,"failed")}}handleMessage(t){let n=Ee.parseMessage(t);if(n.type==="event"){for(let i of this.listeners)i(n.payload.event);return}if(n.type!=="response"&&n.type!=="error")return;let r=this.pending.get(n.payload.id);if(r){if(this.clearPendingRequest(n.payload.id),n.type==="error"){Se("bridge.response",{id:n.payload.id,kind:r.kind,ok:!1});let i=new Error(n.payload.message);n.payload.code&&(i.code=n.payload.code),r.reject(i);return}Se("bridge.response",{id:n.payload.id,kind:r.kind,ok:!0,resultVersion:pr(n.payload.result)}),r.resolve(r.kind==="get-document"?{...n.payload.result,data:nn(n.payload.result.data,n.payload.result.composition)}:r.kind==="initialize-session"?mr(n.payload.result):n.payload.result)}}rejectAll(t){for(let[n,r]of[...this.pending])this.clearPendingRequest(n),r.reject(t)}clearPendingRequest(t){let n=this.pending.get(t);n&&(n.timeout&&clearTimeout(n.timeout),this.pending.delete(t))}resolveRequestTimeoutMs(t){let n=this.options.requestTimeoutMsByKind?.[t];return typeof n=="number"?Math.max(0,n):typeof this.options.requestTimeoutMs=="number"?Math.max(0,this.options.requestTimeoutMs):lr[t]??ur}cleanupSocket(t,n,r){if(this.socket===t&&(this.socket=null),this.connectAttempt?.socket===t){let i=this.connectAttempt;this.connectAttempt=null,i.settled||(i.settled=!0,i.reject(n))}this.connectPromise=null,this.rejectAll(n),this.setConnectionState(r,n.message),t.onopen=null,t.onmessage=null,t.onerror=null,t.onclose=null;try{(t.readyState===ar||t.readyState===It)&&t.close()}catch{}}setConnectionState(t,n){if(this.connectionState===t&&!n)return;this.connectionState=t;let r={state:t,...n?{message:n}:{}};this.options.onConnectionStatus?.(r);for(let i of this.connectionStatusListeners)i(r)}createSocket(t){if(this.options.createSocket)return this.options.createSocket(t);if(typeof WebSocket>"u")throw new Error("Site edit preview bridge requires WebSocket");return new WebSocket(t)}},ar=0,It=1,ur=15e3,lr={"get-source-tree":1e4,"get-source-file":1e4,"resolve-source-location":1e4,execute:6e4,undo:2e4,redo:2e4};function ke(e,t){return e instanceof Error?e:new Error(t)}function dr(e,t){return t.intentional?"WebSocket disconnected":e?.code===1008?e.reason?`Bridge session authentication failed: ${e.reason}`:"Bridge session authentication failed":e?.reason?`WebSocket closed: ${e.reason}`:typeof e?.code=="number"&&e.code!==1005?`WebSocket closed with code ${e.code}`:"WebSocket closed"}function Zt(e,t){if(!e||typeof e!="object")return null;let r=e[t];return typeof r=="string"||typeof r=="number"?r:null}function pr(e){if(!e||typeof e!="object")return null;let t=e,n=t.data?.resultVersion??t.data?.version??null;return typeof n=="number"?n:null}function tn(e){let t="composition"in e?Ie(e.composition):Ie({routeId:e.routeId});return new Ct({composition:t,initialDocument:e.initialDocument,client:e.client})}var Ct=class{constructor(t){this.params=t,this.refreshInFlight=null,this.objectGeneration=0,this.styleGeneration=0,this.editContextCache=new Map,this.editContextInFlight=new Map,this.classNameSourceCache=new Map,this.classNameSourceInFlight=new Map,this.styleContextCache=new Map,this.styleContextInFlight=new Map,this.composition=Ie(t.composition);let n=t.initialDocument.composition.effectiveTemplateId;if(n!==void 0&&(this.composition.templateId===void 0||this.composition.templateId!==n))throw new Error(`Site edit bridge requires a matching templateId for initial document composition ${JSON.stringify(t.initialDocument.composition)}`);this.currentDocument=t.initialDocument,this.observedDocumentVersion=t.initialDocument.version,this.sessionInitialized=!Lt(t.initialDocument),this.activeCompositionContext=this.sessionInitialized?{...t.initialDocument.composition}:null}async getDocument(t){this.requireBoundComposition(t);let n=Lt(this.currentDocument);return(n||this.currentDocument.version<this.observedDocumentVersion)&&(this.currentDocument=await this.refreshSnapshot(n?void 0:this.observedDocumentVersion,"get-document"),this.sessionInitialized=!0),{ok:!0,data:this.currentDocument}}async initializeSession(t){let n=this.requireBoundComposition(t.composition);if(!this.params.client.initializeSession)throw new Error("Site edit bridge client does not support initialize-session");let r=await this.params.client.initializeSession({...t,composition:n});return this.currentDocument=r.data.document,this.observedDocumentVersion=r.data.document.version,this.activeCompositionContext={...r.composition},this.sessionInitialized=!0,this.clearObjectCaches(),r}async getHistoryStatus(t){return this.params.client.getHistoryStatus(this.requireBoundComposition(t))}async getStyleContext(t){let n=this.requireBoundComposition(t),r=Me(n),i=this.styleContextCache.get(r);if(i?.generation===this.styleGeneration)return{ok:!0,data:i.value};let o=this.styleContextInFlight.get(r);if(o?.generation===this.styleGeneration)return o.request;let s=this.styleGeneration,c=this.params.client.getStyleContext(n).then(a=>(this.styleGeneration===s&&this.styleContextCache.set(r,{generation:s,value:a.data}),a)).finally(()=>{this.styleContextInFlight.get(r)?.request===c&&this.styleContextInFlight.delete(r)});return this.styleContextInFlight.set(r,{generation:s,request:c}),c}async ensureDocumentVersion(t,n){this.requireBoundComposition(t);let r=await this.refreshSnapshot(n,"ensure-version");if(r.version<n)throw new Error(`Document refresh returned version ${r.version}, expected at least ${n}`);return{ok:!0,data:r}}async acknowledgeDocumentVersion(t,n){if(this.requireBoundComposition(t),n>this.currentDocument.version){if(this.currentDocument.pageComposition.status==="supported"){let r=await this.refreshSnapshot(n,"ensure-version");if(r.version<n)throw new Error(`Document refresh returned version ${r.version}, expected at least ${n}`);return{ok:!0,data:r}}this.currentDocument={...this.currentDocument,version:n},this.clearObjectCaches({preserveStyleContext:!0})}return this.observedDocumentVersion=Math.max(this.observedDocumentVersion,n),{ok:!0,data:this.currentDocument}}async getObjectEditContext(t,n){let r=this.requireBoundComposition(n),i=this.objectCacheKey(t,r),o=this.editContextCache.get(i);if(o)return{ok:!0,data:o};let s=this.editContextInFlight.get(i);if(s)return s;let c=this.objectGeneration,a=this.params.client.getObjectEditContext(t,r).then(l=>(this.objectGeneration===c&&this.editContextCache.set(i,l.data),l)).finally(()=>{this.editContextInFlight.get(i)===a&&this.editContextInFlight.delete(i)});return this.editContextInFlight.set(i,a),a}async getClassNameSource(t,n){let r=this.requireBoundComposition(n),i=this.objectCacheKey(t,r),o=this.classNameSourceCache.get(i);if(o)return o;let s=this.classNameSourceInFlight.get(i);if(s)return s;let c=this.objectGeneration,a=this.params.client.getClassNameSource(t,r).then(l=>(this.objectGeneration===c&&this.classNameSourceCache.set(i,l),l)).finally(()=>{this.classNameSourceInFlight.get(i)===a&&this.classNameSourceInFlight.delete(i)});return this.classNameSourceInFlight.set(i,a),a}async getSourceTree(t){return this.params.client.getSourceTree(this.requireBoundComposition(t))}async getSourceFile(t){return this.params.client.getSourceFile({path:t.path,composition:this.requireBoundComposition(t.composition)})}async resolveSourceLocation(t){return this.params.client.resolveSourceLocation({key:t.key,composition:this.requireBoundComposition(t.composition)})}async execute(t,n){let r=Xe(t);r&&this.composition.templateId!==void 0&&this.requireBoundComposition(r);let i={...t,composition:r??this.composition};return this.params.client.execute(i)}async undo(t,n){return this.params.client.undo(this.requireBoundComposition(t))}async redo(t,n){return this.params.client.redo(this.requireBoundComposition(t))}subscribe(t){return this.params.client.subscribe(n=>{if(n.type==="site-edit.document.changed"&&this.sessionInitialized&&this.isActiveComposition(n.composition)){this.observedDocumentVersion=Math.max(this.observedDocumentVersion,n.version),n.version>this.currentDocument.version&&this.clearObjectCaches(),t(n);return}t(n)})}async refreshSnapshot(t,n="ensure-version"){if(typeof t=="number"&&this.currentDocument.version>=t)return Se("bridge.document-refresh",{composition:this.composition,routeId:this.composition.routeId,minVersion:t,currentVersion:this.currentDocument.version,deduped:!0,skipped:!0,source:n}),this.currentDocument;let r=Me(this.composition),i=this.refreshInFlight;if(i?.compositionKey===r){Se("bridge.document-refresh",{composition:this.composition,routeId:this.composition.routeId,minVersion:t,currentVersion:this.currentDocument.version,deduped:!0,source:n});let s=await i.request;if(typeof t!="number"||s.version>=t||this.currentDocument.version>=t)return this.currentDocument}Se("bridge.document-refresh",{composition:this.composition,routeId:this.composition.routeId,minVersion:t,currentVersion:this.currentDocument.version,deduped:!1,source:n});let o=this.params.client.getDocument(this.composition).then(s=>(this.currentDocument=s.data,this.activeCompositionContext={...s.data.composition},this.observedDocumentVersion=Math.max(this.observedDocumentVersion,s.data.version),this.clearObjectCaches(),this.currentDocument));this.refreshInFlight={compositionKey:r,request:o};try{return await o}finally{this.refreshInFlight?.request===o&&(this.refreshInFlight=null)}}clearObjectCaches(t){this.objectGeneration+=1,this.editContextCache.clear(),this.editContextInFlight.clear(),this.classNameSourceCache.clear(),this.classNameSourceInFlight.clear(),!t?.preserveStyleContext&&(this.styleGeneration+=1,this.styleContextCache.clear(),this.styleContextInFlight.clear())}objectCacheKey(t,n){return`${Me(n)}\0${t}`}requireBoundComposition(t){let n=t===void 0?this.composition:Ie(t);if(Me(n)!==Me(this.composition))throw new Error(`Site edit bridge is bound to composition ${JSON.stringify(this.composition)}, received ${JSON.stringify(n)}`);return Ie(n)}isActiveComposition(t){let n=this.activeCompositionContext??fr(this.composition);return en(t)===en(n)}};function Lt(e){return e.version===0&&e.entries.length===0}function mr(e){let t=e;return{...t,data:{...t.data,document:nn(t.data.document,t.composition)}}}function nn(e,t){let n=e,r=Jt(n.routeId?n:{...n,routeId:t?.routeId??n.composition?.routeId});return t?{...r,composition:t}:r}function Ie(e){if(e&&typeof e=="object"&&typeof e.routeId=="string"){let t="effectiveTemplateId"in e?e.effectiveTemplateId:"templateId"in e?e.templateId:void 0;return{routeId:e.routeId,...typeof t=="string"?{templateId:t}:{}}}throw new Error("SITE_EDIT_COMPOSITION_SESSION_REQUIRED: a composition selector is required")}function Me(e){return JSON.stringify([e.routeId,e.templateId??null])}function en(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function fr(e){return{routeId:e.routeId,...e.templateId?{effectiveTemplateId:e.templateId}:{}}}function Xe(e){if(e&&typeof e=="object"){let t=e;if(t.composition&&typeof t.composition=="object"){let n=t.composition;if(typeof n.routeId=="string")return{routeId:n.routeId,...typeof n.templateId=="string"?{templateId:n.templateId}:{}}}}}function hr(e,t,n){let r=Ie(t==="execute"?Xe(n.request):n.composition),i={id:e,kind:t,composition:r};switch(t){case"initialize-session":case"get-document":case"get-history-status":case"get-style-context":case"get-source-tree":case"undo":case"redo":return{type:"request",payload:{...i,...n.mutationContext?{mutationContext:n.mutationContext}:{}}};case"get-object-edit-context":case"get-class-name-source":case"resolve-source-location":return{type:"request",payload:{...i,key:String(n.key)}};case"get-source-file":return{type:"request",payload:{...i,path:String(n.path)}};case"execute":return{type:"request",payload:{...i,request:{...n.request,composition:Xe(n.request)??r}}}}}var rn="vcp-window-message",on=1;function gr(e){return{source:rn,version:on,namespace:e.namespace,channel:e.channel,...e.sessionKey?{sessionKey:e.sessionKey}:{},body:e.body}}function yr(e){try{return S(e)?j(e,"source",rn)&&j(e,"version",on)&&A(e,"namespace")&&A(e,"channel")&&ue(e,"body")&&(!xe(e,"sessionKey")||A(e,"sessionKey")):!1}catch{return!1}}var sn="site-edit",cn="frame-runtime",Rt=1,Be=1,Fe=1,an=24;function Ve(e,t={}){return gr({namespace:sn,channel:cn,sessionKey:t.sessionKey,body:e})}function un(e){try{return!yr(e)||e.namespace!==sn||e.channel!==cn?!1:Wr(e.body)}catch{return!1}}function be(e){return S(e)&&A(e,"routeId")&&Re(e,"templateId")&&me(e,["routeId","templateId"])}function Je(e){return S(e)&&A(e,"routeId")&&Re(e,"effectiveTemplateId")&&me(e,["routeId","effectiveTemplateId"])}function me(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(r=>typeof r=="string"&&n.has(r))}var xe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function ue(e,t){let n=Object.getOwnPropertyDescriptor(e,t);return n!==void 0&&"value"in n}function d(e,t){return Object.getOwnPropertyDescriptor(e,t)?.value}function j(e,t,n){return ue(e,t)&&d(e,t)===n}function A(e,t){return ue(e,t)&&typeof d(e,t)=="string"}function Le(e,t){return ue(e,t)&&typeof d(e,t)=="boolean"}function F(e,t){let n=d(e,t);return ue(e,t)&&typeof n=="number"&&Number.isFinite(n)}function br(e,t){let n=d(e,t);return ue(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>0}function Re(e,t){return!xe(e,t)||d(e,t)===void 0||A(e,t)}function Pe(e,t){return!xe(e,t)||d(e,t)===void 0||F(e,t)}function Qe(e,t){let n=d(e,t);return!xe(e,t)||n===void 0||ue(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>=0}function U(e,t){return!xe(e,t)||d(e,t)===void 0}function S(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Er(e){return S(e)&&Reflect.ownKeys(e).length===0}function Ze(e){if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t+=1){let n=Object.getOwnPropertyDescriptor(e,String(t));if(n===void 0||!("value"in n)||typeof n.value!="string")return!1}return!0}function pe(e){return S(e)&&A(e,"key")&&Qe(e,"instanceIndex")&&Qe(e,"instanceCount")&&Qe(e,"textSegmentIndex")}function Sr(e){return S(e)&&A(e,"blockId")&&pe(d(e,"ref"))&&qe(d(e,"rect"))&&Le(e,"targetIsSectionRoot")}function Ir(e){if(!S(e))return!1;let t=d(e,"placement"),n=d(e,"boundary");return A(e,"anchorBlockId")&&pe(d(e,"anchorRef"))&&(t==="before"||t==="after")&&S(n)&&F(n,"top")&&F(n,"left")&&F(n,"width")}function qe(e){return S(e)&&["top","left","width","height"].every(t=>F(e,t))}function ln(e){if(!S(e))return!1;let t=d(e,"rect"),n=d(e,"layout"),r=S(n)?d(n,"containingBlock"):null,i=d(e,"scrollContext"),o=S(r)&&(j(r,"kind","viewport")&&Reflect.ownKeys(r).length===1||j(r,"kind","document")&&Reflect.ownKeys(r).length===1||j(r,"kind","element")&&A(r,"runtimeNodeId"));return j(e,"version",Rt)&&A(e,"runtimeNodeId")&&S(t)&&qe(d(t,"viewport"))&&qe(d(t,"document"))&&S(n)&&A(n,"position")&&A(n,"transform")&&o&&S(i)&&["scrollX","scrollY","viewportWidth","viewportHeight"].every(s=>F(i,s))&&ue(i,"scrollContainers")&&Cr(d(i,"scrollContainers"))}function Cr(e){return Array.isArray(e)&&e.every(t=>S(t)&&A(t,"runtimeNodeId")&&F(t,"scrollLeft")&&F(t,"scrollTop"))}function vt(e){return S(e)&&(U(e,"layoutSnapshot")||ln(d(e,"layoutSnapshot")))}function vr(e){return S(e)&&pe(d(e,"ref"))&&ue(e,"layoutSnapshot")&&ln(d(e,"layoutSnapshot"))&&(U(e,"childBoxes")||Tr(d(e,"childBoxes")))&&(U(e,"childRects")||xr(d(e,"childRects")))&&(U(e,"layout")||Rr(d(e,"layout")))&&(U(e,"spacing")||_r(d(e,"spacing")))}function Rr(e){if(!S(e))return!1;let t=d(e,"indicatorOrientation");return A(e,"display")&&(t==="horizontal"||t==="vertical")&&Re(e,"flexDirection")&&Re(e,"gridAutoFlow")}function xr(e){return Array.isArray(e)&&e.every(t=>qe(t))}function Tr(e){return Array.isArray(e)&&e.every(t=>S(t)&&qe(d(t,"rect"))&&dn(d(t,"margin")))}function dn(e){return S(e)&&["marginTop","marginRight","marginBottom","marginLeft"].every(t=>F(e,t))}function _r(e){return dn(e)&&["paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","columnGap","rowGap"].every(t=>F(e,t))}function Ar(e){if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t+=1){let n=Object.getOwnPropertyDescriptor(e,String(t));if(n===void 0||!("value"in n)||!vr(n.value))return!1}return!0}function Pr(e){return S(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&ue(e,t)&&(typeof d(e,t)=="string"||d(e,t)===null))}function pn(e){return e==null||typeof e=="string"||typeof e=="number"&&Number.isFinite(e)}function Nr(e){return S(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&ue(e,t)&&pn(d(e,t)))}function Dr(e){if(!S(e))return!1;let t=d(e,"priority");return A(e,"property")&&ue(e,"value")&&pn(d(e,"value"))&&(!xe(e,"priority")||t===void 0||t==="important")}function Or(e){return S(e)?(U(e,"attributes")||Pr(d(e,"attributes")))&&Re(e,"className")&&(U(e,"style")||Nr(d(e,"style")))&&(U(e,"styleDeclarations")||Array.isArray(d(e,"styleDeclarations"))&&d(e,"styleDeclarations").every(Dr)):!1}function kr(e){return S(e)&&F(e,"x")&&F(e,"y")&&(U(e,"detailLevel")||j(e,"detailLevel","summary")||j(e,"detailLevel","full"))}function Mr(e){return S(e)&&pe(d(e,"ref"))}function Br(e){if(!S(e)||!S(d(e,"variables")))return!1;let t=d(e,"variables");return Reflect.ownKeys(t).every(n=>typeof n=="string"&&A(t,n))?U(e,"stylesheets")||Ze(d(e,"stylesheets")):!1}function Fr(e){if(!j(e,"type","request")||!A(e,"id")||!A(e,"kind")||!ue(e,"payload"))return!1;let t=d(e,"kind"),n=d(e,"payload");switch(t){case"hit-test-at-point":case"start-text-edit-at-point":return kr(n);case"bridge-get-source-tree":return S(n)&&be(d(n,"composition"))&&me(n,["composition"]);case"get-scroll-metrics":case"clear-theme-override":return Er(n);case"bridge-get-history-status":case"bridge-undo":case"bridge-redo":return S(n)&&be(d(n,"composition"))&&me(n,["composition"]);case"bridge-get-source-file":return S(n)&&A(n,"path")&&be(d(n,"composition"))&&me(n,["path","composition"]);case"bridge-resolve-source-location":case"bridge-get-object-edit-context":case"bridge-get-class-name-source":return S(n)&&A(n,"key")&&be(d(n,"composition"))&&me(n,["key","composition"]);case"scroll-to":return S(n)&&F(n,"x")&&F(n,"y");case"scroll-by":return S(n)&&F(n,"deltaX")&&F(n,"deltaY");case"set-interaction-mode":return S(n)&&Le(n,"enabled");case"set-selection-visual":return S(n)&&j(n,"version",Be)&&pe(d(n,"ref"))&&j(n,"visible",!0);case"clear-selection-visual":return S(n)&&j(n,"version",Be);case"set-resize-visual":return S(n)&&j(n,"version",Fe)&&pe(d(n,"ref"))&&j(n,"visible",!0);case"clear-resize-visual":return S(n)&&j(n,"version",Fe);case"set-theme-override":return Br(n);case"get-theme-variables":return S(n)&&Ze(d(n,"names"));case"compute-drop-target-at-point":return S(n)&&F(n,"x")&&F(n,"y")&&(j(n,"dragKind","insert")||j(n,"dragKind","move"))&&(U(n,"movingRef")||pe(d(n,"movingRef")));case"observe-node-bounds":case"clear-node-bounds-observer":return S(n)&&(U(n,"ref")||pe(d(n,"ref")));case"apply-node-patch":return S(n)&&pe(d(n,"ref"))&&Or(d(n,"patch"))&&(U(n,"preview")||S(d(n,"preview"))&&A(d(n,"preview"),"sessionId")&&Qe(d(n,"preview"),"revision")&&xe(d(n,"preview"),"revision"));case"get-hit-by-ref":case"get-path-by-ref":case"restore-text-edit":case"clear-text-edit-rollback":return Mr(n);case"bridge-initialize-session":case"bridge-get-style-context":return S(n)&&be(d(n,"composition"))&&me(n,["composition"]);case"bridge-get-document":case"bridge-ensure-document-version":case"bridge-acknowledge-document-version":return S(n)&&be(d(n,"composition"))&&Pe(n,"minVersion")&&Pe(n,"version")&&me(n,["composition","minVersion","version"]);case"bridge-execute":{if(!S(n))return!1;let r=d(n,"request"),i=d(n,"composition"),o=S(r)?d(r,"composition"):null;return!be(i)||!S(r)||!be(o)?!1:Z({routeId:i.routeId,...i.templateId?{effectiveTemplateId:i.templateId}:{}})===Z({routeId:o.routeId,...o.templateId?{effectiveTemplateId:o.templateId}:{}})&&me(n,["composition","request"])}case"bridge-subscribe":case"bridge-unsubscribe":return S(n)&&A(n,"subscriptionId")&&be(d(n,"composition"))&&me(n,["subscriptionId","composition"]);default:return!1}}function qr(e){return j(e,"type","response")&&A(e,"id")&&Le(e,"ok")&&(U(e,"error")||A(e,"error"))}function Vr(e){if(!S(e))return!1;let t=d(e,"type");if(typeof t!="string"||!Je(d(e,"composition"))||!A(e,"siteId")||!A(e,"at"))return!1;switch(t){case"site-edit.document.changed":return A(e,"snapshotId")&&F(e,"version");case"site-edit.operation.planned":return A(e,"operationId")&&A(e,"baseSnapshotId")&&Ze(d(e,"changedFiles"));case"site-edit.operation.completed":return S(d(e,"result"));case"site-edit.operation.failed":return A(e,"requestId")&&S(d(e,"error"));case"site-edit.capability.changed":return Ze(d(e,"keys"));case"site-edit.graph.invalidated":return!0;case"site-edit.graph.ready":return F(e,"version");case"site-edit.graph.error":return A(e,"message");default:return!1}}var wr=new Set(["pointer-down","pointer-move","pointer-leave","pointer-up","pointer-cancel","pointer-click","pointer-double-click"]),mn=new Set(["e","s","se"]);function Kr(e,t){if(U(e,"resizeSession"))return!0;let n=d(e,"resizeSession");if(!S(n))return!1;let r=d(e,"pointerId"),i=d(n,"pointerId"),o=d(n,"phase"),s=d(n,"edge"),c=t==="pointer-down"?"start":t==="pointer-up"?"commit":t==="pointer-cancel"?"cancel":null;return d(n,"version")===1&&o===c&&A(n,"sessionId")&&String(d(n,"sessionId")).length>0&&typeof r=="number"&&Number.isInteger(r)&&typeof i=="number"&&Number.isInteger(i)&&r===i&&typeof s=="string"&&mn.has(s)&&d(e,"resizeEdge")===s&&pe(d(n,"ref"))&&["startWidth","startHeight","width","height"].every(a=>F(n,a))}function zr(e){if(!j(e,"type","event")||!A(e,"kind")||!S(d(e,"payload")))return!1;let t=d(e,"kind"),n=d(e,"payload");switch(t){case"text-edit-commit":case"text-edit-cancel":case"text-edit-exit":case"text-edit-input":return pe(d(n,"ref"))&&Re(n,"value")&&(U(n,"hit")||vt(d(n,"hit")));case"node-bounds-change":return vt(d(n,"hit"));case"geometry-batch":{let r=d(n,"reason");return br(n,"sequence")&&F(n,"sourceEventAt")&&F(n,"captureStartedAt")&&F(n,"capturedAt")&&(r==="scroll"||r==="resize"||r==="mutation")&&Ar(d(n,"snapshots"))}case"bridge-event":{let r=d(n,"event"),i=d(n,"composition");return!Vr(r)||!Je(i)?!1:A(n,"subscriptionId")&&Z(i)===Z(r.composition)}case"route-ready":return Je(d(n,"composition"))&&A(n,"editEngineVersion")&&F(n,"sequence")&&F(n,"version");case"bridge-status":{let r=d(n,"state");return(r==="connecting"||r==="ready"||r==="reconnecting"||r==="failed"||r==="reload-required")&&Je(d(n,"composition"))&&F(n,"sequence")&&Pe(n,"attempt")&&Pe(n,"retryInMs")&&Re(n,"messageKey")}case"scroll":{let r=d(n,"metrics");return S(r)&&["scrollX","scrollY","scrollWidth","scrollHeight","viewportWidth","viewportHeight"].every(i=>F(r,i))}default:return wr.has(t)&&F(n,"clientX")&&F(n,"clientY")&&Pe(n,"buttons")&&Pe(n,"pointerId")&&(U(n,"hoverVisualOwned")||Le(n,"hoverVisualOwned"))&&(U(n,"resizeEdge")||A(n,"resizeEdge")&&mn.has(d(n,"resizeEdge")))&&Kr(n,t)&&(d(n,"hit")===null||vt(d(n,"hit")))&&(U(n,"section")||d(n,"section")===null||Sr(d(n,"section")))&&(U(n,"sectionGap")||d(n,"sectionGap")===null||Ir(d(n,"sectionGap")))}}function Wr(e){if(!S(e))return!1;switch(d(e,"type")){case"request":return Fr(e);case"response":return qr(e);case"event":return zr(e);default:return!1}}var At="vcp-site-edit:route-ready",Pt="vcp-site-edit:bridge-status",mt="data-vcp-page-template-context",Ot="1",kt="data-vcp-route-id",Mt="data-vcp-effective-template-id",Dn=`[${mt}="${Ot}"]`,Ke="SITE_EDIT_COMPOSITION_MARKER_INVALID",On="SITE_EDIT_COMPOSITION_RENDER_MISMATCH",$r=80,Ur=120,Gr=1e3,jr="data-vcp-ui-component",kn="data-vcp-theme-preview",fn="::repeat-item#",et="components/ui",Hr=new Set(["article","aside","div","footer","form","header","li","main","nav","ol","section","select","table","tbody","tfoot","thead","tr","ul"]),Yr=new Set(["a","button","em","h1","h2","h3","h4","h5","h6","label","p","small","span","strong"]);function it(e,t=""){let n=qn(t),r=n&&(e===n||e.startsWith(`${n}/`))?e.slice(n.length)||"/":e,i=r.startsWith("/")?r:`/${r}`;return i==="/"?"/":i.replace(/\/+$/,"")}function Xr(e){let t=Array.from(e.querySelectorAll(Dn)).filter(s=>s.getAttribute(mt)===Ot);if(t.length===0)return null;if(t.length!==1)throw new Error(`${Ke}: expected exactly one marker`);let n=t[0],r=n.getAttribute(kt),i=n.getAttribute(Mt);if(!r?.trim()||!i?.trim())throw new Error(`${Ke}: marker fields are required`);let o=Qr(r);if(!o)throw new Error(`${Ke}: marker route is invalid`);return{routeId:o,effectiveTemplateId:i}}function Jr(e){let t=it(e.pathname,e.basePath??""),n=Xr(e.document);if(!n)return{routeId:t};if(n.routeId!==t)throw new Error(`${Ke}: marker route ${n.routeId} does not match pathname ${t}`);return n}function Qr(e){return!e.startsWith("/")||e.includes("?")||e.includes("#")?null:it(e)}function hn(e,t){return Z(e)===Z(t)}function xt(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function Zr(e,t){if(e.__VCP_SITE_EDIT_VERSION_LOGGED__)return;let n=e.console?.info;typeof n=="function"&&(e.__VCP_SITE_EDIT_VERSION_LOGGED__=!0,n.call(e.console,"[VCP Site Edit] runtime loaded",{bridge:t.versions?.bridge??"unknown",contracts:t.versions?.contracts??"unknown",documentVersion:t.documentVersion,engine:t.versions?.engine??"unknown",routeId:t.routeId}))}function Lr(e,t={}){if(t.explicit_ws_url)return t.explicit_ws_url.startsWith("/")?`${e.location.protocol==="https:"?"wss:":"ws:"}//${e.location.host}${t.explicit_ws_url}`:t.explicit_ws_url;let n=e.location.protocol==="https:"?"wss:":"ws:",r=t.port?`${e.location.hostname}:${t.port}`:e.location.host;return`${n}//${r}${t.path??"/__vcp/site-edit/bridge"}`}async function Hi(e=window,t={}){let n=Lr(e,{explicit_ws_url:t.explicit_ws_url,port:t.ws_port,path:t.wsPath||"/__vcp/site-edit/bridge"}),r=eo({bridgeUrl:n,options:t}),i=e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(i?.started){if(to(i.signature,r)){await i.syncRoute?.();return}i.cleanup?.()}let o={activeClient:null,activeBridge:null,cleanupFrameRuntime:(()=>{}),retryTimer:void 0,routeSequence:0,syncInFlight:null,syncScheduled:!1,disposed:!1,currentDocument:null,currentEntriesByKey:new Map,unsubscribeDocument:void 0,unsubscribeConnectionStatus:void 0,unbindBootstrapLifecycle:void 0,unbindRouteChange:void 0,unbindCompositionMarker:void 0},s,c=()=>e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__===s,a=t.create_client??(m=>new Ye({url:m,authKey:t.bridge_session_key})),l=t.schedule_after_navigation??_o,u=()=>{o.retryTimer&&(e.clearTimeout(o.retryTimer),o.retryTimer=void 0)},p=()=>Jr({pathname:e.location.pathname,document:e.document,basePath:t.basePath}),E=()=>Z(p()),v=()=>it(e.location.pathname,t.basePath||""),M=!!e.parent&&e.parent!==e,R=m=>{Ao(e,{...m,sequence:m.sequence??o.routeSequence})},P=m=>{o.currentDocument=m,o.currentEntriesByKey=new Map((m?.entries??[]).map(I=>[I.key,I]))},k=()=>{o.unsubscribeConnectionStatus?.(),o.unsubscribeConnectionStatus=void 0,o.unsubscribeDocument?.(),o.unsubscribeDocument=void 0},D=(m,I)=>{if(o.disposed||I!==o.routeSequence)return!1;try{return m===E()}catch{return!1}},L=async(m,I,B)=>{let q=o.activeBridge;if(!q)return null;let V=await q.getDocument(m);return D(I,B)&&P(V.data),V.data},g=()=>{k(),P(null);let m=o.activeBridge;o.activeBridge=null,m&&e.__VCP_SITE_EDIT__===m&&delete e.__VCP_SITE_EDIT__;let I=o.activeClient;o.activeClient=null,I?.disconnect()},ce=m=>m===s.compositionKey&&!!o.activeBridge&&(M||!!(o.currentDocument&&No(o.currentDocument,m)))&&Po(o.activeClient),ne=m=>Math.min(Gr*2**Math.max(0,m),8e3),ee=(m,I,B,q)=>{if(o.disposed)return;u();let V=ne(q);R({state:"reconnecting",composition:m,attempt:q,retryInMs:V,messageKey:"studio.status.previewBridgeConnecting"}),o.retryTimer=e.setTimeout(()=>{o.retryTimer=void 0,!(o.disposed||B!==o.routeSequence||!D(I,B))&&x(q+1).catch(re=>{let h;try{h=E()}catch{return}if(I===h){if(Ne(re)){R({state:"reload-required",composition:m,attempt:q,messageKey:"studio.errors.previewBridgeReloadRequired"});return}ee(m,I,o.routeSequence,q+1)}})},V)},ae=(m,I,B,q)=>{if(!D(I,B)||o.activeClient===null)return;if(Ne(q.message)){g(),u(),R({state:"reload-required",composition:m,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}let V=o.activeClient;k(),P(null);let re=o.activeBridge;o.activeBridge=null,re&&e.__VCP_SITE_EDIT__===re&&delete e.__VCP_SITE_EDIT__,o.activeClient=null,V?.disconnect(),ee(m,I,B,0)},X=m=>{let I;try{I=p()}catch{return}let B=Z(I),q=o.routeSequence;if(!(!D(B,q)||o.activeClient===null)){if(Ne(m)){g(),u(),R({state:"reload-required",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}Fn(m)&&ae(I,B,q,{state:"failed",message:Ue(m,"Site edit bridge request failed")})}};o.cleanupFrameRuntime=so(e,{getCurrentDocument:()=>o.currentDocument,getDocumentEntry:m=>o.currentEntriesByKey.get(m)??null,setCurrentDocument:P,onBridgeRequestError:m=>{X(m)}});let Y=async()=>x(0),x=async m=>{if(o.disposed)return;let I=p(),B=Z(I);if(ce(B))return;let q=o.syncInFlight;if(q?.compositionKey===B)return q.promise;let V=o.routeSequence+1,re=N(I,B,V,m);o.syncInFlight={compositionKey:B,sequence:V,promise:re};try{await re}finally{o.syncInFlight?.promise===re&&(o.syncInFlight=null)}},N=async(m,I,B,q)=>{o.routeSequence=B,u(),g(),R({state:q>0?"reconnecting":"connecting",composition:m,attempt:q,messageKey:q>0?"studio.status.previewBridgeConnecting":"studio.status.previewLoading"});let V=a(n),re=!1;o.activeClient=V,o.unsubscribeConnectionStatus=V.subscribeConnectionStatus?.(h=>{re&&(h.state==="closed"||h.state==="failed")&&ae(m,I,B,h)});try{if(await V.connect(),!D(I,B)){V.disconnect();return}let h=tn({composition:xt(m),client:V,initialDocument:io(m)});o.activeBridge=h,c()&&(e.__VCP_SITE_EDIT__=h),o.activeClient=V,o.unsubscribeDocument=h.subscribe(w=>{Z(w.composition)===I&&(w.type==="site-edit.document.changed"&&o.currentDocument&&w.version>o.currentDocument.version?L(xt(m),I,B).catch(()=>{}):w.type==="site-edit.graph.invalidated"&&$())}),c()&&(s.routeId=m.routeId,s.composition=m,s.compositionKey=I);let b=M?null:await h.initializeSession({composition:xt(m)}),f=b?.data.document??null;if(b&&(!hn(b.composition,m)||!hn(b.data.document.composition,m)))throw new Error(`${On}: initialize response does not match marker`);if(f&&P(f),!D(I,B)){V.disconnect();return}re=!0,R({state:"ready",composition:m,attempt:q,messageKey:"studio.status.previewReady"}),Zr(e,{documentVersion:f?.version??0,routeId:m.routeId,versions:t.runtime_versions}),f&&Bn(e,{composition:m,editEngineVersion:t.runtime_versions?.engine??"unknown",sequence:B,version:f.version})}catch(h){if(k(),o.activeClient===V&&(o.activeClient=null),o.activeBridge&&e.__VCP_SITE_EDIT__===o.activeBridge&&delete e.__VCP_SITE_EDIT__,o.activeBridge=null,V.disconnect(),P(null),!D(I,B))return;throw R({state:Ne(h)?"reload-required":"failed",composition:m,attempt:q,messageKey:Ne(h)?"studio.errors.previewBridgeReloadRequired":"studio.errors.previewBridgeDisconnected"}),h}},T=m=>{if(o.disposed)return;let I;try{I=p()}catch{R({state:"failed",composition:{routeId:it(e.location.pathname,t.basePath||"")},attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}let B=Z(I);if(Ne(m)){u(),R({state:"reload-required",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(Oo(m)||Do(m)){R({state:"failed",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}ee(I,B,o.routeSequence,0)},$=()=>{o.syncScheduled||o.disposed||(o.syncScheduled=!0,l(()=>{o.syncScheduled=!1,!o.disposed&&Y().catch(m=>T(m))}))},z=()=>{o.disposed||(o.disposed=!0,o.syncScheduled=!1,o.syncInFlight=null,u(),o.routeSequence+=1,o.unbindRouteChange?.(),o.unbindRouteChange=void 0,o.unbindCompositionMarker?.(),o.unbindCompositionMarker=void 0,o.unbindBootstrapLifecycle?.(),o.unbindBootstrapLifecycle=void 0,o.cleanupFrameRuntime(),g(),c()&&delete e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__)};if(s={started:!0,signature:r,syncRoute:Y,cleanup:z},e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__=s,o.unbindBootstrapLifecycle=ro(e,z),o.unbindRouteChange=xo(e,$,v),o.unbindCompositionMarker=To(e,$),t.defer_initial_sync){$();return}await Y()}function eo(e){return{basePath:qn(e.options.basePath??""),bridgeUrl:e.bridgeUrl,runtimeVersions:{bridge:e.options.runtime_versions?.bridge??null,contracts:e.options.runtime_versions?.contracts??null,engine:e.options.runtime_versions?.engine??null},sessionKeyFingerprint:no(e.options.bridge_session_key)}}function to(e,t){return!!e&&JSON.stringify(e)===JSON.stringify(t)}function no(e){if(!e)return null;let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return`${e.length}:${t.toString(36)}`}function ro(e,t){let n=()=>t();return e.addEventListener("pagehide",n),e.addEventListener("beforeunload",n),oo(t),()=>{e.removeEventListener("pagehide",n),e.removeEventListener("beforeunload",n)}}function oo(e){let t=import.meta.hot,n=import.meta.webpackHot,r=t??n;!r||typeof r.dispose!="function"||r.dispose(()=>e())}function io(e){return{siteId:"preview",snapshotId:"preview",composition:e,version:0,pageComposition:{status:"unsupported",reason:"ROUTE_RETURN_NOT_FOUND",diagnostics:[]},entries:[]}}function so(e=window,t={}){let n=null,r=null,i=null,o=null,s=null,c=null,a=0,l=null,u=null,p=null,E=null,v=null,M=0,R=new Map,P=typeof t.expectedSessionKey=="string"&&t.expectedSessionKey.length>0?t.expectedSessionKey:null,k=()=>{n?.(),n=null,r=null},D=()=>{i?.(),i=null,o?.(),o=null,s?.(),s=null,c?.cleanup(),c=null},L=(h,b,f)=>{let w=l?.sessionKey!==h||l?.sourceWindow!==b||l?.targetOrigin!==f;l={sessionKey:h,sourceWindow:b,targetOrigin:f},w&&(a=0,E=null,v=null)},g=(h,b)=>{let f=e.parent&&e.parent!==e?e.parent:null;return!f||b!==f?!1:!P||h===P},ce=()=>{for(let h of R.values())h();R.clear()},ne=h=>JSON.stringify([Z(h.composition),h.editEngineVersion,h.sequence,h.version]),ee=()=>!p||p.state==="ready",ae=h=>JSON.stringify([h.state,Z(h.composition),h.sequence,h.attempt??null,h.retryInMs??null,h.messageKey??null]),X=h=>{if(!ee())return;let b=ne(h);E!==b&&(o?.(),o=null,s?.(),s=null,c?.cleanup(),c=null,z({kind:"route-ready",payload:{composition:h.composition,editEngineVersion:h.editEngineVersion,sequence:h.sequence,version:h.version}}),l&&(E=b))},Y=h=>{let b=ae(h);v!==b&&(h.state!=="ready"&&(E=null,u=null),z({kind:"bridge-status",payload:h}),l&&(v=b))},x=h=>{u=h,X(h)},N=h=>{p=h,Y(h)},T=()=>{u&&X(u)},$=()=>{p&&Y(p)},z=h=>{l&&l.sourceWindow.postMessage(Ve({type:"event",...h},{sessionKey:l.sessionKey}),l.targetOrigin)},m=(h,b,f,w)=>{let W=t.getCurrentDocument?.()??null,te=zo(e.document,b.clientX,b.clientY),C=b.resizeSession?null:$e(e.document,b.clientX,b.clientY,W),H=C?fe(C,f==="full"?he(e.document,C,W):lt(e.document,C,W),t.getDocumentEntry,f):null,oe=Wo(e.document,te,W),le=Uo(e.document,b,W);w&&H&&(h==="pointer-click"||h==="pointer-double-click")&&(w.preventDefault(),w.stopPropagation(),typeof w.stopImmediatePropagation=="function"&&w.stopImmediatePropagation()),z({kind:h,payload:{clientX:b.clientX,clientY:b.clientY,buttons:Number(b.buttons??0),pointerId:b.pointerId,hoverVisualOwned:b.hoverVisualOwned,resizeEdge:b.resizeEdge,resizeSession:b.resizeSession,hit:H,section:oe,sectionGap:le}})},I=h=>{z({kind:"pointer-leave",payload:{clientX:h?.clientX??0,clientY:h?.clientY??0,buttons:Number(h?.buttons??0),hit:null,section:null,sectionGap:null}})},B=(h,b,f)=>{D(),l={sessionKey:h,sourceWindow:b,targetOrigin:f};let w=Pi(e.document),W=co(e,t.getCurrentDocument),te=null,C=null,H=null,oe=null,le=null,de=()=>{le!==null&&(e.clearTimeout(le),le=null)},Ce=()=>{H!==null&&(at(e,H),H=null),te=null},je=()=>{H=null;let y=te;te=null,y&&m("pointer-move",y,"summary")},Oe=y=>{de(),C=y,te=y,H===null&&(H=ct(e,je))},J=()=>{C&&Oe({...C,hoverVisualOwned:W?.updateAtPoint(C.clientX,C.clientY)??!1})},ve=e.document.documentElement,_=typeof ve.addEventListener=="function"?ve:e.document,O=y=>{if(c?.update(y)){y.preventDefault();return}Oe({clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),hoverVisualOwned:W?.update(y.target)??!1})},Q=y=>{let K=Eo(y.target),Xt=K?c?.begin(y,K):null;Xt&&(y.target?.setPointerCapture?.(y.pointerId),y.preventDefault(),y.stopPropagation()),m("pointer-down",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:Number(y.pointerId),resizeEdge:K,resizeSession:Xt??void 0},"full",y)},ye=y=>{let K=c?.finish(y,"commit")??null;if(K){m("pointer-up",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:Number(y.pointerId),resizeEdge:K.edge,resizeSession:K},"summary",y);return}m("pointer-up",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)},"summary",y)},_e=y=>{let K=c?.finish(y,"cancel")??null;m("pointer-cancel",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:K?.pointerId,resizeEdge:K?.edge,resizeSession:K??void 0},"summary",y)},Kt=y=>{let K=c?.finish(y,"cancel")??null;K&&m("pointer-cancel",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:K.pointerId,resizeEdge:K.edge,resizeSession:K},"summary",y)},zt=y=>{m("pointer-click",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)},"full",y)},Wt=y=>{m("pointer-double-click",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)},"full",y)},gt=y=>{if(y&&y.target!==_&&y.target!==ve)return;let K=y?{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)}:C;if(y&&K&&K.clientX>0&&K.clientX<e.innerWidth&&K.clientY>0&&K.clientY<e.innerHeight){J();return}if(Ce(),y){de(),le=e.setTimeout(()=>{le=null,C=null,I(K??void 0)},Ur);return}de(),C=null,W?.clear(),I(K??void 0)},$t=()=>gt(),Qn=()=>{oe=null,z({kind:"scroll",payload:{metrics:ot(e)}}),J()},Ut=()=>{oe===null&&(oe=ct(e,Qn))};e.document.addEventListener("pointerdown",Q,!0),e.document.addEventListener("pointermove",O,{passive:!0,capture:!0}),e.document.addEventListener("pointerup",ye,!0),e.document.addEventListener("pointercancel",_e,!0),e.document.addEventListener("lostpointercapture",Kt,!0),e.document.addEventListener("click",zt,!0),e.document.addEventListener("dblclick",Wt,!0),e.addEventListener("scroll",Ut,{passive:!0}),e.addEventListener("resize",J,{passive:!0}),e.addEventListener("blur",$t),e.document.addEventListener("load",J,!0),_.addEventListener("pointerleave",gt,!0);let He=e.visualViewport;He?.addEventListener?.("resize",J,{passive:!0}),He?.addEventListener?.("scroll",J,{passive:!0});let Gt=e.ResizeObserver,jt=typeof Gt=="function"?new Gt(J):null;jt?.observe(ve);let Ht=e.MutationObserver,Yt=typeof Ht=="function"?new Ht(J):null;Yt?.observe(ve,{attributes:!0,childList:!0,subtree:!0}),i=()=>{Ce(),de(),C=null,W?.cleanup(),jt?.disconnect(),Yt?.disconnect(),oe!==null&&(at(e,oe),oe=null),w(),e.document.removeEventListener("pointerdown",Q,!0),e.document.removeEventListener("pointermove",O,!0),e.document.removeEventListener("pointerup",ye,!0),e.document.removeEventListener("pointercancel",_e,!0),e.document.removeEventListener("lostpointercapture",Kt,!0),e.document.removeEventListener("click",zt,!0),e.document.removeEventListener("dblclick",Wt,!0),e.removeEventListener("scroll",Ut),e.removeEventListener("resize",J),e.removeEventListener("blur",$t),e.document.removeEventListener("load",J,!0),_.removeEventListener("pointerleave",gt,!0),He?.removeEventListener?.("resize",J),He?.removeEventListener?.("scroll",J)}},q=h=>{let b=h.detail;b?.composition?.routeId&&x(b)},V=h=>{let b=h.detail;b?.state&&N(b)},re=h=>{let b=h.data;if(!un(b)||b.body.type!=="request"||b.body.kind!=="apply-node-patch"&&b.body.kind!=="get-hit-by-ref"&&b.body.kind!=="get-path-by-ref"&&b.body.kind!=="get-scroll-metrics"&&b.body.kind!=="scroll-to"&&b.body.kind!=="scroll-by"&&b.body.kind!=="set-interaction-mode"&&b.body.kind!=="set-selection-visual"&&b.body.kind!=="clear-selection-visual"&&b.body.kind!=="set-resize-visual"&&b.body.kind!=="clear-resize-visual"&&b.body.kind!=="set-theme-override"&&b.body.kind!=="clear-theme-override"&&b.body.kind!=="get-theme-variables"&&b.body.kind!=="compute-drop-target-at-point"&&b.body.kind!=="observe-node-bounds"&&b.body.kind!=="clear-node-bounds-observer"&&b.body.kind!=="restore-text-edit"&&b.body.kind!=="clear-text-edit-rollback"&&b.body.kind!=="start-text-edit-at-point"&&b.body.kind!=="hit-test-at-point"&&!Sn(b.body))return;let f=b.body,w=typeof b.sessionKey=="string"?b.sessionKey:null,W=h.source,te=h.origin;if(!w||!te||!W||typeof W.postMessage!="function"||!g(w,W))return;if(l){if(l.sourceWindow!==W||l.targetOrigin!==te)return;l.sessionKey!==w&&(k(),D(),ce(),l=null)}L(w,W,te),$(),T();let C=H=>{let oe=typeof f.id=="string"?f.id:"unknown";W.postMessage(Ve({id:oe,...H},{sessionKey:w}),te)};try{if(Sn(f)){Co({message:f,sendEvent:_=>{W.postMessage(Ve({type:"event",..._},{sessionKey:w}),te)},sendResponse:C,subscriptions:R,getCurrentDocument:t.getCurrentDocument,setCurrentDocument:t.setCurrentDocument,onBridgeRequestError:t.onBridgeRequestError,nextRouteReadySequence:()=>M+=1,windowLike:e});return}if(f.kind==="apply-node-patch"){let _=ge(e.document,f.payload.ref,t.getCurrentDocument?.()??null);if(!_){C({type:"response",ok:!1,error:"No editable element found for patch target"});return}let O=f.payload.preview,Q=O?hi(O.sessionId,f.payload.ref):null;if(Q&&O){let ye=we.get(Q)??-1;if(O.revision<ye){C({type:"response",ok:!0,result:{applied:!1,appliedRevision:O.revision,stale:!0,latestRevision:ye}});return}if(O.revision===ye){C({type:"response",ok:!0,result:{applied:!1,appliedRevision:O.revision,duplicate:!0,latestRevision:ye}});return}}if(mi(_,f.payload.patch),Q&&O&&gi(Q,O.revision),O?.responseDetail==="none"){C({type:"response",ok:!0,result:{applied:!0,appliedRevision:O.revision}});return}C({type:"response",ok:!0,result:fe(_,he(e.document,_,t.getCurrentDocument?.()??null),t.getDocumentEntry,O?.responseDetail??"full")});return}if(f.kind==="get-hit-by-ref"){let _=ge(e.document,f.payload.ref,t.getCurrentDocument?.()??null);if(!_){C({type:"response",ok:!1,error:"No editable element found for hit target"});return}C({type:"response",ok:!0,result:fe(_,he(e.document,_,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full")});return}if(f.kind==="get-path-by-ref"){let _=ge(e.document,f.payload.ref,t.getCurrentDocument?.()??null);if(!_){C({type:"response",ok:!1,error:"No editable element found for path target"});return}let O=[],Q=_;for(;Q;)Q.getAttribute("data-vcp-edit-key")&&O.push(fe(Q,he(e.document,Q,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full")),Q=Q.parentElement;C({type:"response",ok:!0,result:O.reverse()});return}if(f.kind==="restore-text-edit"||f.kind==="clear-text-edit-rollback"){let _=f.payload.ref;if(f.kind==="clear-text-edit-rollback"){r&&Cn(r.ref,_)&&(r=null),C({type:"response",ok:!0,result:{cleared:!0}});return}if(!r||!Cn(r.ref,_)){C({type:"response",ok:!1,error:"No pending text edit rollback snapshot"});return}let O=Bo(e.document,r,t.getCurrentDocument?.()??null);r=null,C(O?{type:"response",ok:!0,result:{restored:!0}}:{type:"response",ok:!1,error:"Failed to restore text edit snapshot"});return}if(f.kind==="get-scroll-metrics"){C({type:"response",ok:!0,result:ot(e)});return}if(f.kind==="scroll-to"){let _=Number(f.payload.x),O=Number(f.payload.y);if(!Number.isFinite(_)||!Number.isFinite(O)){C({type:"response",ok:!1,error:"Invalid scroll position"});return}e.scrollTo({left:_,top:O}),C({type:"response",ok:!0,result:ot(e)});return}if(f.kind==="scroll-by"){let _=Number(f.payload.deltaX),O=Number(f.payload.deltaY);if(!Number.isFinite(_)||!Number.isFinite(O)){C({type:"response",ok:!1,error:"Invalid scroll delta"});return}e.scrollBy({left:_,top:O}),C({type:"response",ok:!0,result:{...ot(e),scrolled:!0}});return}if(f.kind==="set-interaction-mode"){f.payload.enabled?B(w,W,te):l?.sourceWindow===W&&l.targetOrigin===te&&l.sessionKey===w&&D(),C({type:"response",ok:!0,result:{interactionEnabled:f.payload.enabled}});return}if(f.kind==="set-selection-visual"){s?.(),s=null,i&&(s=uo(e,f.payload.ref,t.getCurrentDocument)),C({type:"response",ok:!0,result:{version:Be,active:!!s}});return}if(f.kind==="clear-selection-visual"){s?.(),s=null,C({type:"response",ok:!0,result:{version:Be,active:!1}});return}if(f.kind==="set-resize-visual"){c?.cleanup(),c=null,i&&(c=So(e,f.payload.ref,t.getCurrentDocument)),C({type:"response",ok:!0,result:{version:Fe,active:!!c}});return}if(f.kind==="clear-resize-visual"){c?.cleanup(),c=null,C({type:"response",ok:!0,result:{version:Fe,active:!1}});return}if(f.kind==="set-theme-override"){yi(e.document,f.payload),C({type:"response",ok:!0,result:{themeOverrideApplied:!0}});return}if(f.kind==="clear-theme-override"){bi(e.document),C({type:"response",ok:!0,result:{themeOverrideCleared:!0}});return}if(f.kind==="get-theme-variables"){C({type:"response",ok:!0,result:Ei(e.document,f.payload.names)});return}if(f.kind==="compute-drop-target-at-point"){let _=Number(f.payload?.x),O=Number(f.payload?.y);if(!Number.isFinite(_)||!Number.isFinite(O)){C({type:"response",ok:!1,error:"Invalid drop target point"});return}C({type:"response",ok:!0,result:ci(e,_,O,f.payload.dragKind,f.payload.movingRef,t.getCurrentDocument?.()??null,t.getDocumentEntry)});return}if(f.kind==="observe-node-bounds"){let _=f.payload.ref;if(!_){C({type:"response",ok:!1,error:"Missing bounds observer target"});return}let O=ge(e.document,_,t.getCurrentDocument?.()??null);if(!O){C({type:"response",ok:!1,error:"No editable element found for bounds observer target"});return}o?.(),o=ti(e,O,_,t.getCurrentDocument,(Q,ye,_e)=>{a+=1,z({kind:"geometry-batch",payload:{sequence:a,sourceEventAt:_e.sourceEventAt,captureStartedAt:_e.captureStartedAt,capturedAt:_e.capturedAt,reason:Q,snapshots:[ye]}})}),C({type:"response",ok:!0,result:{observing:!0}}),z({kind:"node-bounds-change",payload:{hit:fe(O,_,t.getDocumentEntry,"summary",e)}});return}if(f.kind==="clear-node-bounds-observer"){o?.(),o=null,C({type:"response",ok:!0,result:{cleared:!0}});return}if(f.kind!=="hit-test-at-point"&&f.kind!=="start-text-edit-at-point")return;let H=Number(f.payload?.x),oe=Number(f.payload?.y);if(!Number.isFinite(H)||!Number.isFinite(oe)){C({type:"response",ok:!1,error:"Invalid text edit point"});return}let le=f.kind==="hit-test-at-point"?$e(e.document,H,oe,t.getCurrentDocument?.()??null):qo(e.document,H,oe,t.getCurrentDocument?.()??null,t.getDocumentEntry);if(!le){C({type:"response",ok:!1,error:f.kind==="hit-test-at-point"?"No editable element at point":"No editable text element at point"});return}let de=f.kind==="start-text-edit-at-point"?le:null,Ce=f.kind==="hit-test-at-point"?le:de.element,je=f.payload.detailLevel??"full",Oe=je==="full"?he(e.document,Ce,t.getCurrentDocument?.()??null):lt(e.document,Ce,t.getCurrentDocument?.()??null),J=de&&typeof de.textSegmentIndex=="number"?{...Oe,textSegmentIndex:de.textSegmentIndex}:Oe,ve=fe(Ce,J,t.getDocumentEntry,je);if(f.kind==="hit-test-at-point"){C({type:"response",ok:!0,result:ve});return}k(),n=vi(e,Ce,J,_=>{W.postMessage(Ve({type:"event",..._},{sessionKey:w}),te)},{...de?.textNode?{textNode:de.textNode}:{},onCommitSnapshot:_=>{r=_}}),C({type:"response",ok:!0,result:{ref:J}})}catch(H){C({type:"response",ok:!1,error:H instanceof Error?H.message:"Failed to start text edit"})}};return e.addEventListener("message",re),e.addEventListener(At,q),e.addEventListener(Pt,V),()=>{k(),D(),l=null,ce(),e.removeEventListener("message",re),e.removeEventListener(At,q),e.removeEventListener(Pt,V)}}function co(e,t){let n=e.document,r=n.head??n.documentElement;if(typeof r?.appendChild!="function")return null;let i="data-vcp-designer-hover-visual",o="data-vcp-designer-selection-visual",s=n.createElement("style");s.setAttribute("data-vcp-designer-hover-visual-style","true"),s.textContent=`
1
+ function Z(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function Zt(e){if(!tr(e))return e;let t=new Map,n=e.pageComposition.status==="supported"?e.pageComposition.placementUnitKeys:[],r=new Map(e.dynamicDataSummaries??[]),i=o=>{let s=t.get(o);if(s)return s;let c=e.nodes[o];if(!c)throw new Error(`Missing compact document node ${o}`);let[a,l]=c,u=e.tokens[l];if(typeof u!="string")throw new Error(`Missing compact document token ${l}`);let p=`${a===null?"":i(a)}${u}`;return t.set(o,p),p};return{siteId:e.siteId,snapshotId:e.snapshotId,composition:{...e.composition},routeId:e.composition.routeId,version:e.version,pageComposition:e.pageComposition,entries:e.entries.map((o,s)=>{let[c,a,l]=o,u=l===void 0?void 0:n[l];if(l!==void 0&&!u)throw new Error(`Missing page composition unit ${l}`);return{key:i(c),...u?{pageCompositionUnitKey:u}:{},operationSummary:er(a),...r.get(s)?{dynamicDataSummary:r.get(s)}:{}}})}}function er(e){return{canUpdateText:(e&1)!==0,canInsertChild:(e&2)!==0,canMove:(e&4)!==0,canRemove:(e&8)!==0}}function tr(e){if(typeof e!="object"||e===null)return!1;let t=e;if(t.encoding!=="segment-trie-v1"||typeof t.siteId!="string"||typeof t.snapshotId!="string"||!nr(t.composition)||typeof t.routeId!="string"||t.routeId!==t.composition.routeId||!Number.isInteger(t.version)||t.version<0||!yt(t.pageComposition)||!Array.isArray(t.tokens)||!t.tokens.every(i=>typeof i=="string")||!Array.isArray(t.nodes)||!Array.isArray(t.entries))return!1;let n=t.nodes;if(!n.every((i,o)=>Array.isArray(i)&&i.length===2&&(i[0]===null||Ae(i[0])&&i[0]<o)&&Ae(i[1])&&i[1]<t.tokens.length)||!t.entries.every(i=>Array.isArray(i)&&(i.length===2||i.length===3)&&Ae(i[0])&&i[0]<n.length&&Ae(i[1])&&i[1]<=15&&(i.length===2||Ae(i[2]))))return!1;let r=t.dynamicDataSummaries;return r===void 0||Array.isArray(r)&&r.every(i=>Array.isArray(i)&&i.length===2&&Ae(i[0])&&i[0]<t.entries.length&&yt(i[1]))}function yt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function nr(e){return!yt(e)||typeof e.routeId!="string"?!1:e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string"}function Ae(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0}var Ee=class e{constructor(){}static parseMessage(t,n={}){let r=JSON.parse(t);if(!e.isMessage(r,n))throw new Error("Invalid site edit bridge message");return r}static stringifyMessage(t){return JSON.stringify(t)}static extractRequestInfo(t){if(ie(t)&&ie(t.payload)){let n=typeof t.payload.id=="string"?t.payload.id:"unknown",r=this.isRequestKind(t.payload.kind)?t.payload.kind:"get-document";return{id:n,kind:r}}return{id:"unknown",kind:"get-document"}}static isRequestKind(t){return t==="initialize-session"||t==="get-document"||t==="get-history-status"||t==="get-style-context"||t==="get-object-edit-context"||t==="get-class-name-source"||t==="get-source-tree"||t==="get-source-file"||t==="resolve-source-location"||t==="execute"||t==="undo"||t==="redo"}static isMessage(t,n={}){return!ie(t)||typeof t.type!="string"?!1:t.type==="request"?rr(t.payload,n):t.type==="response"||t.type==="error"?ie(t.payload)&&typeof t.payload.id=="string":t.type==="event"?ie(t.payload)&&ie(t.payload.event):t.type==="auth"?ie(t.payload)&&typeof t.payload.key=="string":t.type==="auth-ok"&&ie(t.payload)&&t.payload.ok===!0}};function rr(e,t){if(!ie(e)||typeof e.id!="string"||!Ee.isRequestKind(e.kind))return!1;let n=Et(e.composition);switch(e.kind){case"initialize-session":return n&&(e.mutationContext===void 0||bt(e.mutationContext));case"get-document":case"get-style-context":return n;case"get-object-edit-context":case"get-class-name-source":case"resolve-source-location":return typeof e.key=="string"&&n;case"get-history-status":return n;case"get-source-tree":return n;case"get-source-file":return typeof e.path=="string"&&n;case"execute":return n&&or(e.request)&&(e.request.mutationContext===void 0||bt(e.request.mutationContext))&&(t.validateOperationRequest?.(e.request)??!0);case"undo":case"redo":return n&&e.mutationContext===void 0||n&&bt(e.mutationContext)}}function or(e){return ie(e)&&typeof e.id=="string"&&typeof e.siteId=="string"&&typeof e.baseSnapshotId=="string"&&Et(e.composition)&&typeof e.kind=="string"&&ie(e.target)&&(e.target.kind!=="route"||Et(e.target.composition))&&typeof e.documentVersion=="number"&&Number.isInteger(e.documentVersion)&&e.documentVersion>=0&&ie(e.params)}function Et(e){return ie(e)&&typeof e.routeId=="string"&&e.routeId.length>0&&(e.templateId===void 0||typeof e.templateId=="string"&&e.templateId.length>0)&&Object.keys(e).every(t=>t==="routeId"||t==="templateId")}function ie(e){return typeof e=="object"&&e!==null}function bt(e){return ie(e)&&typeof e.editingSessionId=="string"&&e.editingSessionId.length>0&&typeof e.lockId=="string"&&e.lockId.length>0&&typeof e.ownerId=="string"&&e.ownerId.length>0&&typeof e.leaseAssertion=="string"&&e.leaseAssertion.length>0}var ir="vcp:designer:trace",sr="designer_trace",Lt="__VCP_DESIGNER_TRACE__";var cr=/(authorization|cookie|token|secret|providerTrace|headers?|sourceCode|rawSource|fullSource)/i;function ar(e=globalThis){let t=e;try{if(t.localStorage?.getItem(ir)==="1")return!0}catch{}try{let n=t.location?.search??"";return new URLSearchParams(n).get(sr)==="1"}catch{return!1}}function Se(e,t={},n=globalThis){if(!ar(n))return;let r={type:e,timestamp:Date.now(),payload:ur(t)},i=n,o=i[Lt]??[];o.push(r),o.length>1e3&&o.splice(0,o.length-1e3),i[Lt]=o;let s=n.console?.debug;r.payload.diagnosticOnly!==!0&&typeof s=="function"&&s.call(n.console,"[designer-trace]",r)}function ur(e){return St(e,0)}function St(e,t){if(t>4)return"[truncated]";if(Array.isArray(e))return e.map(r=>St(r,t+1));if(!e||typeof e!="object")return e;let n={};for(let[r,i]of Object.entries(e)){if(cr.test(r)){n[r]="[redacted]";continue}n[r]=St(i,t+1)}return n}var Ye=class{constructor(t){this.options=t,this.socket=null,this.connectPromise=null,this.connectAttempt=null,this.connectionState="idle",this.intentionalClose=!1,this.sequence=0,this.pending=new Map,this.listeners=new Set,this.connectionStatusListeners=new Set}connect(){return this.socket?.readyState===It&&this.connectionState==="open"?(this.setConnectionState("open"),Promise.resolve()):this.connectPromise?this.connectPromise:(this.intentionalClose=!1,this.setConnectionState("connecting"),this.connectPromise=new Promise((t,n)=>{let r;try{r=this.createSocket(this.options.url)}catch(c){let a=ke(c,"WebSocket failed");this.socket=null,this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("failed",a.message),n(a);return}let i={socket:r,settled:!1,reject:n};this.connectAttempt=i,this.socket=r;let o=()=>{this.socket!==r||this.connectAttempt!==i||(i.settled=!0,this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("open"),t())},s=(c,a)=>{this.cleanupSocket(r,c,a)};r.onopen=()=>{if(!(this.socket!==r||this.connectAttempt!==i)){if(this.options.authKey){try{r.send(Ee.stringifyMessage({type:"auth",payload:{key:this.options.authKey}}))}catch(c){s(ke(c,"WebSocket auth failed"),"failed")}return}o()}},r.onerror=c=>{if(this.socket!==r)return;let a=ke(c,"WebSocket failed");s(a,"failed")},r.onmessage=c=>{if(this.socket===r){if(this.options.authKey&&this.connectAttempt===i&&!i.settled){this.handleAuthHandshakeMessage(c.data,r,i,()=>{o()});return}this.handleMessage(c.data)}},r.onclose=c=>{if(this.socket!==r)return;let a=this.intentionalClose,l=new Error(mr(c,{intentional:a}));s(l,a?"closed":"failed")}}),this.connectPromise)}disconnect(){this.intentionalClose=!0,this.setConnectionState("closing");let t=this.socket;if(!t){this.rejectAll(new Error("WebSocket disconnected")),this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("closed");return}this.cleanupSocket(t,new Error("WebSocket disconnected"),"closed")}getConnectionState(){return this.connectionState}subscribeConnectionStatus(t){return this.connectionStatusListeners.add(t),t({state:this.connectionState}),()=>{this.connectionStatusListeners.delete(t)}}getDocument(t){let n=this.selector(t);return this.request("get-document",{composition:n})}async initializeSession(t){let n=this.selector(t.composition);return await this.request("initialize-session",{composition:n,...t.mutationContext?{mutationContext:t.mutationContext}:{}})}getHistoryStatus(t){return this.request("get-history-status",{composition:this.selector(t)})}getStyleContext(t){let n=this.selector(t);return this.request("get-style-context",{composition:n})}getObjectEditContext(t,n){let r=this.selector(n);return this.request("get-object-edit-context",{key:t,composition:r})}getClassNameSource(t,n){let r=this.selector(n);return this.request("get-class-name-source",{key:t,composition:r})}getSourceTree(t){return this.request("get-source-tree",{composition:this.selector(t)})}getSourceFile(t){return this.request("get-source-file",{path:t.path,composition:this.selector(t.composition)})}resolveSourceLocation(t){return this.request("resolve-source-location",{key:t.key,composition:this.selector(t.composition)})}execute(t,n){let r=Xe(t),i={...t,composition:Ie(r)};return this.request("execute",{request:i})}undo(t,n){return this.request("undo",{composition:this.selector(t)})}redo(t,n){return this.request("redo",{composition:this.selector(t)})}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}selector(t){return Ie(t)}request(t,n){let r=this.socket;if(!r||r.readyState!==It||this.connectionState!=="open")return Promise.reject(new Error(`WebSocket is not open (state: ${this.connectionState}, readyState: ${r?.readyState??"none"})`));let i=`${t}-${this.sequence+=1}`,o=yr(i,t,n);return Se("bridge.request",{id:i,kind:t,routeId:typeof n.routeId=="string"?n.routeId:null,key:typeof n.key=="string"?n.key:null,operationKind:en(n.request,"kind"),documentVersion:en(n.request,"documentVersion")}),new Promise((s,c)=>{let a=this.resolveRequestTimeoutMs(t),l=a>0?setTimeout(()=>{let u=this.pending.get(i);u&&(this.pending.delete(i),Se("bridge.response",{id:i,kind:t,ok:!1,timedOut:!0}),u.reject(new Error(`Bridge request timed out after ${a}ms: ${t}`)))},a):null;l?.unref?.(),this.pending.set(i,{kind:t,timeout:l,resolve:u=>s(u),reject:c});try{r.send(Ee.stringifyMessage(o))}catch(u){let p=ke(u,"WebSocket send failed");this.clearPendingRequest(i),c(p),this.cleanupSocket(r,p,"failed")}})}handleAuthHandshakeMessage(t,n,r,i){try{if(Ee.parseMessage(t).type==="auth-ok"){i();return}throw new Error("Bridge authentication failed")}catch(o){let s=ke(o,"Bridge authentication failed");this.connectAttempt===r&&this.cleanupSocket(n,s,"failed")}}handleMessage(t){let n=Ee.parseMessage(t);if(n.type==="event"){for(let i of this.listeners)i(n.payload.event);return}if(n.type!=="response"&&n.type!=="error")return;let r=this.pending.get(n.payload.id);if(r){if(this.clearPendingRequest(n.payload.id),n.type==="error"){Se("bridge.response",{id:n.payload.id,kind:r.kind,ok:!1});let i=new Error(n.payload.message);n.payload.code&&(i.code=n.payload.code),r.reject(i);return}Se("bridge.response",{id:n.payload.id,kind:r.kind,ok:!0,resultVersion:fr(n.payload.result)}),r.resolve(r.kind==="get-document"?{...n.payload.result,data:on(n.payload.result.data,n.payload.result.composition)}:r.kind==="initialize-session"?hr(n.payload.result):n.payload.result)}}rejectAll(t){for(let[n,r]of[...this.pending])this.clearPendingRequest(n),r.reject(t)}clearPendingRequest(t){let n=this.pending.get(t);n&&(n.timeout&&clearTimeout(n.timeout),this.pending.delete(t))}resolveRequestTimeoutMs(t){let n=this.options.requestTimeoutMsByKind?.[t];return typeof n=="number"?Math.max(0,n):typeof this.options.requestTimeoutMs=="number"?Math.max(0,this.options.requestTimeoutMs):pr[t]??dr}cleanupSocket(t,n,r){if(this.socket===t&&(this.socket=null),this.connectAttempt?.socket===t){let i=this.connectAttempt;this.connectAttempt=null,i.settled||(i.settled=!0,i.reject(n))}this.connectPromise=null,this.rejectAll(n),this.setConnectionState(r,n.message),t.onopen=null,t.onmessage=null,t.onerror=null,t.onclose=null;try{(t.readyState===lr||t.readyState===It)&&t.close()}catch{}}setConnectionState(t,n){if(this.connectionState===t&&!n)return;this.connectionState=t;let r={state:t,...n?{message:n}:{}};this.options.onConnectionStatus?.(r);for(let i of this.connectionStatusListeners)i(r)}createSocket(t){if(this.options.createSocket)return this.options.createSocket(t);if(typeof WebSocket>"u")throw new Error("Site edit preview bridge requires WebSocket");return new WebSocket(t)}},lr=0,It=1,dr=15e3,pr={"get-source-tree":1e4,"get-source-file":1e4,"resolve-source-location":1e4,execute:6e4,undo:2e4,redo:2e4};function ke(e,t){return e instanceof Error?e:new Error(t)}function mr(e,t){return t.intentional?"WebSocket disconnected":e?.code===1008?e.reason?`Bridge session authentication failed: ${e.reason}`:"Bridge session authentication failed":e?.reason?`WebSocket closed: ${e.reason}`:typeof e?.code=="number"&&e.code!==1005?`WebSocket closed with code ${e.code}`:"WebSocket closed"}function en(e,t){if(!e||typeof e!="object")return null;let r=e[t];return typeof r=="string"||typeof r=="number"?r:null}function fr(e){if(!e||typeof e!="object")return null;let t=e,n=t.data?.resultVersion??t.data?.version??null;return typeof n=="number"?n:null}function rn(e){let t="composition"in e?Ie(e.composition):Ie({routeId:e.routeId});return new Ct({composition:t,initialDocument:e.initialDocument,client:e.client})}var Ct=class{constructor(t){this.params=t,this.refreshInFlight=null,this.objectGeneration=0,this.styleGeneration=0,this.editContextCache=new Map,this.editContextInFlight=new Map,this.classNameSourceCache=new Map,this.classNameSourceInFlight=new Map,this.styleContextCache=new Map,this.styleContextInFlight=new Map,this.composition=Ie(t.composition);let n=t.initialDocument.composition.effectiveTemplateId;if(n!==void 0&&(this.composition.templateId===void 0||this.composition.templateId!==n))throw new Error(`Site edit bridge requires a matching templateId for initial document composition ${JSON.stringify(t.initialDocument.composition)}`);this.currentDocument=t.initialDocument,this.observedDocumentVersion=t.initialDocument.version,this.sessionInitialized=!tn(t.initialDocument),this.activeCompositionContext=this.sessionInitialized?{...t.initialDocument.composition}:null}async getDocument(t){this.requireBoundComposition(t);let n=tn(this.currentDocument);return(n||this.currentDocument.version<this.observedDocumentVersion)&&(this.currentDocument=await this.refreshSnapshot(n?void 0:this.observedDocumentVersion,"get-document"),this.sessionInitialized=!0),{ok:!0,data:this.currentDocument}}async initializeSession(t){let n=this.requireBoundComposition(t.composition);if(!this.params.client.initializeSession)throw new Error("Site edit bridge client does not support initialize-session");let r=await this.params.client.initializeSession({...t,composition:n});return this.currentDocument=r.data.document,this.observedDocumentVersion=r.data.document.version,this.activeCompositionContext={...r.composition},this.sessionInitialized=!0,this.clearObjectCaches(),r}async getHistoryStatus(t){return this.params.client.getHistoryStatus(this.requireBoundComposition(t))}async getStyleContext(t){let n=this.requireBoundComposition(t),r=Me(n),i=this.styleContextCache.get(r);if(i?.generation===this.styleGeneration)return{ok:!0,data:i.value};let o=this.styleContextInFlight.get(r);if(o?.generation===this.styleGeneration)return o.request;let s=this.styleGeneration,c=this.params.client.getStyleContext(n).then(a=>(this.styleGeneration===s&&this.styleContextCache.set(r,{generation:s,value:a.data}),a)).finally(()=>{this.styleContextInFlight.get(r)?.request===c&&this.styleContextInFlight.delete(r)});return this.styleContextInFlight.set(r,{generation:s,request:c}),c}async ensureDocumentVersion(t,n){this.requireBoundComposition(t);let r=await this.refreshSnapshot(n,"ensure-version");if(r.version<n)throw new Error(`Document refresh returned version ${r.version}, expected at least ${n}`);return{ok:!0,data:r}}async acknowledgeDocumentVersion(t,n){if(this.requireBoundComposition(t),n>this.currentDocument.version){if(this.currentDocument.pageComposition.status==="supported"){let r=await this.refreshSnapshot(n,"ensure-version");if(r.version<n)throw new Error(`Document refresh returned version ${r.version}, expected at least ${n}`);return{ok:!0,data:r}}this.currentDocument={...this.currentDocument,version:n},this.clearObjectCaches({preserveStyleContext:!0})}return this.observedDocumentVersion=Math.max(this.observedDocumentVersion,n),{ok:!0,data:this.currentDocument}}async getObjectEditContext(t,n){let r=this.requireBoundComposition(n),i=this.objectCacheKey(t,r),o=this.editContextCache.get(i);if(o)return{ok:!0,data:o};let s=this.editContextInFlight.get(i);if(s)return s;let c=this.objectGeneration,a=this.params.client.getObjectEditContext(t,r).then(l=>(this.objectGeneration===c&&this.editContextCache.set(i,l.data),l)).finally(()=>{this.editContextInFlight.get(i)===a&&this.editContextInFlight.delete(i)});return this.editContextInFlight.set(i,a),a}async getClassNameSource(t,n){let r=this.requireBoundComposition(n),i=this.objectCacheKey(t,r),o=this.classNameSourceCache.get(i);if(o)return o;let s=this.classNameSourceInFlight.get(i);if(s)return s;let c=this.objectGeneration,a=this.params.client.getClassNameSource(t,r).then(l=>(this.objectGeneration===c&&this.classNameSourceCache.set(i,l),l)).finally(()=>{this.classNameSourceInFlight.get(i)===a&&this.classNameSourceInFlight.delete(i)});return this.classNameSourceInFlight.set(i,a),a}async getSourceTree(t){return this.params.client.getSourceTree(this.requireBoundComposition(t))}async getSourceFile(t){return this.params.client.getSourceFile({path:t.path,composition:this.requireBoundComposition(t.composition)})}async resolveSourceLocation(t){return this.params.client.resolveSourceLocation({key:t.key,composition:this.requireBoundComposition(t.composition)})}async execute(t,n){let r=Xe(t);r&&this.composition.templateId!==void 0&&this.requireBoundComposition(r);let i={...t,composition:r??this.composition};return this.params.client.execute(i)}async undo(t,n){return this.params.client.undo(this.requireBoundComposition(t))}async redo(t,n){return this.params.client.redo(this.requireBoundComposition(t))}subscribe(t){return this.params.client.subscribe(n=>{if(n.type==="site-edit.document.changed"&&this.sessionInitialized&&this.isActiveComposition(n.composition)){this.observedDocumentVersion=Math.max(this.observedDocumentVersion,n.version),n.version>this.currentDocument.version&&this.clearObjectCaches(),t(n);return}t(n)})}async refreshSnapshot(t,n="ensure-version"){if(typeof t=="number"&&this.currentDocument.version>=t)return Se("bridge.document-refresh",{composition:this.composition,routeId:this.composition.routeId,minVersion:t,currentVersion:this.currentDocument.version,deduped:!0,skipped:!0,source:n}),this.currentDocument;let r=Me(this.composition),i=this.refreshInFlight;if(i?.compositionKey===r){Se("bridge.document-refresh",{composition:this.composition,routeId:this.composition.routeId,minVersion:t,currentVersion:this.currentDocument.version,deduped:!0,source:n});let s=await i.request;if(typeof t!="number"||s.version>=t||this.currentDocument.version>=t)return this.currentDocument}Se("bridge.document-refresh",{composition:this.composition,routeId:this.composition.routeId,minVersion:t,currentVersion:this.currentDocument.version,deduped:!1,source:n});let o=this.params.client.getDocument(this.composition).then(s=>(this.currentDocument=s.data,this.activeCompositionContext={...s.data.composition},this.observedDocumentVersion=Math.max(this.observedDocumentVersion,s.data.version),this.clearObjectCaches(),this.currentDocument));this.refreshInFlight={compositionKey:r,request:o};try{return await o}finally{this.refreshInFlight?.request===o&&(this.refreshInFlight=null)}}clearObjectCaches(t){this.objectGeneration+=1,this.editContextCache.clear(),this.editContextInFlight.clear(),this.classNameSourceCache.clear(),this.classNameSourceInFlight.clear(),!t?.preserveStyleContext&&(this.styleGeneration+=1,this.styleContextCache.clear(),this.styleContextInFlight.clear())}objectCacheKey(t,n){return`${Me(n)}\0${t}`}requireBoundComposition(t){let n=t===void 0?this.composition:Ie(t);if(Me(n)!==Me(this.composition))throw new Error(`Site edit bridge is bound to composition ${JSON.stringify(this.composition)}, received ${JSON.stringify(n)}`);return Ie(n)}isActiveComposition(t){let n=this.activeCompositionContext??gr(this.composition);return nn(t)===nn(n)}};function tn(e){return e.version===0&&e.entries.length===0}function hr(e){let t=e;return{...t,data:{...t.data,document:on(t.data.document,t.composition)}}}function on(e,t){let n=e,r=Zt(n.routeId?n:{...n,routeId:t?.routeId??n.composition?.routeId});return t?{...r,composition:t}:r}function Ie(e){if(e&&typeof e=="object"&&typeof e.routeId=="string"){let t="effectiveTemplateId"in e?e.effectiveTemplateId:"templateId"in e?e.templateId:void 0;return{routeId:e.routeId,...typeof t=="string"?{templateId:t}:{}}}throw new Error("SITE_EDIT_COMPOSITION_SESSION_REQUIRED: a composition selector is required")}function Me(e){return JSON.stringify([e.routeId,e.templateId??null])}function nn(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function gr(e){return{routeId:e.routeId,...e.templateId?{effectiveTemplateId:e.templateId}:{}}}function Xe(e){if(e&&typeof e=="object"){let t=e;if(t.composition&&typeof t.composition=="object"){let n=t.composition;if(typeof n.routeId=="string")return{routeId:n.routeId,...typeof n.templateId=="string"?{templateId:n.templateId}:{}}}}}function yr(e,t,n){let r=Ie(t==="execute"?Xe(n.request):n.composition),i={id:e,kind:t,composition:r};switch(t){case"initialize-session":case"get-document":case"get-history-status":case"get-style-context":case"get-source-tree":case"undo":case"redo":return{type:"request",payload:{...i,...n.mutationContext?{mutationContext:n.mutationContext}:{}}};case"get-object-edit-context":case"get-class-name-source":case"resolve-source-location":return{type:"request",payload:{...i,key:String(n.key)}};case"get-source-file":return{type:"request",payload:{...i,path:String(n.path)}};case"execute":return{type:"request",payload:{...i,request:{...n.request,composition:Xe(n.request)??r}}}}}var sn="vcp-window-message",cn=1;function br(e){return{source:sn,version:cn,namespace:e.namespace,channel:e.channel,...e.sessionKey?{sessionKey:e.sessionKey}:{},body:e.body}}function Er(e){try{return S(e)?j(e,"source",sn)&&j(e,"version",cn)&&A(e,"namespace")&&A(e,"channel")&&ue(e,"body")&&(!xe(e,"sessionKey")||A(e,"sessionKey")):!1}catch{return!1}}var an="site-edit",un="frame-runtime",Rt=1,Be=1,Fe=1,ln=24;function Ve(e,t={}){return br({namespace:an,channel:un,sessionKey:t.sessionKey,body:e})}function dn(e){try{return!Er(e)||e.namespace!==an||e.channel!==un?!1:Ur(e.body)}catch{return!1}}function be(e){return S(e)&&A(e,"routeId")&&Re(e,"templateId")&&me(e,["routeId","templateId"])}function Je(e){return S(e)&&A(e,"routeId")&&Re(e,"effectiveTemplateId")&&me(e,["routeId","effectiveTemplateId"])}function me(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(r=>typeof r=="string"&&n.has(r))}var xe=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);function ue(e,t){let n=Object.getOwnPropertyDescriptor(e,t);return n!==void 0&&"value"in n}function d(e,t){return Object.getOwnPropertyDescriptor(e,t)?.value}function j(e,t,n){return ue(e,t)&&d(e,t)===n}function A(e,t){return ue(e,t)&&typeof d(e,t)=="string"}function Le(e,t){return ue(e,t)&&typeof d(e,t)=="boolean"}function F(e,t){let n=d(e,t);return ue(e,t)&&typeof n=="number"&&Number.isFinite(n)}function Sr(e,t){let n=d(e,t);return ue(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>0}function Re(e,t){return!xe(e,t)||d(e,t)===void 0||A(e,t)}function Pe(e,t){return!xe(e,t)||d(e,t)===void 0||F(e,t)}function Qe(e,t){let n=d(e,t);return!xe(e,t)||n===void 0||ue(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>=0}function U(e,t){return!xe(e,t)||d(e,t)===void 0}function S(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function Ir(e){return S(e)&&Reflect.ownKeys(e).length===0}function Ze(e){if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t+=1){let n=Object.getOwnPropertyDescriptor(e,String(t));if(n===void 0||!("value"in n)||typeof n.value!="string")return!1}return!0}function pe(e){return S(e)&&A(e,"key")&&Qe(e,"instanceIndex")&&Qe(e,"instanceCount")&&Qe(e,"textSegmentIndex")}function Cr(e){return S(e)&&A(e,"blockId")&&pe(d(e,"ref"))&&qe(d(e,"rect"))&&Le(e,"targetIsSectionRoot")}function vr(e){if(!S(e))return!1;let t=d(e,"placement"),n=d(e,"boundary");return A(e,"anchorBlockId")&&pe(d(e,"anchorRef"))&&(t==="before"||t==="after")&&S(n)&&F(n,"top")&&F(n,"left")&&F(n,"width")}function qe(e){return S(e)&&["top","left","width","height"].every(t=>F(e,t))}function pn(e){if(!S(e))return!1;let t=d(e,"rect"),n=d(e,"layout"),r=S(n)?d(n,"containingBlock"):null,i=d(e,"scrollContext"),o=S(r)&&(j(r,"kind","viewport")&&Reflect.ownKeys(r).length===1||j(r,"kind","document")&&Reflect.ownKeys(r).length===1||j(r,"kind","element")&&A(r,"runtimeNodeId"));return j(e,"version",Rt)&&A(e,"runtimeNodeId")&&S(t)&&qe(d(t,"viewport"))&&qe(d(t,"document"))&&S(n)&&A(n,"position")&&A(n,"transform")&&o&&S(i)&&["scrollX","scrollY","viewportWidth","viewportHeight"].every(s=>F(i,s))&&ue(i,"scrollContainers")&&Rr(d(i,"scrollContainers"))}function Rr(e){return Array.isArray(e)&&e.every(t=>S(t)&&A(t,"runtimeNodeId")&&F(t,"scrollLeft")&&F(t,"scrollTop"))}function vt(e){return S(e)&&(U(e,"layoutSnapshot")||pn(d(e,"layoutSnapshot")))}function xr(e){return S(e)&&pe(d(e,"ref"))&&ue(e,"layoutSnapshot")&&pn(d(e,"layoutSnapshot"))&&(U(e,"childBoxes")||Ar(d(e,"childBoxes")))&&(U(e,"childRects")||_r(d(e,"childRects")))&&(U(e,"layout")||Tr(d(e,"layout")))&&(U(e,"spacing")||Pr(d(e,"spacing")))}function Tr(e){if(!S(e))return!1;let t=d(e,"indicatorOrientation");return A(e,"display")&&(t==="horizontal"||t==="vertical")&&Re(e,"flexDirection")&&Re(e,"gridAutoFlow")}function _r(e){return Array.isArray(e)&&e.every(t=>qe(t))}function Ar(e){return Array.isArray(e)&&e.every(t=>S(t)&&qe(d(t,"rect"))&&mn(d(t,"margin")))}function mn(e){return S(e)&&["marginTop","marginRight","marginBottom","marginLeft"].every(t=>F(e,t))}function Pr(e){return mn(e)&&["paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","columnGap","rowGap"].every(t=>F(e,t))}function Nr(e){if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t+=1){let n=Object.getOwnPropertyDescriptor(e,String(t));if(n===void 0||!("value"in n)||!xr(n.value))return!1}return!0}function Dr(e){return S(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&ue(e,t)&&(typeof d(e,t)=="string"||d(e,t)===null))}function fn(e){return e==null||typeof e=="string"||typeof e=="number"&&Number.isFinite(e)}function Or(e){return S(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&ue(e,t)&&fn(d(e,t)))}function kr(e){if(!S(e))return!1;let t=d(e,"priority");return A(e,"property")&&ue(e,"value")&&fn(d(e,"value"))&&(!xe(e,"priority")||t===void 0||t==="important")}function Mr(e){return S(e)?(U(e,"attributes")||Dr(d(e,"attributes")))&&Re(e,"className")&&(U(e,"style")||Or(d(e,"style")))&&(U(e,"styleDeclarations")||Array.isArray(d(e,"styleDeclarations"))&&d(e,"styleDeclarations").every(kr)):!1}function Br(e){return S(e)&&F(e,"x")&&F(e,"y")&&(U(e,"detailLevel")||j(e,"detailLevel","summary")||j(e,"detailLevel","full"))}function Fr(e){return S(e)&&pe(d(e,"ref"))}function qr(e){if(!S(e)||!S(d(e,"variables")))return!1;let t=d(e,"variables");return Reflect.ownKeys(t).every(n=>typeof n=="string"&&A(t,n))?U(e,"stylesheets")||Ze(d(e,"stylesheets")):!1}function Vr(e){if(!j(e,"type","request")||!A(e,"id")||!A(e,"kind")||!ue(e,"payload"))return!1;let t=d(e,"kind"),n=d(e,"payload");switch(t){case"hit-test-at-point":case"start-text-edit-at-point":return Br(n);case"bridge-get-source-tree":return S(n)&&be(d(n,"composition"))&&me(n,["composition"]);case"get-scroll-metrics":case"clear-theme-override":return Ir(n);case"bridge-get-history-status":case"bridge-undo":case"bridge-redo":return S(n)&&be(d(n,"composition"))&&me(n,["composition"]);case"bridge-get-source-file":return S(n)&&A(n,"path")&&be(d(n,"composition"))&&me(n,["path","composition"]);case"bridge-resolve-source-location":case"bridge-get-object-edit-context":case"bridge-get-class-name-source":return S(n)&&A(n,"key")&&be(d(n,"composition"))&&me(n,["key","composition"]);case"scroll-to":return S(n)&&F(n,"x")&&F(n,"y");case"scroll-by":return S(n)&&F(n,"deltaX")&&F(n,"deltaY");case"set-interaction-mode":return S(n)&&Le(n,"enabled");case"set-selection-visual":return S(n)&&j(n,"version",Be)&&pe(d(n,"ref"))&&j(n,"visible",!0);case"clear-selection-visual":return S(n)&&j(n,"version",Be);case"set-resize-visual":return S(n)&&j(n,"version",Fe)&&pe(d(n,"ref"))&&j(n,"visible",!0);case"clear-resize-visual":return S(n)&&j(n,"version",Fe);case"set-theme-override":return qr(n);case"get-theme-variables":return S(n)&&Ze(d(n,"names"));case"compute-drop-target-at-point":return S(n)&&F(n,"x")&&F(n,"y")&&(j(n,"dragKind","insert")||j(n,"dragKind","move"))&&(U(n,"movingRef")||pe(d(n,"movingRef")));case"observe-node-bounds":case"clear-node-bounds-observer":return S(n)&&(U(n,"ref")||pe(d(n,"ref")));case"apply-node-patch":return S(n)&&pe(d(n,"ref"))&&Mr(d(n,"patch"))&&(U(n,"preview")||S(d(n,"preview"))&&A(d(n,"preview"),"sessionId")&&Qe(d(n,"preview"),"revision")&&xe(d(n,"preview"),"revision"));case"get-hit-by-ref":case"get-path-by-ref":case"restore-text-edit":case"clear-text-edit-rollback":return Fr(n);case"bridge-initialize-session":case"bridge-get-style-context":return S(n)&&be(d(n,"composition"))&&me(n,["composition"]);case"bridge-get-document":case"bridge-ensure-document-version":case"bridge-acknowledge-document-version":return S(n)&&be(d(n,"composition"))&&Pe(n,"minVersion")&&Pe(n,"version")&&me(n,["composition","minVersion","version"]);case"bridge-execute":{if(!S(n))return!1;let r=d(n,"request"),i=d(n,"composition"),o=S(r)?d(r,"composition"):null;return!be(i)||!S(r)||!be(o)?!1:Z({routeId:i.routeId,...i.templateId?{effectiveTemplateId:i.templateId}:{}})===Z({routeId:o.routeId,...o.templateId?{effectiveTemplateId:o.templateId}:{}})&&me(n,["composition","request"])}case"bridge-subscribe":case"bridge-unsubscribe":return S(n)&&A(n,"subscriptionId")&&be(d(n,"composition"))&&me(n,["subscriptionId","composition"]);default:return!1}}function wr(e){return j(e,"type","response")&&A(e,"id")&&Le(e,"ok")&&(U(e,"error")||A(e,"error"))}function Kr(e){if(!S(e))return!1;let t=d(e,"type");if(typeof t!="string"||!Je(d(e,"composition"))||!A(e,"siteId")||!A(e,"at"))return!1;switch(t){case"site-edit.document.changed":return A(e,"snapshotId")&&F(e,"version");case"site-edit.operation.planned":return A(e,"operationId")&&A(e,"baseSnapshotId")&&Ze(d(e,"changedFiles"));case"site-edit.operation.completed":return S(d(e,"result"));case"site-edit.operation.failed":return A(e,"requestId")&&S(d(e,"error"));case"site-edit.capability.changed":return Ze(d(e,"keys"));case"site-edit.graph.invalidated":return!0;case"site-edit.graph.ready":return F(e,"version");case"site-edit.graph.error":return A(e,"message");default:return!1}}var zr=new Set(["pointer-down","pointer-move","pointer-leave","pointer-up","pointer-cancel","pointer-click","pointer-double-click"]),hn=new Set(["e","s","se"]);function Wr(e,t){if(U(e,"resizeSession"))return!0;let n=d(e,"resizeSession");if(!S(n))return!1;let r=d(e,"pointerId"),i=d(n,"pointerId"),o=d(n,"phase"),s=d(n,"edge"),c=t==="pointer-down"?"start":t==="pointer-up"?"commit":t==="pointer-cancel"?"cancel":null;return d(n,"version")===1&&o===c&&A(n,"sessionId")&&String(d(n,"sessionId")).length>0&&typeof r=="number"&&Number.isInteger(r)&&typeof i=="number"&&Number.isInteger(i)&&r===i&&typeof s=="string"&&hn.has(s)&&d(e,"resizeEdge")===s&&pe(d(n,"ref"))&&["startWidth","startHeight","width","height"].every(a=>F(n,a))}function $r(e){if(!j(e,"type","event")||!A(e,"kind")||!S(d(e,"payload")))return!1;let t=d(e,"kind"),n=d(e,"payload");switch(t){case"text-edit-commit":case"text-edit-cancel":case"text-edit-exit":case"text-edit-input":return pe(d(n,"ref"))&&Re(n,"value")&&(U(n,"hit")||vt(d(n,"hit")));case"node-bounds-change":return vt(d(n,"hit"));case"geometry-batch":{let r=d(n,"reason");return Sr(n,"sequence")&&F(n,"sourceEventAt")&&F(n,"captureStartedAt")&&F(n,"capturedAt")&&(r==="scroll"||r==="resize"||r==="mutation")&&Nr(d(n,"snapshots"))}case"bridge-event":{let r=d(n,"event"),i=d(n,"composition");return!Kr(r)||!Je(i)?!1:A(n,"subscriptionId")&&Z(i)===Z(r.composition)}case"route-ready":return Je(d(n,"composition"))&&A(n,"editEngineVersion")&&F(n,"sequence")&&F(n,"version");case"bridge-status":{let r=d(n,"state");return(r==="connecting"||r==="ready"||r==="reconnecting"||r==="failed"||r==="reload-required")&&Je(d(n,"composition"))&&F(n,"sequence")&&Pe(n,"attempt")&&Pe(n,"retryInMs")&&Re(n,"messageKey")}case"scroll":{let r=d(n,"metrics");return S(r)&&["scrollX","scrollY","scrollWidth","scrollHeight","viewportWidth","viewportHeight"].every(i=>F(r,i))}default:return zr.has(t)&&F(n,"clientX")&&F(n,"clientY")&&Pe(n,"buttons")&&Pe(n,"pointerId")&&(U(n,"hoverVisualOwned")||Le(n,"hoverVisualOwned"))&&(U(n,"resizeEdge")||A(n,"resizeEdge")&&hn.has(d(n,"resizeEdge")))&&Wr(n,t)&&(d(n,"hit")===null||vt(d(n,"hit")))&&(U(n,"section")||d(n,"section")===null||Cr(d(n,"section")))&&(U(n,"sectionGap")||d(n,"sectionGap")===null||vr(d(n,"sectionGap")))}}function Ur(e){if(!S(e))return!1;switch(d(e,"type")){case"request":return Vr(e);case"response":return wr(e);case"event":return $r(e);default:return!1}}var Nt="vcp-site-edit:route-ready",Dt="vcp-site-edit:bridge-status",mt="data-vcp-page-template-context",Mt="1",Bt="data-vcp-route-id",Ft="data-vcp-effective-template-id",kn=`[${mt}="${Mt}"]`,Ke="SITE_EDIT_COMPOSITION_MARKER_INVALID",Mn="SITE_EDIT_COMPOSITION_RENDER_MISMATCH",Gr=80,jr=120,Hr=1e3,Yr="data-vcp-ui-component",Bn="data-vcp-theme-preview",gn="::repeat-item#",et="components/ui",xt="data-site-block-id",Tt="data-vcp-runtime-site-block-id",Xr=new Set(["article","aside","div","footer","form","header","li","main","nav","ol","section","select","table","tbody","tfoot","thead","tr","ul"]),Jr=new Set(["a","button","em","h1","h2","h3","h4","h5","h6","label","p","small","span","strong"]);function Qr(e,t){let n=Array.from(e.querySelectorAll("[data-vcp-edit-key]"));for(let c of n)c.getAttribute(Tt)==="true"&&(c.removeAttribute(xt),c.removeAttribute(Tt));if(!t)return;let r=n.filter(c=>c.tagName.toLowerCase()==="section"),i=r.length>0?r:n.filter(c=>c.tagName.toLowerCase()==="main"),o=new Set(i),s=new Map;for(let c of i){let a=c.parentElement,l=!1;for(;a;){if(o.has(a)){l=!0;break}a=a.parentElement}if(l||c.getAttribute(xt)?.trim())continue;let u=c.getAttribute("data-vcp-edit-key")?.trim();if(!u)continue;let p=s.get(u)??0;s.set(u,p+1);let E=`vcp-runtime:${encodeURIComponent(u)}:${p}`;c.setAttribute(xt,E),c.setAttribute(Tt,"true")}}function it(e,t=""){let n=wn(t),r=n&&(e===n||e.startsWith(`${n}/`))?e.slice(n.length)||"/":e,i=r.startsWith("/")?r:`/${r}`;return i==="/"?"/":i.replace(/\/+$/,"")}function Zr(e){let t=Array.from(e.querySelectorAll(kn)).filter(s=>s.getAttribute(mt)===Mt);if(t.length===0)return null;if(t.length!==1)throw new Error(`${Ke}: expected exactly one marker`);let n=t[0],r=n.getAttribute(Bt),i=n.getAttribute(Ft);if(!r?.trim()||!i?.trim())throw new Error(`${Ke}: marker fields are required`);let o=eo(r);if(!o)throw new Error(`${Ke}: marker route is invalid`);return{routeId:o,effectiveTemplateId:i}}function Lr(e){let t=it(e.pathname,e.basePath??""),n=Zr(e.document);if(!n)return{routeId:t};if(n.routeId!==t)throw new Error(`${Ke}: marker route ${n.routeId} does not match pathname ${t}`);return n}function eo(e){return!e.startsWith("/")||e.includes("?")||e.includes("#")?null:it(e)}function yn(e,t){return Z(e)===Z(t)}function _t(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function to(e,t){if(e.__VCP_SITE_EDIT_VERSION_LOGGED__)return;let n=e.console?.info;typeof n=="function"&&(e.__VCP_SITE_EDIT_VERSION_LOGGED__=!0,n.call(e.console,"[VCP Site Edit] runtime loaded",{bridge:t.versions?.bridge??"unknown",contracts:t.versions?.contracts??"unknown",documentVersion:t.documentVersion,engine:t.versions?.engine??"unknown",routeId:t.routeId}))}function no(e,t={}){if(t.explicit_ws_url)return t.explicit_ws_url.startsWith("/")?`${e.location.protocol==="https:"?"wss:":"ws:"}//${e.location.host}${t.explicit_ws_url}`:t.explicit_ws_url;let n=e.location.protocol==="https:"?"wss:":"ws:",r=t.port?`${e.location.hostname}:${t.port}`:e.location.host;return`${n}//${r}${t.path??"/__vcp/site-edit/bridge"}`}async function Ji(e=window,t={}){let n=no(e,{explicit_ws_url:t.explicit_ws_url,port:t.ws_port,path:t.wsPath||"/__vcp/site-edit/bridge"}),r=ro({bridgeUrl:n,options:t}),i=e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(i?.started){if(oo(i.signature,r)){await i.syncRoute?.();return}i.cleanup?.()}let o={activeClient:null,activeBridge:null,cleanupFrameRuntime:(()=>{}),retryTimer:void 0,routeSequence:0,syncInFlight:null,syncScheduled:!1,disposed:!1,currentDocument:null,currentEntriesByKey:new Map,unsubscribeDocument:void 0,unsubscribeConnectionStatus:void 0,unbindBootstrapLifecycle:void 0,unbindRouteChange:void 0,unbindCompositionMarker:void 0},s,c=()=>e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__===s,a=t.create_client??(m=>new Ye({url:m,authKey:t.bridge_session_key})),l=t.schedule_after_navigation??No,u=()=>{o.retryTimer&&(e.clearTimeout(o.retryTimer),o.retryTimer=void 0)},p=()=>Lr({pathname:e.location.pathname,document:e.document,basePath:t.basePath}),E=()=>Z(p()),v=()=>it(e.location.pathname,t.basePath||""),M=!!e.parent&&e.parent!==e,R=m=>{Do(e,{...m,sequence:m.sequence??o.routeSequence})},P=m=>{o.currentDocument=m,o.currentEntriesByKey=new Map((m?.entries??[]).map(I=>[I.key,I])),Qr(e.document,!!m)},k=()=>{o.unsubscribeConnectionStatus?.(),o.unsubscribeConnectionStatus=void 0,o.unsubscribeDocument?.(),o.unsubscribeDocument=void 0},D=(m,I)=>{if(o.disposed||I!==o.routeSequence)return!1;try{return m===E()}catch{return!1}},L=async(m,I,B)=>{let q=o.activeBridge;if(!q)return null;let V=await q.getDocument(m);return D(I,B)&&P(V.data),V.data},g=()=>{k(),P(null);let m=o.activeBridge;o.activeBridge=null,m&&e.__VCP_SITE_EDIT__===m&&delete e.__VCP_SITE_EDIT__;let I=o.activeClient;o.activeClient=null,I?.disconnect()},ce=m=>m===s.compositionKey&&!!o.activeBridge&&(M||!!(o.currentDocument&&ko(o.currentDocument,m)))&&Oo(o.activeClient),ne=m=>Math.min(Hr*2**Math.max(0,m),8e3),ee=(m,I,B,q)=>{if(o.disposed)return;u();let V=ne(q);R({state:"reconnecting",composition:m,attempt:q,retryInMs:V,messageKey:"studio.status.previewBridgeConnecting"}),o.retryTimer=e.setTimeout(()=>{o.retryTimer=void 0,!(o.disposed||B!==o.routeSequence||!D(I,B))&&x(q+1).catch(re=>{let h;try{h=E()}catch{return}if(I===h){if(Ne(re)){R({state:"reload-required",composition:m,attempt:q,messageKey:"studio.errors.previewBridgeReloadRequired"});return}ee(m,I,o.routeSequence,q+1)}})},V)},ae=(m,I,B,q)=>{if(!D(I,B)||o.activeClient===null)return;if(Ne(q.message)){g(),u(),R({state:"reload-required",composition:m,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}let V=o.activeClient;k(),P(null);let re=o.activeBridge;o.activeBridge=null,re&&e.__VCP_SITE_EDIT__===re&&delete e.__VCP_SITE_EDIT__,o.activeClient=null,V?.disconnect(),ee(m,I,B,0)},X=m=>{let I;try{I=p()}catch{return}let B=Z(I),q=o.routeSequence;if(!(!D(B,q)||o.activeClient===null)){if(Ne(m)){g(),u(),R({state:"reload-required",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}Vn(m)&&ae(I,B,q,{state:"failed",message:Ue(m,"Site edit bridge request failed")})}};o.cleanupFrameRuntime=uo(e,{getCurrentDocument:()=>o.currentDocument,getDocumentEntry:m=>o.currentEntriesByKey.get(m)??null,setCurrentDocument:P,onBridgeRequestError:m=>{X(m)}});let Y=async()=>x(0),x=async m=>{if(o.disposed)return;let I=p(),B=Z(I);if(ce(B))return;let q=o.syncInFlight;if(q?.compositionKey===B)return q.promise;let V=o.routeSequence+1,re=N(I,B,V,m);o.syncInFlight={compositionKey:B,sequence:V,promise:re};try{await re}finally{o.syncInFlight?.promise===re&&(o.syncInFlight=null)}},N=async(m,I,B,q)=>{o.routeSequence=B,u(),g(),R({state:q>0?"reconnecting":"connecting",composition:m,attempt:q,messageKey:q>0?"studio.status.previewBridgeConnecting":"studio.status.previewLoading"});let V=a(n),re=!1;o.activeClient=V,o.unsubscribeConnectionStatus=V.subscribeConnectionStatus?.(h=>{re&&(h.state==="closed"||h.state==="failed")&&ae(m,I,B,h)});try{if(await V.connect(),!D(I,B)){V.disconnect();return}let h=rn({composition:_t(m),client:V,initialDocument:ao(m)});o.activeBridge=h,c()&&(e.__VCP_SITE_EDIT__=h),o.activeClient=V,o.unsubscribeDocument=h.subscribe(w=>{Z(w.composition)===I&&(w.type==="site-edit.document.changed"&&o.currentDocument&&w.version>o.currentDocument.version?L(_t(m),I,B).catch(()=>{}):w.type==="site-edit.graph.invalidated"&&$())}),c()&&(s.routeId=m.routeId,s.composition=m,s.compositionKey=I);let b=M?null:await h.initializeSession({composition:_t(m)}),f=b?.data.document??null;if(b&&(!yn(b.composition,m)||!yn(b.data.document.composition,m)))throw new Error(`${Mn}: initialize response does not match marker`);if(f&&P(f),!D(I,B)){V.disconnect();return}re=!0,R({state:"ready",composition:m,attempt:q,messageKey:"studio.status.previewReady"}),to(e,{documentVersion:f?.version??0,routeId:m.routeId,versions:t.runtime_versions}),f&&qn(e,{composition:m,editEngineVersion:t.runtime_versions?.engine??"unknown",sequence:B,version:f.version})}catch(h){if(k(),o.activeClient===V&&(o.activeClient=null),o.activeBridge&&e.__VCP_SITE_EDIT__===o.activeBridge&&delete e.__VCP_SITE_EDIT__,o.activeBridge=null,V.disconnect(),P(null),!D(I,B))return;throw R({state:Ne(h)?"reload-required":"failed",composition:m,attempt:q,messageKey:Ne(h)?"studio.errors.previewBridgeReloadRequired":"studio.errors.previewBridgeDisconnected"}),h}},T=m=>{if(o.disposed)return;let I;try{I=p()}catch{R({state:"failed",composition:{routeId:it(e.location.pathname,t.basePath||"")},attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}let B=Z(I);if(Ne(m)){u(),R({state:"reload-required",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(Bo(m)||Mo(m)){R({state:"failed",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}ee(I,B,o.routeSequence,0)},$=()=>{o.syncScheduled||o.disposed||(o.syncScheduled=!0,l(()=>{o.syncScheduled=!1,!o.disposed&&Y().catch(m=>T(m))}))},z=()=>{o.disposed||(o.disposed=!0,o.syncScheduled=!1,o.syncInFlight=null,u(),o.routeSequence+=1,o.unbindRouteChange?.(),o.unbindRouteChange=void 0,o.unbindCompositionMarker?.(),o.unbindCompositionMarker=void 0,o.unbindBootstrapLifecycle?.(),o.unbindBootstrapLifecycle=void 0,o.cleanupFrameRuntime(),g(),c()&&delete e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__)};if(s={started:!0,signature:r,syncRoute:Y,cleanup:z},e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__=s,o.unbindBootstrapLifecycle=so(e,z),o.unbindRouteChange=Ao(e,$,v),o.unbindCompositionMarker=Po(e,$),t.defer_initial_sync){$();return}await Y()}function ro(e){return{basePath:wn(e.options.basePath??""),bridgeUrl:e.bridgeUrl,runtimeVersions:{bridge:e.options.runtime_versions?.bridge??null,contracts:e.options.runtime_versions?.contracts??null,engine:e.options.runtime_versions?.engine??null},sessionKeyFingerprint:io(e.options.bridge_session_key)}}function oo(e,t){return!!e&&JSON.stringify(e)===JSON.stringify(t)}function io(e){if(!e)return null;let t=2166136261;for(let n=0;n<e.length;n+=1)t^=e.charCodeAt(n),t=Math.imul(t,16777619)>>>0;return`${e.length}:${t.toString(36)}`}function so(e,t){let n=()=>t();return e.addEventListener("pagehide",n),e.addEventListener("beforeunload",n),co(t),()=>{e.removeEventListener("pagehide",n),e.removeEventListener("beforeunload",n)}}function co(e){let t=import.meta.hot,n=import.meta.webpackHot,r=t??n;!r||typeof r.dispose!="function"||r.dispose(()=>e())}function ao(e){return{siteId:"preview",snapshotId:"preview",composition:e,version:0,pageComposition:{status:"unsupported",reason:"ROUTE_RETURN_NOT_FOUND",diagnostics:[]},entries:[]}}function uo(e=window,t={}){let n=null,r=null,i=null,o=null,s=null,c=null,a=0,l=null,u=null,p=null,E=null,v=null,M=0,R=new Map,P=typeof t.expectedSessionKey=="string"&&t.expectedSessionKey.length>0?t.expectedSessionKey:null,k=()=>{n?.(),n=null,r=null},D=()=>{i?.(),i=null,o?.(),o=null,s?.(),s=null,c?.cleanup(),c=null},L=(h,b,f)=>{let w=l?.sessionKey!==h||l?.sourceWindow!==b||l?.targetOrigin!==f;l={sessionKey:h,sourceWindow:b,targetOrigin:f},w&&(a=0,E=null,v=null)},g=(h,b)=>{let f=e.parent&&e.parent!==e?e.parent:null;return!f||b!==f?!1:!P||h===P},ce=()=>{for(let h of R.values())h();R.clear()},ne=h=>JSON.stringify([Z(h.composition),h.editEngineVersion,h.sequence,h.version]),ee=()=>!p||p.state==="ready",ae=h=>JSON.stringify([h.state,Z(h.composition),h.sequence,h.attempt??null,h.retryInMs??null,h.messageKey??null]),X=h=>{if(!ee())return;let b=ne(h);E!==b&&(o?.(),o=null,s?.(),s=null,c?.cleanup(),c=null,z({kind:"route-ready",payload:{composition:h.composition,editEngineVersion:h.editEngineVersion,sequence:h.sequence,version:h.version}}),l&&(E=b))},Y=h=>{let b=ae(h);v!==b&&(h.state!=="ready"&&(E=null,u=null),z({kind:"bridge-status",payload:h}),l&&(v=b))},x=h=>{u=h,X(h)},N=h=>{p=h,Y(h)},T=()=>{u&&X(u)},$=()=>{p&&Y(p)},z=h=>{l&&l.sourceWindow.postMessage(Ve({type:"event",...h},{sessionKey:l.sessionKey}),l.targetOrigin)},m=(h,b,f,w)=>{let W=t.getCurrentDocument?.()??null,te=Uo(e.document,b.clientX,b.clientY),C=b.resizeSession?null:$e(e.document,b.clientX,b.clientY,W),H=C?fe(C,f==="full"?he(e.document,C,W):lt(e.document,C,W),t.getDocumentEntry,f):null,oe=Go(e.document,te,W),le=Ho(e.document,b,W);w&&H&&(h==="pointer-click"||h==="pointer-double-click")&&(w.preventDefault(),w.stopPropagation(),typeof w.stopImmediatePropagation=="function"&&w.stopImmediatePropagation()),z({kind:h,payload:{clientX:b.clientX,clientY:b.clientY,buttons:Number(b.buttons??0),pointerId:b.pointerId,hoverVisualOwned:b.hoverVisualOwned,resizeEdge:b.resizeEdge,resizeSession:b.resizeSession,hit:H,section:oe,sectionGap:le}})},I=h=>{z({kind:"pointer-leave",payload:{clientX:h?.clientX??0,clientY:h?.clientY??0,buttons:Number(h?.buttons??0),hit:null,section:null,sectionGap:null}})},B=(h,b,f)=>{D(),l={sessionKey:h,sourceWindow:b,targetOrigin:f};let w=Oi(e.document),W=lo(e,t.getCurrentDocument),te=null,C=null,H=null,oe=null,le=null,de=()=>{le!==null&&(e.clearTimeout(le),le=null)},Ce=()=>{H!==null&&(at(e,H),H=null),te=null},je=()=>{H=null;let y=te;te=null,y&&m("pointer-move",y,"summary")},Oe=y=>{de(),C=y,te=y,H===null&&(H=ct(e,je))},J=()=>{C&&Oe({...C,hoverVisualOwned:W?.updateAtPoint(C.clientX,C.clientY)??!1})},ve=e.document.documentElement,_=typeof ve.addEventListener=="function"?ve:e.document,O=y=>{if(c?.update(y)){y.preventDefault();return}Oe({clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),hoverVisualOwned:W?.update(y.target)??!1})},Q=y=>{let K=Co(y.target),Qt=K?c?.begin(y,K):null;Qt&&(y.target?.setPointerCapture?.(y.pointerId),y.preventDefault(),y.stopPropagation()),m("pointer-down",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:Number(y.pointerId),resizeEdge:K,resizeSession:Qt??void 0},"full",y)},ye=y=>{let K=c?.finish(y,"commit")??null;if(K){m("pointer-up",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:Number(y.pointerId),resizeEdge:K.edge,resizeSession:K},"summary",y);return}m("pointer-up",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)},"summary",y)},_e=y=>{let K=c?.finish(y,"cancel")??null;m("pointer-cancel",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:K?.pointerId,resizeEdge:K?.edge,resizeSession:K??void 0},"summary",y)},Wt=y=>{let K=c?.finish(y,"cancel")??null;K&&m("pointer-cancel",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:K.pointerId,resizeEdge:K.edge,resizeSession:K},"summary",y)},$t=y=>{m("pointer-click",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)},"full",y)},Ut=y=>{m("pointer-double-click",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)},"full",y)},gt=y=>{if(y&&y.target!==_&&y.target!==ve)return;let K=y?{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)}:C;if(y&&K&&K.clientX>0&&K.clientX<e.innerWidth&&K.clientY>0&&K.clientY<e.innerHeight){J();return}if(Ce(),y){de(),le=e.setTimeout(()=>{le=null,C=null,I(K??void 0)},jr);return}de(),C=null,W?.clear(),I(K??void 0)},Gt=()=>gt(),Ln=()=>{oe=null,z({kind:"scroll",payload:{metrics:ot(e)}}),J()},jt=()=>{oe===null&&(oe=ct(e,Ln))};e.document.addEventListener("pointerdown",Q,!0),e.document.addEventListener("pointermove",O,{passive:!0,capture:!0}),e.document.addEventListener("pointerup",ye,!0),e.document.addEventListener("pointercancel",_e,!0),e.document.addEventListener("lostpointercapture",Wt,!0),e.document.addEventListener("click",$t,!0),e.document.addEventListener("dblclick",Ut,!0),e.addEventListener("scroll",jt,{passive:!0}),e.addEventListener("resize",J,{passive:!0}),e.addEventListener("blur",Gt),e.document.addEventListener("load",J,!0),_.addEventListener("pointerleave",gt,!0);let He=e.visualViewport;He?.addEventListener?.("resize",J,{passive:!0}),He?.addEventListener?.("scroll",J,{passive:!0});let Ht=e.ResizeObserver,Yt=typeof Ht=="function"?new Ht(J):null;Yt?.observe(ve);let Xt=e.MutationObserver,Jt=typeof Xt=="function"?new Xt(J):null;Jt?.observe(ve,{attributes:!0,childList:!0,subtree:!0}),i=()=>{Ce(),de(),C=null,W?.cleanup(),Yt?.disconnect(),Jt?.disconnect(),oe!==null&&(at(e,oe),oe=null),w(),e.document.removeEventListener("pointerdown",Q,!0),e.document.removeEventListener("pointermove",O,!0),e.document.removeEventListener("pointerup",ye,!0),e.document.removeEventListener("pointercancel",_e,!0),e.document.removeEventListener("lostpointercapture",Wt,!0),e.document.removeEventListener("click",$t,!0),e.document.removeEventListener("dblclick",Ut,!0),e.removeEventListener("scroll",jt),e.removeEventListener("resize",J),e.removeEventListener("blur",Gt),e.document.removeEventListener("load",J,!0),_.removeEventListener("pointerleave",gt,!0),He?.removeEventListener?.("resize",J),He?.removeEventListener?.("scroll",J)}},q=h=>{let b=h.detail;b?.composition?.routeId&&x(b)},V=h=>{let b=h.detail;b?.state&&N(b)},re=h=>{let b=h.data;if(!dn(b)||b.body.type!=="request"||b.body.kind!=="apply-node-patch"&&b.body.kind!=="get-hit-by-ref"&&b.body.kind!=="get-path-by-ref"&&b.body.kind!=="get-scroll-metrics"&&b.body.kind!=="scroll-to"&&b.body.kind!=="scroll-by"&&b.body.kind!=="set-interaction-mode"&&b.body.kind!=="set-selection-visual"&&b.body.kind!=="clear-selection-visual"&&b.body.kind!=="set-resize-visual"&&b.body.kind!=="clear-resize-visual"&&b.body.kind!=="set-theme-override"&&b.body.kind!=="clear-theme-override"&&b.body.kind!=="get-theme-variables"&&b.body.kind!=="compute-drop-target-at-point"&&b.body.kind!=="observe-node-bounds"&&b.body.kind!=="clear-node-bounds-observer"&&b.body.kind!=="restore-text-edit"&&b.body.kind!=="clear-text-edit-rollback"&&b.body.kind!=="start-text-edit-at-point"&&b.body.kind!=="hit-test-at-point"&&!Cn(b.body))return;let f=b.body,w=typeof b.sessionKey=="string"?b.sessionKey:null,W=h.source,te=h.origin;if(!w||!te||!W||typeof W.postMessage!="function"||!g(w,W))return;if(l){if(l.sourceWindow!==W||l.targetOrigin!==te)return;l.sessionKey!==w&&(k(),D(),ce(),l=null)}L(w,W,te),$(),T();let C=H=>{let oe=typeof f.id=="string"?f.id:"unknown";W.postMessage(Ve({id:oe,...H},{sessionKey:w}),te)};try{if(Cn(f)){xo({message:f,sendEvent:_=>{W.postMessage(Ve({type:"event",..._},{sessionKey:w}),te)},sendResponse:C,subscriptions:R,getCurrentDocument:t.getCurrentDocument,setCurrentDocument:t.setCurrentDocument,onBridgeRequestError:t.onBridgeRequestError,nextRouteReadySequence:()=>M+=1,windowLike:e});return}if(f.kind==="apply-node-patch"){let _=ge(e.document,f.payload.ref,t.getCurrentDocument?.()??null);if(!_){C({type:"response",ok:!1,error:"No editable element found for patch target"});return}let O=f.payload.preview,Q=O?bi(O.sessionId,f.payload.ref):null;if(Q&&O){let ye=we.get(Q)??-1;if(O.revision<ye){C({type:"response",ok:!0,result:{applied:!1,appliedRevision:O.revision,stale:!0,latestRevision:ye}});return}if(O.revision===ye){C({type:"response",ok:!0,result:{applied:!1,appliedRevision:O.revision,duplicate:!0,latestRevision:ye}});return}}if(gi(_,f.payload.patch),Q&&O&&Ei(Q,O.revision),O?.responseDetail==="none"){C({type:"response",ok:!0,result:{applied:!0,appliedRevision:O.revision}});return}C({type:"response",ok:!0,result:fe(_,he(e.document,_,t.getCurrentDocument?.()??null),t.getDocumentEntry,O?.responseDetail??"full")});return}if(f.kind==="get-hit-by-ref"){let _=ge(e.document,f.payload.ref,t.getCurrentDocument?.()??null);if(!_){C({type:"response",ok:!1,error:"No editable element found for hit target"});return}C({type:"response",ok:!0,result:fe(_,he(e.document,_,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full")});return}if(f.kind==="get-path-by-ref"){let _=ge(e.document,f.payload.ref,t.getCurrentDocument?.()??null);if(!_){C({type:"response",ok:!1,error:"No editable element found for path target"});return}let O=[],Q=_;for(;Q;)Q.getAttribute("data-vcp-edit-key")&&O.push(fe(Q,he(e.document,Q,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full")),Q=Q.parentElement;C({type:"response",ok:!0,result:O.reverse()});return}if(f.kind==="restore-text-edit"||f.kind==="clear-text-edit-rollback"){let _=f.payload.ref;if(f.kind==="clear-text-edit-rollback"){r&&Rn(r.ref,_)&&(r=null),C({type:"response",ok:!0,result:{cleared:!0}});return}if(!r||!Rn(r.ref,_)){C({type:"response",ok:!1,error:"No pending text edit rollback snapshot"});return}let O=Vo(e.document,r,t.getCurrentDocument?.()??null);r=null,C(O?{type:"response",ok:!0,result:{restored:!0}}:{type:"response",ok:!1,error:"Failed to restore text edit snapshot"});return}if(f.kind==="get-scroll-metrics"){C({type:"response",ok:!0,result:ot(e)});return}if(f.kind==="scroll-to"){let _=Number(f.payload.x),O=Number(f.payload.y);if(!Number.isFinite(_)||!Number.isFinite(O)){C({type:"response",ok:!1,error:"Invalid scroll position"});return}e.scrollTo({left:_,top:O}),C({type:"response",ok:!0,result:ot(e)});return}if(f.kind==="scroll-by"){let _=Number(f.payload.deltaX),O=Number(f.payload.deltaY);if(!Number.isFinite(_)||!Number.isFinite(O)){C({type:"response",ok:!1,error:"Invalid scroll delta"});return}e.scrollBy({left:_,top:O}),C({type:"response",ok:!0,result:{...ot(e),scrolled:!0}});return}if(f.kind==="set-interaction-mode"){f.payload.enabled?B(w,W,te):l?.sourceWindow===W&&l.targetOrigin===te&&l.sessionKey===w&&D(),C({type:"response",ok:!0,result:{interactionEnabled:f.payload.enabled}});return}if(f.kind==="set-selection-visual"){s?.(),s=null,i&&(s=mo(e,f.payload.ref,t.getCurrentDocument)),C({type:"response",ok:!0,result:{version:Be,active:!!s}});return}if(f.kind==="clear-selection-visual"){s?.(),s=null,C({type:"response",ok:!0,result:{version:Be,active:!1}});return}if(f.kind==="set-resize-visual"){c?.cleanup(),c=null,i&&(c=vo(e,f.payload.ref,t.getCurrentDocument)),C({type:"response",ok:!0,result:{version:Fe,active:!!c}});return}if(f.kind==="clear-resize-visual"){c?.cleanup(),c=null,C({type:"response",ok:!0,result:{version:Fe,active:!1}});return}if(f.kind==="set-theme-override"){Si(e.document,f.payload),C({type:"response",ok:!0,result:{themeOverrideApplied:!0}});return}if(f.kind==="clear-theme-override"){Ii(e.document),C({type:"response",ok:!0,result:{themeOverrideCleared:!0}});return}if(f.kind==="get-theme-variables"){C({type:"response",ok:!0,result:Ci(e.document,f.payload.names)});return}if(f.kind==="compute-drop-target-at-point"){let _=Number(f.payload?.x),O=Number(f.payload?.y);if(!Number.isFinite(_)||!Number.isFinite(O)){C({type:"response",ok:!1,error:"Invalid drop target point"});return}C({type:"response",ok:!0,result:li(e,_,O,f.payload.dragKind,f.payload.movingRef,t.getCurrentDocument?.()??null,t.getDocumentEntry)});return}if(f.kind==="observe-node-bounds"){let _=f.payload.ref;if(!_){C({type:"response",ok:!1,error:"Missing bounds observer target"});return}let O=ge(e.document,_,t.getCurrentDocument?.()??null);if(!O){C({type:"response",ok:!1,error:"No editable element found for bounds observer target"});return}o?.(),o=oi(e,O,_,t.getCurrentDocument,(Q,ye,_e)=>{a+=1,z({kind:"geometry-batch",payload:{sequence:a,sourceEventAt:_e.sourceEventAt,captureStartedAt:_e.captureStartedAt,capturedAt:_e.capturedAt,reason:Q,snapshots:[ye]}})}),C({type:"response",ok:!0,result:{observing:!0}}),z({kind:"node-bounds-change",payload:{hit:fe(O,_,t.getDocumentEntry,"summary",e)}});return}if(f.kind==="clear-node-bounds-observer"){o?.(),o=null,C({type:"response",ok:!0,result:{cleared:!0}});return}if(f.kind!=="hit-test-at-point"&&f.kind!=="start-text-edit-at-point")return;let H=Number(f.payload?.x),oe=Number(f.payload?.y);if(!Number.isFinite(H)||!Number.isFinite(oe)){C({type:"response",ok:!1,error:"Invalid text edit point"});return}let le=f.kind==="hit-test-at-point"?$e(e.document,H,oe,t.getCurrentDocument?.()??null):Ko(e.document,H,oe,t.getCurrentDocument?.()??null,t.getDocumentEntry);if(!le){C({type:"response",ok:!1,error:f.kind==="hit-test-at-point"?"No editable element at point":"No editable text element at point"});return}let de=f.kind==="start-text-edit-at-point"?le:null,Ce=f.kind==="hit-test-at-point"?le:de.element,je=f.payload.detailLevel??"full",Oe=je==="full"?he(e.document,Ce,t.getCurrentDocument?.()??null):lt(e.document,Ce,t.getCurrentDocument?.()??null),J=de&&typeof de.textSegmentIndex=="number"?{...Oe,textSegmentIndex:de.textSegmentIndex}:Oe,ve=fe(Ce,J,t.getDocumentEntry,je);if(f.kind==="hit-test-at-point"){C({type:"response",ok:!0,result:ve});return}k(),n=Ti(e,Ce,J,_=>{W.postMessage(Ve({type:"event",..._},{sessionKey:w}),te)},{...de?.textNode?{textNode:de.textNode}:{},onCommitSnapshot:_=>{r=_}}),C({type:"response",ok:!0,result:{ref:J}})}catch(H){C({type:"response",ok:!1,error:H instanceof Error?H.message:"Failed to start text edit"})}};return e.addEventListener("message",re),e.addEventListener(Nt,q),e.addEventListener(Dt,V),()=>{k(),D(),l=null,ce(),e.removeEventListener("message",re),e.removeEventListener(Nt,q),e.removeEventListener(Dt,V)}}function lo(e,t){let n=e.document,r=n.head??n.documentElement;if(typeof r?.appendChild!="function")return null;let i="data-vcp-designer-hover-visual",o="data-vcp-designer-selection-visual",s=n.createElement("style");s.setAttribute("data-vcp-designer-hover-visual-style","true"),s.textContent=`
2
2
  [${i}="true"]:not([${o}="true"]) {
3
3
  outline: 1px dashed #4f6bff !important;
4
4
  outline-offset: -1px !important;
5
- }`,r.appendChild(s);let c=null,a=()=>{c?.removeAttribute(i),c=null},l=E=>{let v=Ft(E),M=v?.getAttribute("data-vcp-edit-key")??"",R=v&&Wn(v,t?.()??null,M)?v:null;return R===c||(a(),c=R,c?.setAttribute(i,"true")),!0};return{clear:a,cleanup:()=>{a(),s.remove()},update:l,updateAtPoint:(E,v)=>l($e(n,E,v,t?.()??null))}}var ao=0;function uo(e,t,n){let r=e.document,i=r.head??r.documentElement,o=++ao,s=`--vcp-designer-spacing-target-${o}`,c=`--vcp-designer-spacing-gap-${o}`,a=typeof e.CSS?.supports=="function"&&e.CSS.supports(`anchor-name: ${s}`)&&e.CSS.supports(`position-anchor: ${s}`)&&e.CSS.supports("left: anchor(left)")&&e.CSS.supports("width: anchor-size(width)"),l=()=>ge(r,t,n?.()??null),u=l();if(!u||!u.isConnected||typeof i?.appendChild!="function")return null;let p="data-vcp-designer-selection-visual",E=r.createElement("style");E.setAttribute("data-vcp-designer-selection-visual-style","true"),E.textContent=`
5
+ }`,r.appendChild(s);let c=null,a=()=>{c?.removeAttribute(i),c=null},l=E=>{let v=Vt(E),M=v?.getAttribute("data-vcp-edit-key")??"",R=v&&Un(v,t?.()??null,M)?v:null;return R===c||(a(),c=R,c?.setAttribute(i,"true")),!0};return{clear:a,cleanup:()=>{a(),s.remove()},update:l,updateAtPoint:(E,v)=>l($e(n,E,v,t?.()??null))}}var po=0;function mo(e,t,n){let r=e.document,i=r.head??r.documentElement,o=++po,s=`--vcp-designer-spacing-target-${o}`,c=`--vcp-designer-spacing-gap-${o}`,a=typeof e.CSS?.supports=="function"&&e.CSS.supports(`anchor-name: ${s}`)&&e.CSS.supports(`position-anchor: ${s}`)&&e.CSS.supports("left: anchor(left)")&&e.CSS.supports("width: anchor-size(width)"),l=()=>ge(r,t,n?.()??null),u=l();if(!u||!u.isConnected||typeof i?.appendChild!="function")return null;let p="data-vcp-designer-selection-visual",E=r.createElement("style");E.setAttribute("data-vcp-designer-selection-visual-style","true"),E.textContent=`
6
6
  [${p}="true"] {
7
7
  outline: 2px solid #4f6bff !important;
8
8
  outline-offset: -2px !important;
9
- }`,i.appendChild(E);let v=r.createElement("div");v.setAttribute("data-vcp-designer-spacing-visual-layer","true"),v.setAttribute("aria-hidden","true"),v.style.setProperty("position","fixed","important"),v.style.setProperty("inset","0","important"),v.style.setProperty("overflow","hidden","important"),v.style.setProperty("pointer-events","none","important"),v.style.setProperty("z-index","2147483645","important"),r.documentElement.appendChild(v),u.setAttribute(p,"true");let M=a?st(u,s):null,R=!1,P=null,k=[],D=[],L=()=>{P=null,D.forEach(T=>T()),D=lo(v,k,u,a?s:null,c)},g=()=>{R||P!==null||(P=ct(e,L))};L();let ce=()=>{if(R)return;let T=l();T===u&&T?.isConnected||(u?.removeAttribute(p),M?.(),M=null,u=T,u?.isConnected&&(u.setAttribute(p,"true"),M=a?st(u,s):null),X(),g())},ne=e.ResizeObserver,ee=typeof ne=="function"?new ne(g):null,ae=[];function X(){ae.forEach(T=>ee?.unobserve(T)),ae=u?.isConnected?[u,...Array.from(u.children)].filter(T=>typeof T.getBoundingClientRect=="function"):[],ae.forEach(T=>ee?.observe(T))}X();let Y=e.MutationObserver,x=typeof Y=="function"?new Y(T=>{let $=u;ce();let z=$!==u,m=T.some(I=>I.type!=="attributes"||I.attributeName!=="class"&&I.attributeName!=="style"?!1:I.target===u?!0:u?.contains?.(I.target)===!0&&I.target!==v);!z&&!m||(X(),g())}):null;return x?.observe(r.documentElement,{attributeFilter:["data-vcp-edit-key","class","style"],attributes:!0,childList:!0,subtree:!0}),a||(e.addEventListener("scroll",g,!0),r.addEventListener("scroll",g,!0)),e.addEventListener("resize",g),()=>{R||(R=!0,P!==null&&(at(e,P),P=null),e.removeEventListener("scroll",g,!0),r.removeEventListener("scroll",g,!0),e.removeEventListener("resize",g),x?.disconnect(),ee?.disconnect(),u?.removeAttribute(p),D.forEach(T=>T()),D=[],M?.(),M=null,u=null,v.remove(),E.remove())}}function lo(e,t,n,r,i){if(n?.isConnected===!0&&r)return po(e,t,n,r,i);let o=n?.isConnected===!0?mo(n):[];return o.forEach((s,c)=>{let a=t[c]??e.ownerDocument.createElement("div");t[c]||(a.style.setProperty("position","fixed","important"),a.style.setProperty("pointer-events","none","important"),e.appendChild(a),t[c]=a),a.setAttribute("data-vcp-designer-spacing-kind",s.kind),a.style.setProperty("background",s.kind==="margin"?"rgba(245, 158, 11, 0.24)":s.kind==="padding"?"rgba(56, 189, 248, 0.22)":"rgba(34, 197, 94, 0.22)","important"),a.style.setProperty("display","block","important"),a.style.setProperty("left",`${s.left}px`,"important"),a.style.setProperty("top",`${s.top}px`,"important"),a.style.setProperty("width",`${s.width}px`,"important"),a.style.setProperty("height",`${s.height}px`,"important")}),t.slice(o.length).forEach(s=>{s.style.setProperty("display","none","important")}),[]}function po(e,t,n,r,i){let o=ft(n),s=[{kind:"margin",left:"anchor(left)",top:`calc(anchor(top) - ${o.marginTop}px)`,width:"anchor-size(width)",height:`${o.marginTop}px`},{kind:"margin",left:"anchor(right)",top:"anchor(top)",width:`${o.marginRight}px`,height:"anchor-size(height)"},{kind:"margin",left:"anchor(left)",top:"anchor(bottom)",width:"anchor-size(width)",height:`${o.marginBottom}px`},{kind:"margin",left:`calc(anchor(left) - ${o.marginLeft}px)`,top:"anchor(top)",width:`${o.marginLeft}px`,height:"anchor-size(height)"},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(top) + ${o.borderTopWidth}px)`,width:`calc(anchor-size(width) - ${o.borderLeftWidth+o.borderRightWidth}px)`,height:`${o.paddingTop}px`},{kind:"padding",left:`calc(anchor(right) - ${o.borderRightWidth+o.paddingRight}px)`,top:`calc(anchor(top) + ${o.borderTopWidth+o.paddingTop}px)`,width:`${o.paddingRight}px`,height:`calc(anchor-size(height) - ${o.borderTopWidth+o.borderBottomWidth+o.paddingTop+o.paddingBottom}px)`},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(bottom) - ${o.borderBottomWidth+o.paddingBottom}px)`,width:`calc(anchor-size(width) - ${o.borderLeftWidth+o.borderRightWidth}px)`,height:`${o.paddingBottom}px`},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(top) + ${o.borderTopWidth+o.paddingTop}px)`,width:`${o.paddingLeft}px`,height:`calc(anchor-size(height) - ${o.borderTopWidth+o.borderBottomWidth+o.paddingTop+o.paddingBottom}px)`}];s.forEach((l,u)=>{let p=gn(e,t,u);p.setAttribute("data-vcp-designer-spacing-kind",l.kind),p.style.setProperty("position-anchor",r,"important"),p.style.setProperty("left",l.left,"important"),p.style.setProperty("top",l.top,"important"),p.style.setProperty("width",l.width,"important"),p.style.setProperty("height",l.height,"important"),p.style.setProperty("background",l.kind==="margin"?"rgba(245, 158, 11, 0.24)":"rgba(56, 189, 248, 0.22)","important");let E=l.kind==="margin"?[o.marginTop,o.marginRight,o.marginBottom,o.marginLeft][u]:[o.paddingTop,o.paddingRight,o.paddingBottom,o.paddingLeft][u-4];p.style.setProperty("display",(E??0)>.5?"block":"none","important")});let c=ho(n,o),a=c.map((l,u)=>{let p=gn(e,t,s.length+u),E=`${i}-${u}`,v=st(l.anchorElement,E);return p.setAttribute("data-vcp-designer-spacing-kind","gap"),p.style.setProperty("position-anchor",E,"important"),p.style.setProperty("background","rgba(34, 197, 94, 0.22)","important"),p.style.setProperty("display","block","important"),p.style.setProperty("left",`calc(anchor(left) + ${l.leftOffset}px)`,"important"),p.style.setProperty("top",`calc(anchor(top) + ${l.topOffset}px)`,"important"),p.style.setProperty("width",`${l.width}px`,"important"),p.style.setProperty("height",`${l.height}px`,"important"),v});return t.slice(s.length+c.length).forEach(l=>{l.style.setProperty("display","none","important")}),a}function gn(e,t,n){let r=t[n];if(r)return r;let i=e.ownerDocument.createElement("div");return i.style.setProperty("position","fixed","important"),i.style.setProperty("pointer-events","none","important"),e.appendChild(i),t[n]=i,i}function mo(e){let t=Te(e.getBoundingClientRect()),n=ft(e),r=t.left+n.borderLeftWidth,i=t.top+n.borderTopWidth,o=t.width-n.borderLeftWidth-n.borderRightWidth,s=t.height-n.borderTopWidth-n.borderBottomWidth,c=i+n.paddingTop,a=s-n.paddingTop-n.paddingBottom,l=[{kind:"margin",left:t.left,top:t.top-n.marginTop,width:t.width,height:n.marginTop},{kind:"margin",left:t.left+t.width,top:t.top,width:n.marginRight,height:t.height},{kind:"margin",left:t.left,top:t.top+t.height,width:t.width,height:n.marginBottom},{kind:"margin",left:t.left-n.marginLeft,top:t.top,width:n.marginLeft,height:t.height}];return o>0&&s>0&&l.push({kind:"padding",left:r,top:i,width:o,height:n.paddingTop},{kind:"padding",left:r+o-n.paddingRight,top:c,width:n.paddingRight,height:a},{kind:"padding",left:r,top:i+s-n.paddingBottom,width:o,height:n.paddingBottom},{kind:"padding",left:r,top:c,width:n.paddingLeft,height:a}),l.push(...fo(e,n)),l.filter(u=>u.width>.5&&u.height>.5)}function fo(e,t){let n=e.ownerDocument?.defaultView?.getComputedStyle(e).display??"";if(!["flex","inline-flex","grid","inline-grid"].includes(n)||t.columnGap<=0&&t.rowGap<=0)return[];let r=wt(e);return[...bn(r,"horizontal",t.columnGap),...bn(r,"vertical",t.rowGap)]}function ho(e,t){let n=e.ownerDocument?.defaultView?.getComputedStyle(e).display??"";if(!["flex","inline-flex","grid","inline-grid"].includes(n)||t.columnGap<=0&&t.rowGap<=0)return[];let r=e.ownerDocument?.defaultView,i=Array.from(e.children).filter(o=>typeof o.getBoundingClientRect=="function").map(o=>({element:o,rect:Te(o.getBoundingClientRect()),margin:Vt(r?.getComputedStyle(o))})).filter(({rect:o})=>o.width>0&&o.height>0);return[...yn(i,"horizontal",t.columnGap),...yn(i,"vertical",t.rowGap)].filter(o=>o.width>.5&&o.height>.5)}function yn(e,t,n){if(n<=0||e.length<2)return[];let r=Mn(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((c,a)=>t==="horizontal"?c.rect.left-a.rect.left:c.rect.top-a.rect.top);for(let c=0;c<s.length-1;c+=1){let a=s[c],l=s[c+1];if(t==="horizontal"){let u=a.rect.left+a.rect.width+a.margin.marginRight,p=l.rect.left-l.margin.marginLeft-u,E=Math.min(n,p);i.push({anchorElement:a.element,leftOffset:u+Math.max(0,(p-E)/2)-a.rect.left,topOffset:Math.max(a.rect.top,l.rect.top)-a.rect.top,width:E,height:Math.min(a.rect.top+a.rect.height,l.rect.top+l.rect.height)-Math.max(a.rect.top,l.rect.top)})}else{let u=a.rect.top+a.rect.height+a.margin.marginBottom,p=l.rect.top-l.margin.marginTop-u,E=Math.min(n,p);i.push({anchorElement:a.element,leftOffset:Math.max(a.rect.left,l.rect.left)-a.rect.left,topOffset:u+Math.max(0,(p-E)/2)-a.rect.top,width:Math.min(a.rect.left+a.rect.width,l.rect.left+l.rect.width)-Math.max(a.rect.left,l.rect.left),height:E})}}}),i}function bn(e,t,n){if(n<=0||e.length<2)return[];let r=Mn(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((c,a)=>t==="horizontal"?c.rect.left-a.rect.left:c.rect.top-a.rect.top);for(let c=0;c<s.length-1;c+=1){let a=s[c],l=s[c+1];if(t==="horizontal"){let u=a.rect.left+a.rect.width+a.margin.marginRight,p=l.rect.left-l.margin.marginLeft-u,E=Math.min(n,p);i.push({kind:"gap",left:u+Math.max(0,(p-E)/2),top:Math.max(a.rect.top,l.rect.top),width:E,height:Math.min(a.rect.top+a.rect.height,l.rect.top+l.rect.height)-Math.max(a.rect.top,l.rect.top)})}else{let u=a.rect.top+a.rect.height+a.margin.marginBottom,p=l.rect.top-l.margin.marginTop-u,E=Math.min(n,p);i.push({kind:"gap",left:Math.max(a.rect.left,l.rect.left),top:u+Math.max(0,(p-E)/2),width:Math.min(a.rect.left+a.rect.width,l.rect.left+l.rect.width)-Math.max(a.rect.left,l.rect.left),height:E})}}}),i}function Mn(e,t){let n=[...e].sort((i,o)=>t==="x"?i.rect.left-o.rect.left||i.rect.top-o.rect.top:i.rect.top-o.rect.top||i.rect.left-o.rect.left),r=[];return n.forEach(i=>{let o=r.find(s=>s.some(c=>go(c.rect,i.rect,t)>.5));o?o.push(i):r.push([i])}),r}function go(e,t,n){return n==="x"?Math.min(e.left+e.width,t.left+t.width)-Math.max(e.left,t.left):Math.min(e.top+e.height,t.top+t.height)-Math.max(e.top,t.top)}var tt=new WeakMap;function st(e,t){let n=tt.get(e);if(!n){let i=e.style.getPropertyValue("anchor-name"),o=e.ownerDocument?.defaultView?.getComputedStyle(e).getPropertyValue?.("anchor-name").trim()??"";n={names:new Set,originalValue:i,originalPriority:e.style.getPropertyPriority("anchor-name"),computedValue:o==="none"?"":o},tt.set(e,n)}n.names.add(t),En(e,n);let r=!1;return()=>{if(r)return;r=!0;let i=tt.get(e);if(i){if(i.names.delete(t),i.names.size>0){En(e,i);return}i.originalValue?e.style.setProperty("anchor-name",i.originalValue,i.originalPriority):e.style.removeProperty("anchor-name"),tt.delete(e)}}}function En(e,t){let n=t.originalValue.trim()||t.computedValue;e.style.setProperty("anchor-name",[...n?[n]:[],...t.names].join(", "),"important")}var yo=["e","se","s"],bo=0;function Eo(e){let t=e,i=(t?.getAttribute?.("data-vcp-designer-resize-handle")?t:t?.closest?.("[data-vcp-designer-resize-handle]"))?.getAttribute?.("data-vcp-designer-resize-handle");return i==="e"||i==="s"||i==="se"?i:void 0}function So(e,t,n){let r=++bo,i=`--vcp-designer-resize-target-${r}`,o=e.CSS;if(typeof o?.supports!="function"||!o.supports(`anchor-name: ${i}`)||!o.supports(`position-anchor: ${i}`)||!o.supports("left: anchor(left)")||!o.supports("top: anchor(top)"))return null;let s=e.document,c=s.head??s.documentElement,a=s.body??s.documentElement,l=()=>ge(s,t,n?.()??null),u=l();if(!u||!u.isConnected||typeof c?.appendChild!="function"||typeof a?.appendChild!="function")return null;let p="data-vcp-designer-resize-visual",E="data-vcp-designer-resize-handle",v=s.createElement("style");v.setAttribute("data-vcp-designer-resize-visual-style","true"),v.textContent=`
9
+ }`,i.appendChild(E);let v=r.createElement("div");v.setAttribute("data-vcp-designer-spacing-visual-layer","true"),v.setAttribute("aria-hidden","true"),v.style.setProperty("position","fixed","important"),v.style.setProperty("inset","0","important"),v.style.setProperty("overflow","hidden","important"),v.style.setProperty("pointer-events","none","important"),v.style.setProperty("z-index","2147483645","important"),r.documentElement.appendChild(v),u.setAttribute(p,"true");let M=a?st(u,s):null,R=!1,P=null,k=[],D=[],L=()=>{P=null,D.forEach(T=>T()),D=fo(v,k,u,a?s:null,c)},g=()=>{R||P!==null||(P=ct(e,L))};L();let ce=()=>{if(R)return;let T=l();T===u&&T?.isConnected||(u?.removeAttribute(p),M?.(),M=null,u=T,u?.isConnected&&(u.setAttribute(p,"true"),M=a?st(u,s):null),X(),g())},ne=e.ResizeObserver,ee=typeof ne=="function"?new ne(g):null,ae=[];function X(){ae.forEach(T=>ee?.unobserve(T)),ae=u?.isConnected?[u,...Array.from(u.children)].filter(T=>typeof T.getBoundingClientRect=="function"):[],ae.forEach(T=>ee?.observe(T))}X();let Y=e.MutationObserver,x=typeof Y=="function"?new Y(T=>{let $=u;ce();let z=$!==u,m=T.some(I=>I.type!=="attributes"||I.attributeName!=="class"&&I.attributeName!=="style"?!1:I.target===u?!0:u?.contains?.(I.target)===!0&&I.target!==v);!z&&!m||(X(),g())}):null;return x?.observe(r.documentElement,{attributeFilter:["data-vcp-edit-key","class","style"],attributes:!0,childList:!0,subtree:!0}),a||(e.addEventListener("scroll",g,!0),r.addEventListener("scroll",g,!0)),e.addEventListener("resize",g),()=>{R||(R=!0,P!==null&&(at(e,P),P=null),e.removeEventListener("scroll",g,!0),r.removeEventListener("scroll",g,!0),e.removeEventListener("resize",g),x?.disconnect(),ee?.disconnect(),u?.removeAttribute(p),D.forEach(T=>T()),D=[],M?.(),M=null,u=null,v.remove(),E.remove())}}function fo(e,t,n,r,i){if(n?.isConnected===!0&&r)return ho(e,t,n,r,i);let o=n?.isConnected===!0?go(n):[];return o.forEach((s,c)=>{let a=t[c]??e.ownerDocument.createElement("div");t[c]||(a.style.setProperty("position","fixed","important"),a.style.setProperty("pointer-events","none","important"),e.appendChild(a),t[c]=a),a.setAttribute("data-vcp-designer-spacing-kind",s.kind),a.style.setProperty("background",s.kind==="margin"?"rgba(245, 158, 11, 0.24)":s.kind==="padding"?"rgba(56, 189, 248, 0.22)":"rgba(34, 197, 94, 0.22)","important"),a.style.setProperty("display","block","important"),a.style.setProperty("left",`${s.left}px`,"important"),a.style.setProperty("top",`${s.top}px`,"important"),a.style.setProperty("width",`${s.width}px`,"important"),a.style.setProperty("height",`${s.height}px`,"important")}),t.slice(o.length).forEach(s=>{s.style.setProperty("display","none","important")}),[]}function ho(e,t,n,r,i){let o=ft(n),s=[{kind:"margin",left:"anchor(left)",top:`calc(anchor(top) - ${o.marginTop}px)`,width:"anchor-size(width)",height:`${o.marginTop}px`},{kind:"margin",left:"anchor(right)",top:"anchor(top)",width:`${o.marginRight}px`,height:"anchor-size(height)"},{kind:"margin",left:"anchor(left)",top:"anchor(bottom)",width:"anchor-size(width)",height:`${o.marginBottom}px`},{kind:"margin",left:`calc(anchor(left) - ${o.marginLeft}px)`,top:"anchor(top)",width:`${o.marginLeft}px`,height:"anchor-size(height)"},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(top) + ${o.borderTopWidth}px)`,width:`calc(anchor-size(width) - ${o.borderLeftWidth+o.borderRightWidth}px)`,height:`${o.paddingTop}px`},{kind:"padding",left:`calc(anchor(right) - ${o.borderRightWidth+o.paddingRight}px)`,top:`calc(anchor(top) + ${o.borderTopWidth+o.paddingTop}px)`,width:`${o.paddingRight}px`,height:`calc(anchor-size(height) - ${o.borderTopWidth+o.borderBottomWidth+o.paddingTop+o.paddingBottom}px)`},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(bottom) - ${o.borderBottomWidth+o.paddingBottom}px)`,width:`calc(anchor-size(width) - ${o.borderLeftWidth+o.borderRightWidth}px)`,height:`${o.paddingBottom}px`},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(top) + ${o.borderTopWidth+o.paddingTop}px)`,width:`${o.paddingLeft}px`,height:`calc(anchor-size(height) - ${o.borderTopWidth+o.borderBottomWidth+o.paddingTop+o.paddingBottom}px)`}];s.forEach((l,u)=>{let p=bn(e,t,u);p.setAttribute("data-vcp-designer-spacing-kind",l.kind),p.style.setProperty("position-anchor",r,"important"),p.style.setProperty("left",l.left,"important"),p.style.setProperty("top",l.top,"important"),p.style.setProperty("width",l.width,"important"),p.style.setProperty("height",l.height,"important"),p.style.setProperty("background",l.kind==="margin"?"rgba(245, 158, 11, 0.24)":"rgba(56, 189, 248, 0.22)","important");let E=l.kind==="margin"?[o.marginTop,o.marginRight,o.marginBottom,o.marginLeft][u]:[o.paddingTop,o.paddingRight,o.paddingBottom,o.paddingLeft][u-4];p.style.setProperty("display",(E??0)>.5?"block":"none","important")});let c=bo(n,o),a=c.map((l,u)=>{let p=bn(e,t,s.length+u),E=`${i}-${u}`,v=st(l.anchorElement,E);return p.setAttribute("data-vcp-designer-spacing-kind","gap"),p.style.setProperty("position-anchor",E,"important"),p.style.setProperty("background","rgba(34, 197, 94, 0.22)","important"),p.style.setProperty("display","block","important"),p.style.setProperty("left",`calc(anchor(left) + ${l.leftOffset}px)`,"important"),p.style.setProperty("top",`calc(anchor(top) + ${l.topOffset}px)`,"important"),p.style.setProperty("width",`${l.width}px`,"important"),p.style.setProperty("height",`${l.height}px`,"important"),v});return t.slice(s.length+c.length).forEach(l=>{l.style.setProperty("display","none","important")}),a}function bn(e,t,n){let r=t[n];if(r)return r;let i=e.ownerDocument.createElement("div");return i.style.setProperty("position","fixed","important"),i.style.setProperty("pointer-events","none","important"),e.appendChild(i),t[n]=i,i}function go(e){let t=Te(e.getBoundingClientRect()),n=ft(e),r=t.left+n.borderLeftWidth,i=t.top+n.borderTopWidth,o=t.width-n.borderLeftWidth-n.borderRightWidth,s=t.height-n.borderTopWidth-n.borderBottomWidth,c=i+n.paddingTop,a=s-n.paddingTop-n.paddingBottom,l=[{kind:"margin",left:t.left,top:t.top-n.marginTop,width:t.width,height:n.marginTop},{kind:"margin",left:t.left+t.width,top:t.top,width:n.marginRight,height:t.height},{kind:"margin",left:t.left,top:t.top+t.height,width:t.width,height:n.marginBottom},{kind:"margin",left:t.left-n.marginLeft,top:t.top,width:n.marginLeft,height:t.height}];return o>0&&s>0&&l.push({kind:"padding",left:r,top:i,width:o,height:n.paddingTop},{kind:"padding",left:r+o-n.paddingRight,top:c,width:n.paddingRight,height:a},{kind:"padding",left:r,top:i+s-n.paddingBottom,width:o,height:n.paddingBottom},{kind:"padding",left:r,top:c,width:n.paddingLeft,height:a}),l.push(...yo(e,n)),l.filter(u=>u.width>.5&&u.height>.5)}function yo(e,t){let n=e.ownerDocument?.defaultView?.getComputedStyle(e).display??"";if(!["flex","inline-flex","grid","inline-grid"].includes(n)||t.columnGap<=0&&t.rowGap<=0)return[];let r=zt(e);return[...Sn(r,"horizontal",t.columnGap),...Sn(r,"vertical",t.rowGap)]}function bo(e,t){let n=e.ownerDocument?.defaultView?.getComputedStyle(e).display??"";if(!["flex","inline-flex","grid","inline-grid"].includes(n)||t.columnGap<=0&&t.rowGap<=0)return[];let r=e.ownerDocument?.defaultView,i=Array.from(e.children).filter(o=>typeof o.getBoundingClientRect=="function").map(o=>({element:o,rect:Te(o.getBoundingClientRect()),margin:Kt(r?.getComputedStyle(o))})).filter(({rect:o})=>o.width>0&&o.height>0);return[...En(i,"horizontal",t.columnGap),...En(i,"vertical",t.rowGap)].filter(o=>o.width>.5&&o.height>.5)}function En(e,t,n){if(n<=0||e.length<2)return[];let r=Fn(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((c,a)=>t==="horizontal"?c.rect.left-a.rect.left:c.rect.top-a.rect.top);for(let c=0;c<s.length-1;c+=1){let a=s[c],l=s[c+1];if(t==="horizontal"){let u=a.rect.left+a.rect.width+a.margin.marginRight,p=l.rect.left-l.margin.marginLeft-u,E=Math.min(n,p);i.push({anchorElement:a.element,leftOffset:u+Math.max(0,(p-E)/2)-a.rect.left,topOffset:Math.max(a.rect.top,l.rect.top)-a.rect.top,width:E,height:Math.min(a.rect.top+a.rect.height,l.rect.top+l.rect.height)-Math.max(a.rect.top,l.rect.top)})}else{let u=a.rect.top+a.rect.height+a.margin.marginBottom,p=l.rect.top-l.margin.marginTop-u,E=Math.min(n,p);i.push({anchorElement:a.element,leftOffset:Math.max(a.rect.left,l.rect.left)-a.rect.left,topOffset:u+Math.max(0,(p-E)/2)-a.rect.top,width:Math.min(a.rect.left+a.rect.width,l.rect.left+l.rect.width)-Math.max(a.rect.left,l.rect.left),height:E})}}}),i}function Sn(e,t,n){if(n<=0||e.length<2)return[];let r=Fn(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((c,a)=>t==="horizontal"?c.rect.left-a.rect.left:c.rect.top-a.rect.top);for(let c=0;c<s.length-1;c+=1){let a=s[c],l=s[c+1];if(t==="horizontal"){let u=a.rect.left+a.rect.width+a.margin.marginRight,p=l.rect.left-l.margin.marginLeft-u,E=Math.min(n,p);i.push({kind:"gap",left:u+Math.max(0,(p-E)/2),top:Math.max(a.rect.top,l.rect.top),width:E,height:Math.min(a.rect.top+a.rect.height,l.rect.top+l.rect.height)-Math.max(a.rect.top,l.rect.top)})}else{let u=a.rect.top+a.rect.height+a.margin.marginBottom,p=l.rect.top-l.margin.marginTop-u,E=Math.min(n,p);i.push({kind:"gap",left:Math.max(a.rect.left,l.rect.left),top:u+Math.max(0,(p-E)/2),width:Math.min(a.rect.left+a.rect.width,l.rect.left+l.rect.width)-Math.max(a.rect.left,l.rect.left),height:E})}}}),i}function Fn(e,t){let n=[...e].sort((i,o)=>t==="x"?i.rect.left-o.rect.left||i.rect.top-o.rect.top:i.rect.top-o.rect.top||i.rect.left-o.rect.left),r=[];return n.forEach(i=>{let o=r.find(s=>s.some(c=>Eo(c.rect,i.rect,t)>.5));o?o.push(i):r.push([i])}),r}function Eo(e,t,n){return n==="x"?Math.min(e.left+e.width,t.left+t.width)-Math.max(e.left,t.left):Math.min(e.top+e.height,t.top+t.height)-Math.max(e.top,t.top)}var tt=new WeakMap;function st(e,t){let n=tt.get(e);if(!n){let i=e.style.getPropertyValue("anchor-name"),o=e.ownerDocument?.defaultView?.getComputedStyle(e).getPropertyValue?.("anchor-name").trim()??"";n={names:new Set,originalValue:i,originalPriority:e.style.getPropertyPriority("anchor-name"),computedValue:o==="none"?"":o},tt.set(e,n)}n.names.add(t),In(e,n);let r=!1;return()=>{if(r)return;r=!0;let i=tt.get(e);if(i){if(i.names.delete(t),i.names.size>0){In(e,i);return}i.originalValue?e.style.setProperty("anchor-name",i.originalValue,i.originalPriority):e.style.removeProperty("anchor-name"),tt.delete(e)}}}function In(e,t){let n=t.originalValue.trim()||t.computedValue;e.style.setProperty("anchor-name",[...n?[n]:[],...t.names].join(", "),"important")}var So=["e","se","s"],Io=0;function Co(e){let t=e,i=(t?.getAttribute?.("data-vcp-designer-resize-handle")?t:t?.closest?.("[data-vcp-designer-resize-handle]"))?.getAttribute?.("data-vcp-designer-resize-handle");return i==="e"||i==="s"||i==="se"?i:void 0}function vo(e,t,n){let r=++Io,i=`--vcp-designer-resize-target-${r}`,o=e.CSS;if(typeof o?.supports!="function"||!o.supports(`anchor-name: ${i}`)||!o.supports(`position-anchor: ${i}`)||!o.supports("left: anchor(left)")||!o.supports("top: anchor(top)"))return null;let s=e.document,c=s.head??s.documentElement,a=s.body??s.documentElement,l=()=>ge(s,t,n?.()??null),u=l();if(!u||!u.isConnected||typeof c?.appendChild!="function"||typeof a?.appendChild!="function")return null;let p="data-vcp-designer-resize-visual",E="data-vcp-designer-resize-handle",v=s.createElement("style");v.setAttribute("data-vcp-designer-resize-visual-style","true"),v.textContent=`
10
10
  [${E}] {
11
11
  position: fixed !important;
12
12
  position-anchor: ${i};
@@ -28,4 +28,4 @@ function Z(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}fun
28
28
  [${E}="e"] { left: anchor(right); top: anchor(center); }
29
29
  [${E}="se"] { left: anchor(right); top: anchor(bottom); }
30
30
  [${E}="s"] { left: anchor(center); top: anchor(bottom); }
31
- `,c.appendChild(v);let M=yo.map(x=>{let N=s.createElement("div");return N.setAttribute(E,x),N.setAttribute("aria-hidden","true"),a.appendChild(N),N}),R=null,P=null,k=()=>{R?.removeAttribute(p),P?.(),P=null,R=null},D=x=>{k(),R=x,P=st(x,i),x.setAttribute(p,"true"),M.forEach(N=>N.style.removeProperty("display"))};D(u);let L=!1,g=null,ce=()=>{if(!g||!u)return;let x=(N,T,$)=>{T?u.style.setProperty(N,T,$):u.style.removeProperty(N)};x("width",g.widthValue,g.widthPriority),x("height",g.heightValue,g.heightPriority)},ne=(x,N,T)=>g?{version:1,phase:x,sessionId:g.sessionId,pointerId:g.pointerId,edge:g.edge,ref:t,startWidth:g.startWidth,startHeight:g.startHeight,width:N,height:T,baselineStyleDeclarations:[{property:"width",value:g.widthValue||null,...g.widthPriority==="important"?{priority:"important"}:{}},{property:"height",value:g.heightValue||null,...g.heightPriority==="important"?{priority:"important"}:{}}]}:null,ee=x=>{if(!g||!u?.isConnected||x.pointerId!==g.pointerId)return!1;let N=Number(x.clientX)-g.startX,T=Number(x.clientY)-g.startY,$=Math.max(1,Math.round(g.startWidth+N)),z=Math.max(1,Math.round(g.startHeight+T));return(g.edge==="e"||g.edge==="se")&&u.style.setProperty("width",`${$}px`,"important"),(g.edge==="s"||g.edge==="se")&&u.style.setProperty("height",`${z}px`,"important"),!0},ae=()=>{if(L)return;let x=l();if(x===u&&x?.isConnected)return;ce();let N=g?.captureTarget,T=g?.pointerId;g=null,T!==void 0&&N?.releasePointerCapture?.(T),k(),u=x,u?.isConnected?D(u):M.forEach($=>$.style.setProperty("display","none","important"))},X=e.MutationObserver,Y=typeof X=="function"?new X(ae):null;return Y?.observe(s.documentElement,{attributeFilter:["data-vcp-edit-key"],attributes:!0,childList:!0,subtree:!0}),{begin(x,N){if(L||g||!u?.isConnected)return null;let T=u.getBoundingClientRect();return g={sessionId:`resize-${r}-${x.pointerId}`,pointerId:x.pointerId,edge:N,startX:Number(x.clientX),startY:Number(x.clientY),startWidth:T.width,startHeight:T.height,widthValue:u.style.getPropertyValue("width"),widthPriority:u.style.getPropertyPriority("width"),heightValue:u.style.getPropertyValue("height"),heightPriority:u.style.getPropertyPriority("height"),captureTarget:x.target},ne("start",T.width,T.height)},update:ee,finish(x,N){if(!g||x.pointerId!==g.pointerId)return null;N==="commit"&&ee(x);let T=Math.max(1,Math.round(g.startWidth+Number(x.clientX)-g.startX)),$=Math.max(1,Math.round(g.startHeight+Number(x.clientY)-g.startY)),z=ne(N,N==="commit"?T:g.startWidth,N==="commit"?$:g.startHeight),m=g.captureTarget,I=g.pointerId;return N==="cancel"&&ce(),g=null,m?.releasePointerCapture?.(I),z},cleanup(){if(L)return;L=!0,Y?.disconnect(),ce();let x=g?.captureTarget,N=g?.pointerId;g=null,N!==void 0&&x?.releasePointerCapture?.(N),k(),u=null,M.forEach(T=>T.remove()),v.remove()}}}function Sn(e){let t=e.kind;return t==="bridge-initialize-session"||t==="bridge-get-document"||t==="bridge-get-history-status"||t==="bridge-get-style-context"||t==="bridge-ensure-document-version"||t==="bridge-acknowledge-document-version"||t==="bridge-get-object-edit-context"||t==="bridge-get-class-name-source"||t==="bridge-get-source-tree"||t==="bridge-get-source-file"||t==="bridge-resolve-source-location"||t==="bridge-execute"||t==="bridge-undo"||t==="bridge-redo"||t==="bridge-subscribe"||t==="bridge-unsubscribe"}function Io(e){return e.kind==="update-text"||e.kind==="update-array-item"||e.kind==="set-class-name-source"||e.kind==="set-props"||e.kind==="apply-style-draft"}async function Co({message:e,sendEvent:t,sendResponse:n,subscriptions:r,getCurrentDocument:i,setCurrentDocument:o,onBridgeRequestError:s,nextRouteReadySequence:c,windowLike:a}){let l=a.__VCP_SITE_EDIT__;if(!l){n({type:"response",ok:!1,error:"Site edit bridge is not ready in preview frame"});return}try{switch(e.kind){case"bridge-initialize-session":{let u=await l.initializeSession({composition:e.payload.composition});o?.(u.data.document),Bn(a,{composition:u.data.document.composition,editEngineVersion:"unknown",sequence:c(),version:u.data.document.version}),n({type:"response",ok:!0,result:u});return}case"bridge-get-document":{let u=await l.getDocument(e.payload.composition);o?.(u.data),n({type:"response",ok:!0,result:u});return}case"bridge-get-history-status":n({type:"response",ok:!0,result:await l.getHistoryStatus(e.payload.composition)});return;case"bridge-get-style-context":n({type:"response",ok:!0,result:await l.getStyleContext(e.payload.composition)});return;case"bridge-ensure-document-version":{if(!Number.isFinite(Number(e.payload.minVersion))){n({type:"response",ok:!1,error:"Invalid document version"});return}let u=l.ensureDocumentVersion?await l.ensureDocumentVersion(e.payload.composition,Number(e.payload.minVersion)):await l.getDocument(e.payload.composition);o?.(u.data),n({type:"response",ok:!0,result:u});return}case"bridge-acknowledge-document-version":{if(!Number.isFinite(Number(e.payload.version))){n({type:"response",ok:!1,error:"Invalid document version"});return}let u=l.acknowledgeDocumentVersion?await l.acknowledgeDocumentVersion(e.payload.composition,Number(e.payload.version)):await l.getDocument(e.payload.composition);o?.(u.data),n({type:"response",ok:!0,result:u});return}case"bridge-get-object-edit-context":n({type:"response",ok:!0,result:await l.getObjectEditContext(e.payload.key,e.payload.composition)});return;case"bridge-get-class-name-source":{let u=await l.getClassNameSource(e.payload.key,e.payload.composition);n({type:"response",ok:!0,result:vo(u,e.payload.key,a.document,i?.()??null)});return}case"bridge-get-source-tree":n({type:"response",ok:!0,result:await l.getSourceTree(e.payload.composition)});return;case"bridge-get-source-file":n({type:"response",ok:!0,result:await l.getSourceFile({path:e.payload.path,composition:e.payload.composition})});return;case"bridge-resolve-source-location":n({type:"response",ok:!0,result:await l.resolveSourceLocation({key:e.payload.key,composition:e.payload.composition})});return;case"bridge-execute":{let u=await l.execute(e.payload.request);if(u.ok&&l.acknowledgeDocumentVersion&&Io(e.payload.request)){let p=await l.acknowledgeDocumentVersion(e.payload.composition,u.data.resultVersion);o?.(p.data)}n({type:"response",ok:!0,result:u});return}case"bridge-undo":n({type:"response",ok:!0,result:await l.undo(e.payload.composition)});return;case"bridge-redo":n({type:"response",ok:!0,result:await l.redo(e.payload.composition)});return;case"bridge-subscribe":{let u=e.payload.subscriptionId;r.get(u)?.();let p=l.subscribe(E=>{t({kind:"bridge-event",payload:{composition:E.composition,event:E,subscriptionId:u}})});r.set(u,p),n({type:"response",ok:!0,result:{subscribed:!0}});return}case"bridge-unsubscribe":{let u=e.payload.subscriptionId;r.get(u)?.(),r.delete(u),n({type:"response",ok:!0,result:{unsubscribed:!0}});return}}}catch(u){s?.(u,e),n({type:"response",ok:!1,error:ko(u)})}}function vo(e,t,n,r){if(!e.ok)return e;let i=ge(n,{key:t},r),o=i?Ro(i):null;return o?{...e,data:{...e.data,computedStyle:{...e.data.computedStyle??{},...o}}}:e}function Ro(e){let t=e.ownerDocument.defaultView;if(!t)return null;let n=t.getComputedStyle(e);return{color:n.color,backgroundColor:n.backgroundColor,borderColor:n.borderColor}}function xo(e,t,n=()=>e.location.pathname){let r=e.history.pushState,i=e.history.replaceState,o=n(),s=()=>{let l=n();l!==o&&(o=l,t())},c=()=>s(),a=()=>s();return e.history.pushState=function(...u){let p=r.apply(this,u);return s(),p},e.history.replaceState=function(...u){let p=i.apply(this,u);return s(),p},e.addEventListener("popstate",c),e.addEventListener("hashchange",a),()=>{e.history.pushState=r,e.history.replaceState=i,e.removeEventListener("popstate",c),e.removeEventListener("hashchange",a)}}function To(e,t){let n=e.MutationObserver;if(typeof n!="function")return()=>{};let r=In(e.document),i=new n(()=>{let o=In(e.document);o!==r&&(r=o,t())});return i.observe(e.document.documentElement,{attributes:!0,attributeFilter:[mt,kt,Mt],childList:!0,subtree:!0}),()=>i.disconnect()}function In(e){let t=Array.from(e.querySelectorAll(Dn)).filter(n=>n.getAttribute(mt)===Ot);return JSON.stringify(t.map(n=>[n.getAttribute(kt),n.getAttribute(Mt)]))}function _o(e){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>requestAnimationFrame(e));return}setTimeout(e,0)}function ct(e,t){return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(t):e.setTimeout(t,0)}function at(e,t){if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(t);return}e.clearTimeout(t)}function Bn(e,t){e.dispatchEvent(new CustomEvent(At,{detail:t}))}function Ao(e,t){e.dispatchEvent(new CustomEvent(Pt,{detail:t}))}function Po(e){return e?e.getConnectionState?e.getConnectionState()==="open":!0:!1}function No(e,t){return Z(e.composition)===t}function Do(e){return Ue(e,"").includes(Ke)}function Oo(e){return Ue(e,"").includes(On)}function Ue(e,t){return e instanceof Error&&e.message?e.message:typeof e=="string"&&e?e:t}function Fn(e){let t=Ue(e,"");return/websocket|readyState|not open|disconnected|bridge request timed out|network|econnreset|broken pipe|socket closed/i.test(t)}function ko(e){let t=Ue(e,"Site edit bridge request failed");return/bridge request timed out/i.test(t)?"Site edit bridge request timed out":Fn(t)?"Site edit bridge disconnected":t}function Ne(e){let t=e instanceof Error?e.message:typeof e=="string"?e:"";return/authentication|auth failed|auth rejected|bridge key|session|unauthorized|forbidden|expired/i.test(t)}function qn(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function Bt(e){return Hr.has(wn(e))}function Mo(e){return Yr.has(wn(e))}function Vn(e){return e.operationSummary?{canUpdateText:e.operationSummary.canUpdateText,canInsertChild:e.operationSummary.canInsertChild,canMove:e.operationSummary.canMove,canRemove:e.operationSummary.canRemove}:e.fallbackMode!=="preview"?{canUpdateText:!1,canInsertChild:!1,canMove:!1,canRemove:!1}:{canUpdateText:Mo(e.tagName),canInsertChild:Bt(e.tagName),canMove:!1,canRemove:!1}}function wn(e){return e?.trim().toLowerCase()??""}function Cn(e,t){return e.key!==t.key||e.instanceIndex!==t.instanceIndex||e.instanceCount!==t.instanceCount?!1:typeof e.textSegmentIndex=="number"&&typeof t.textSegmentIndex=="number"?e.textSegmentIndex===t.textSegmentIndex:!0}function Bo(e,t,n){let r=ge(e,t.ref,n);if(!r)return!1;if(typeof t.ref.textSegmentIndex=="number"){let i=Fo(r,t.ref.textSegmentIndex);return i?(i.nodeValue=t.initialText,!0):!1}return typeof t.initialHtml=="string"?(r.innerHTML=t.initialHtml,!0):(r.textContent=t.initialText,!0)}function Fo(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!ut(r)||(r.textContent??"").trim().length===0)){if(n===t)return r;n+=1}return null}function qo(e,t,n,r,i){let o=$e(e,t,n,r),s=Ft(o);if(!s)return null;let c=s.getAttribute("data-vcp-edit-key")??"",a=he(e,s,r),l=i?.(a.key)??i?.(c);if(!Vn({operationSummary:l?.operationSummary,tagName:s.tagName,fallbackMode:"preview"}).canUpdateText)return null;let p=Vo(e,t,n,s);if(p){let E=Ko(s,p);if(E!==null)return{element:s,textNode:p,textSegmentIndex:E}}return ht(s)?null:{element:s}}function Vo(e,t,n,r){let i=wo(e,t,n);return!i||i.parentElement!==r?null:i}function wo(e,t,n){let r=e,o=r.caretPositionFromPoint?.(t,n)?.offsetNode??null;if(ut(o))return o;let c=r.caretRangeFromPoint?.(t,n)?.startContainer??null;return ut(c)?c:null}function Ko(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!ut(r)||(r.textContent??"").trim().length===0)){if(r===t)return n;n+=1}return null}function ut(e){return e?.nodeType===3}function zo(e,t,n){return(typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean))[0]??null}function Wo(e,t,n){let r=t;for(;r&&!r.getAttribute("data-site-block-id");)r=r.parentElement;if(!r)return null;let i=r.getAttribute("data-site-block-id")??"",o=r.getAttribute("data-vcp-edit-key")??"";return!i||!o?null:{blockId:i,ref:lt(e,r,n),rect:Te(r.getBoundingClientRect()),targetIsSectionRoot:t===r}}function $o(e,t){return Array.from(e.querySelectorAll("[data-site-block-id]")).filter(n=>{let r=n.parentElement;for(;r;){if(r.getAttribute("data-site-block-id"))return!1;r=r.parentElement}return!!(n.getAttribute("data-site-block-id")&&n.getAttribute("data-vcp-edit-key"))}).map(n=>({element:n,blockId:n.getAttribute("data-site-block-id")??"",ref:lt(e,n,t),rect:Te(n.getBoundingClientRect())})).filter(({rect:n})=>n.width>0&&n.height>0).sort((n,r)=>n.rect.top-r.rect.top||n.rect.left-r.rect.left)}function Uo(e,t,n){let r=$o(e,n),i=r[0],o=r.at(-1);return!i||!o?null:[{anchorBlockId:i.blockId,anchorRef:i.ref,placement:"before",boundary:{top:i.rect.top,left:i.rect.left,width:i.rect.width}},...r.slice(1).map(c=>({anchorBlockId:c.blockId,anchorRef:c.ref,placement:"before",boundary:{top:c.rect.top,left:c.rect.left,width:c.rect.width}})),{anchorBlockId:o.blockId,anchorRef:o.ref,placement:"after",boundary:{top:o.rect.top+o.rect.height,left:o.rect.left,width:o.rect.width}}].find(({boundary:c})=>t.clientX>=c.left&&t.clientX<=c.left+c.width&&Math.abs(t.clientY-c.top)<=an)??null}function $e(e,t,n,r=null){let i=typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean);for(let o of i){let s=Ft(o),c=s?.getAttribute("data-vcp-edit-key")??"";if(s&&Wn(s,r,c))return s}return null}function Ft(e){let t=e,n=null;for(;t;){let r=t.getAttribute("data-vcp-edit-key")??"";if(r){if(qt(t))return n??t;!Go(r)&&!n&&(n=t)}t=t.parentElement}return n}function qt(e){return e.getAttribute(jr)!==null}function Go(e){return jo(e.split("::")[0]??"")}function jo(e){if(!e)return!1;let t=Ho(e);return t===et||t.startsWith(`${et}/`)||t.includes(`/${et}/`)||t.endsWith(`/${et}`)}function Ho(e){let n=(e.split("?")[0]??e).replace(/\\/g,"/").replace(/^\.\//,""),r=[];for(let i of n.split("/"))if(!(!i||i===".")){if(i===".."){r.pop();continue}r.push(i)}return r.join("/")}function he(e,t,n){let r=t.getAttribute("data-vcp-edit-key")??"",i=zn(Un(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${Jn(r)}"]`))),n,r);if(i.length<=1)return{key:vn(n,r,0)};let o=i.indexOf(t);return o>=0?{key:vn(n,r,o),instanceIndex:o,instanceCount:i.length}:{key:r}}function lt(e,t,n){return he(e,t,n)}function ge(e,t,n){let r=dt(t.key)??t.key,i=zn(Un(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${Jn(r)}"]`))),n,t.key);if(i.length===0)return null;let o=typeof t.instanceIndex=="number"&&t.instanceIndex>=0&&t.instanceIndex<i.length?t.instanceIndex:null,s=(dt(t.key)??t.key)!==t.key;if(o!==null&&!s)return i[o]??null;let c=Yo(n,t.key);return c!==null&&c>=0&&c<i.length?i[c]??null:o!==null?i[o]??null:i[0]??null}function vn(e,t,n){return Kn(e,t)[n]?.key??t}function Yo(e,t){let n=dt(t);if(!n)return null;let i=Kn(e,n).findIndex(o=>o.key===t);return i>=0?i:null}function Kn(e,t){return(e?.entries??[]).filter(n=>(dt(n.key)??n.key)===t)}function zn(e,t,n){let r=$n(t,n);return r?e.filter(i=>i.tagName.toLowerCase()===r):e}function Wn(e,t,n){let r=$n(t,n);return!r||e.tagName.toLowerCase()===r}function $n(e,t){return null}var Xo=2,Jo=4;function Un(e){return[...e].sort((t,n)=>{if(t===n)return 0;let r=typeof t.compareDocumentPosition=="function"?t.compareDocumentPosition(n):0;return(r&Jo)!==0?-1:(r&Xo)!==0?1:0})}function dt(e){if(typeof e!="string"||e.length===0)return e??null;let t=e;for(;;){let n=t.lastIndexOf(fn);if(n<0)break;let r=Number(t.slice(n+fn.length));if(!Number.isInteger(r)||r<0)return e;t=t.slice(0,n)}return t}function ft(e){let n=e.ownerDocument?.defaultView?.getComputedStyle(e);return{...Vt(n),paddingTop:se(n?.paddingTop),paddingRight:se(n?.paddingRight),paddingBottom:se(n?.paddingBottom),paddingLeft:se(n?.paddingLeft),borderTopWidth:se(n?.borderTopWidth),borderRightWidth:se(n?.borderRightWidth),borderBottomWidth:se(n?.borderBottomWidth),borderLeftWidth:se(n?.borderLeftWidth),columnGap:se(n?.columnGap),rowGap:se(n?.rowGap)}}function Vt(e){return{marginTop:se(e?.marginTop,!0),marginRight:se(e?.marginRight,!0),marginBottom:se(e?.marginBottom,!0),marginLeft:se(e?.marginLeft,!0)}}function se(e,t=!1){let n=Number.parseFloat(e??"");return Number.isFinite(n)?t?n:Math.max(0,n):0}function wt(e){let t=e.ownerDocument?.defaultView;return Array.from(e.children).filter(n=>typeof n.getBoundingClientRect=="function").map(n=>({rect:Te(n.getBoundingClientRect()),margin:Vt(t?.getComputedStyle(n))})).filter(({rect:n})=>n.width>0&&n.height>0)}function Qo(e){return Array.from(e.children).filter(t=>typeof t.getBoundingClientRect=="function").map(t=>Te(t.getBoundingClientRect())).filter(t=>t.width>0&&t.height>0)}var Rn=new WeakMap,xn=0;function ze(e){let t=Rn.get(e);if(t)return t;xn+=1;let n=`runtime-node-${xn}`;return Rn.set(e,n),n}function Gn(e,t,n){let r=n??e.ownerDocument?.defaultView,i=e.ownerDocument?.defaultView?.getComputedStyle(e),o=Te(t),s=G(r?.scrollX),c=G(r?.scrollY),a=i?.position||"static";return{version:Rt,runtimeNodeId:ze(e),rect:{viewport:o,document:{top:o.top+c,left:o.left+s,width:o.width,height:o.height}},layout:{position:a,transform:i?.transform||"none",containingBlock:Lo(e,a)},scrollContext:{scrollX:s,scrollY:c,viewportWidth:G(r?.innerWidth),viewportHeight:G(r?.innerHeight),scrollContainers:Zo(e)}}}function Zo(e){let t=e.ownerDocument,n=t?.defaultView,r=[],i=e.parentElement;for(;i;){if(i!==t?.body&&i!==t?.documentElement){let o=n?.getComputedStyle(i),s=o?.overflowX||o?.overflow||"visible",c=o?.overflowY||o?.overflow||"visible",a=G(i.scrollLeft),l=G(i.scrollTop),u=a!==0||Tn(s)&&G(i.scrollWidth)>G(i.clientWidth),p=l!==0||Tn(c)&&G(i.scrollHeight)>G(i.clientHeight);(u||p)&&r.push({runtimeNodeId:ze(i),scrollLeft:a,scrollTop:l})}i=i.parentElement}return r}function Tn(e){return["auto","scroll","overlay","hidden"].includes(e)}function Lo(e,t){if(t==="fixed"){let r=_n(e.parentElement,!0);return r?{kind:"element",runtimeNodeId:ze(r)}:{kind:"viewport"}}if(t==="absolute"){let r=e.offsetParent,i=ei(r)??_n(e.parentElement,!1);return i?{kind:"element",runtimeNodeId:ze(i)}:{kind:"document"}}let n=e.parentElement;return n?{kind:"element",runtimeNodeId:ze(n)}:{kind:"document"}}function _n(e,t){let n=e;for(;n;){let r=n.ownerDocument?.defaultView?.getComputedStyle(n);if(!!(r?.transform&&r.transform!=="none")||!!(r?.perspective&&r.perspective!=="none")||!!(r?.filter&&r.filter!=="none")||(r?.willChange??"").split(",").some(o=>["transform","perspective","filter"].includes(o.trim()))||!t&&(r?.position||"static")!=="static")return n;n=n.parentElement}return null}function ei(e){return e&&typeof e.getBoundingClientRect=="function"?e:null}function fe(e,t,n,r="full",i){let o=e.getBoundingClientRect(),s=n?.(t.key)??null,c=e.tagName.toLowerCase(),a=Ge(e),l=r==="full"?{textPreview:e.textContent?.trim().slice(0,80),dataset:Object.fromEntries(Object.entries(e.dataset).map(([P,k])=>[P,k??""])),attributes:Object.fromEntries(e.getAttributeNames().map(P=>[P,e.getAttribute(P)??""]))}:{},u=Vn({operationSummary:s?.operationSummary,tagName:c,fallbackMode:"preview"}),p=qt(e),E=!0,v=jn(e)?.getAttribute("data-vcp-edit-key")??null,M=wt(e),R=Gn(e,o,i);return{ref:t,key:t.key,detailLevel:r,tagName:c,...s?{sourceKind:"jsx"}:{},...v?{parentKey:v}:{},...s?.pageCompositionUnitKey?{pageCompositionUnitKey:s.pageCompositionUnitKey}:{},...l,runtimeFlags:{selectable:!0,movable:u.canMove,removable:u.canRemove,textEditable:u.canUpdateText,container:p?!1:!!ht(e)||u.canInsertChild||E&&Bt(c)},layoutSnapshot:R,layout:a,rect:{top:o.top,left:o.left,width:o.width,height:o.height},childBoxes:M,childRects:M.map(({rect:P})=>P),spacing:ft(e)}}function An(e,t,n,r){let i=e.getBoundingClientRect(),o=Gn(e,i,n);if(r==="light")return{ref:t,layoutSnapshot:o};if(r==="child-rects")return{ref:t,layoutSnapshot:o,childRects:Qo(e)};let s=wt(e);return{ref:t,layoutSnapshot:o,childBoxes:s,childRects:s.map(({rect:c})=>c),layout:Ge(e),spacing:ft(e)}}function Pn(e){let t=e.layout?.display??"",n=e.spacing;return["flex","inline-flex","grid","inline-grid"].includes(t)&&!!(n&&(n.columnGap>0||n.rowGap>0)&&(e.childRects?.length??0)>=2)}function ti(e,t,n,r,i){let o=t,s=An(o,n,e,"detailed"),c=Pn(s),a=null,l=null,u="mutation",p=De(e),E=p,v=!1,M=!1,R=({reason:Y,sourceEventAt:x,forceEmit:N=!1,includeDetailedGeometry:T=!1})=>{(a===null||(Y==="scroll"?0:1)>=(u==="scroll"?0:1))&&(u=Y,p=x),v=v||N,M=M||T,a===null&&(a=ct(e,P))},P=()=>{let Y=De(e);a=null;let x=u,N=p,T=v,$=M;v=!1,M=!1;let z=ge(e.document,n,r?.()??null);if(!z)return;z!==o&&(ne?.unobserve(o),o=z,ne?.observe(o),$=!0);let m=$?"detailed":c?"child-rects":"light",I=An(o,n,e,m),B=I.layoutSnapshot.rect.viewport;B.width<=0||B.height<=0||!T&&!ni(s,I)||(s=I,m==="detailed"&&(c=Pn(I)),i(x,I,{sourceEventAt:N,captureStartedAt:Y,capturedAt:De(e)}))},k=()=>{l!==null&&(e.clearTimeout(l),l=null)},D=()=>{k(),R({reason:"resize",sourceEventAt:De(e),includeDetailedGeometry:!0})},L=()=>{k(),R({reason:"mutation",sourceEventAt:De(e),includeDetailedGeometry:!0})},g=()=>{E=De(e),R({reason:"scroll",sourceEventAt:E}),k(),l=e.setTimeout(()=>{l=null,R({reason:"scroll",sourceEventAt:E,forceEmit:!0,includeDetailedGeometry:!0})},$r)},ce=e.ResizeObserver,ne=typeof ce=="function"?new ce(D):null;ne?.observe(o);let ee=e.MutationObserver,ae=typeof ee=="function"?new ee(L):null;ae?.observe(e.document.documentElement,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),e.addEventListener("resize",D,{passive:!0}),e.addEventListener("scroll",g,{passive:!0});let X=e.visualViewport;return X?.addEventListener?.("resize",D,{passive:!0}),X?.addEventListener?.("scroll",g,{passive:!0}),e.document.addEventListener("scroll",g,{capture:!0,passive:!0}),e.document.addEventListener("load",L,!0),()=>{a!==null&&(at(e,a),a=null),k(),ne?.disconnect(),ae?.disconnect(),e.removeEventListener("resize",D),e.removeEventListener("scroll",g),X?.removeEventListener?.("resize",D),X?.removeEventListener?.("scroll",g),e.document.removeEventListener("scroll",g,!0),e.document.removeEventListener("load",L,!0)}}function De(e){let t=e.performance;return t&&Number.isFinite(t.timeOrigin)&&typeof t.now=="function"?t.timeOrigin+t.now():Date.now()}function ni(e,t){return ri(e.layoutSnapshot,t.layoutSnapshot)||t.childBoxes!==void 0&&ii(e.childBoxes,t.childBoxes)||t.childRects!==void 0&&si(e.childRects,t.childRects)||t.layout!==void 0&&Nt(e.layout,t.layout)||t.spacing!==void 0&&Nt(e.spacing,t.spacing)}function ri(e,t){return!e||!t?e!==t:e.version!==t.version||e.runtimeNodeId!==t.runtimeNodeId||pt(e.rect.viewport,t.rect.viewport)||pt(e.rect.document,t.rect.document)||e.layout.position!==t.layout.position||e.layout.transform!==t.layout.transform||e.layout.containingBlock.kind!==t.layout.containingBlock.kind||e.layout.containingBlock.kind==="element"&&t.layout.containingBlock.kind==="element"&&e.layout.containingBlock.runtimeNodeId!==t.layout.containingBlock.runtimeNodeId||e.scrollContext.scrollX!==t.scrollContext.scrollX||e.scrollContext.scrollY!==t.scrollContext.scrollY||e.scrollContext.viewportWidth!==t.scrollContext.viewportWidth||e.scrollContext.viewportHeight!==t.scrollContext.viewportHeight||oi(e.scrollContext.scrollContainers,t.scrollContext.scrollContainers)}function oi(e,t){return e.length!==t.length||e.some((n,r)=>{let i=t[r];return!i||n.runtimeNodeId!==i.runtimeNodeId||n.scrollLeft!==i.scrollLeft||n.scrollTop!==i.scrollTop})}function ii(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>{let s=r[o];return!s||pt(i.rect,s.rect)||Nt(i.margin,s.margin)})}function si(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>pt(i,r[o]??i))}function Nt(e,t){let n=e??{},r=t??{},i=new Set([...Object.keys(n),...Object.keys(r)]);return Array.from(i).some(o=>n[o]!==r[o])}function Te(e){return{top:e.top,left:e.left,width:e.width,height:e.height}}function pt(e,t){return Math.abs(e.top-t.top)>.5||Math.abs(e.left-t.left)>.5||Math.abs(e.width-t.width)>.5||Math.abs(e.height-t.height)>.5}function ci(e,t,n,r,i,o,s){let c=e.document,a=$e(c,t,n,o);if(!a)return{anchorHit:null,targetParentHit:null,relation:"none",rejectionReason:"no-editable-hit"};let l=i?ge(c,i,o):null;if(l&&Dt(a,l))return nt(c,a,"self-or-descendant",o,s);if(r==="move"&&l){let R=di(c,a,l,o,s);if(R){let P=Tt(R.child,R.targetParent,t,n,"nearest");if(P)return rt(c,R.child,R.targetParent,P,o,s)}}let u=null,p=!1,E=a,v=a.parentElement;for(;v;){if(v.getAttribute("data-vcp-edit-key")){if(l&&Dt(v,l))return nt(c,a,"self-or-descendant",o,s);let R=Nn(v,r,s);if(R==="accept"){u={child:E,targetParent:v};break}R==="blocked"&&(p=!0),E=v}v=v.parentElement}let M=Nn(a,r,s);if(M==="accept"){if(u){let R=Tt(u.child,u.targetParent,t,n,"edge");if(R)return rt(c,u.child,u.targetParent,R,o,s)}return rt(c,a,a,ai(a,t,n),o,s)}if(u){let R=Tt(u.child,u.targetParent,t,n,"nearest");return rt(c,u.child,u.targetParent,R??"after",o,s)}return M==="blocked"||p?nt(c,a,"operation-boundary-blocked",o,s):nt(c,a,"no-accepting-parent",o,s)}function nt(e,t,n,r,i){return{anchorHit:fe(t,he(e,t,r),i,"summary"),targetParentHit:null,relation:"none",rejectionReason:n}}function rt(e,t,n,r,i,o){let s=fe(t,he(e,t,i),o,"summary"),c=fe(n,he(e,n,i),o,"summary"),a=Ge(n).indicatorOrientation,l=r==="append"||r==="prepend"?ui(n.getBoundingClientRect(),a,r):li(t.getBoundingClientRect(),a,r);return{anchorHit:s,targetParentHit:c,relation:r,indicatorOrientation:a,indicatorBounds:l}}function Nn(e,t,n){if(qt(e))return"not-container";let r=e.getAttribute("data-vcp-edit-key")??"",i=n?.(r)??null;if(i)return i.operationSummary.canInsertChild===!0?"accept":ht(e)?"blocked":"not-container";let o=e.tagName.toLowerCase();return Bt(o)?"accept":"not-container"}function Tt(e,t,n,r,i){let o=Ge(t).indicatorOrientation,s=e.getBoundingClientRect(),c=o==="vertical"?s.width>0?(n-s.left)/s.width:.5:s.height>0?(r-s.top)/s.height:.5;return i==="edge"&&c>=.25&&c<=.75?null:c<.5?"before":"after"}function ai(e,t,n){let r=Ge(e).indicatorOrientation,i=e.getBoundingClientRect();return(r==="vertical"?i.width>0?(t-i.left)/i.width:.5:i.height>0?(n-i.top)/i.height:.5)<.5?"prepend":"append"}function Ge(e){let n=e.ownerDocument?.defaultView?.getComputedStyle(e),r=n?.display??"",i=n?.flexDirection,o=n?.gridAutoFlow,s="horizontal";return r==="flex"||r==="inline-flex"?s=(i??"row").startsWith("row")?"vertical":"horizontal":(r==="grid"||r==="inline-grid")&&(s=(o??"row").includes("column")?"vertical":"horizontal"),{display:r,...i?{flexDirection:i}:{},...o?{gridAutoFlow:o}:{},indicatorOrientation:s}}function ui(e,t,n){if(t==="vertical")return{left:n==="prepend"?e.left:e.left+e.width-3,top:e.top,width:3,height:e.height};let r=n==="prepend"?e.top:e.top+e.height-3;return{left:e.left,top:r,width:e.width,height:3}}function li(e,t,n){if(t==="vertical")return{left:n==="before"?e.left:e.left+e.width-3,top:e.top,width:3,height:e.height};let r=n==="before"?e.top:e.top+e.height-3;return{left:e.left,top:r,width:e.width,height:3}}function Dt(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentElement}return!1}function di(e,t,n,r,i){let o=pi(e,t,n,r,i);if(o)return o;let s=jn(n);if(!s||t===s)return null;let c=t,a=t.getAttribute("data-vcp-edit-key")?t:null;for(;c&&c!==s;)c.getAttribute("data-vcp-edit-key")&&(a=c),c=c.parentElement;return c!==s||!a||a===s||a===n||Dt(a,n)?null:{child:a,targetParent:s}}function pi(e,t,n,r,i){return null}function jn(e){let t=e.parentElement;for(;t;){if(t.getAttribute("data-vcp-edit-key"))return t;t=t.parentElement}return null}function ht(e){for(let t of Array.from(e.childNodes)){if(typeof t.getAttribute!="function")continue;let n=t;if(n.getAttribute("data-vcp-edit-key"))return n;let r=ht(n);if(r)return r}return null}function ot(e){let t=e.document.documentElement,n=e.document.body;return{scrollX:G(e.scrollX),scrollY:G(e.scrollY),scrollWidth:Math.max(G(t?.scrollWidth),G(n?.scrollWidth),G(e.innerWidth)),scrollHeight:Math.max(G(t?.scrollHeight),G(n?.scrollHeight),G(e.innerHeight)),viewportWidth:G(e.innerWidth),viewportHeight:G(e.innerHeight)}}function mi(e,t){Object.entries(t.attributes??{}).forEach(([r,i])=>{if(i===null){e.removeAttribute(r);return}e.setAttribute(r,i)}),typeof t.className=="string"&&(e.className=t.className);let n=new Set(t.styleDeclarations?.map(r=>r.property)??[]);Object.entries(t.style??{}).forEach(([r,i])=>{if(n.has(r))return;let o=e.style,s=r.replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`);if(i==null||i===""){o.removeProperty(s);return}o.setProperty(s,String(i))}),t.styleDeclarations?.forEach(r=>{let i=e.style,o=r.property.replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`),s=r.value;if(s==null||s===""){i.removeProperty(o);return}i.setProperty(o,String(s),r.priority)})}var fi=500,we=new Map;function hi(e,t){return`${e}:${t.key}:${t.instanceIndex??""}`}function gi(e,t){if(we.size>=fi){let n=we.keys().next().value;n&&we.delete(n)}we.set(e,t)}var We=new Set;function yi(e,t){let n=e.documentElement?.style,r=new Set;for(let[i,o]of Object.entries(t.variables??{}))i.startsWith("--")&&(r.add(i),n?.setProperty(i,o));for(let i of We)r.has(i)||n?.removeProperty(i);We.clear();for(let i of r)We.add(i);Ci(e,t.stylesheets??[])}function bi(e){let t=e.documentElement?.style;for(let n of We)t?.removeProperty(n);We.clear();for(let n of Xn(e))n.remove()}function Ei(e,t){let n=Array.from(new Set(t.filter(s=>typeof s=="string"&&s.startsWith("--"))));if(n.length===0)return{};let r=e.documentElement,i=r?e.defaultView?.getComputedStyle(r):null,o={};for(let s of n){let c=Hn(i,s);c&&(o[s]=c)}return o}function Hn(e,t,n=new Set){if(!e||n.has(t))return null;n.add(t);let r=e.getPropertyValue(t).trim();return Yn(e,r,n)}function Yn(e,t,n){if(!t)return null;let r=Si(t);if(!r)return t;let i=Hn(e,r.name,n);return i||(r.fallback?Yn(e,r.fallback,n)??r.fallback:null)}function Si(e){let t=e.trim();if(!t.startsWith("var(")||!t.endsWith(")"))return null;let n=t.slice(4,-1).trim(),r=Ii(n),i=r>=0?n.slice(0,r).trim():n;if(!i.startsWith("--"))return null;let o=r>=0?n.slice(r+1).trim():null;return{name:i,fallback:o||null}}function Ii(e){let t=0;for(let n=0;n<e.length;n+=1){let r=e[n];if(r==="("){t+=1;continue}if(r===")"){t=Math.max(0,t-1);continue}if(r===","&&t===0)return n}return-1}function Ci(e,t){let n=new Set(t.filter(o=>typeof o=="string"&&o.length>0)),r=new Map;for(let o of Xn(e)){let s=o.getAttribute("href")??"";if(!n.has(s)||r.has(s)){o.remove();continue}r.set(s,o)}let i=e.head;if(i)for(let o of n){if(r.has(o))continue;let s=e.createElement("link");s.setAttribute("rel","stylesheet"),s.setAttribute(kn,"true"),s.setAttribute("href",o),i.appendChild(s)}}function Xn(e){return Array.from(e.querySelectorAll(`link[${kn}]`))}function vi(e,t,n,r,i={}){let o=i.textNode?Ri(e.document,i.textNode):null;if(i.textNode&&!o)throw new Error("Failed to prepare text segment editor");let s=o?.element??t,c=s.textContent??"",a=o?void 0:t.innerHTML,l=xi(s),u=!1,p=()=>{e.document.removeEventListener("pointerdown",v,!0),s.removeEventListener("keydown",M),s.removeEventListener("blur",R),s.removeEventListener("input",P),_i(s,l)},E=k=>{if(u)return;u=!0;let D=s.textContent??"";if(p(),k==="cancel"){o?.restore(c),o||(t.textContent=c),r({kind:"text-edit-cancel",payload:{ref:n}});return}if(o?.restore(D),k==="commit"&&D!==c){i.onCommitSnapshot?.({ref:n,initialText:c,...a!==void 0?{initialHtml:a}:{}}),r({kind:"text-edit-commit",payload:{ref:n,value:D}});return}r({kind:"text-edit-exit",payload:{ref:n}})};function v(k){let D=k.target;D&&s.contains(D)||E("commit")}function M(k){if(k.key==="Escape"){k.preventDefault(),E("cancel");return}k.key==="Enter"&&(k.metaKey||k.ctrlKey)&&(k.preventDefault(),E("commit"))}function R(){E("commit")}function P(){r({kind:"text-edit-input",payload:{ref:n,hit:fe(t,n,void 0,"full")}})}return Ti(s),e.document.addEventListener("pointerdown",v,!0),s.addEventListener("keydown",M),s.addEventListener("blur",R),s.addEventListener("input",P),Ni(s),Di(s,e.document),p}function Ri(e,t){let n=t.parentNode;if(!n)return null;let r=e.createElement("span");return r.setAttribute("data-vcp-text-segment-editor","true"),r.textContent=t.textContent??"",n.replaceChild(r,t),{element:r,restore(i){t.nodeValue=i,r.parentNode&&r.parentNode.replaceChild(t,r)}}}function xi(e){return{contentEditable:e.getAttribute("contenteditable"),spellcheck:e.getAttribute("spellcheck"),marker:e.getAttribute("data-vcp-edit-text-editing"),cursor:e.style.cursor,userSelect:e.style.userSelect}}function Ti(e){Ai(e.ownerDocument),e.setAttribute("contenteditable","plaintext-only"),e.setAttribute("spellcheck","false"),e.setAttribute("data-vcp-edit-text-editing","true"),e.style.cursor="text",e.style.userSelect="text"}function _i(e,t){_t(e,"contenteditable",t.contentEditable),_t(e,"spellcheck",t.spellcheck),_t(e,"data-vcp-edit-text-editing",t.marker),e.style.cursor=t.cursor,e.style.userSelect=t.userSelect}function Ai(e){if(e.getElementById("vcp-text-edit-base-style"))return;let t=e.createElement("style");t.id="vcp-text-edit-base-style",t.textContent='[data-vcp-edit-text-editing="true"]{outline:0!important;outline-offset:0!important;}',e.head.appendChild(t)}function _t(e,t,n){if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)}function Pi(e){let t=[e.documentElement,e.body].filter(r=>!!r?.style),n=t.map(r=>({element:r,userSelect:r.style.userSelect}));for(let r of t)r.style.userSelect="none";return()=>{for(let r of n)r.element.style.userSelect=r.userSelect}}function Ni(e){try{e.focus({preventScroll:!0})}catch{e.focus()}}function Di(e,t){let n=t.createRange();n.selectNodeContents(e);let r=t.getSelection?.();r?.removeAllRanges(),r?.addRange(n)}function Jn(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function G(e){let t=Number(e);return Number.isFinite(t)?t:0}export{Ke as SITE_EDIT_COMPOSITION_MARKER_INVALID,On as SITE_EDIT_COMPOSITION_RENDER_MISMATCH,mt as VCP_PAGE_TEMPLATE_CONTEXT_MARKER_ATTRIBUTE,Dn as VCP_PAGE_TEMPLATE_CONTEXT_MARKER_SELECTOR,Ot as VCP_PAGE_TEMPLATE_CONTEXT_MARKER_VALUE,Mt as VCP_PAGE_TEMPLATE_EFFECTIVE_TEMPLATE_ID_ATTRIBUTE,kt as VCP_PAGE_TEMPLATE_ROUTE_ID_ATTRIBUTE,Pt as VCP_SITE_EDIT_BRIDGE_STATUS_EVENT,At as VCP_SITE_EDIT_ROUTE_READY_EVENT,Xr as readVcpPageTemplateContextMarker,Jr as resolveBrowserCompositionContext,it as resolveSiteEditRouteId,Lr as resolveSiteEditWebSocketUrl,Hi as startSiteEditAutoBootstrap,so as startSiteEditFrameRuntime};
31
+ `,c.appendChild(v);let M=So.map(x=>{let N=s.createElement("div");return N.setAttribute(E,x),N.setAttribute("aria-hidden","true"),a.appendChild(N),N}),R=null,P=null,k=()=>{R?.removeAttribute(p),P?.(),P=null,R=null},D=x=>{k(),R=x,P=st(x,i),x.setAttribute(p,"true"),M.forEach(N=>N.style.removeProperty("display"))};D(u);let L=!1,g=null,ce=()=>{if(!g||!u)return;let x=(N,T,$)=>{T?u.style.setProperty(N,T,$):u.style.removeProperty(N)};x("width",g.widthValue,g.widthPriority),x("height",g.heightValue,g.heightPriority)},ne=(x,N,T)=>g?{version:1,phase:x,sessionId:g.sessionId,pointerId:g.pointerId,edge:g.edge,ref:t,startWidth:g.startWidth,startHeight:g.startHeight,width:N,height:T,baselineStyleDeclarations:[{property:"width",value:g.widthValue||null,...g.widthPriority==="important"?{priority:"important"}:{}},{property:"height",value:g.heightValue||null,...g.heightPriority==="important"?{priority:"important"}:{}}]}:null,ee=x=>{if(!g||!u?.isConnected||x.pointerId!==g.pointerId)return!1;let N=Number(x.clientX)-g.startX,T=Number(x.clientY)-g.startY,$=Math.max(1,Math.round(g.startWidth+N)),z=Math.max(1,Math.round(g.startHeight+T));return(g.edge==="e"||g.edge==="se")&&u.style.setProperty("width",`${$}px`,"important"),(g.edge==="s"||g.edge==="se")&&u.style.setProperty("height",`${z}px`,"important"),!0},ae=()=>{if(L)return;let x=l();if(x===u&&x?.isConnected)return;ce();let N=g?.captureTarget,T=g?.pointerId;g=null,T!==void 0&&N?.releasePointerCapture?.(T),k(),u=x,u?.isConnected?D(u):M.forEach($=>$.style.setProperty("display","none","important"))},X=e.MutationObserver,Y=typeof X=="function"?new X(ae):null;return Y?.observe(s.documentElement,{attributeFilter:["data-vcp-edit-key"],attributes:!0,childList:!0,subtree:!0}),{begin(x,N){if(L||g||!u?.isConnected)return null;let T=u.getBoundingClientRect();return g={sessionId:`resize-${r}-${x.pointerId}`,pointerId:x.pointerId,edge:N,startX:Number(x.clientX),startY:Number(x.clientY),startWidth:T.width,startHeight:T.height,widthValue:u.style.getPropertyValue("width"),widthPriority:u.style.getPropertyPriority("width"),heightValue:u.style.getPropertyValue("height"),heightPriority:u.style.getPropertyPriority("height"),captureTarget:x.target},ne("start",T.width,T.height)},update:ee,finish(x,N){if(!g||x.pointerId!==g.pointerId)return null;N==="commit"&&ee(x);let T=Math.max(1,Math.round(g.startWidth+Number(x.clientX)-g.startX)),$=Math.max(1,Math.round(g.startHeight+Number(x.clientY)-g.startY)),z=ne(N,N==="commit"?T:g.startWidth,N==="commit"?$:g.startHeight),m=g.captureTarget,I=g.pointerId;return N==="cancel"&&ce(),g=null,m?.releasePointerCapture?.(I),z},cleanup(){if(L)return;L=!0,Y?.disconnect(),ce();let x=g?.captureTarget,N=g?.pointerId;g=null,N!==void 0&&x?.releasePointerCapture?.(N),k(),u=null,M.forEach(T=>T.remove()),v.remove()}}}function Cn(e){let t=e.kind;return t==="bridge-initialize-session"||t==="bridge-get-document"||t==="bridge-get-history-status"||t==="bridge-get-style-context"||t==="bridge-ensure-document-version"||t==="bridge-acknowledge-document-version"||t==="bridge-get-object-edit-context"||t==="bridge-get-class-name-source"||t==="bridge-get-source-tree"||t==="bridge-get-source-file"||t==="bridge-resolve-source-location"||t==="bridge-execute"||t==="bridge-undo"||t==="bridge-redo"||t==="bridge-subscribe"||t==="bridge-unsubscribe"}function Ro(e){return e.kind==="update-text"||e.kind==="update-array-item"||e.kind==="set-class-name-source"||e.kind==="set-props"||e.kind==="apply-style-draft"}async function xo({message:e,sendEvent:t,sendResponse:n,subscriptions:r,getCurrentDocument:i,setCurrentDocument:o,onBridgeRequestError:s,nextRouteReadySequence:c,windowLike:a}){let l=a.__VCP_SITE_EDIT__;if(!l){n({type:"response",ok:!1,error:"Site edit bridge is not ready in preview frame"});return}try{switch(e.kind){case"bridge-initialize-session":{let u=await l.initializeSession({composition:e.payload.composition});o?.(u.data.document),qn(a,{composition:u.data.document.composition,editEngineVersion:"unknown",sequence:c(),version:u.data.document.version}),n({type:"response",ok:!0,result:u});return}case"bridge-get-document":{let u=await l.getDocument(e.payload.composition);o?.(u.data),n({type:"response",ok:!0,result:u});return}case"bridge-get-history-status":n({type:"response",ok:!0,result:await l.getHistoryStatus(e.payload.composition)});return;case"bridge-get-style-context":n({type:"response",ok:!0,result:await l.getStyleContext(e.payload.composition)});return;case"bridge-ensure-document-version":{if(!Number.isFinite(Number(e.payload.minVersion))){n({type:"response",ok:!1,error:"Invalid document version"});return}let u=l.ensureDocumentVersion?await l.ensureDocumentVersion(e.payload.composition,Number(e.payload.minVersion)):await l.getDocument(e.payload.composition);o?.(u.data),n({type:"response",ok:!0,result:u});return}case"bridge-acknowledge-document-version":{if(!Number.isFinite(Number(e.payload.version))){n({type:"response",ok:!1,error:"Invalid document version"});return}let u=l.acknowledgeDocumentVersion?await l.acknowledgeDocumentVersion(e.payload.composition,Number(e.payload.version)):await l.getDocument(e.payload.composition);o?.(u.data),n({type:"response",ok:!0,result:u});return}case"bridge-get-object-edit-context":n({type:"response",ok:!0,result:await l.getObjectEditContext(e.payload.key,e.payload.composition)});return;case"bridge-get-class-name-source":{let u=await l.getClassNameSource(e.payload.key,e.payload.composition);n({type:"response",ok:!0,result:To(u,e.payload.key,a.document,i?.()??null)});return}case"bridge-get-source-tree":n({type:"response",ok:!0,result:await l.getSourceTree(e.payload.composition)});return;case"bridge-get-source-file":n({type:"response",ok:!0,result:await l.getSourceFile({path:e.payload.path,composition:e.payload.composition})});return;case"bridge-resolve-source-location":n({type:"response",ok:!0,result:await l.resolveSourceLocation({key:e.payload.key,composition:e.payload.composition})});return;case"bridge-execute":{let u=await l.execute(e.payload.request);if(u.ok&&l.acknowledgeDocumentVersion&&Ro(e.payload.request)){let p=await l.acknowledgeDocumentVersion(e.payload.composition,u.data.resultVersion);o?.(p.data)}n({type:"response",ok:!0,result:u});return}case"bridge-undo":n({type:"response",ok:!0,result:await l.undo(e.payload.composition)});return;case"bridge-redo":n({type:"response",ok:!0,result:await l.redo(e.payload.composition)});return;case"bridge-subscribe":{let u=e.payload.subscriptionId;r.get(u)?.();let p=l.subscribe(E=>{t({kind:"bridge-event",payload:{composition:E.composition,event:E,subscriptionId:u}})});r.set(u,p),n({type:"response",ok:!0,result:{subscribed:!0}});return}case"bridge-unsubscribe":{let u=e.payload.subscriptionId;r.get(u)?.(),r.delete(u),n({type:"response",ok:!0,result:{unsubscribed:!0}});return}}}catch(u){s?.(u,e),n({type:"response",ok:!1,error:Fo(u)})}}function To(e,t,n,r){if(!e.ok)return e;let i=ge(n,{key:t},r),o=i?_o(i):null;return o?{...e,data:{...e.data,computedStyle:{...e.data.computedStyle??{},...o}}}:e}function _o(e){let t=e.ownerDocument.defaultView;if(!t)return null;let n=t.getComputedStyle(e);return{color:n.color,backgroundColor:n.backgroundColor,borderColor:n.borderColor}}function Ao(e,t,n=()=>e.location.pathname){let r=e.history.pushState,i=e.history.replaceState,o=n(),s=()=>{let l=n();l!==o&&(o=l,t())},c=()=>s(),a=()=>s();return e.history.pushState=function(...u){let p=r.apply(this,u);return s(),p},e.history.replaceState=function(...u){let p=i.apply(this,u);return s(),p},e.addEventListener("popstate",c),e.addEventListener("hashchange",a),()=>{e.history.pushState=r,e.history.replaceState=i,e.removeEventListener("popstate",c),e.removeEventListener("hashchange",a)}}function Po(e,t){let n=e.MutationObserver;if(typeof n!="function")return()=>{};let r=vn(e.document),i=new n(()=>{let o=vn(e.document);o!==r&&(r=o,t())});return i.observe(e.document.documentElement,{attributes:!0,attributeFilter:[mt,Bt,Ft],childList:!0,subtree:!0}),()=>i.disconnect()}function vn(e){let t=Array.from(e.querySelectorAll(kn)).filter(n=>n.getAttribute(mt)===Mt);return JSON.stringify(t.map(n=>[n.getAttribute(Bt),n.getAttribute(Ft)]))}function No(e){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>requestAnimationFrame(e));return}setTimeout(e,0)}function ct(e,t){return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(t):e.setTimeout(t,0)}function at(e,t){if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(t);return}e.clearTimeout(t)}function qn(e,t){e.dispatchEvent(new CustomEvent(Nt,{detail:t}))}function Do(e,t){e.dispatchEvent(new CustomEvent(Dt,{detail:t}))}function Oo(e){return e?e.getConnectionState?e.getConnectionState()==="open":!0:!1}function ko(e,t){return Z(e.composition)===t}function Mo(e){return Ue(e,"").includes(Ke)}function Bo(e){return Ue(e,"").includes(Mn)}function Ue(e,t){return e instanceof Error&&e.message?e.message:typeof e=="string"&&e?e:t}function Vn(e){let t=Ue(e,"");return/websocket|readyState|not open|disconnected|bridge request timed out|network|econnreset|broken pipe|socket closed/i.test(t)}function Fo(e){let t=Ue(e,"Site edit bridge request failed");return/bridge request timed out/i.test(t)?"Site edit bridge request timed out":Vn(t)?"Site edit bridge disconnected":t}function Ne(e){let t=e instanceof Error?e.message:typeof e=="string"?e:"";return/authentication|auth failed|auth rejected|bridge key|session|unauthorized|forbidden|expired/i.test(t)}function wn(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function qt(e){return Xr.has(zn(e))}function qo(e){return Jr.has(zn(e))}function Kn(e){return e.operationSummary?{canUpdateText:e.operationSummary.canUpdateText,canInsertChild:e.operationSummary.canInsertChild,canMove:e.operationSummary.canMove,canRemove:e.operationSummary.canRemove}:e.fallbackMode!=="preview"?{canUpdateText:!1,canInsertChild:!1,canMove:!1,canRemove:!1}:{canUpdateText:qo(e.tagName),canInsertChild:qt(e.tagName),canMove:!1,canRemove:!1}}function zn(e){return e?.trim().toLowerCase()??""}function Rn(e,t){return e.key!==t.key||e.instanceIndex!==t.instanceIndex||e.instanceCount!==t.instanceCount?!1:typeof e.textSegmentIndex=="number"&&typeof t.textSegmentIndex=="number"?e.textSegmentIndex===t.textSegmentIndex:!0}function Vo(e,t,n){let r=ge(e,t.ref,n);if(!r)return!1;if(typeof t.ref.textSegmentIndex=="number"){let i=wo(r,t.ref.textSegmentIndex);return i?(i.nodeValue=t.initialText,!0):!1}return typeof t.initialHtml=="string"?(r.innerHTML=t.initialHtml,!0):(r.textContent=t.initialText,!0)}function wo(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!ut(r)||(r.textContent??"").trim().length===0)){if(n===t)return r;n+=1}return null}function Ko(e,t,n,r,i){let o=$e(e,t,n,r),s=Vt(o);if(!s)return null;let c=s.getAttribute("data-vcp-edit-key")??"",a=he(e,s,r),l=i?.(a.key)??i?.(c);if(!Kn({operationSummary:l?.operationSummary,tagName:s.tagName,fallbackMode:"preview"}).canUpdateText)return null;let p=zo(e,t,n,s);if(p){let E=$o(s,p);if(E!==null)return{element:s,textNode:p,textSegmentIndex:E}}return ht(s)?null:{element:s}}function zo(e,t,n,r){let i=Wo(e,t,n);return!i||i.parentElement!==r?null:i}function Wo(e,t,n){let r=e,o=r.caretPositionFromPoint?.(t,n)?.offsetNode??null;if(ut(o))return o;let c=r.caretRangeFromPoint?.(t,n)?.startContainer??null;return ut(c)?c:null}function $o(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!ut(r)||(r.textContent??"").trim().length===0)){if(r===t)return n;n+=1}return null}function ut(e){return e?.nodeType===3}function Uo(e,t,n){return(typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean))[0]??null}function Go(e,t,n){let r=t;for(;r&&!r.getAttribute("data-site-block-id");)r=r.parentElement;if(!r)return null;let i=r.getAttribute("data-site-block-id")??"",o=r.getAttribute("data-vcp-edit-key")??"";return!i||!o?null:{blockId:i,ref:lt(e,r,n),rect:Te(r.getBoundingClientRect()),targetIsSectionRoot:t===r}}function jo(e,t){return Array.from(e.querySelectorAll("[data-site-block-id]")).filter(n=>{let r=n.parentElement;for(;r;){if(r.getAttribute("data-site-block-id"))return!1;r=r.parentElement}return!!(n.getAttribute("data-site-block-id")&&n.getAttribute("data-vcp-edit-key"))}).map(n=>({element:n,blockId:n.getAttribute("data-site-block-id")??"",ref:lt(e,n,t),rect:Te(n.getBoundingClientRect())})).filter(({rect:n})=>n.width>0&&n.height>0).sort((n,r)=>n.rect.top-r.rect.top||n.rect.left-r.rect.left)}function Ho(e,t,n){let r=jo(e,n),i=r[0],o=r.at(-1);return!i||!o?null:[{anchorBlockId:i.blockId,anchorRef:i.ref,placement:"before",boundary:{top:i.rect.top,left:i.rect.left,width:i.rect.width}},...r.slice(1).map(c=>({anchorBlockId:c.blockId,anchorRef:c.ref,placement:"before",boundary:{top:c.rect.top,left:c.rect.left,width:c.rect.width}})),{anchorBlockId:o.blockId,anchorRef:o.ref,placement:"after",boundary:{top:o.rect.top+o.rect.height,left:o.rect.left,width:o.rect.width}}].find(({boundary:c})=>t.clientX>=c.left&&t.clientX<=c.left+c.width&&Math.abs(t.clientY-c.top)<=ln)??null}function $e(e,t,n,r=null){let i=typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean);for(let o of i){let s=Vt(o),c=s?.getAttribute("data-vcp-edit-key")??"";if(s&&Un(s,r,c))return s}return null}function Vt(e){let t=e,n=null;for(;t;){let r=t.getAttribute("data-vcp-edit-key")??"";if(r){if(wt(t))return n??t;!Yo(r)&&!n&&(n=t)}t=t.parentElement}return n}function wt(e){return e.getAttribute(Yr)!==null}function Yo(e){return Xo(e.split("::")[0]??"")}function Xo(e){if(!e)return!1;let t=Jo(e);return t===et||t.startsWith(`${et}/`)||t.includes(`/${et}/`)||t.endsWith(`/${et}`)}function Jo(e){let n=(e.split("?")[0]??e).replace(/\\/g,"/").replace(/^\.\//,""),r=[];for(let i of n.split("/"))if(!(!i||i===".")){if(i===".."){r.pop();continue}r.push(i)}return r.join("/")}function he(e,t,n){let r=t.getAttribute("data-vcp-edit-key")??"",i=$n(jn(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${Zn(r)}"]`))),n,r);if(i.length<=1)return{key:xn(n,r,0)};let o=i.indexOf(t);return o>=0?{key:xn(n,r,o),instanceIndex:o,instanceCount:i.length}:{key:r}}function lt(e,t,n){return he(e,t,n)}function ge(e,t,n){let r=dt(t.key)??t.key,i=$n(jn(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${Zn(r)}"]`))),n,t.key);if(i.length===0)return null;let o=typeof t.instanceIndex=="number"&&t.instanceIndex>=0&&t.instanceIndex<i.length?t.instanceIndex:null,s=(dt(t.key)??t.key)!==t.key;if(o!==null&&!s)return i[o]??null;let c=Qo(n,t.key);return c!==null&&c>=0&&c<i.length?i[c]??null:o!==null?i[o]??null:i[0]??null}function xn(e,t,n){return Wn(e,t)[n]?.key??t}function Qo(e,t){let n=dt(t);if(!n)return null;let i=Wn(e,n).findIndex(o=>o.key===t);return i>=0?i:null}function Wn(e,t){return(e?.entries??[]).filter(n=>(dt(n.key)??n.key)===t)}function $n(e,t,n){let r=Gn(t,n);return r?e.filter(i=>i.tagName.toLowerCase()===r):e}function Un(e,t,n){let r=Gn(t,n);return!r||e.tagName.toLowerCase()===r}function Gn(e,t){return null}var Zo=2,Lo=4;function jn(e){return[...e].sort((t,n)=>{if(t===n)return 0;let r=typeof t.compareDocumentPosition=="function"?t.compareDocumentPosition(n):0;return(r&Lo)!==0?-1:(r&Zo)!==0?1:0})}function dt(e){if(typeof e!="string"||e.length===0)return e??null;let t=e;for(;;){let n=t.lastIndexOf(gn);if(n<0)break;let r=Number(t.slice(n+gn.length));if(!Number.isInteger(r)||r<0)return e;t=t.slice(0,n)}return t}function ft(e){let n=e.ownerDocument?.defaultView?.getComputedStyle(e);return{...Kt(n),paddingTop:se(n?.paddingTop),paddingRight:se(n?.paddingRight),paddingBottom:se(n?.paddingBottom),paddingLeft:se(n?.paddingLeft),borderTopWidth:se(n?.borderTopWidth),borderRightWidth:se(n?.borderRightWidth),borderBottomWidth:se(n?.borderBottomWidth),borderLeftWidth:se(n?.borderLeftWidth),columnGap:se(n?.columnGap),rowGap:se(n?.rowGap)}}function Kt(e){return{marginTop:se(e?.marginTop,!0),marginRight:se(e?.marginRight,!0),marginBottom:se(e?.marginBottom,!0),marginLeft:se(e?.marginLeft,!0)}}function se(e,t=!1){let n=Number.parseFloat(e??"");return Number.isFinite(n)?t?n:Math.max(0,n):0}function zt(e){let t=e.ownerDocument?.defaultView;return Array.from(e.children).filter(n=>typeof n.getBoundingClientRect=="function").map(n=>({rect:Te(n.getBoundingClientRect()),margin:Kt(t?.getComputedStyle(n))})).filter(({rect:n})=>n.width>0&&n.height>0)}function ei(e){return Array.from(e.children).filter(t=>typeof t.getBoundingClientRect=="function").map(t=>Te(t.getBoundingClientRect())).filter(t=>t.width>0&&t.height>0)}var Tn=new WeakMap,_n=0;function ze(e){let t=Tn.get(e);if(t)return t;_n+=1;let n=`runtime-node-${_n}`;return Tn.set(e,n),n}function Hn(e,t,n){let r=n??e.ownerDocument?.defaultView,i=e.ownerDocument?.defaultView?.getComputedStyle(e),o=Te(t),s=G(r?.scrollX),c=G(r?.scrollY),a=i?.position||"static";return{version:Rt,runtimeNodeId:ze(e),rect:{viewport:o,document:{top:o.top+c,left:o.left+s,width:o.width,height:o.height}},layout:{position:a,transform:i?.transform||"none",containingBlock:ni(e,a)},scrollContext:{scrollX:s,scrollY:c,viewportWidth:G(r?.innerWidth),viewportHeight:G(r?.innerHeight),scrollContainers:ti(e)}}}function ti(e){let t=e.ownerDocument,n=t?.defaultView,r=[],i=e.parentElement;for(;i;){if(i!==t?.body&&i!==t?.documentElement){let o=n?.getComputedStyle(i),s=o?.overflowX||o?.overflow||"visible",c=o?.overflowY||o?.overflow||"visible",a=G(i.scrollLeft),l=G(i.scrollTop),u=a!==0||An(s)&&G(i.scrollWidth)>G(i.clientWidth),p=l!==0||An(c)&&G(i.scrollHeight)>G(i.clientHeight);(u||p)&&r.push({runtimeNodeId:ze(i),scrollLeft:a,scrollTop:l})}i=i.parentElement}return r}function An(e){return["auto","scroll","overlay","hidden"].includes(e)}function ni(e,t){if(t==="fixed"){let r=Pn(e.parentElement,!0);return r?{kind:"element",runtimeNodeId:ze(r)}:{kind:"viewport"}}if(t==="absolute"){let r=e.offsetParent,i=ri(r)??Pn(e.parentElement,!1);return i?{kind:"element",runtimeNodeId:ze(i)}:{kind:"document"}}let n=e.parentElement;return n?{kind:"element",runtimeNodeId:ze(n)}:{kind:"document"}}function Pn(e,t){let n=e;for(;n;){let r=n.ownerDocument?.defaultView?.getComputedStyle(n);if(!!(r?.transform&&r.transform!=="none")||!!(r?.perspective&&r.perspective!=="none")||!!(r?.filter&&r.filter!=="none")||(r?.willChange??"").split(",").some(o=>["transform","perspective","filter"].includes(o.trim()))||!t&&(r?.position||"static")!=="static")return n;n=n.parentElement}return null}function ri(e){return e&&typeof e.getBoundingClientRect=="function"?e:null}function fe(e,t,n,r="full",i){let o=e.getBoundingClientRect(),s=n?.(t.key)??null,c=e.tagName.toLowerCase(),a=Ge(e),l=r==="full"?{textPreview:e.textContent?.trim().slice(0,80),dataset:Object.fromEntries(Object.entries(e.dataset).map(([P,k])=>[P,k??""])),attributes:Object.fromEntries(e.getAttributeNames().map(P=>[P,e.getAttribute(P)??""]))}:{},u=Kn({operationSummary:s?.operationSummary,tagName:c,fallbackMode:"preview"}),p=wt(e),E=!0,v=Yn(e)?.getAttribute("data-vcp-edit-key")??null,M=zt(e),R=Hn(e,o,i);return{ref:t,key:t.key,detailLevel:r,tagName:c,...s?{sourceKind:"jsx"}:{},...v?{parentKey:v}:{},...s?.pageCompositionUnitKey?{pageCompositionUnitKey:s.pageCompositionUnitKey}:{},...l,runtimeFlags:{selectable:!0,movable:u.canMove,removable:u.canRemove,textEditable:u.canUpdateText,container:p?!1:!!ht(e)||u.canInsertChild||E&&qt(c)},layoutSnapshot:R,layout:a,rect:{top:o.top,left:o.left,width:o.width,height:o.height},childBoxes:M,childRects:M.map(({rect:P})=>P),spacing:ft(e)}}function Nn(e,t,n,r){let i=e.getBoundingClientRect(),o=Hn(e,i,n);if(r==="light")return{ref:t,layoutSnapshot:o};if(r==="child-rects")return{ref:t,layoutSnapshot:o,childRects:ei(e)};let s=zt(e);return{ref:t,layoutSnapshot:o,childBoxes:s,childRects:s.map(({rect:c})=>c),layout:Ge(e),spacing:ft(e)}}function Dn(e){let t=e.layout?.display??"",n=e.spacing;return["flex","inline-flex","grid","inline-grid"].includes(t)&&!!(n&&(n.columnGap>0||n.rowGap>0)&&(e.childRects?.length??0)>=2)}function oi(e,t,n,r,i){let o=t,s=Nn(o,n,e,"detailed"),c=Dn(s),a=null,l=null,u="mutation",p=De(e),E=p,v=!1,M=!1,R=({reason:Y,sourceEventAt:x,forceEmit:N=!1,includeDetailedGeometry:T=!1})=>{(a===null||(Y==="scroll"?0:1)>=(u==="scroll"?0:1))&&(u=Y,p=x),v=v||N,M=M||T,a===null&&(a=ct(e,P))},P=()=>{let Y=De(e);a=null;let x=u,N=p,T=v,$=M;v=!1,M=!1;let z=ge(e.document,n,r?.()??null);if(!z)return;z!==o&&(ne?.unobserve(o),o=z,ne?.observe(o),$=!0);let m=$?"detailed":c?"child-rects":"light",I=Nn(o,n,e,m),B=I.layoutSnapshot.rect.viewport;B.width<=0||B.height<=0||!T&&!ii(s,I)||(s=I,m==="detailed"&&(c=Dn(I)),i(x,I,{sourceEventAt:N,captureStartedAt:Y,capturedAt:De(e)}))},k=()=>{l!==null&&(e.clearTimeout(l),l=null)},D=()=>{k(),R({reason:"resize",sourceEventAt:De(e),includeDetailedGeometry:!0})},L=()=>{k(),R({reason:"mutation",sourceEventAt:De(e),includeDetailedGeometry:!0})},g=()=>{E=De(e),R({reason:"scroll",sourceEventAt:E}),k(),l=e.setTimeout(()=>{l=null,R({reason:"scroll",sourceEventAt:E,forceEmit:!0,includeDetailedGeometry:!0})},Gr)},ce=e.ResizeObserver,ne=typeof ce=="function"?new ce(D):null;ne?.observe(o);let ee=e.MutationObserver,ae=typeof ee=="function"?new ee(L):null;ae?.observe(e.document.documentElement,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),e.addEventListener("resize",D,{passive:!0}),e.addEventListener("scroll",g,{passive:!0});let X=e.visualViewport;return X?.addEventListener?.("resize",D,{passive:!0}),X?.addEventListener?.("scroll",g,{passive:!0}),e.document.addEventListener("scroll",g,{capture:!0,passive:!0}),e.document.addEventListener("load",L,!0),()=>{a!==null&&(at(e,a),a=null),k(),ne?.disconnect(),ae?.disconnect(),e.removeEventListener("resize",D),e.removeEventListener("scroll",g),X?.removeEventListener?.("resize",D),X?.removeEventListener?.("scroll",g),e.document.removeEventListener("scroll",g,!0),e.document.removeEventListener("load",L,!0)}}function De(e){let t=e.performance;return t&&Number.isFinite(t.timeOrigin)&&typeof t.now=="function"?t.timeOrigin+t.now():Date.now()}function ii(e,t){return si(e.layoutSnapshot,t.layoutSnapshot)||t.childBoxes!==void 0&&ai(e.childBoxes,t.childBoxes)||t.childRects!==void 0&&ui(e.childRects,t.childRects)||t.layout!==void 0&&Ot(e.layout,t.layout)||t.spacing!==void 0&&Ot(e.spacing,t.spacing)}function si(e,t){return!e||!t?e!==t:e.version!==t.version||e.runtimeNodeId!==t.runtimeNodeId||pt(e.rect.viewport,t.rect.viewport)||pt(e.rect.document,t.rect.document)||e.layout.position!==t.layout.position||e.layout.transform!==t.layout.transform||e.layout.containingBlock.kind!==t.layout.containingBlock.kind||e.layout.containingBlock.kind==="element"&&t.layout.containingBlock.kind==="element"&&e.layout.containingBlock.runtimeNodeId!==t.layout.containingBlock.runtimeNodeId||e.scrollContext.scrollX!==t.scrollContext.scrollX||e.scrollContext.scrollY!==t.scrollContext.scrollY||e.scrollContext.viewportWidth!==t.scrollContext.viewportWidth||e.scrollContext.viewportHeight!==t.scrollContext.viewportHeight||ci(e.scrollContext.scrollContainers,t.scrollContext.scrollContainers)}function ci(e,t){return e.length!==t.length||e.some((n,r)=>{let i=t[r];return!i||n.runtimeNodeId!==i.runtimeNodeId||n.scrollLeft!==i.scrollLeft||n.scrollTop!==i.scrollTop})}function ai(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>{let s=r[o];return!s||pt(i.rect,s.rect)||Ot(i.margin,s.margin)})}function ui(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>pt(i,r[o]??i))}function Ot(e,t){let n=e??{},r=t??{},i=new Set([...Object.keys(n),...Object.keys(r)]);return Array.from(i).some(o=>n[o]!==r[o])}function Te(e){return{top:e.top,left:e.left,width:e.width,height:e.height}}function pt(e,t){return Math.abs(e.top-t.top)>.5||Math.abs(e.left-t.left)>.5||Math.abs(e.width-t.width)>.5||Math.abs(e.height-t.height)>.5}function li(e,t,n,r,i,o,s){let c=e.document,a=$e(c,t,n,o);if(!a)return{anchorHit:null,targetParentHit:null,relation:"none",rejectionReason:"no-editable-hit"};let l=i?ge(c,i,o):null;if(l&&kt(a,l))return nt(c,a,"self-or-descendant",o,s);if(r==="move"&&l){let R=fi(c,a,l,o,s);if(R){let P=At(R.child,R.targetParent,t,n,"nearest");if(P)return rt(c,R.child,R.targetParent,P,o,s)}}let u=null,p=!1,E=a,v=a.parentElement;for(;v;){if(v.getAttribute("data-vcp-edit-key")){if(l&&kt(v,l))return nt(c,a,"self-or-descendant",o,s);let R=On(v,r,s);if(R==="accept"){u={child:E,targetParent:v};break}R==="blocked"&&(p=!0),E=v}v=v.parentElement}let M=On(a,r,s);if(M==="accept"){if(u){let R=At(u.child,u.targetParent,t,n,"edge");if(R)return rt(c,u.child,u.targetParent,R,o,s)}return rt(c,a,a,di(a,t,n),o,s)}if(u){let R=At(u.child,u.targetParent,t,n,"nearest");return rt(c,u.child,u.targetParent,R??"after",o,s)}return M==="blocked"||p?nt(c,a,"operation-boundary-blocked",o,s):nt(c,a,"no-accepting-parent",o,s)}function nt(e,t,n,r,i){return{anchorHit:fe(t,he(e,t,r),i,"summary"),targetParentHit:null,relation:"none",rejectionReason:n}}function rt(e,t,n,r,i,o){let s=fe(t,he(e,t,i),o,"summary"),c=fe(n,he(e,n,i),o,"summary"),a=Ge(n).indicatorOrientation,l=r==="append"||r==="prepend"?pi(n.getBoundingClientRect(),a,r):mi(t.getBoundingClientRect(),a,r);return{anchorHit:s,targetParentHit:c,relation:r,indicatorOrientation:a,indicatorBounds:l}}function On(e,t,n){if(wt(e))return"not-container";let r=e.getAttribute("data-vcp-edit-key")??"",i=n?.(r)??null;if(i)return i.operationSummary.canInsertChild===!0?"accept":ht(e)?"blocked":"not-container";let o=e.tagName.toLowerCase();return qt(o)?"accept":"not-container"}function At(e,t,n,r,i){let o=Ge(t).indicatorOrientation,s=e.getBoundingClientRect(),c=o==="vertical"?s.width>0?(n-s.left)/s.width:.5:s.height>0?(r-s.top)/s.height:.5;return i==="edge"&&c>=.25&&c<=.75?null:c<.5?"before":"after"}function di(e,t,n){let r=Ge(e).indicatorOrientation,i=e.getBoundingClientRect();return(r==="vertical"?i.width>0?(t-i.left)/i.width:.5:i.height>0?(n-i.top)/i.height:.5)<.5?"prepend":"append"}function Ge(e){let n=e.ownerDocument?.defaultView?.getComputedStyle(e),r=n?.display??"",i=n?.flexDirection,o=n?.gridAutoFlow,s="horizontal";return r==="flex"||r==="inline-flex"?s=(i??"row").startsWith("row")?"vertical":"horizontal":(r==="grid"||r==="inline-grid")&&(s=(o??"row").includes("column")?"vertical":"horizontal"),{display:r,...i?{flexDirection:i}:{},...o?{gridAutoFlow:o}:{},indicatorOrientation:s}}function pi(e,t,n){if(t==="vertical")return{left:n==="prepend"?e.left:e.left+e.width-3,top:e.top,width:3,height:e.height};let r=n==="prepend"?e.top:e.top+e.height-3;return{left:e.left,top:r,width:e.width,height:3}}function mi(e,t,n){if(t==="vertical")return{left:n==="before"?e.left:e.left+e.width-3,top:e.top,width:3,height:e.height};let r=n==="before"?e.top:e.top+e.height-3;return{left:e.left,top:r,width:e.width,height:3}}function kt(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentElement}return!1}function fi(e,t,n,r,i){let o=hi(e,t,n,r,i);if(o)return o;let s=Yn(n);if(!s||t===s)return null;let c=t,a=t.getAttribute("data-vcp-edit-key")?t:null;for(;c&&c!==s;)c.getAttribute("data-vcp-edit-key")&&(a=c),c=c.parentElement;return c!==s||!a||a===s||a===n||kt(a,n)?null:{child:a,targetParent:s}}function hi(e,t,n,r,i){return null}function Yn(e){let t=e.parentElement;for(;t;){if(t.getAttribute("data-vcp-edit-key"))return t;t=t.parentElement}return null}function ht(e){for(let t of Array.from(e.childNodes)){if(typeof t.getAttribute!="function")continue;let n=t;if(n.getAttribute("data-vcp-edit-key"))return n;let r=ht(n);if(r)return r}return null}function ot(e){let t=e.document.documentElement,n=e.document.body;return{scrollX:G(e.scrollX),scrollY:G(e.scrollY),scrollWidth:Math.max(G(t?.scrollWidth),G(n?.scrollWidth),G(e.innerWidth)),scrollHeight:Math.max(G(t?.scrollHeight),G(n?.scrollHeight),G(e.innerHeight)),viewportWidth:G(e.innerWidth),viewportHeight:G(e.innerHeight)}}function gi(e,t){Object.entries(t.attributes??{}).forEach(([r,i])=>{if(i===null){e.removeAttribute(r);return}e.setAttribute(r,i)}),typeof t.className=="string"&&(e.className=t.className);let n=new Set(t.styleDeclarations?.map(r=>r.property)??[]);Object.entries(t.style??{}).forEach(([r,i])=>{if(n.has(r))return;let o=e.style,s=r.replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`);if(i==null||i===""){o.removeProperty(s);return}o.setProperty(s,String(i))}),t.styleDeclarations?.forEach(r=>{let i=e.style,o=r.property.replace(/[A-Z]/g,c=>`-${c.toLowerCase()}`),s=r.value;if(s==null||s===""){i.removeProperty(o);return}i.setProperty(o,String(s),r.priority)})}var yi=500,we=new Map;function bi(e,t){return`${e}:${t.key}:${t.instanceIndex??""}`}function Ei(e,t){if(we.size>=yi){let n=we.keys().next().value;n&&we.delete(n)}we.set(e,t)}var We=new Set;function Si(e,t){let n=e.documentElement?.style,r=new Set;for(let[i,o]of Object.entries(t.variables??{}))i.startsWith("--")&&(r.add(i),n?.setProperty(i,o));for(let i of We)r.has(i)||n?.removeProperty(i);We.clear();for(let i of r)We.add(i);xi(e,t.stylesheets??[])}function Ii(e){let t=e.documentElement?.style;for(let n of We)t?.removeProperty(n);We.clear();for(let n of Qn(e))n.remove()}function Ci(e,t){let n=Array.from(new Set(t.filter(s=>typeof s=="string"&&s.startsWith("--"))));if(n.length===0)return{};let r=e.documentElement,i=r?e.defaultView?.getComputedStyle(r):null,o={};for(let s of n){let c=Xn(i,s);c&&(o[s]=c)}return o}function Xn(e,t,n=new Set){if(!e||n.has(t))return null;n.add(t);let r=e.getPropertyValue(t).trim();return Jn(e,r,n)}function Jn(e,t,n){if(!t)return null;let r=vi(t);if(!r)return t;let i=Xn(e,r.name,n);return i||(r.fallback?Jn(e,r.fallback,n)??r.fallback:null)}function vi(e){let t=e.trim();if(!t.startsWith("var(")||!t.endsWith(")"))return null;let n=t.slice(4,-1).trim(),r=Ri(n),i=r>=0?n.slice(0,r).trim():n;if(!i.startsWith("--"))return null;let o=r>=0?n.slice(r+1).trim():null;return{name:i,fallback:o||null}}function Ri(e){let t=0;for(let n=0;n<e.length;n+=1){let r=e[n];if(r==="("){t+=1;continue}if(r===")"){t=Math.max(0,t-1);continue}if(r===","&&t===0)return n}return-1}function xi(e,t){let n=new Set(t.filter(o=>typeof o=="string"&&o.length>0)),r=new Map;for(let o of Qn(e)){let s=o.getAttribute("href")??"";if(!n.has(s)||r.has(s)){o.remove();continue}r.set(s,o)}let i=e.head;if(i)for(let o of n){if(r.has(o))continue;let s=e.createElement("link");s.setAttribute("rel","stylesheet"),s.setAttribute(Bn,"true"),s.setAttribute("href",o),i.appendChild(s)}}function Qn(e){return Array.from(e.querySelectorAll(`link[${Bn}]`))}function Ti(e,t,n,r,i={}){let o=i.textNode?_i(e.document,i.textNode):null;if(i.textNode&&!o)throw new Error("Failed to prepare text segment editor");let s=o?.element??t,c=s.textContent??"",a=o?void 0:t.innerHTML,l=Ai(s),u=!1,p=()=>{e.document.removeEventListener("pointerdown",v,!0),s.removeEventListener("keydown",M),s.removeEventListener("blur",R),s.removeEventListener("input",P),Ni(s,l)},E=k=>{if(u)return;u=!0;let D=s.textContent??"";if(p(),k==="cancel"){o?.restore(c),o||(t.textContent=c),r({kind:"text-edit-cancel",payload:{ref:n}});return}if(o?.restore(D),k==="commit"&&D!==c){i.onCommitSnapshot?.({ref:n,initialText:c,...a!==void 0?{initialHtml:a}:{}}),r({kind:"text-edit-commit",payload:{ref:n,value:D}});return}r({kind:"text-edit-exit",payload:{ref:n}})};function v(k){let D=k.target;D&&s.contains(D)||E("commit")}function M(k){if(k.key==="Escape"){k.preventDefault(),E("cancel");return}k.key==="Enter"&&(k.metaKey||k.ctrlKey)&&(k.preventDefault(),E("commit"))}function R(){E("commit")}function P(){r({kind:"text-edit-input",payload:{ref:n,hit:fe(t,n,void 0,"full")}})}return Pi(s),e.document.addEventListener("pointerdown",v,!0),s.addEventListener("keydown",M),s.addEventListener("blur",R),s.addEventListener("input",P),ki(s),Mi(s,e.document),p}function _i(e,t){let n=t.parentNode;if(!n)return null;let r=e.createElement("span");return r.setAttribute("data-vcp-text-segment-editor","true"),r.textContent=t.textContent??"",n.replaceChild(r,t),{element:r,restore(i){t.nodeValue=i,r.parentNode&&r.parentNode.replaceChild(t,r)}}}function Ai(e){return{contentEditable:e.getAttribute("contenteditable"),spellcheck:e.getAttribute("spellcheck"),marker:e.getAttribute("data-vcp-edit-text-editing"),cursor:e.style.cursor,userSelect:e.style.userSelect}}function Pi(e){Di(e.ownerDocument),e.setAttribute("contenteditable","plaintext-only"),e.setAttribute("spellcheck","false"),e.setAttribute("data-vcp-edit-text-editing","true"),e.style.cursor="text",e.style.userSelect="text"}function Ni(e,t){Pt(e,"contenteditable",t.contentEditable),Pt(e,"spellcheck",t.spellcheck),Pt(e,"data-vcp-edit-text-editing",t.marker),e.style.cursor=t.cursor,e.style.userSelect=t.userSelect}function Di(e){if(e.getElementById("vcp-text-edit-base-style"))return;let t=e.createElement("style");t.id="vcp-text-edit-base-style",t.textContent='[data-vcp-edit-text-editing="true"]{outline:0!important;outline-offset:0!important;}',e.head.appendChild(t)}function Pt(e,t,n){if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)}function Oi(e){let t=[e.documentElement,e.body].filter(r=>!!r?.style),n=t.map(r=>({element:r,userSelect:r.style.userSelect}));for(let r of t)r.style.userSelect="none";return()=>{for(let r of n)r.element.style.userSelect=r.userSelect}}function ki(e){try{e.focus({preventScroll:!0})}catch{e.focus()}}function Mi(e,t){let n=t.createRange();n.selectNodeContents(e);let r=t.getSelection?.();r?.removeAllRanges(),r?.addRange(n)}function Zn(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function G(e){let t=Number(e);return Number.isFinite(t)?t:0}export{Ke as SITE_EDIT_COMPOSITION_MARKER_INVALID,Mn as SITE_EDIT_COMPOSITION_RENDER_MISMATCH,mt as VCP_PAGE_TEMPLATE_CONTEXT_MARKER_ATTRIBUTE,kn as VCP_PAGE_TEMPLATE_CONTEXT_MARKER_SELECTOR,Mt as VCP_PAGE_TEMPLATE_CONTEXT_MARKER_VALUE,Ft as VCP_PAGE_TEMPLATE_EFFECTIVE_TEMPLATE_ID_ATTRIBUTE,Bt as VCP_PAGE_TEMPLATE_ROUTE_ID_ATTRIBUTE,Dt as VCP_SITE_EDIT_BRIDGE_STATUS_EVENT,Nt as VCP_SITE_EDIT_ROUTE_READY_EVENT,Zr as readVcpPageTemplateContextMarker,Lr as resolveBrowserCompositionContext,it as resolveSiteEditRouteId,no as resolveSiteEditWebSocketUrl,Ji as startSiteEditAutoBootstrap,uo as startSiteEditFrameRuntime,Qr as syncRuntimeSiteBlockIds};