@vcp-dev/site-edit-bridge 0.10.14 → 0.10.16

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