@vcp-dev/site-edit-bridge 0.10.20 → 0.10.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,8 +1,8 @@
1
- function $n(e){let t=new Map,n=[],r=new Map,i=[],o=e.pageComposition.status==="supported"?e.pageComposition.placementUnitKeys:[],s=new Map(o.map((l,h)=>[l,h])),c=e.pageComposition.status==="supported"?{status:"supported",containerKey:e.pageComposition.containerKey,hasBusinessMembers:e.pageComposition.hasBusinessMembers,placementUnitKeys:e.pageComposition.placementUnitKeys,placements:e.pageComposition.placements.map(l=>({placementKey:l.placementKey,placementUnitKey:l.placementUnitKey,relation:l.relation}))}:{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics},u=e.entries.flatMap((l,h)=>l.dynamicDataSummary?[[h,l.dynamicDataSummary]]:[]),a=l=>{let h=t.get(l);if(typeof h=="number")return h;let p=n.length;return n.push(l),t.set(l,p),p},d=l=>{let h=null;for(let p of Do(l)){let R=`${h??"root"}\0${p}`,C=r.get(R);if(typeof C=="number"){h=C;continue}let x=i.length;i.push([h,a(p)]),r.set(R,x),h=x}if(h===null)throw new Error("Document key must not be empty");return h};return{encoding:"segment-trie-v1",siteId:e.siteId,snapshotId:e.snapshotId,composition:{...e.composition},routeId:e.composition.routeId,version:e.version,pageComposition:c,tokens:n,nodes:i,entries:e.entries.map(l=>{let h=l.pageCompositionUnitKey?s.get(l.pageCompositionUnitKey)??-1:-1;if(l.pageCompositionUnitKey&&h<0)throw new Error(`Render entry ${l.key} references unknown page composition unit ${l.pageCompositionUnitKey}`);return[d(l.key),Po(l.operationSummary),...h>=0?[h]:[]]}),...e.entries.every(l=>l.parentKey!==void 0)?{entryParentNodeIds:e.entries.map(l=>l.parentKey===null?null:d(l.parentKey))}:{},...u.length>0?{dynamicDataSummaries:u}:{}}}function Wn(e){if(!wo(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[u,a]=c,d=e.tokens[a];if(typeof d!="string")throw new Error(`Missing compact document token ${a}`);let l=`${u===null?"":i(u)}${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,u,a]=o,d=a===void 0?void 0:n[a];if(a!==void 0&&!d)throw new Error(`Missing page composition unit ${a}`);let l=e.entryParentNodeIds?.[s];return{key:i(c),...e.entryParentNodeIds?{parentKey:l===null?null:i(l)}:{},...d?{pageCompositionUnitKey:d}:{},operationSummary:No(u),...r.get(s)?{dynamicDataSummary:r.get(s)}:{}}})}}function Po(e){return(e.canUpdateText?1:0)|(e.canInsertChild?2:0)|(e.canMove?4:0)|(e.canRemove?8:0)}function No(e){return{canUpdateText:(e&1)!==0,canInsertChild:(e&2)!==0,canMove:(e&4)!==0,canRemove:(e&8)!==0}}function wo(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"||!ko(t.composition)||typeof t.routeId!="string"||t.routeId!==t.composition.routeId||!Number.isInteger(t.version)||t.version<0||!jt(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||we(o[0])&&o[0]<s)&&we(o[1])&&o[1]<t.tokens.length)||!t.entries.every(o=>Array.isArray(o)&&(o.length===2||o.length===3)&&we(o[0])&&o[0]<n.length&&we(o[1])&&o[1]<=15&&(o.length===2||we(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||we(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&&we(o[0])&&o[0]<t.entries.length&&jt(o[1]))}function jt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function ko(e){return!jt(e)||typeof e.routeId!="string"?!1:e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string"}function we(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0}function Do(e){if(!e)return[];let t=[],n=0,r=Un(e,n);if(r<0)return t.push(e),t;for(t.push(e.slice(0,r)),n=r;n<e.length;){if(r=Un(e,n+(e.startsWith("::",n)?2:1)),r<0){t.push(e.slice(n));break}t.push(e.slice(n,r)),n=r}return t}function Un(e,t){let n=e.indexOf("/",t),r=e.indexOf("::",t);return n<0?r:r<0?n:Math.min(n,r)}var Je="SITE_EDIT_COMPOSITION_SESSION_MISMATCH",Ue="SITE_EDIT_COMPOSITION_SESSION_REQUIRED",tu="SITE_EDIT_COMPOSITION_REINITIALIZE_REQUIRED",ae=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(G(t)&&G(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!G(t)||typeof t.type!="string"?!1:t.type==="request"?Oo(t.payload,n):t.type==="response"||t.type==="error"?G(t.payload)&&typeof t.payload.id=="string":t.type==="event"?G(t.payload)&&G(t.payload.event):t.type==="auth"?G(t.payload)&&typeof t.payload.key=="string":t.type==="auth-ok"&&G(t.payload)&&t.payload.ok===!0}},yt=class{constructor(t){this.options=t,this.session={subscribedCompositionKeys:new Set},this.messageQueue=new Qt,this.eventDispatcher=new Jt(n=>{this.sendJson(n)}),this.unsubscribe=t.engine.subscribe(n=>{this.handleEngineEvent(n)}),t.socket.onmessage=n=>{try{this.messageQueue.enqueue(()=>this.handleRawMessage(n.data))}catch(r){this.sendJson({type:"error",payload:{id:"unknown",kind:"get-document",message:r instanceof Error?r.message:"Bridge queue overflow"}}),t.socket.close(1013,"bridge busy")}},t.socket.onclose=()=>{this.unsubscribe(),this.session.activeComposition=void 0,this.session.subscribedCompositionKeys.clear()}}async handleMessage(t){try{let n=t;if(n.type!=="request")return;let r=n.payload,{id:i}=r;switch(r.kind){case"initialize-session":{let o=Gt(r),s=await this.resolve(o),c=await this.options.engine.initializeSession({composition:s.context,...r.mutationContext?{mutationContext:r.mutationContext}:{}});this.activateSession(s.context),this.sendJson({type:"response",payload:{id:i,kind:r.kind,result:_e({...c,data:{...c.data,document:Gn(c.data.document)}},s.context)}});return}case"get-document":{let o=await this.resolveWireContext(r),s=await this.options.engine.getDocument(o);this.sendResult(i,r.kind,Ko(s,o));return}case"get-history-status":{let o=await this.resolveWireContext(r),s=await this.options.engine.getHistoryStatus(o);this.sendResult(i,r.kind,_e(s,o));return}case"get-style-context":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getStyleContext(o),o));return}case"get-object-edit-context":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getObjectEditContext(r.key,o,r.selectionRef),o));return}case"get-class-name-source":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getClassNameSource(r.key,o),o));return}case"get-source-tree":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getSourceTree(o),o));return}case"get-source-file":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getSourceFile({path:r.path,composition:o}),o));return}case"resolve-source-location":{let o=await this.resolveWireContext(r),s=_e(await this.options.engine.resolveSourceLocation({key:r.key,composition:o}),o);this.sendResult(i,r.kind,s);return}case"execute":{let o=await this.resolveOperationWireContext(r.request),s=await this.resolveWireContext(r);if(ke(o)!==ke(s))throw new De(Je,"The execute request composition does not match its operation composition.");let c=await this.normalizeOperationRequest(r.request,o);await this.handleBufferedOperation(i,r.kind,()=>this.options.engine.execute(c));return}case"undo":case"redo":{let o=await this.resolveWireContext(r);await this.handleBufferedOperation(i,r.kind,()=>r.kind==="undo"?this.options.engine.undo(o):this.options.engine.redo(o));return}}}catch(n){let r=ae.extractRequestInfo(t);this.sendJson({type:"error",payload:{...r,message:Lt(n),code:Xt(n)}})}}async resolve(t){return this.options.engine.resolveComposition(t)}async resolveAndAssert(t){let n=await this.resolve(t),r=this.session.activeComposition;if(!r)throw new De(Ue,"Initialize a composition session before issuing this request.");if(ke(r)!==ke(n.context))throw new De(Je,"The request composition does not match the active socket session.");return n.context}async resolveWireContext(t){let n=Gt(t);return this.resolveAndAssert(n)}async resolveOperationWireContext(t){let n=Vo(t);return this.resolveAndAssert(n)}activateSession(t){this.session.activeComposition=t,this.session.subscribedCompositionKeys.clear(),this.session.subscribedCompositionKeys.add(ke(t))}async normalizeOperationRequest(t,n){let r={...t,composition:jn(n)};if(r.target.kind==="route"){let i=r.target,o=Gt(i),s=await this.resolveAndAssert(o);r.target={...i,composition:jn(s)}}return r}handleEngineEvent(t){let n=t?.composition;if(!Fo(n))return;let r=ke(n);this.session.subscribedCompositionKeys.has(r)&&(this.eventDispatcher.push(t),t.type==="site-edit.graph.invalidated"&&r===qo(this.session)&&(this.session.activeComposition=void 0,this.session.subscribedCompositionKeys.delete(r)))}sendResult(t,n,r){this.sendJson({type:"response",payload:{id:t,kind:n,result:r}})}async handleRawMessage(t){try{await this.handleMessage(ae.parseMessage(t,{validateOperationRequest:this.options.validateOperationRequest}))}catch(n){let r=Ho(t);this.sendJson({type:"error",payload:{...r,message:Lt(n),code:Xt(n)}})}}sendJson(t){this.options.socket.send(ae.stringifyMessage(t))}async handleBufferedOperation(t,n,r){this.eventDispatcher.beginBuffering();try{let i=await r();this.sendResult(t,n,i)}catch(i){this.sendJson({type:"error",payload:{id:t,kind:n,message:Lt(i),code:Xt(i)}})}finally{this.eventDispatcher.flush()}}},De=class extends Error{constructor(t,n){super(n),this.code=t,this.name="BridgeProtocolError"}},Jt=class{constructor(t){this.send=t,this.bufferedEvents=null}push(t){let n={type:"event",payload:{event:t}};if(this.bufferedEvents){this.bufferedEvents.push(n);return}this.send(n)}beginBuffering(){this.bufferedEvents=[]}flush(){let t=this.bufferedEvents??[];this.bufferedEvents=null,t.forEach(n=>this.send(n))}},Qt=class{constructor(t=64){this.maxQueued=t,this.queue=Promise.resolve(),this.queued=0}enqueue(t){if(this.queued>=this.maxQueued)throw new Error("Bridge request queue is full");this.queued+=1;let n=async()=>{this.queued-=1,await t()},r=this.queue.then(n,n);return this.queue=r.then(()=>{},()=>{}),r}};function Oo(e,t){if(!G(e)||typeof e.id!="string"||!ae.isRequestKind(e.kind))return!1;let n=Qe(e.composition);switch(e.kind){case"initialize-session":return n&&(e.mutationContext===void 0||Yt(e.mutationContext));case"get-document":case"get-style-context":return n;case"get-object-edit-context":return typeof e.key=="string"&&n&&Bo(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&&Mo(e.request)&&(e.request.mutationContext===void 0||Yt(e.request.mutationContext))&&(t.validateOperationRequest?.(e.request)??!0);case"undo":case"redo":return n&&e.mutationContext===void 0||n&&Yt(e.mutationContext)}}function Bo(e){if(e===void 0)return!0;if(!G(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 Mo(e){return G(e)&&typeof e.id=="string"&&typeof e.siteId=="string"&&typeof e.baseSnapshotId=="string"&&Qe(e.composition)&&typeof e.kind=="string"&&G(e.target)&&(e.target.kind!=="route"||Qe(e.target.composition))&&typeof e.documentVersion=="number"&&Number.isInteger(e.documentVersion)&&e.documentVersion>=0&&G(e.params)}function Qe(e){return G(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 Fo(e){return G(e)&&typeof e.routeId=="string"&&(e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string")}function Gt(e){if(Qe(e.composition))return e.composition;throw new De(Ue,"A composition selector is required for this request.")}function Vo(e){if(G(e)&&Qe(e.composition))return e.composition;throw new De(Ue,"A composition selector is required for execute.")}function jn(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function qo(e){return e.activeComposition?ke(e.activeComposition):null}function ke(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function _e(e,t){return G(e)&&e.ok===!0?{...e,composition:t}:e}function Ko(e,t){return!G(e)||e.ok!==!0?e:{...e,...t?{composition:t}:{},data:Gn(e.data)}}function Gn(e){let t=e;return $n(t.routeId?t:{...t,routeId:t.composition.routeId})}function G(e){return typeof e=="object"&&e!==null}function Yt(e){return G(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}function Xt(e){if(!(!G(e)||typeof e.code!="string"||e.code.length===0))return e.code}function Lt(e){return e instanceof Error||G(e)&&typeof e.message=="string"&&e.message.length>0?e.message:"Unknown websocket operation failure"}function Ho(e){try{return ae.extractRequestInfo(JSON.parse(e))}catch{return{id:"unknown",kind:"get-document"}}}var zo="vcp:designer:trace",Uo="designer_trace",Yn="__VCP_DESIGNER_TRACE__";var $o=/(authorization|cookie|token|secret|providerTrace|headers?|sourceCode|rawSource|fullSource)/i;function Wo(e=globalThis){let t=e;try{if(t.localStorage?.getItem(zo)==="1")return!0}catch{}try{let n=t.location?.search??"";return new URLSearchParams(n).get(Uo)==="1"}catch{return!1}}function Ae(e,t={},n=globalThis){if(!Wo(n))return;let r={type:e,timestamp:Date.now(),payload:jo(t)},i=n,o=i[Yn]??[];o.push(r),o.length>1e3&&o.splice(0,o.length-1e3),i[Yn]=o;let s=n.console?.debug;r.payload.diagnosticOnly!==!0&&typeof s=="function"&&s.call(n.console,"[designer-trace]",r)}function jo(e){return Zt(e,0)}function Zt(e,t){if(t>4)return"[truncated]";if(Array.isArray(e))return e.map(r=>Zt(r,t+1));if(!e||typeof e!="object")return e;let n={};for(let[r,i]of Object.entries(e)){if($o.test(r)){n[r]="[redacted]";continue}n[r]=Zt(i,t+1)}return n}var St=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===en&&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 u=Ze(c,"WebSocket failed");this.socket=null,this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("failed",u.message),n(u);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,u)=>{this.cleanupSocket(r,c,u)};r.onopen=()=>{if(!(this.socket!==r||this.connectAttempt!==i)){if(this.options.authKey){try{r.send(ae.stringifyMessage({type:"auth",payload:{key:this.options.authKey}}))}catch(c){s(Ze(c,"WebSocket auth failed"),"failed")}return}o()}},r.onerror=c=>{if(this.socket!==r)return;let u=Ze(c,"WebSocket failed");s(u,"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 u=this.intentionalClose,a=new Error(Lo(c,{intentional:u}));s(a,u?"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=Et(t),i={...t,composition:Pe(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 Pe(t)}request(t,n){let r=this.socket;if(!r||r.readyState!==en||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=ei(i,t,n);return Ae("bridge.request",{id:i,kind:t,routeId:typeof n.routeId=="string"?n.routeId:null,key:typeof n.key=="string"?n.key:null,operationKind:Xn(n.request,"kind"),documentVersion:Xn(n.request,"documentVersion")}),new Promise((s,c)=>{let u=this.resolveRequestTimeoutMs(t),a=u>0?setTimeout(()=>{let d=this.pending.get(i);d&&(this.pending.delete(i),Ae("bridge.response",{id:i,kind:t,ok:!1,timedOut:!0}),d.reject(new Error(`Bridge request timed out after ${u}ms: ${t}`)))},u):null;a?.unref?.(),this.pending.set(i,{kind:t,timeout:a,resolve:d=>s(d),reject:c});try{r.send(ae.stringifyMessage(o))}catch(d){let l=Ze(d,"WebSocket send failed");this.clearPendingRequest(i),c(l),this.cleanupSocket(r,l,"failed")}})}handleAuthHandshakeMessage(t,n,r,i){try{if(ae.parseMessage(t).type==="auth-ok"){i();return}throw new Error("Bridge authentication failed")}catch(o){let s=Ze(o,"Bridge authentication failed");this.connectAttempt===r&&this.cleanupSocket(n,s,"failed")}}handleMessage(t){let n=ae.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"){Ae("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}Ae("bridge.response",{id:n.payload.id,kind:r.kind,ok:!0,resultVersion:Jo(n.payload.result)}),r.resolve(r.kind==="get-document"?{...n.payload.result,data:Zn(n.payload.result.data,n.payload.result.composition)}:r.kind==="initialize-session"?Qo(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):Xo[t]??Yo}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===Go||t.readyState===en)&&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)}},Go=0,en=1,Yo=15e3,Xo={"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 Lo(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 Xn(e,t){if(!e||typeof e!="object")return null;let r=e[t];return typeof r=="string"||typeof r=="number"?r:null}function Jo(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 Qn(e){let t="composition"in e?Pe(e.composition):Pe({routeId:e.routeId});return new tn({composition:t,initialDocument:e.initialDocument,client:e.client})}var tn=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=Pe(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=et(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(u=>(this.styleGeneration===s&&this.styleContextCache.set(r,{generation:s,value:u.data}),u)).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 u=this.objectGeneration,a=this.params.client.getObjectEditContext(t,i,...r?[r]:[]).then(d=>(this.objectGeneration===u&&this.editContextCache.set(o,d.data),d)).finally(()=>{this.editContextInFlight.get(o)===a&&this.editContextInFlight.delete(o)});return this.editContextInFlight.set(o,a),a}async getClassNameSource(t,n){let r=this.requireBoundComposition(n),i=this.objectCacheKey(t,r),o=this.classNameSourceCache.get(i);if(o)return o;let s=this.classNameSourceInFlight.get(i);if(s)return s;let c=this.objectGeneration,u=this.params.client.getClassNameSource(t,r).then(a=>(this.objectGeneration===c&&this.classNameSourceCache.set(i,a),a)).finally(()=>{this.classNameSourceInFlight.get(i)===u&&this.classNameSourceInFlight.delete(i)});return this.classNameSourceInFlight.set(i,u),u}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=Et(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 Ae("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=et(this.composition),i=this.refreshInFlight;if(i?.compositionKey===r){Ae("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}Ae("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`${et(n)}\0${t}\0${Zo(r)}`}rememberServerConfirmedComposition(t){!t||typeof t.routeId!="string"||(this.serverConfirmedComposition={...t})}isAcceptedComposition(t){if(et(t)===et(this.composition))return!0;let n=this.serverConfirmedComposition;return n!==null&&bt(n)===bt(Jn(t))}requireBoundComposition(t){let n=t===void 0?this.composition:Pe(t);if(!this.isAcceptedComposition(n))throw new Error(`Site edit bridge is bound to composition ${JSON.stringify(this.composition)}, received ${JSON.stringify(n)}`);return Pe(n)}isActiveComposition(t){let n=this.activeCompositionContext??Jn(this.composition);return bt(t)===bt(n)}};function Ln(e){return e.version===0&&e.entries.length===0}function Qo(e){let t=e;return{...t,data:{...t.data,document:Zn(t.data.document,t.composition)}}}function Zn(e,t){let n=e,r=Wn(n.routeId?n:{...n,routeId:t?.routeId??n.composition?.routeId});return t?{...r,composition:t}:r}function Pe(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 et(e){return JSON.stringify([e.routeId,e.templateId??null])}function Zo(e){return e?JSON.stringify([e.key,e.instanceIndex??null,e.instanceCount??null]):""}function bt(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function Jn(e){return{routeId:e.routeId,...e.templateId?{effectiveTemplateId:e.templateId}:{}}}function Et(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 ei(e,t,n){let r=Pe(t==="execute"?Et(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:Et(n.request)??r}}}}}function se(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}var ti={allowFullScreen:"allowfullscreen",acceptCharset:"accept-charset",autoComplete:"autocomplete",autoFocus:"autofocus",autoPlay:"autoplay",cellPadding:"cellpadding",cellSpacing:"cellspacing",charSet:"charset",colSpan:"colspan",crossOrigin:"crossorigin",dateTime:"datetime",encType:"enctype",formAction:"formaction",formEncType:"formenctype",formMethod:"formmethod",formNoValidate:"formnovalidate",formTarget:"formtarget",hrefLang:"hreflang",htmlFor:"for",httpEquiv:"http-equiv",inputMode:"inputmode",itemID:"itemid",itemProp:"itemprop",itemRef:"itemref",itemScope:"itemscope",itemType:"itemtype",keyParams:"keyparams",keyType:"keytype",noModule:"nomodule",playsInline:"playsinline",readOnly:"readonly",rowSpan:"rowspan",srcDoc:"srcdoc",srcLang:"srclang",srcSet:"srcset",tabIndex:"tabindex",useMap:"usemap"},er=new Set(["allowFullScreen","async","autoFocus","autoPlay","controls","default","defer","disabled","formNoValidate","hidden","inert","itemScope","loop","multiple","muted","noModule","noValidate","open","playsInline","readOnly","required","reversed","scoped","seamless"]),tr=new Set(["checked","selected","value"]),ni=new Set(["children","key","ref","dangerouslysetinnerhtml"]),ri=new Set(["data-designer-hover-outline","data-designer-select-outline"]),oi=/^[A-Za-z_$][A-Za-z0-9_$:-]*$/u,nr=new Set(["accept","alt","action","cite","color","content","coords","crossOrigin","dateTime","formAction","formMethod","formTarget","headers","href","hrefLang","id","kind","label","lang","list","max","media","method","min","name","pattern","poster","property","referrerPolicy","rel","role","scope","slot","src","srcDoc","srcLang","srcSet","step","target","title","type","useMap","width","height"]);function ii(e){if(!ci(e))return nn("Typed property changes are not previewable");if(e.element.kind!=="host")return nn(`The '${e.element.tagName}' component may transform its props before rendering`);let t={};for(let n of e.changes){let r=si(n);if(!r)return nn(`The DOM result for '${n.name}' cannot be proven equivalent`);t[r.name]=r.value}return e.runtimeAttributes,{mode:"dom",patch:{attributes:t}}}function si(e){if(!or(e.name))return null;let t=e.name,n=rr(t);if(!n||tr.has(t))return null;if(e.operation==="remove")return{name:n,value:null};let r=e.value;return t==="download"?ui(n,r):er.has(t)?ai(n,r):/^(aria|data)-[A-Za-z0-9_.:-]+$/u.test(t)?li(n,r):nr.has(t)?typeof r=="string"?{name:n,value:r}:typeof r=="number"&&Number.isFinite(r)?{name:n,value:String(r)}:r===null?{name:n,value:null}:null:null}function rr(e){return or(e)&&(e==="download"||tr.has(e)||er.has(e)||nr.has(e)||/^(aria|data)-[A-Za-z0-9_.:-]+$/u.test(e))?ti[e]??e:null}function ci(e){if(e.scope!=="selection"&&e.scope!=="template"||!Array.isArray(e.changes)||e.changes.length===0)return!1;let t=new Set;for(let n of e.changes){if(!n||typeof n!="object"||typeof n.name!="string"||n.name.length===0||n.operation!=="set"&&n.operation!=="remove"||t.has(n.name))return!1;t.add(n.name)}return!0}function or(e){if(!oi.test(e))return!1;let t=e.toLowerCase();return ni.has(t)||t.startsWith("data-vcp-")||ri.has(t)||/^on[a-z]/iu.test(e)?!1:t!=="classname"&&t!=="class"&&t!=="style"}function ai(e,t){return t===null||t===!1?{name:e,value:null}:t===!0?{name:e,value:""}:null}function ui(e,t){return t===null||t===!1?{name:e,value:null}:t===!0?{name:e,value:""}:typeof t=="string"?{name:e,value:t}:null}function li(e,t){return t===null?{name:e,value:null}:typeof t=="string"||typeof t=="boolean"||typeof t=="number"&&Number.isFinite(t)?{name:e,value:String(t)}:null}function nn(e){return{mode:"after-render",reason:e}}var ir="vcp-window-message",sr=1;function cr(e){return{source:ir,version:sr,namespace:e.namespace,channel:e.channel,...e.sessionKey?{sessionKey:e.sessionKey}:{},body:e.body}}function ar(e){try{return v(e)?Z(e,"source",ir)&&Z(e,"version",sr)&&D(e,"namespace")&&D(e,"channel")&&me(e,"body")&&(!Me(e,"sessionKey")||D(e,"sessionKey")):!1}catch{return!1}}var vt="site-edit",ur="frame-runtime",lr="frame-announce",on=1,tt=1,nt=1,dr=24;function ot(e,t={}){return cr({namespace:vt,channel:ur,sessionKey:t.sessionKey,body:e})}function pr(){return cr({namespace:vt,channel:lr,body:{type:"announce"}})}function du(e){try{return!ar(e)||e.namespace!==vt||e.channel!==lr?!1:v(e.body)&&Z(e.body,"type","announce")&&he(e.body,["type"])}catch{return!1}}function fr(e){try{return!ar(e)||e.namespace!==vt||e.channel!==ur?!1:Bi(e.body)}catch{return!1}}function Ce(e){return v(e)&&D(e,"routeId")&&Be(e,"templateId")&&he(e,["routeId","templateId"])}function It(e){return v(e)&&D(e,"routeId")&&Be(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 Me=(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 f(e,t){return Object.getOwnPropertyDescriptor(e,t)?.value}function Z(e,t,n){return me(e,t)&&f(e,t)===n}function D(e,t){return me(e,t)&&typeof f(e,t)=="string"}function Rt(e,t){return me(e,t)&&typeof f(e,t)=="boolean"}function F(e,t){let n=f(e,t);return me(e,t)&&typeof n=="number"&&Number.isFinite(n)}function hr(e,t){let n=f(e,t);return me(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>0}function Be(e,t){return!Me(e,t)||f(e,t)===void 0||D(e,t)}function $e(e,t){return!Me(e,t)||f(e,t)===void 0||F(e,t)}function Oe(e,t){let n=f(e,t);return!Me(e,t)||n===void 0||me(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>=0}function Y(e,t){return!Me(e,t)||f(e,t)===void 0}function v(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function di(e){return v(e)&&Reflect.ownKeys(e).length===0}function Ct(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 Ie(e){return v(e)&&D(e,"key")&&Oe(e,"instanceIndex")&&Oe(e,"instanceCount")&&Oe(e,"textSegmentIndex")}function pi(e){return v(e)&&D(e,"blockId")&&Oe(e,"blockIndex")&&Ie(f(e,"ref"))&&rt(f(e,"rect"))&&Rt(e,"targetIsSectionRoot")}function fi(e){if(!v(e))return!1;let t=f(e,"placement"),n=f(e,"boundary");return D(e,"anchorBlockId")&&Oe(e,"positionIndex")&&Ie(f(e,"anchorRef"))&&(t==="before"||t==="after")&&v(n)&&F(n,"top")&&F(n,"left")&&F(n,"width")}function rt(e){return v(e)&&["top","left","width","height"].every(t=>F(e,t))}function mr(e){if(!v(e))return!1;let t=f(e,"rect"),n=f(e,"layout"),r=v(n)?f(n,"containingBlock"):null,i=f(e,"scrollContext"),o=v(r)&&(Z(r,"kind","viewport")&&Reflect.ownKeys(r).length===1||Z(r,"kind","document")&&Reflect.ownKeys(r).length===1||Z(r,"kind","element")&&D(r,"runtimeNodeId"));return Z(e,"version",on)&&D(e,"runtimeNodeId")&&v(t)&&rt(f(t,"viewport"))&&rt(f(t,"document"))&&v(n)&&D(n,"position")&&D(n,"transform")&&o&&v(i)&&["scrollX","scrollY","viewportWidth","viewportHeight"].every(s=>F(i,s))&&me(i,"scrollContainers")&&hi(f(i,"scrollContainers"))}function hi(e){return Array.isArray(e)&&e.every(t=>v(t)&&D(t,"runtimeNodeId")&&F(t,"scrollLeft")&&F(t,"scrollTop"))}function rn(e){return v(e)&&(Y(e,"layoutSnapshot")||mr(f(e,"layoutSnapshot")))}function mi(e){return v(e)&&Ie(f(e,"ref"))&&me(e,"layoutSnapshot")&&mr(f(e,"layoutSnapshot"))&&(Y(e,"childBoxes")||bi(f(e,"childBoxes")))&&(Y(e,"childRects")||yi(f(e,"childRects")))&&(Y(e,"layout")||gi(f(e,"layout")))&&(Y(e,"spacing")||Si(f(e,"spacing")))}function gi(e){if(!v(e))return!1;let t=f(e,"indicatorOrientation");return D(e,"display")&&(t==="horizontal"||t==="vertical")&&Be(e,"flexDirection")&&Be(e,"gridAutoFlow")}function yi(e){return Array.isArray(e)&&e.every(t=>rt(t))}function bi(e){return Array.isArray(e)&&e.every(t=>v(t)&&rt(f(t,"rect"))&&gr(f(t,"margin")))}function gr(e){return v(e)&&["marginTop","marginRight","marginBottom","marginLeft"].every(t=>F(e,t))}function Si(e){return gr(e)&&["paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","columnGap","rowGap"].every(t=>F(e,t))}function Ei(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)||!mi(n.value))return!1}return!0}function Ii(e){return v(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&me(e,t)&&(typeof f(e,t)=="string"||f(e,t)===null))}function yr(e){return e==null||typeof e=="string"||typeof e=="number"&&Number.isFinite(e)}function Ci(e){return v(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&me(e,t)&&yr(f(e,t)))}function vi(e){if(!v(e))return!1;let t=f(e,"priority");return D(e,"property")&&me(e,"value")&&yr(f(e,"value"))&&(!Me(e,"priority")||t===void 0||t==="important")}function Ri(e){return v(e)?(Y(e,"attributes")||Ii(f(e,"attributes")))&&Be(e,"className")&&(Y(e,"style")||Ci(f(e,"style")))&&(Y(e,"styleDeclarations")||Array.isArray(f(e,"styleDeclarations"))&&f(e,"styleDeclarations").every(vi)):!1}function xi(e){return v(e)&&F(e,"x")&&F(e,"y")&&(Y(e,"detailLevel")||Z(e,"detailLevel","summary")||Z(e,"detailLevel","full"))}function Ti(e){return v(e)&&Ie(f(e,"ref"))}function _i(e){if(!v(e)||!v(f(e,"variables")))return!1;let t=f(e,"variables");return Reflect.ownKeys(t).every(n=>typeof n=="string"&&D(t,n))?Y(e,"stylesheets")||Ct(f(e,"stylesheets")):!1}function Ai(e){if(!Z(e,"type","request")||!D(e,"id")||!D(e,"kind")||!me(e,"payload"))return!1;let t=f(e,"kind"),n=f(e,"payload");switch(t){case"hit-test-at-point":case"start-text-edit-at-point":return xi(n);case"bridge-get-source-tree":return v(n)&&Ce(f(n,"composition"))&&he(n,["composition"]);case"get-scroll-metrics":case"clear-theme-override":return di(n);case"bridge-get-history-status":case"bridge-undo":case"bridge-redo":return v(n)&&Ce(f(n,"composition"))&&he(n,["composition"]);case"bridge-get-source-file":return v(n)&&D(n,"path")&&Ce(f(n,"composition"))&&he(n,["path","composition"]);case"bridge-get-object-edit-context":return v(n)&&D(n,"key")&&Ce(f(n,"composition"))&&Oi(f(n,"selectionRef"))&&he(n,["key","composition","selectionRef"]);case"bridge-resolve-source-location":case"bridge-get-class-name-source":return v(n)&&D(n,"key")&&Ce(f(n,"composition"))&&he(n,["key","composition"]);case"scroll-to":return v(n)&&F(n,"x")&&F(n,"y");case"scroll-by":return v(n)&&F(n,"deltaX")&&F(n,"deltaY");case"set-interaction-mode":return v(n)&&Rt(n,"enabled");case"set-selection-visual":return v(n)&&Z(n,"version",tt)&&Ie(f(n,"ref"))&&Z(n,"visible",!0);case"clear-selection-visual":return v(n)&&Z(n,"version",tt);case"set-resize-visual":return v(n)&&Z(n,"version",nt)&&Ie(f(n,"ref"))&&Z(n,"visible",!0);case"clear-resize-visual":return v(n)&&Z(n,"version",nt);case"set-theme-override":return _i(n);case"get-theme-variables":return v(n)&&Ct(f(n,"names"));case"compute-drop-target-at-point":return v(n)&&F(n,"x")&&F(n,"y")&&(Z(n,"dragKind","insert")||Z(n,"dragKind","move"))&&(Y(n,"movingRef")||Ie(f(n,"movingRef")));case"observe-node-bounds":case"clear-node-bounds-observer":return v(n)&&(Y(n,"ref")||Ie(f(n,"ref")));case"apply-node-patch":return v(n)&&Ie(f(n,"ref"))&&Ri(f(n,"patch"))&&(Y(n,"preview")||v(f(n,"preview"))&&D(f(n,"preview"),"sessionId")&&Oe(f(n,"preview"),"revision")&&Me(f(n,"preview"),"revision"));case"get-hit-by-ref":case"get-path-by-ref":case"restore-text-edit":case"clear-text-edit-rollback":return Ti(n);case"bridge-initialize-session":case"bridge-get-style-context":return v(n)&&Ce(f(n,"composition"))&&he(n,["composition"]);case"bridge-get-document":case"bridge-ensure-document-version":case"bridge-acknowledge-document-version":return v(n)&&Ce(f(n,"composition"))&&$e(n,"minVersion")&&$e(n,"version")&&he(n,["composition","minVersion","version"]);case"bridge-execute":{if(!v(n))return!1;let r=f(n,"request"),i=f(n,"composition"),o=v(r)?f(r,"composition"):null;return!Ce(i)||!v(r)||!Ce(o)?!1:se({routeId:i.routeId,...i.templateId?{effectiveTemplateId:i.templateId}:{}})===se({routeId:o.routeId,...o.templateId?{effectiveTemplateId:o.templateId}:{}})&&he(n,["composition","request"])}case"bridge-subscribe":case"bridge-unsubscribe":return v(n)&&D(n,"subscriptionId")&&Ce(f(n,"composition"))&&he(n,["subscriptionId","composition"]);default:return!1}}function Pi(e){return Z(e,"type","response")&&D(e,"id")&&Rt(e,"ok")&&(Y(e,"error")||D(e,"error"))}function Ni(e){if(!v(e))return!1;let t=f(e,"type");if(typeof t!="string"||!It(f(e,"composition"))||!D(e,"siteId")||!D(e,"at"))return!1;switch(t){case"site-edit.document.changed":return D(e,"snapshotId")&&F(e,"version");case"site-edit.operation.planned":return D(e,"operationId")&&D(e,"baseSnapshotId")&&Ct(f(e,"changedFiles"));case"site-edit.operation.completed":return v(f(e,"result"));case"site-edit.operation.failed":return D(e,"requestId")&&v(f(e,"error"));case"site-edit.capability.changed":return Ct(f(e,"keys"));case"site-edit.graph.invalidated":return!0;case"site-edit.graph.ready":return F(e,"version");case"site-edit.graph.error":return D(e,"message");default:return!1}}var wi=new Set(["pointer-down","pointer-move","pointer-leave","pointer-up","pointer-cancel","pointer-click","pointer-double-click"]),br=new Set(["e","s","se"]);function ki(e,t){if(Y(e,"resizeSession"))return!0;let n=f(e,"resizeSession");if(!v(n))return!1;let r=f(e,"pointerId"),i=f(n,"pointerId"),o=f(n,"phase"),s=f(n,"edge"),c=t==="pointer-down"?"start":t==="pointer-up"?"commit":t==="pointer-cancel"?"cancel":null;return f(n,"version")===1&&o===c&&D(n,"sessionId")&&String(f(n,"sessionId")).length>0&&typeof r=="number"&&Number.isInteger(r)&&typeof i=="number"&&Number.isInteger(i)&&r===i&&typeof s=="string"&&br.has(s)&&f(e,"resizeEdge")===s&&Ie(f(n,"ref"))&&["startWidth","startHeight","width","height"].every(u=>F(n,u))}function Di(e){if(!Z(e,"type","event")||!D(e,"kind")||!v(f(e,"payload")))return!1;let t=f(e,"kind"),n=f(e,"payload");switch(t){case"text-edit-commit":case"text-edit-cancel":case"text-edit-exit":case"text-edit-input":return Ie(f(n,"ref"))&&Be(n,"value")&&(Y(n,"hit")||rn(f(n,"hit")));case"node-bounds-change":return rn(f(n,"hit"));case"geometry-batch":{let r=f(n,"reason");return hr(n,"sequence")&&F(n,"sourceEventAt")&&F(n,"captureStartedAt")&&F(n,"capturedAt")&&(r==="scroll"||r==="resize"||r==="mutation")&&Ei(f(n,"snapshots"))}case"bridge-event":{let r=f(n,"event"),i=f(n,"composition");return!Ni(r)||!It(i)?!1:D(n,"subscriptionId")&&se(i)===se(r.composition)}case"route-ready":return It(f(n,"composition"))&&D(n,"editEngineVersion")&&F(n,"sequence")&&F(n,"version");case"bridge-status":{let r=f(n,"state");return(r==="connecting"||r==="ready"||r==="reconnecting"||r==="failed"||r==="reload-required")&&It(f(n,"composition"))&&F(n,"sequence")&&$e(n,"attempt")&&$e(n,"retryInMs")&&Be(n,"messageKey")}case"scroll":{let r=f(n,"metrics");return v(r)&&["scrollX","scrollY","scrollWidth","scrollHeight","viewportWidth","viewportHeight"].every(i=>F(r,i))}default:return wi.has(t)&&F(n,"clientX")&&F(n,"clientY")&&$e(n,"buttons")&&$e(n,"pointerId")&&(Y(n,"hoverVisualOwned")||Rt(n,"hoverVisualOwned"))&&(Y(n,"resizeEdge")||D(n,"resizeEdge")&&br.has(f(n,"resizeEdge")))&&ki(n,t)&&(f(n,"hit")===null||rn(f(n,"hit")))&&(Y(n,"section")||f(n,"section")===null||pi(f(n,"section")))&&(Y(n,"sectionGap")||f(n,"sectionGap")===null||fi(f(n,"sectionGap")))}}function Oi(e){if(e===void 0)return!0;if(!v(e)||!he(e,["key","instanceIndex","instanceCount"])||!D(e,"key")||f(e,"key").length===0||!Oe(e,"instanceIndex")||!Y(e,"instanceCount")&&!hr(e,"instanceCount"))return!1;let t=f(e,"instanceIndex"),n=f(e,"instanceCount");return!(typeof t=="number"&&typeof n=="number"&&t>=n)}function Bi(e){if(!v(e))return!1;switch(f(e,"type")){case"request":return Ai(e);case"response":return Pi(e);case"event":return Di(e);default:return!1}}var ln="vcp-site-edit:route-ready",dn="vcp-site-edit:bridge-status",Br="SITE_EDIT_COMPOSITION_RENDER_MISMATCH",Mi=80,Fi=120,Vi=160,qi=4,Mr="data-vcp-designer-hover-visual",Ki=1e3,Hi="data-vcp-ui-component",Fr="data-vcp-theme-preview",Sr="::repeat-item#",xt="components/ui",sn="data-site-block-id",cn="data-vcp-runtime-site-block-id",zi=new Set(["article","aside","div","footer","form","header","li","main","nav","ol","section","select","table","tbody","tfoot","thead","tr","ul"]),Ui=new Set(["a","button","em","h1","h2","h3","h4","h5","h6","label","p","small","span","strong"]);function $i(e,t){let n=Array.from(e.querySelectorAll("[data-vcp-edit-key]"));for(let c of n)c.getAttribute(cn)==="true"&&(c.removeAttribute(sn),c.removeAttribute(cn));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 u=c.parentElement,a=!1;for(;u;){if(o.has(u)){a=!0;break}u=u.parentElement}if(a||c.getAttribute(sn)?.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 h=`vcp-runtime:${encodeURIComponent(d)}:${l}`;c.setAttribute(sn,h),c.setAttribute(cn,"true")}}function Vr(e,t=""){let n=Ur(t),r=n&&(e===n||e.startsWith(`${n}/`))?e.slice(n.length)||"/":e,i=r.startsWith("/")?r:`/${r}`;return i==="/"?"/":i.replace(/\/+$/,"")}function Wi(e){let t=Vr(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 Ge(e){return JSON.stringify([e.routeId,e.templateId??null])}function ji(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 Gi(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 bu(e=window,t={}){let n=Gi(e,{explicit_ws_url:t.explicit_ws_url,port:t.ws_port,path:t.wsPath||"/__vcp/site-edit/bridge"}),r=Yi({bridgeUrl:n,options:t}),i=e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(i?.started){if(Xi(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,u=t.create_client??(m=>new St({url:m,authKey:t.bridge_session_key})),a=t.schedule_after_navigation??Es,d=()=>{o.retryTimer&&(e.clearTimeout(o.retryTimer),o.retryTimer=void 0)},l=()=>Wi({pathname:e.location.pathname,search:e.location.search,basePath:t.basePath}),h=()=>Ge(l()),p=m=>{Is(e,{...m,composition:m.state==="ready"?m.composition:{routeId:m.composition.routeId},sequence:m.sequence??o.routeSequence})},R=m=>{o.currentDocument=m,o.currentEntriesByKey=new Map((m?.entries??[]).map(I=>[I.key,I])),$i(e.document,!!m)},C=()=>{o.unsubscribeConnectionStatus?.(),o.unsubscribeConnectionStatus=void 0,o.unsubscribeDocument?.(),o.unsubscribeDocument=void 0},x=(m,I)=>{if(o.disposed||I!==o.routeSequence)return!1;try{return m===h()}catch{return!1}},A=async(m,I,k)=>{let _=o.activeBridge;if(!_)return null;let V=await _.getDocument(m);return x(I,k)&&R(V.data),V.data},O=()=>{C(),R(null);let m=o.activeBridge;o.activeBridge=null,m&&e.__VCP_SITE_EDIT__===m&&delete e.__VCP_SITE_EDIT__;let I=o.activeClient;o.activeClient=null,I?.disconnect()},H=m=>m===s.compositionKey&&!!o.activeBridge&&!!(o.currentDocument&&s.composition&&vs(o.currentDocument,se(s.composition)))&&Cs(o.activeClient),q=m=>Math.min(Ki*2**Math.max(0,m),8e3),E=(m,I,k,_)=>{if(o.disposed)return;d();let V=q(_);p({state:"reconnecting",composition:m,attempt:_,retryInMs:V,messageKey:"studio.status.previewBridgeConnecting"}),o.retryTimer=e.setTimeout(()=>{o.retryTimer=void 0,!(o.disposed||k!==o.routeSequence||!x(I,k))&&j(_+1).catch(ie=>{let L;try{L=h()}catch{return}if(I===L){if(We(ie)){p({state:"reload-required",composition:m,attempt:_,messageKey:"studio.errors.previewBridgeReloadRequired"});return}E(m,I,o.routeSequence,_+1)}})},V)},U=(m,I,k)=>{if(!x(I,k)||o.activeClient===null)return;let _=o.activeClient;C(),R(null);let V=o.activeBridge;o.activeBridge=null,V&&e.__VCP_SITE_EDIT__===V&&delete e.__VCP_SITE_EDIT__,o.activeClient=null,_.disconnect(),E(m,I,k,0)},re=(m,I,k,_)=>{if(!(!x(I,k)||o.activeClient===null)){if(We(_.message)){O(),d(),p({state:"reload-required",composition:m,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}U(m,I,k)}},$=m=>{let I;try{I=l()}catch{return}let k=Ge(I),_=o.routeSequence;if(!(!x(k,_)||o.activeClient===null)){if(We(m)){O(),d(),p({state:"reload-required",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(Ts(m)){U(I,k,_);return}Hr(m)&&re(I,k,_,{state:"failed",message:Ne(m,"Site edit bridge request failed")})}};o.cleanupFrameRuntime=es(e,{getCurrentDocument:()=>o.currentDocument,getDocumentEntry:m=>o.currentEntriesByKey.get(m)??null,setCurrentDocument:R,onBridgeRequestError:m=>{$(m)}});let X=async()=>j(0),j=async m=>{if(o.disposed)return;let I=l(),k=Ge(I);if(H(k))return;let _=o.syncInFlight;if(_?.compositionKey===k)return _.promise;let V=o.routeSequence+1,ie=te(I,k,V,m);o.syncInFlight={compositionKey:k,sequence:V,promise:ie};try{await ie}finally{o.syncInFlight?.promise===ie&&(o.syncInFlight=null)}},te=async(m,I,k,_)=>{o.routeSequence=k,d(),O(),p({state:_>0?"reconnecting":"connecting",composition:m,attempt:_,messageKey:_>0?"studio.status.previewBridgeConnecting":"studio.status.previewLoading"});let V=u(n),ie=!1;o.activeClient=V,o.unsubscribeConnectionStatus=V.subscribeConnectionStatus?.(L=>{ie&&(L.state==="closed"||L.state==="failed")&&re(m,I,k,L)});try{if(await V.connect(),!x(I,k)){V.disconnect();return}let L=Qn({composition:m,client:V,initialDocument:Zi(m)});if(o.activeBridge=L,o.activeClient=V,o.unsubscribeDocument=L.subscribe(y=>{if(!(!s.composition||se(y.composition)!==se(s.composition))){if(y.type==="site-edit.snapshot.changed"){A(m,I,k).catch(()=>{});return}y.type==="site-edit.document.changed"&&o.currentDocument&&y.version>o.currentDocument.version?A(m,I,k).catch(()=>{}):y.type==="site-edit.graph.invalidated"&&(R(null),T())}}),c()&&(s.routeId=m.routeId,s.composition=void 0,s.compositionKey=I),t.launch_id){let y=new URL(n);y.protocol=y.protocol==="wss:"?"https:":"http:",y.pathname=y.pathname.replace(/\/bridge$/,"/health"),y.search="";let W=await e.fetch(y,{cache:"no-store"}),K=await W.json();if(!W.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 b=await L.initializeSession({composition:m}),S=b.data.document;if((m.templateId!==void 0?se(b.composition)!==I:b.composition.effectiveTemplateId!==void 0)||se(S.composition)!==se(b.composition))throw new Error(`${Br}: initialize response does not match requested selector`);if(!x(I,k)){V.disconnect();return}R(S),c()&&(e.__VCP_SITE_EDIT__=L),ie=!0,c()&&(s.composition=b.composition),p({state:"ready",composition:b.composition,attempt:_,messageKey:"studio.status.previewReady"}),ji(e,{documentVersion:S?.version??0,routeId:m.routeId,versions:t.runtime_versions}),S&&Kr(e,{composition:b.composition,editEngineVersion:t.runtime_versions?.engine??"unknown",sequence:k,version:S.version})}catch(L){if(!x(I,k)){V.disconnect();return}if(C(),o.activeClient===V&&(o.activeClient=null),o.activeBridge&&e.__VCP_SITE_EDIT__===o.activeBridge&&delete e.__VCP_SITE_EDIT__,o.activeBridge=null,V.disconnect(),R(null),!x(I,k))return;throw p({state:We(L)?"reload-required":"failed",composition:m,attempt:_,messageKey:We(L)?"studio.errors.previewBridgeReloadRequired":"studio.errors.previewBridgeDisconnected"}),L}},ne=m=>{if(o.disposed)return;let I;try{I=l()}catch{p({state:"failed",composition:{routeId:Vr(e.location.pathname,t.basePath||"")},attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}let k=Ge(I);if(We(m)){d(),p({state:"reload-required",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(Rs(m)){p({state:"failed",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}E(I,k,o.routeSequence,0)},T=()=>{o.syncScheduled||o.disposed||(o.syncScheduled=!0,a(()=>{o.syncScheduled=!1,!o.disposed&&X().catch(m=>ne(m))}))},w=()=>{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(),O(),c()&&delete e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__)};s={started:!0,signature:r,syncRoute:X,cleanup:w},e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__=s,o.unbindBootstrapLifecycle=Ji(e,w);let M=l();if(o.unbindRouteChange=Ss(e,()=>{let m=l(),I=m.routeId===M.routeId&&m.templateId!==M.templateId;if(M=m,I){o.routeSequence+=1,O(),p({state:"connecting",composition:{routeId:m.routeId},attempt:0}),e.location.reload();return}T()},h),t.defer_initial_sync){T();return}await X()}function Yi(e){return{basePath:Ur(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:Li(e.options.bridge_session_key)}}function Xi(e,t){return!!e&&JSON.stringify(e)===JSON.stringify(t)}function Li(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 Ji(e,t){let n=()=>t();return e.addEventListener("pagehide",n),e.addEventListener("beforeunload",n),Qi(t),()=>{e.removeEventListener("pagehide",n),e.removeEventListener("beforeunload",n)}}function Qi(e){let t=import.meta.hot,n=import.meta.webpackHot,r=t??n;!r||typeof r.dispose!="function"||r.dispose(()=>e())}function Zi(e){return{siteId:"preview",snapshotId:"preview",composition:{routeId:e.routeId},version:0,pageComposition:{status:"unsupported",reason:"ROUTE_RETURN_NOT_FOUND",diagnostics:[]},entries:[]}}function es(e=window,t={}){let n=null,r=null,i=null,o=null,s=null,c=null,u=0,a=null,d=null,l=null,h=null,p=null,R=0,C=new Map,x=typeof t.expectedSessionKey=="string"&&t.expectedSessionKey.length>0?t.expectedSessionKey:null,A=()=>{n?.(),n=null,r=null},O=()=>{let b=e.parent;if(!(!b||b===e))try{b.postMessage(pr(),"*")}catch{}},H=()=>{i?.(),i=null,o?.(),o=null,s?.cleanup(),s=null,c?.cleanup(),c=null},q=(b,S,y)=>{let W=a?.sessionKey!==b||a?.sourceWindow!==S||a?.targetOrigin!==y;a={sessionKey:b,sourceWindow:S,targetOrigin:y},W&&(u=0,h=null,p=null)},E=(b,S)=>{let y=e.parent&&e.parent!==e?e.parent:null;return!y||S!==y?!1:!x||b===x},U=()=>{for(let b of C.values())b();C.clear()},re=b=>JSON.stringify([se(b.composition),b.editEngineVersion,b.sequence,b.version]),$=()=>!l||l.state==="ready",X=b=>JSON.stringify([b.state,se(b.composition),b.sequence,b.attempt??null,b.retryInMs??null,b.messageKey??null]),j=b=>{if(!$())return;let S=re(b);h!==S&&(o?.(),o=null,s?.cleanup(),s=null,c?.cleanup(),c=null,m({kind:"route-ready",payload:{composition:b.composition,editEngineVersion:b.editEngineVersion,sequence:b.sequence,version:b.version}}),a&&(h=S))},te=b=>{let S=X(b);p!==S&&(b.state!=="ready"&&(h=null,d=null),m({kind:"bridge-status",payload:b}),a&&(p=S))},ne=b=>{d=b,j(b)},T=b=>{l=b,te(b)},w=()=>{d&&j(d)},M=()=>{l&&te(l)},m=b=>{a&&a.sourceWindow.postMessage(ot({type:"event",...b},{sessionKey:a.sessionKey}),a.targetOrigin)},I=(b,S,y,W)=>{let K=t.getCurrentDocument?.()??null,oe=S.rawTarget&&typeof S.rawTarget.getAttribute=="function"?S.rawTarget:null,P=oe??Os(e.document,S.clientX,S.clientY),J=oe?Bt(oe):null,ue=J?.getAttribute("data-vcp-edit-key")??"",le=S.resizeSession||S.skipHit?null:J&&yn(J,K,ue)?J:at(e.document,S.clientX,S.clientY,K),de=b==="pointer-move"&&Number(S.buttons??0)===0||b==="pointer-down"?"rect-only":"full",ce=le?ve(le,y==="full"?ge(e.document,le,K):Dt(e.document,le,K),t.getDocumentEntry,y,void 0,de,K):null,be=Bs(e.document,P,K),Se=Fs(e.document,S,K,t.getDocumentEntry);W&&ce&&(b==="pointer-click"||b==="pointer-double-click")&&(W.preventDefault(),W.stopPropagation(),typeof W.stopImmediatePropagation=="function"&&W.stopImmediatePropagation()),m({kind:b,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:ce,section:be,sectionGap:Se}})},k=b=>{m({kind:"pointer-leave",payload:{clientX:b?.clientX??0,clientY:b?.clientY??0,buttons:Number(b?.buttons??0),hit:null,section:null,sectionGap:null}})},_=(b,S,y)=>{H(),a={sessionKey:b,sourceWindow:S,targetOrigin:y};let W=Rc(e.document),K=ts(e,t.getCurrentDocument),oe=null,P=null,J=null,ue=null,le=null,de=null,ce=!1,be=null,Se=!1,Ee=()=>{be=null,Se=!1},Ke=()=>{le!==null&&(e.clearTimeout(le),le=null)},N=()=>{J!==null&&(wt(e,J),J=null),oe=null},B=()=>{de!==null&&(e.clearTimeout(de),de=null)},Q=()=>{J=null;let g=oe;oe=null,g&&I("pointer-move",g,"summary")},xe=g=>{Ke(),P=g,oe=g,J===null&&(J=Nt(e,Q))},mt=g=>{P&&xe({...P,rawTarget:null,hoverVisualOwned:g&&!ce&&!Se?K?.updateAtPoint(P.clientX,P.clientY)??!1:!1})},pe=()=>mt(!0),_o=()=>mt(!1),Le=e.document.documentElement,$t=typeof Le.addEventListener=="function"?Le:e.document,wn=g=>{if(c?.update(g)){g.preventDefault();return}be?.pointerId===Number(g.pointerId)&&Number(g.buttons)===1?!Se&&Math.hypot(Number(g.clientX)-be.clientX,Number(g.clientY)-be.clientY)>=qi&&(Se=!0,K?.clear()):be?.pointerId===Number(g.pointerId)&&Number(g.buttons)!==1&&Ee(),xe({clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),rawTarget:g.target,hoverVisualOwned:!ce&&!Se?K?.update(g.target)??!1:!1})},kn=g=>{let z=fs(g.target),ze=z?c?.begin(g,z):null;ze&&(g.target?.setPointerCapture?.(g.pointerId),g.preventDefault(),g.stopPropagation()),!ze&&Number(g.buttons)===1?(be={clientX:Number(g.clientX),clientY:Number(g.clientY),pointerId:Number(g.pointerId)},Se=!1):Ee(),I("pointer-down",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),pointerId:Number(g.pointerId),rawTarget:g.target,resizeEdge:z,resizeSession:ze??void 0},"summary",g)},Dn=g=>{Ee();let z=c?.finish(g,"commit")??null;if(z){I("pointer-up",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),pointerId:Number(g.pointerId),resizeEdge:z.edge,resizeSession:z,skipHit:!0},"summary",g);return}I("pointer-up",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),rawTarget:g.target,skipHit:!0},"summary",g)},On=g=>{Ee();let z=c?.finish(g,"cancel")??null;I("pointer-cancel",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),pointerId:z?.pointerId,rawTarget:z?void 0:g.target,resizeEdge:z?.edge,resizeSession:z??void 0,skipHit:!0},"summary",g)},Bn=g=>{let z=c?.finish(g,"cancel")??null;z&&I("pointer-cancel",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),pointerId:z.pointerId,resizeEdge:z.edge,resizeSession:z,skipHit:!0},"summary",g)},Mn=g=>{I("pointer-click",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),rawTarget:g.target},"full",g)},Fn=g=>{I("pointer-double-click",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),rawTarget:g.target},"full",g)},Wt=g=>{if(g&&g.target!==$t&&g.target!==Le)return;let z=g?{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons)}:P;if(g&&z&&z.clientX>0&&z.clientX<e.innerWidth&&z.clientY>0&&z.clientY<e.innerHeight){pe();return}if(N(),g){Ke(),le=e.setTimeout(()=>{le=null,P=null,B(),ce=!1,Ee(),k(z??void 0)},Fi);return}Ke(),B(),ce=!1,Ee(),P=null,K?.clear(),k(z??void 0)},Vn=()=>Wt(),Ao=()=>{ue=null,m({kind:"scroll",payload:{metrics:At(e)}}),_o()},He=()=>{ce=!0,K?.clear(),B(),P&&(de=e.setTimeout(()=>{de=null,ce=!1,pe()},Vi)),ue===null&&(ue=Nt(e,Ao))};e.document.addEventListener("pointerdown",kn,!0),e.document.addEventListener("pointermove",wn,{passive:!0,capture:!0}),e.document.addEventListener("pointerup",Dn,!0),e.document.addEventListener("pointercancel",On,!0),e.document.addEventListener("lostpointercapture",Bn,!0),e.document.addEventListener("click",Mn,!0),e.document.addEventListener("dblclick",Fn,!0),e.addEventListener("scroll",He,{passive:!0}),e.document.addEventListener("scroll",He,{capture:!0,passive:!0}),e.addEventListener("resize",pe,{passive:!0}),e.addEventListener("blur",Vn),e.document.addEventListener("load",pe,!0),$t.addEventListener("pointerleave",Wt,!0);let gt=e.visualViewport;gt?.addEventListener?.("resize",pe,{passive:!0}),gt?.addEventListener?.("scroll",He,{passive:!0});let qn=e.ResizeObserver,Kn=typeof qn=="function"?new qn(pe):null;Kn?.observe(Le);let Hn=e.MutationObserver,zn=typeof Hn=="function"?new Hn(g=>{g.some(ze=>ze.type!=="attributes"||ze.attributeName!==Mr)&&pe()}):null;zn?.observe(Le,{attributes:!0,childList:!0,subtree:!0}),i=()=>{N(),Ke(),B(),ce=!1,Ee(),P=null,K?.cleanup(),Kn?.disconnect(),zn?.disconnect(),ue!==null&&(wt(e,ue),ue=null),W(),e.document.removeEventListener("pointerdown",kn,!0),e.document.removeEventListener("pointermove",wn,!0),e.document.removeEventListener("pointerup",Dn,!0),e.document.removeEventListener("pointercancel",On,!0),e.document.removeEventListener("lostpointercapture",Bn,!0),e.document.removeEventListener("click",Mn,!0),e.document.removeEventListener("dblclick",Fn,!0),e.removeEventListener("scroll",He),e.document.removeEventListener("scroll",He,!0),e.removeEventListener("resize",pe),e.removeEventListener("blur",Vn),e.document.removeEventListener("load",pe,!0),$t.removeEventListener("pointerleave",Wt,!0),gt?.removeEventListener?.("resize",pe),gt?.removeEventListener?.("scroll",He)}},V=b=>{let S=b.detail;S?.composition?.routeId&&ne(S)},ie=b=>{let S=b.detail;S?.state&&T(S)},L=b=>{let S=b.data;if(!fr(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"&&!Rr(S.body))return;let y=S.body,W=typeof S.sessionKey=="string"?S.sessionKey:null,K=b.source,oe=b.origin;if(!W||!oe||!K||typeof K.postMessage!="function"||!E(W,K))return;if(a){if(a.sourceWindow!==K||a.targetOrigin!==oe)return;a.sessionKey!==W&&(A(),H(),U(),a=null)}q(W,K,oe),M(),w();let P=J=>{let ue=typeof y.id=="string"?y.id:"unknown";K.postMessage(ot({id:ue,...J},{sessionKey:W}),oe)};try{if(Rr(y)){gs({message:y,sendEvent:N=>{K.postMessage(ot({type:"event",...N},{sessionKey:W}),oe)},sendResponse:P,subscriptions:C,getCurrentDocument:t.getCurrentDocument,setCurrentDocument:t.setCurrentDocument,onBridgeRequestError:t.onBridgeRequestError,nextRouteReadySequence:()=>R+=1,windowLike:e});return}if(y.kind==="apply-node-patch"){let N=ye(e.document,y.payload.ref,t.getCurrentDocument?.()??null);if(!N){P({type:"response",ok:!1,error:"No editable element found for patch target"});return}let B=y.payload.preview,Q=B?lc(B.sessionId,y.payload.ref):null;if(Q&&B){let xe=it.get(Q)??-1;if(B.revision<xe){P({type:"response",ok:!0,result:{applied:!1,appliedRevision:B.revision,stale:!0,latestRevision:xe}});return}if(B.revision===xe){P({type:"response",ok:!0,result:{applied:!1,appliedRevision:B.revision,duplicate:!0,latestRevision:xe}});return}}if(ac(N,y.payload.patch),Q&&B&&dc(Q,B.revision),B?.responseDetail==="none"){P({type:"response",ok:!0,result:{applied:!0,appliedRevision:B.revision}});return}P({type:"response",ok:!0,result:ve(N,ge(e.document,N,t.getCurrentDocument?.()??null),t.getDocumentEntry,B?.responseDetail??"full",void 0,"full",t.getCurrentDocument?.()??null)});return}if(y.kind==="get-hit-by-ref"){let N=ye(e.document,y.payload.ref,t.getCurrentDocument?.()??null);if(!N){P({type:"response",ok:!1,error:"No editable element found for hit target"});return}P({type:"response",ok:!0,result:ve(N,ge(e.document,N,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full",void 0,"full",t.getCurrentDocument?.()??null)});return}if(y.kind==="get-path-by-ref"){let N=ye(e.document,y.payload.ref,t.getCurrentDocument?.()??null);if(!N){P({type:"response",ok:!1,error:"No editable element found for path target"});return}let B=[],Q=N;for(;Q;)Q.getAttribute("data-vcp-edit-key")&&B.push(ve(Q,ge(e.document,Q,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full",void 0,"rect-only",t.getCurrentDocument?.()??null)),Q=Q.parentElement;P({type:"response",ok:!0,result:B.reverse()});return}if(y.kind==="restore-text-edit"||y.kind==="clear-text-edit-rollback"){let N=y.payload.ref;if(y.kind==="clear-text-edit-rollback"){r&&xr(r.ref,N)&&(r=null),P({type:"response",ok:!0,result:{cleared:!0}});return}if(!r||!xr(r.ref,N)){P({type:"response",ok:!1,error:"No pending text edit rollback snapshot"});return}let B=As(e.document,r,t.getCurrentDocument?.()??null);r=null,P(B?{type:"response",ok:!0,result:{restored:!0}}:{type:"response",ok:!1,error:"Failed to restore text edit snapshot"});return}if(y.kind==="get-scroll-metrics"){P({type:"response",ok:!0,result:At(e)});return}if(y.kind==="scroll-to"){let N=Number(y.payload.x),B=Number(y.payload.y);if(!Number.isFinite(N)||!Number.isFinite(B)){P({type:"response",ok:!1,error:"Invalid scroll position"});return}e.scrollTo({left:N,top:B}),P({type:"response",ok:!0,result:At(e)});return}if(y.kind==="scroll-by"){let N=Number(y.payload.deltaX),B=Number(y.payload.deltaY);if(!Number.isFinite(N)||!Number.isFinite(B)){P({type:"response",ok:!1,error:"Invalid scroll delta"});return}e.scrollBy({left:N,top:B}),P({type:"response",ok:!0,result:{...At(e),scrolled:!0}});return}if(y.kind==="set-interaction-mode"){y.payload.enabled?_(W,K,oe):a?.sourceWindow===K&&a.targetOrigin===oe&&a.sessionKey===W&&(A(),H()),P({type:"response",ok:!0,result:{interactionEnabled:y.payload.enabled}});return}if(y.kind==="set-selection-visual"){let N=!1;i?s?(N=s.setRef(y.payload.ref),N||(s.cleanup(),s=null)):(s=rs(e,y.payload.ref,t.getCurrentDocument),N=!!s):(s?.cleanup(),s=null),P({type:"response",ok:!0,result:{version:tt,active:N}});return}if(y.kind==="clear-selection-visual"){s?.cleanup(),s=null,P({type:"response",ok:!0,result:{version:tt,active:!1}});return}if(y.kind==="set-resize-visual"){c?.cleanup(),c=null,i&&(c=hs(e,y.payload.ref,t.getCurrentDocument,({clientX:N,clientY:B,session:Q})=>{m({kind:"pointer-cancel",payload:{clientX:N,clientY:B,buttons:0,pointerId:Q.pointerId,resizeEdge:Q.edge,resizeSession:Q,hit:null,section:null,sectionGap:null}})})),P({type:"response",ok:!0,result:{version:nt,active:!!c}});return}if(y.kind==="clear-resize-visual"){c?.cleanup(),c=null,P({type:"response",ok:!0,result:{version:nt,active:!1}});return}if(y.kind==="set-theme-override"){pc(e.document,y.payload),P({type:"response",ok:!0,result:{themeOverrideApplied:!0}});return}if(y.kind==="clear-theme-override"){fc(e.document),P({type:"response",ok:!0,result:{themeOverrideCleared:!0}});return}if(y.kind==="get-theme-variables"){P({type:"response",ok:!0,result:hc(e.document,y.payload.names)});return}if(y.kind==="compute-drop-target-at-point"){let N=Number(y.payload?.x),B=Number(y.payload?.y);if(!Number.isFinite(N)||!Number.isFinite(B)){P({type:"response",ok:!1,error:"Invalid drop target point"});return}P({type:"response",ok:!0,result:nc(e,N,B,y.payload.dragKind,y.payload.movingRef,t.getCurrentDocument?.()??null,t.getDocumentEntry)});return}if(y.kind==="observe-node-bounds"){let N=y.payload.ref;if(!N){P({type:"response",ok:!1,error:"Missing bounds observer target"});return}let B=ye(e.document,N,t.getCurrentDocument?.()??null);if(!B){P({type:"response",ok:!1,error:"No editable element found for bounds observer target"});return}o?.();let Q=Ls(e,B,N,t.getCurrentDocument,(xe,mt,pe)=>{u+=1,m({kind:"geometry-batch",payload:{sequence:u,sourceEventAt:pe.sourceEventAt,captureStartedAt:pe.captureStartedAt,capturedAt:pe.capturedAt,reason:xe,snapshots:[mt]}})});o=Q.cleanup,P({type:"response",ok:!0,result:{observing:!0}}),m({kind:"node-bounds-change",payload:{hit:Ys(ve(B,N,t.getDocumentEntry,"summary",e,"rect-only",t.getCurrentDocument?.()??null),Q.initialSnapshot)}});return}if(y.kind==="clear-node-bounds-observer"){o?.(),o=null,P({type:"response",ok:!0,result:{cleared:!0}});return}if(y.kind!=="hit-test-at-point"&&y.kind!=="start-text-edit-at-point")return;let J=Number(y.payload?.x),ue=Number(y.payload?.y);if(!Number.isFinite(J)||!Number.isFinite(ue)){P({type:"response",ok:!1,error:"Invalid text edit point"});return}let le=y.kind==="hit-test-at-point"?at(e.document,J,ue,t.getCurrentDocument?.()??null):Ns(e.document,J,ue,t.getCurrentDocument?.()??null,t.getDocumentEntry);if(!le){P({type:"response",ok:!1,error:y.kind==="hit-test-at-point"?"No editable element at point":"No editable text element at point"});return}let de=y.kind==="start-text-edit-at-point"?le:null,ce=y.kind==="hit-test-at-point"?le:de.element,be=y.payload.detailLevel??"full",Se=be==="full"?ge(e.document,ce,t.getCurrentDocument?.()??null):Dt(e.document,ce,t.getCurrentDocument?.()??null),Ee=de&&typeof de.textSegmentIndex=="number"?{...Se,textSegmentIndex:de.textSegmentIndex}:Se,Ke=ve(ce,Ee,t.getDocumentEntry,be,void 0,"full",t.getCurrentDocument?.()??null);if(y.kind==="hit-test-at-point"){P({type:"response",ok:!0,result:Ke});return}A(),n=bc(e,ce,Ee,N=>{K.postMessage(ot({type:"event",...N},{sessionKey:W}),oe)},{...de?.textNode?{textNode:de.textNode}:{},onCommitSnapshot:N=>{r=N}}),P({type:"response",ok:!0,result:{ref:Ee}})}catch(J){P({type:"response",ok:!1,error:J instanceof Error?J.message:"Failed to start text edit"})}};return e.addEventListener("message",L),e.addEventListener(ln,V),e.addEventListener(dn,ie),O(),()=>{A(),H(),a=null,U(),e.removeEventListener("message",L),e.removeEventListener(ln,V),e.removeEventListener(dn,ie)}}function ts(e,t){let n=e.document,r=n.head??n.documentElement;if(typeof r?.appendChild!="function")return null;let i=Mr,o="data-vcp-designer-selection-visual",s=n.createElement("style");s.setAttribute("data-vcp-designer-hover-visual-style","true"),s.textContent=`
1
+ function Wn(e){let t=new Map,n=[],r=new Map,i=[],o=e.pageComposition.status==="supported"?e.pageComposition.placementUnitKeys:[],s=new Map(o.map((l,h)=>[l,h])),c=e.pageComposition.status==="supported"?{status:"supported",containerKey:e.pageComposition.containerKey,hasBusinessMembers:e.pageComposition.hasBusinessMembers,placementUnitKeys:e.pageComposition.placementUnitKeys,placements:e.pageComposition.placements.map(l=>({placementKey:l.placementKey,placementUnitKey:l.placementUnitKey,relation:l.relation}))}:{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics},u=e.entries.flatMap((l,h)=>l.dynamicDataSummary?[[h,l.dynamicDataSummary]]:[]),a=l=>{let h=t.get(l);if(typeof h=="number")return h;let p=n.length;return n.push(l),t.set(l,p),p},d=l=>{let h=null;for(let p of Oo(l)){let R=`${h??"root"}\0${p}`,C=r.get(R);if(typeof C=="number"){h=C;continue}let x=i.length;i.push([h,a(p)]),r.set(R,x),h=x}if(h===null)throw new Error("Document key must not be empty");return h};return{encoding:"segment-trie-v1",siteId:e.siteId,snapshotId:e.snapshotId,composition:{...e.composition},routeId:e.composition.routeId,version:e.version,pageComposition:c,tokens:n,nodes:i,entries:e.entries.map(l=>{let h=l.pageCompositionUnitKey?s.get(l.pageCompositionUnitKey)??-1:-1;if(l.pageCompositionUnitKey&&h<0)throw new Error(`Render entry ${l.key} references unknown page composition unit ${l.pageCompositionUnitKey}`);return[d(l.key),No(l.operationSummary),...h>=0?[h]:[]]}),...e.entries.every(l=>l.parentKey!==void 0)?{entryParentNodeIds:e.entries.map(l=>l.parentKey===null?null:d(l.parentKey))}:{},...u.length>0?{dynamicDataSummaries:u}:{}}}function jn(e){if(!ko(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[u,a]=c,d=e.tokens[a];if(typeof d!="string")throw new Error(`Missing compact document token ${a}`);let l=`${u===null?"":i(u)}${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,u,a]=o,d=a===void 0?void 0:n[a];if(a!==void 0&&!d)throw new Error(`Missing page composition unit ${a}`);let l=e.entryParentNodeIds?.[s];return{key:i(c),...e.entryParentNodeIds?{parentKey:l===null?null:i(l)}:{},...d?{pageCompositionUnitKey:d}:{},operationSummary:wo(u),...r.get(s)?{dynamicDataSummary:r.get(s)}:{}}})}}function No(e){return(e.canUpdateText?1:0)|(e.canInsertChild?2:0)|(e.canMove?4:0)|(e.canRemove?8:0)}function wo(e){return{canUpdateText:(e&1)!==0,canInsertChild:(e&2)!==0,canMove:(e&4)!==0,canRemove:(e&8)!==0}}function ko(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"||!Do(t.composition)||typeof t.routeId!="string"||t.routeId!==t.composition.routeId||!Number.isInteger(t.version)||t.version<0||!jt(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||we(o[0])&&o[0]<s)&&we(o[1])&&o[1]<t.tokens.length)||!t.entries.every(o=>Array.isArray(o)&&(o.length===2||o.length===3)&&we(o[0])&&o[0]<n.length&&we(o[1])&&o[1]<=15&&(o.length===2||we(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||we(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&&we(o[0])&&o[0]<t.entries.length&&jt(o[1]))}function jt(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Do(e){return!jt(e)||typeof e.routeId!="string"?!1:e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string"}function we(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0}function Oo(e){if(!e)return[];let t=[],n=0,r=Un(e,n);if(r<0)return t.push(e),t;for(t.push(e.slice(0,r)),n=r;n<e.length;){if(r=Un(e,n+(e.startsWith("::",n)?2:1)),r<0){t.push(e.slice(n));break}t.push(e.slice(n,r)),n=r}return t}function Un(e,t){let n=e.indexOf("/",t),r=e.indexOf("::",t);return n<0?r:r<0?n:Math.min(n,r)}var Je="SITE_EDIT_COMPOSITION_SESSION_MISMATCH",$e="SITE_EDIT_COMPOSITION_SESSION_REQUIRED",nu="SITE_EDIT_COMPOSITION_REINITIALIZE_REQUIRED",ae=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(G(t)&&G(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!G(t)||typeof t.type!="string"?!1:t.type==="request"?Bo(t.payload,n):t.type==="response"||t.type==="error"?G(t.payload)&&typeof t.payload.id=="string":t.type==="event"?G(t.payload)&&G(t.payload.event):t.type==="auth"?G(t.payload)&&typeof t.payload.key=="string":t.type==="auth-ok"&&G(t.payload)&&t.payload.ok===!0}},yt=class{constructor(t){this.options=t,this.session={subscribedCompositionKeys:new Set},this.messageQueue=new Qt,this.eventDispatcher=new Jt(n=>{this.sendJson(n)}),this.unsubscribe=t.engine.subscribe(n=>{this.handleEngineEvent(n)}),t.socket.onmessage=n=>{try{this.messageQueue.enqueue(()=>this.handleRawMessage(n.data))}catch(r){this.sendJson({type:"error",payload:{id:"unknown",kind:"get-document",message:r instanceof Error?r.message:"Bridge queue overflow"}}),t.socket.close(1013,"bridge busy")}},t.socket.onclose=()=>{this.unsubscribe(),this.session.activeComposition=void 0,this.session.subscribedCompositionKeys.clear()}}async handleMessage(t){try{let n=t;if(n.type!=="request")return;let r=n.payload,{id:i}=r;switch(r.kind){case"initialize-session":{let o=Gt(r),s=await this.resolve(o),c=await this.options.engine.initializeSession({composition:s.context,...r.mutationContext?{mutationContext:r.mutationContext}:{}});this.activateSession(s.context),this.sendJson({type:"response",payload:{id:i,kind:r.kind,result:_e({...c,data:{...c.data,document:Yn(c.data.document)}},s.context)}});return}case"get-document":{let o=await this.resolveWireContext(r),s=await this.options.engine.getDocument(o);this.sendResult(i,r.kind,Ho(s,o));return}case"get-history-status":{let o=await this.resolveWireContext(r),s=await this.options.engine.getHistoryStatus(o);this.sendResult(i,r.kind,_e(s,o));return}case"get-style-context":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getStyleContext(o),o));return}case"get-object-edit-context":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getObjectEditContext(r.key,o,r.selectionRef),o));return}case"get-class-name-source":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getClassNameSource(r.key,o),o));return}case"get-source-tree":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getSourceTree(o),o));return}case"get-source-file":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,_e(await this.options.engine.getSourceFile({path:r.path,composition:o}),o));return}case"resolve-source-location":{let o=await this.resolveWireContext(r),s=_e(await this.options.engine.resolveSourceLocation({key:r.key,composition:o}),o);this.sendResult(i,r.kind,s);return}case"execute":{let o=await this.resolveOperationWireContext(r.request),s=await this.resolveWireContext(r);if(ke(o)!==ke(s))throw new De(Je,"The execute request composition does not match its operation composition.");let c=await this.normalizeOperationRequest(r.request,o);await this.handleBufferedOperation(i,r.kind,()=>this.options.engine.execute(c));return}case"undo":case"redo":{let o=await this.resolveWireContext(r);await this.handleBufferedOperation(i,r.kind,()=>r.kind==="undo"?this.options.engine.undo(o):this.options.engine.redo(o));return}}}catch(n){let r=ae.extractRequestInfo(t);this.sendJson({type:"error",payload:{...r,message:Lt(n),code:Xt(n)}})}}async resolve(t){return this.options.engine.resolveComposition(t)}async resolveAndAssert(t){let n=await this.resolve(t),r=this.session.activeComposition;if(!r)throw new De($e,"Initialize a composition session before issuing this request.");if(ke(r)!==ke(n.context))throw new De(Je,"The request composition does not match the active socket session.");return n.context}async resolveWireContext(t){let n=Gt(t);return this.resolveAndAssert(n)}async resolveOperationWireContext(t){let n=qo(t);return this.resolveAndAssert(n)}activateSession(t){this.session.activeComposition=t,this.session.subscribedCompositionKeys.clear(),this.session.subscribedCompositionKeys.add(ke(t))}async normalizeOperationRequest(t,n){let r={...t,composition:Gn(n)};if(r.target.kind==="route"){let i=r.target,o=Gt(i),s=await this.resolveAndAssert(o);r.target={...i,composition:Gn(s)}}return r}handleEngineEvent(t){let n=t?.composition;if(!Vo(n))return;let r=ke(n);this.session.subscribedCompositionKeys.has(r)&&(this.eventDispatcher.push(t),t.type==="site-edit.graph.invalidated"&&r===Ko(this.session)&&(this.session.activeComposition=void 0,this.session.subscribedCompositionKeys.delete(r)))}sendResult(t,n,r){this.sendJson({type:"response",payload:{id:t,kind:n,result:r}})}async handleRawMessage(t){try{await this.handleMessage(ae.parseMessage(t,{validateOperationRequest:this.options.validateOperationRequest}))}catch(n){let r=zo(t);this.sendJson({type:"error",payload:{...r,message:Lt(n),code:Xt(n)}})}}sendJson(t){this.options.socket.send(ae.stringifyMessage(t))}async handleBufferedOperation(t,n,r){this.eventDispatcher.beginBuffering();try{let i=await r();this.sendResult(t,n,i)}catch(i){this.sendJson({type:"error",payload:{id:t,kind:n,message:Lt(i),code:Xt(i)}})}finally{this.eventDispatcher.flush()}}},De=class extends Error{constructor(t,n){super(n),this.code=t,this.name="BridgeProtocolError"}},Jt=class{constructor(t){this.send=t,this.bufferedEvents=null}push(t){let n={type:"event",payload:{event:t}};if(this.bufferedEvents){this.bufferedEvents.push(n);return}this.send(n)}beginBuffering(){this.bufferedEvents=[]}flush(){let t=this.bufferedEvents??[];this.bufferedEvents=null,t.forEach(n=>this.send(n))}},Qt=class{constructor(t=64){this.maxQueued=t,this.queue=Promise.resolve(),this.queued=0}enqueue(t){if(this.queued>=this.maxQueued)throw new Error("Bridge request queue is full");this.queued+=1;let n=async()=>{this.queued-=1,await t()},r=this.queue.then(n,n);return this.queue=r.then(()=>{},()=>{}),r}};function Bo(e,t){if(!G(e)||typeof e.id!="string"||!ae.isRequestKind(e.kind))return!1;let n=Qe(e.composition);switch(e.kind){case"initialize-session":return n&&(e.mutationContext===void 0||Yt(e.mutationContext));case"get-document":case"get-style-context":return n;case"get-object-edit-context":return typeof e.key=="string"&&n&&Mo(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&&Fo(e.request)&&(e.request.mutationContext===void 0||Yt(e.request.mutationContext))&&(t.validateOperationRequest?.(e.request)??!0);case"undo":case"redo":return n&&e.mutationContext===void 0||n&&Yt(e.mutationContext)}}function Mo(e){if(e===void 0)return!0;if(!G(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 Fo(e){return G(e)&&typeof e.id=="string"&&typeof e.siteId=="string"&&typeof e.baseSnapshotId=="string"&&Qe(e.composition)&&typeof e.kind=="string"&&G(e.target)&&(e.target.kind!=="route"||Qe(e.target.composition))&&typeof e.documentVersion=="number"&&Number.isInteger(e.documentVersion)&&e.documentVersion>=0&&G(e.params)}function Qe(e){return G(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 Vo(e){return G(e)&&typeof e.routeId=="string"&&(e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string")}function Gt(e){if(Qe(e.composition))return e.composition;throw new De($e,"A composition selector is required for this request.")}function qo(e){if(G(e)&&Qe(e.composition))return e.composition;throw new De($e,"A composition selector is required for execute.")}function Gn(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function Ko(e){return e.activeComposition?ke(e.activeComposition):null}function ke(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function _e(e,t){return G(e)&&e.ok===!0?{...e,composition:t}:e}function Ho(e,t){return!G(e)||e.ok!==!0?e:{...e,...t?{composition:t}:{},data:Yn(e.data)}}function Yn(e){let t=e;return Wn(t.routeId?t:{...t,routeId:t.composition.routeId})}function G(e){return typeof e=="object"&&e!==null}function Yt(e){return G(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}function Xt(e){if(!(!G(e)||typeof e.code!="string"||e.code.length===0))return e.code}function Lt(e){return e instanceof Error||G(e)&&typeof e.message=="string"&&e.message.length>0?e.message:"Unknown websocket operation failure"}function zo(e){try{return ae.extractRequestInfo(JSON.parse(e))}catch{return{id:"unknown",kind:"get-document"}}}var $o="vcp:designer:trace",Uo="designer_trace",Xn="__VCP_DESIGNER_TRACE__";var Wo=/(authorization|cookie|token|secret|providerTrace|headers?|sourceCode|rawSource|fullSource)/i;function jo(e=globalThis){let t=e;try{if(t.localStorage?.getItem($o)==="1")return!0}catch{}try{let n=t.location?.search??"";return new URLSearchParams(n).get(Uo)==="1"}catch{return!1}}function Ae(e,t={},n=globalThis){if(!jo(n))return;let r={type:e,timestamp:Date.now(),payload:Go(t)},i=n,o=i[Xn]??[];o.push(r),o.length>1e3&&o.splice(0,o.length-1e3),i[Xn]=o;let s=n.console?.debug;r.payload.diagnosticOnly!==!0&&typeof s=="function"&&s.call(n.console,"[designer-trace]",r)}function Go(e){return Zt(e,0)}function Zt(e,t){if(t>4)return"[truncated]";if(Array.isArray(e))return e.map(r=>Zt(r,t+1));if(!e||typeof e!="object")return e;let n={};for(let[r,i]of Object.entries(e)){if(Wo.test(r)){n[r]="[redacted]";continue}n[r]=Zt(i,t+1)}return n}var St=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===en&&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 u=Ze(c,"WebSocket failed");this.socket=null,this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("failed",u.message),n(u);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,u)=>{this.cleanupSocket(r,c,u)};r.onopen=()=>{if(!(this.socket!==r||this.connectAttempt!==i)){if(this.options.authKey){try{r.send(ae.stringifyMessage({type:"auth",payload:{key:this.options.authKey}}))}catch(c){s(Ze(c,"WebSocket auth failed"),"failed")}return}o()}},r.onerror=c=>{if(this.socket!==r)return;let u=Ze(c,"WebSocket failed");s(u,"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 u=this.intentionalClose,a=new Error(Jo(c,{intentional:u}));s(a,u?"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=Et(t),i={...t,composition:Pe(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 Pe(t)}request(t,n){let r=this.socket;if(!r||r.readyState!==en||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=ti(i,t,n);return Ae("bridge.request",{id:i,kind:t,routeId:typeof n.routeId=="string"?n.routeId:null,key:typeof n.key=="string"?n.key:null,operationKind:Ln(n.request,"kind"),documentVersion:Ln(n.request,"documentVersion")}),new Promise((s,c)=>{let u=this.resolveRequestTimeoutMs(t),a=u>0?setTimeout(()=>{let d=this.pending.get(i);d&&(this.pending.delete(i),Ae("bridge.response",{id:i,kind:t,ok:!1,timedOut:!0}),d.reject(new Error(`Bridge request timed out after ${u}ms: ${t}`)))},u):null;a?.unref?.(),this.pending.set(i,{kind:t,timeout:a,resolve:d=>s(d),reject:c});try{r.send(ae.stringifyMessage(o))}catch(d){let l=Ze(d,"WebSocket send failed");this.clearPendingRequest(i),c(l),this.cleanupSocket(r,l,"failed")}})}handleAuthHandshakeMessage(t,n,r,i){try{if(ae.parseMessage(t).type==="auth-ok"){i();return}throw new Error("Bridge authentication failed")}catch(o){let s=Ze(o,"Bridge authentication failed");this.connectAttempt===r&&this.cleanupSocket(n,s,"failed")}}handleMessage(t){let n=ae.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"){Ae("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}Ae("bridge.response",{id:n.payload.id,kind:r.kind,ok:!0,resultVersion:Qo(n.payload.result)}),r.resolve(r.kind==="get-document"?{...n.payload.result,data:er(n.payload.result.data,n.payload.result.composition)}:r.kind==="initialize-session"?Zo(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):Lo[t]??Xo}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===Yo||t.readyState===en)&&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)}},Yo=0,en=1,Xo=15e3,Lo={"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 Jo(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 Ln(e,t){if(!e||typeof e!="object")return null;let r=e[t];return typeof r=="string"||typeof r=="number"?r:null}function Qo(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 Zn(e){let t="composition"in e?Pe(e.composition):Pe({routeId:e.routeId});return new tn({composition:t,initialDocument:e.initialDocument,client:e.client})}var tn=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=Pe(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=!Jn(t.initialDocument),this.activeCompositionContext=this.sessionInitialized?{...t.initialDocument.composition}:null}async getDocument(t){this.requireBoundComposition(t);let n=Jn(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=et(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(u=>(this.styleGeneration===s&&this.styleContextCache.set(r,{generation:s,value:u.data}),u)).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 u=this.objectGeneration,a=this.params.client.getObjectEditContext(t,i,...r?[r]:[]).then(d=>(this.objectGeneration===u&&this.editContextCache.set(o,d.data),d)).finally(()=>{this.editContextInFlight.get(o)===a&&this.editContextInFlight.delete(o)});return this.editContextInFlight.set(o,a),a}async getClassNameSource(t,n){let r=this.requireBoundComposition(n),i=this.objectCacheKey(t,r),o=this.classNameSourceCache.get(i);if(o)return o;let s=this.classNameSourceInFlight.get(i);if(s)return s;let c=this.objectGeneration,u=this.params.client.getClassNameSource(t,r).then(a=>(this.objectGeneration===c&&this.classNameSourceCache.set(i,a),a)).finally(()=>{this.classNameSourceInFlight.get(i)===u&&this.classNameSourceInFlight.delete(i)});return this.classNameSourceInFlight.set(i,u),u}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=Et(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 Ae("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=et(this.composition),i=this.refreshInFlight;if(i?.compositionKey===r){Ae("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}Ae("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`${et(n)}\0${t}\0${ei(r)}`}rememberServerConfirmedComposition(t){!t||typeof t.routeId!="string"||(this.serverConfirmedComposition={...t})}isAcceptedComposition(t){if(et(t)===et(this.composition))return!0;let n=this.serverConfirmedComposition;return n!==null&&bt(n)===bt(Qn(t))}requireBoundComposition(t){let n=t===void 0?this.composition:Pe(t);if(!this.isAcceptedComposition(n))throw new Error(`Site edit bridge is bound to composition ${JSON.stringify(this.composition)}, received ${JSON.stringify(n)}`);return Pe(n)}isActiveComposition(t){let n=this.activeCompositionContext??Qn(this.composition);return bt(t)===bt(n)}};function Jn(e){return e.version===0&&e.entries.length===0}function Zo(e){let t=e;return{...t,data:{...t.data,document:er(t.data.document,t.composition)}}}function er(e,t){let n=e,r=jn(n.routeId?n:{...n,routeId:t?.routeId??n.composition?.routeId});return t?{...r,composition:t}:r}function Pe(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 et(e){return JSON.stringify([e.routeId,e.templateId??null])}function ei(e){return e?JSON.stringify([e.key,e.instanceIndex??null,e.instanceCount??null]):""}function bt(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function Qn(e){return{routeId:e.routeId,...e.templateId?{effectiveTemplateId:e.templateId}:{}}}function Et(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 ti(e,t,n){let r=Pe(t==="execute"?Et(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:Et(n.request)??r}}}}}function se(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}var ni={allowFullScreen:"allowfullscreen",acceptCharset:"accept-charset",autoComplete:"autocomplete",autoFocus:"autofocus",autoPlay:"autoplay",cellPadding:"cellpadding",cellSpacing:"cellspacing",charSet:"charset",colSpan:"colspan",crossOrigin:"crossorigin",dateTime:"datetime",encType:"enctype",formAction:"formaction",formEncType:"formenctype",formMethod:"formmethod",formNoValidate:"formnovalidate",formTarget:"formtarget",hrefLang:"hreflang",htmlFor:"for",httpEquiv:"http-equiv",inputMode:"inputmode",itemID:"itemid",itemProp:"itemprop",itemRef:"itemref",itemScope:"itemscope",itemType:"itemtype",keyParams:"keyparams",keyType:"keytype",noModule:"nomodule",playsInline:"playsinline",readOnly:"readonly",rowSpan:"rowspan",srcDoc:"srcdoc",srcLang:"srclang",srcSet:"srcset",tabIndex:"tabindex",useMap:"usemap"},tr=new Set(["allowFullScreen","async","autoFocus","autoPlay","controls","default","defer","disabled","formNoValidate","hidden","inert","itemScope","loop","multiple","muted","noModule","noValidate","open","playsInline","readOnly","required","reversed","scoped","seamless"]),nr=new Set(["checked","selected","value"]),ri=new Set(["children","key","ref","dangerouslysetinnerhtml"]),oi=new Set(["data-designer-hover-outline","data-designer-select-outline"]),ii=/^[A-Za-z_$][A-Za-z0-9_$:-]*$/u,rr=new Set(["accept","alt","action","cite","color","content","coords","crossOrigin","dateTime","formAction","formMethod","formTarget","headers","href","hrefLang","id","kind","label","lang","list","max","media","method","min","name","pattern","poster","property","referrerPolicy","rel","role","scope","slot","src","srcDoc","srcLang","srcSet","step","target","title","type","useMap","width","height"]);function si(e){if(!ai(e))return nn("Typed property changes are not previewable");if(e.element.kind!=="host")return nn(`The '${e.element.tagName}' component may transform its props before rendering`);let t={};for(let n of e.changes){let r=ci(n);if(!r)return nn(`The DOM result for '${n.name}' cannot be proven equivalent`);t[r.name]=r.value}return e.runtimeAttributes,{mode:"dom",patch:{attributes:t}}}function ci(e){if(!ir(e.name))return null;let t=e.name,n=or(t);if(!n||nr.has(t))return null;if(e.operation==="remove")return{name:n,value:null};let r=e.value;return t==="download"?li(n,r):tr.has(t)?ui(n,r):/^(aria|data)-[A-Za-z0-9_.:-]+$/u.test(t)?di(n,r):rr.has(t)?typeof r=="string"?{name:n,value:r}:typeof r=="number"&&Number.isFinite(r)?{name:n,value:String(r)}:r===null?{name:n,value:null}:null:null}function or(e){return ir(e)&&(e==="download"||nr.has(e)||tr.has(e)||rr.has(e)||/^(aria|data)-[A-Za-z0-9_.:-]+$/u.test(e))?ni[e]??e:null}function ai(e){if(e.scope!=="selection"&&e.scope!=="template"||!Array.isArray(e.changes)||e.changes.length===0)return!1;let t=new Set;for(let n of e.changes){if(!n||typeof n!="object"||typeof n.name!="string"||n.name.length===0||n.operation!=="set"&&n.operation!=="remove"||t.has(n.name))return!1;t.add(n.name)}return!0}function ir(e){if(!ii.test(e))return!1;let t=e.toLowerCase();return ri.has(t)||t.startsWith("data-vcp-")||oi.has(t)||/^on[a-z]/iu.test(e)?!1:t!=="classname"&&t!=="class"&&t!=="style"}function ui(e,t){return t===null||t===!1?{name:e,value:null}:t===!0?{name:e,value:""}:null}function li(e,t){return t===null||t===!1?{name:e,value:null}:t===!0?{name:e,value:""}:typeof t=="string"?{name:e,value:t}:null}function di(e,t){return t===null?{name:e,value:null}:typeof t=="string"||typeof t=="boolean"||typeof t=="number"&&Number.isFinite(t)?{name:e,value:String(t)}:null}function nn(e){return{mode:"after-render",reason:e}}var sr="vcp-window-message",cr=1;function ar(e){return{source:sr,version:cr,namespace:e.namespace,channel:e.channel,...e.sessionKey?{sessionKey:e.sessionKey}:{},body:e.body}}function ur(e){try{return v(e)?Z(e,"source",sr)&&Z(e,"version",cr)&&D(e,"namespace")&&D(e,"channel")&&me(e,"body")&&(!Me(e,"sessionKey")||D(e,"sessionKey")):!1}catch{return!1}}var vt="site-edit",lr="frame-runtime",dr="frame-announce",on=1,tt=1,nt=1,pr=24;function ot(e,t={}){return ar({namespace:vt,channel:lr,sessionKey:t.sessionKey,body:e})}function fr(){return ar({namespace:vt,channel:dr,body:{type:"announce"}})}function pu(e){try{return!ur(e)||e.namespace!==vt||e.channel!==dr?!1:v(e.body)&&Z(e.body,"type","announce")&&he(e.body,["type"])}catch{return!1}}function hr(e){try{return!ur(e)||e.namespace!==vt||e.channel!==lr?!1:Mi(e.body)}catch{return!1}}function Ce(e){return v(e)&&D(e,"routeId")&&Be(e,"templateId")&&he(e,["routeId","templateId"])}function It(e){return v(e)&&D(e,"routeId")&&Be(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 Me=(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 f(e,t){return Object.getOwnPropertyDescriptor(e,t)?.value}function Z(e,t,n){return me(e,t)&&f(e,t)===n}function D(e,t){return me(e,t)&&typeof f(e,t)=="string"}function Rt(e,t){return me(e,t)&&typeof f(e,t)=="boolean"}function F(e,t){let n=f(e,t);return me(e,t)&&typeof n=="number"&&Number.isFinite(n)}function mr(e,t){let n=f(e,t);return me(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>0}function Be(e,t){return!Me(e,t)||f(e,t)===void 0||D(e,t)}function Ue(e,t){return!Me(e,t)||f(e,t)===void 0||F(e,t)}function Oe(e,t){let n=f(e,t);return!Me(e,t)||n===void 0||me(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>=0}function Y(e,t){return!Me(e,t)||f(e,t)===void 0}function v(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function pi(e){return v(e)&&Reflect.ownKeys(e).length===0}function Ct(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 Ie(e){return v(e)&&D(e,"key")&&Oe(e,"instanceIndex")&&Oe(e,"instanceCount")&&Oe(e,"textSegmentIndex")}function fi(e){return v(e)&&D(e,"blockId")&&Oe(e,"blockIndex")&&Ie(f(e,"ref"))&&rt(f(e,"rect"))&&Rt(e,"targetIsSectionRoot")}function hi(e){if(!v(e))return!1;let t=f(e,"placement"),n=f(e,"boundary");return D(e,"anchorBlockId")&&Oe(e,"positionIndex")&&Ie(f(e,"anchorRef"))&&(t==="before"||t==="after")&&v(n)&&F(n,"top")&&F(n,"left")&&F(n,"width")}function rt(e){return v(e)&&["top","left","width","height"].every(t=>F(e,t))}function gr(e){if(!v(e))return!1;let t=f(e,"rect"),n=f(e,"layout"),r=v(n)?f(n,"containingBlock"):null,i=f(e,"scrollContext"),o=v(r)&&(Z(r,"kind","viewport")&&Reflect.ownKeys(r).length===1||Z(r,"kind","document")&&Reflect.ownKeys(r).length===1||Z(r,"kind","element")&&D(r,"runtimeNodeId"));return Z(e,"version",on)&&D(e,"runtimeNodeId")&&v(t)&&rt(f(t,"viewport"))&&rt(f(t,"document"))&&v(n)&&D(n,"position")&&D(n,"transform")&&o&&v(i)&&["scrollX","scrollY","viewportWidth","viewportHeight"].every(s=>F(i,s))&&me(i,"scrollContainers")&&mi(f(i,"scrollContainers"))}function mi(e){return Array.isArray(e)&&e.every(t=>v(t)&&D(t,"runtimeNodeId")&&F(t,"scrollLeft")&&F(t,"scrollTop"))}function rn(e){return v(e)&&(Y(e,"layoutSnapshot")||gr(f(e,"layoutSnapshot")))}function gi(e){return v(e)&&Ie(f(e,"ref"))&&me(e,"layoutSnapshot")&&gr(f(e,"layoutSnapshot"))&&(Y(e,"childBoxes")||Si(f(e,"childBoxes")))&&(Y(e,"childRects")||bi(f(e,"childRects")))&&(Y(e,"layout")||yi(f(e,"layout")))&&(Y(e,"spacing")||Ei(f(e,"spacing")))}function yi(e){if(!v(e))return!1;let t=f(e,"indicatorOrientation");return D(e,"display")&&(t==="horizontal"||t==="vertical")&&Be(e,"flexDirection")&&Be(e,"gridAutoFlow")}function bi(e){return Array.isArray(e)&&e.every(t=>rt(t))}function Si(e){return Array.isArray(e)&&e.every(t=>v(t)&&rt(f(t,"rect"))&&yr(f(t,"margin")))}function yr(e){return v(e)&&["marginTop","marginRight","marginBottom","marginLeft"].every(t=>F(e,t))}function Ei(e){return yr(e)&&["paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","columnGap","rowGap"].every(t=>F(e,t))}function Ii(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)||!gi(n.value))return!1}return!0}function Ci(e){return v(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&me(e,t)&&(typeof f(e,t)=="string"||f(e,t)===null))}function br(e){return e==null||typeof e=="string"||typeof e=="number"&&Number.isFinite(e)}function vi(e){return v(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&me(e,t)&&br(f(e,t)))}function Ri(e){if(!v(e))return!1;let t=f(e,"priority");return D(e,"property")&&me(e,"value")&&br(f(e,"value"))&&(!Me(e,"priority")||t===void 0||t==="important")}function xi(e){return v(e)?(Y(e,"attributes")||Ci(f(e,"attributes")))&&Be(e,"className")&&(Y(e,"style")||vi(f(e,"style")))&&(Y(e,"styleDeclarations")||Array.isArray(f(e,"styleDeclarations"))&&f(e,"styleDeclarations").every(Ri)):!1}function Ti(e){return v(e)&&F(e,"x")&&F(e,"y")&&(Y(e,"detailLevel")||Z(e,"detailLevel","summary")||Z(e,"detailLevel","full"))}function _i(e){return v(e)&&Ie(f(e,"ref"))}function Ai(e){if(!v(e)||!v(f(e,"variables")))return!1;let t=f(e,"variables");return Reflect.ownKeys(t).every(n=>typeof n=="string"&&D(t,n))?Y(e,"stylesheets")||Ct(f(e,"stylesheets")):!1}function Pi(e){if(!Z(e,"type","request")||!D(e,"id")||!D(e,"kind")||!me(e,"payload"))return!1;let t=f(e,"kind"),n=f(e,"payload");switch(t){case"hit-test-at-point":case"start-text-edit-at-point":return Ti(n);case"bridge-get-source-tree":return v(n)&&Ce(f(n,"composition"))&&he(n,["composition"]);case"get-scroll-metrics":case"clear-theme-override":return pi(n);case"bridge-get-history-status":case"bridge-undo":case"bridge-redo":return v(n)&&Ce(f(n,"composition"))&&he(n,["composition"]);case"bridge-get-source-file":return v(n)&&D(n,"path")&&Ce(f(n,"composition"))&&he(n,["path","composition"]);case"bridge-get-object-edit-context":return v(n)&&D(n,"key")&&Ce(f(n,"composition"))&&Bi(f(n,"selectionRef"))&&he(n,["key","composition","selectionRef"]);case"bridge-resolve-source-location":case"bridge-get-class-name-source":return v(n)&&D(n,"key")&&Ce(f(n,"composition"))&&he(n,["key","composition"]);case"scroll-to":return v(n)&&F(n,"x")&&F(n,"y");case"scroll-by":return v(n)&&F(n,"deltaX")&&F(n,"deltaY");case"set-interaction-mode":return v(n)&&Rt(n,"enabled");case"set-selection-visual":return v(n)&&Z(n,"version",tt)&&Ie(f(n,"ref"))&&Z(n,"visible",!0);case"clear-selection-visual":return v(n)&&Z(n,"version",tt);case"set-resize-visual":return v(n)&&Z(n,"version",nt)&&Ie(f(n,"ref"))&&Z(n,"visible",!0);case"clear-resize-visual":return v(n)&&Z(n,"version",nt);case"set-theme-override":return Ai(n);case"get-theme-variables":return v(n)&&Ct(f(n,"names"));case"compute-drop-target-at-point":return v(n)&&F(n,"x")&&F(n,"y")&&(Z(n,"dragKind","insert")||Z(n,"dragKind","move"))&&(Y(n,"movingRef")||Ie(f(n,"movingRef")));case"observe-node-bounds":case"clear-node-bounds-observer":return v(n)&&(Y(n,"ref")||Ie(f(n,"ref")));case"apply-node-patch":return v(n)&&Ie(f(n,"ref"))&&xi(f(n,"patch"))&&(Y(n,"preview")||v(f(n,"preview"))&&D(f(n,"preview"),"sessionId")&&Oe(f(n,"preview"),"revision")&&Me(f(n,"preview"),"revision"));case"get-hit-by-ref":case"get-path-by-ref":case"restore-text-edit":case"clear-text-edit-rollback":return _i(n);case"bridge-initialize-session":case"bridge-get-style-context":return v(n)&&Ce(f(n,"composition"))&&he(n,["composition"]);case"bridge-get-document":case"bridge-ensure-document-version":case"bridge-acknowledge-document-version":return v(n)&&Ce(f(n,"composition"))&&Ue(n,"minVersion")&&Ue(n,"version")&&he(n,["composition","minVersion","version"]);case"bridge-execute":{if(!v(n))return!1;let r=f(n,"request"),i=f(n,"composition"),o=v(r)?f(r,"composition"):null;return!Ce(i)||!v(r)||!Ce(o)?!1:se({routeId:i.routeId,...i.templateId?{effectiveTemplateId:i.templateId}:{}})===se({routeId:o.routeId,...o.templateId?{effectiveTemplateId:o.templateId}:{}})&&he(n,["composition","request"])}case"bridge-subscribe":case"bridge-unsubscribe":return v(n)&&D(n,"subscriptionId")&&Ce(f(n,"composition"))&&he(n,["subscriptionId","composition"]);default:return!1}}function Ni(e){return Z(e,"type","response")&&D(e,"id")&&Rt(e,"ok")&&(Y(e,"error")||D(e,"error"))}function wi(e){if(!v(e))return!1;let t=f(e,"type");if(typeof t!="string"||!It(f(e,"composition"))||!D(e,"siteId")||!D(e,"at"))return!1;switch(t){case"site-edit.document.changed":return D(e,"snapshotId")&&F(e,"version");case"site-edit.operation.planned":return D(e,"operationId")&&D(e,"baseSnapshotId")&&Ct(f(e,"changedFiles"));case"site-edit.operation.completed":return v(f(e,"result"));case"site-edit.operation.failed":return D(e,"requestId")&&v(f(e,"error"));case"site-edit.capability.changed":return Ct(f(e,"keys"));case"site-edit.graph.invalidated":return!0;case"site-edit.graph.ready":return F(e,"version");case"site-edit.graph.error":return D(e,"message");default:return!1}}var ki=new Set(["pointer-down","pointer-move","pointer-leave","pointer-up","pointer-cancel","pointer-click","pointer-double-click"]),Sr=new Set(["e","s","se"]);function Di(e,t){if(Y(e,"resizeSession"))return!0;let n=f(e,"resizeSession");if(!v(n))return!1;let r=f(e,"pointerId"),i=f(n,"pointerId"),o=f(n,"phase"),s=f(n,"edge"),c=t==="pointer-down"?"start":t==="pointer-up"?"commit":t==="pointer-cancel"?"cancel":null;return f(n,"version")===1&&o===c&&D(n,"sessionId")&&String(f(n,"sessionId")).length>0&&typeof r=="number"&&Number.isInteger(r)&&typeof i=="number"&&Number.isInteger(i)&&r===i&&typeof s=="string"&&Sr.has(s)&&f(e,"resizeEdge")===s&&Ie(f(n,"ref"))&&["startWidth","startHeight","width","height"].every(u=>F(n,u))}function Oi(e){if(!Z(e,"type","event")||!D(e,"kind")||!v(f(e,"payload")))return!1;let t=f(e,"kind"),n=f(e,"payload");switch(t){case"text-edit-commit":case"text-edit-cancel":case"text-edit-exit":case"text-edit-input":return Ie(f(n,"ref"))&&Be(n,"value")&&(Y(n,"hit")||rn(f(n,"hit")));case"node-bounds-change":return rn(f(n,"hit"));case"geometry-batch":{let r=f(n,"reason");return mr(n,"sequence")&&F(n,"sourceEventAt")&&F(n,"captureStartedAt")&&F(n,"capturedAt")&&(r==="scroll"||r==="resize"||r==="mutation")&&Ii(f(n,"snapshots"))}case"bridge-event":{let r=f(n,"event"),i=f(n,"composition");return!wi(r)||!It(i)?!1:D(n,"subscriptionId")&&se(i)===se(r.composition)}case"route-ready":return It(f(n,"composition"))&&D(n,"editEngineVersion")&&F(n,"sequence")&&F(n,"version");case"bridge-status":{let r=f(n,"state");return(r==="connecting"||r==="ready"||r==="reconnecting"||r==="failed"||r==="reload-required")&&It(f(n,"composition"))&&F(n,"sequence")&&Ue(n,"attempt")&&Ue(n,"retryInMs")&&Be(n,"messageKey")}case"scroll":{let r=f(n,"metrics");return v(r)&&["scrollX","scrollY","scrollWidth","scrollHeight","viewportWidth","viewportHeight"].every(i=>F(r,i))}default:return ki.has(t)&&F(n,"clientX")&&F(n,"clientY")&&Ue(n,"buttons")&&Ue(n,"pointerId")&&(Y(n,"hoverVisualOwned")||Rt(n,"hoverVisualOwned"))&&(Y(n,"resizeEdge")||D(n,"resizeEdge")&&Sr.has(f(n,"resizeEdge")))&&Di(n,t)&&(f(n,"hit")===null||rn(f(n,"hit")))&&(Y(n,"section")||f(n,"section")===null||fi(f(n,"section")))&&(Y(n,"sectionGap")||f(n,"sectionGap")===null||hi(f(n,"sectionGap")))}}function Bi(e){if(e===void 0)return!0;if(!v(e)||!he(e,["key","instanceIndex","instanceCount"])||!D(e,"key")||f(e,"key").length===0||!Oe(e,"instanceIndex")||!Y(e,"instanceCount")&&!mr(e,"instanceCount"))return!1;let t=f(e,"instanceIndex"),n=f(e,"instanceCount");return!(typeof t=="number"&&typeof n=="number"&&t>=n)}function Mi(e){if(!v(e))return!1;switch(f(e,"type")){case"request":return Pi(e);case"response":return Ni(e);case"event":return Oi(e);default:return!1}}var ln="vcp-site-edit:route-ready",dn="vcp-site-edit:bridge-status",Mr="SITE_EDIT_COMPOSITION_RENDER_MISMATCH",mn="#655ae8",Fi=80,Vi=120,qi=160,Ki=4,Fr="data-vcp-designer-hover-visual",Hi=1e3,zi="data-vcp-ui-component",Vr="data-vcp-theme-preview",Er="::repeat-item#",xt="components/ui",sn="data-site-block-id",cn="data-vcp-runtime-site-block-id",$i=new Set(["article","aside","div","footer","form","header","li","main","nav","ol","section","select","table","tbody","tfoot","thead","tr","ul"]),Ui=new Set(["a","button","em","h1","h2","h3","h4","h5","h6","label","p","small","span","strong"]);function Wi(e,t){let n=Array.from(e.querySelectorAll("[data-vcp-edit-key]"));for(let c of n)c.getAttribute(cn)==="true"&&(c.removeAttribute(sn),c.removeAttribute(cn));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 u=c.parentElement,a=!1;for(;u;){if(o.has(u)){a=!0;break}u=u.parentElement}if(a||c.getAttribute(sn)?.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 h=`vcp-runtime:${encodeURIComponent(d)}:${l}`;c.setAttribute(sn,h),c.setAttribute(cn,"true")}}function qr(e,t=""){let n=Ur(t),r=n&&(e===n||e.startsWith(`${n}/`))?e.slice(n.length)||"/":e,i=r.startsWith("/")?r:`/${r}`;return i==="/"?"/":i.replace(/\/+$/,"")}function ji(e){let t=qr(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 Ge(e){return JSON.stringify([e.routeId,e.templateId??null])}function Gi(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 Yi(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 Su(e=window,t={}){let n=Yi(e,{explicit_ws_url:t.explicit_ws_url,port:t.ws_port,path:t.wsPath||"/__vcp/site-edit/bridge"}),r=Xi({bridgeUrl:n,options:t}),i=e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(i?.started){if(Li(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,u=t.create_client??(m=>new St({url:m,authKey:t.bridge_session_key})),a=t.schedule_after_navigation??Is,d=()=>{o.retryTimer&&(e.clearTimeout(o.retryTimer),o.retryTimer=void 0)},l=()=>ji({pathname:e.location.pathname,search:e.location.search,basePath:t.basePath}),h=()=>Ge(l()),p=m=>{Cs(e,{...m,composition:m.state==="ready"?m.composition:{routeId:m.composition.routeId},sequence:m.sequence??o.routeSequence})},R=m=>{o.currentDocument=m,o.currentEntriesByKey=new Map((m?.entries??[]).map(I=>[I.key,I])),Wi(e.document,!!m)},C=()=>{o.unsubscribeConnectionStatus?.(),o.unsubscribeConnectionStatus=void 0,o.unsubscribeDocument?.(),o.unsubscribeDocument=void 0},x=(m,I)=>{if(o.disposed||I!==o.routeSequence)return!1;try{return m===h()}catch{return!1}},A=async(m,I,k)=>{let _=o.activeBridge;if(!_)return null;let V=await _.getDocument(m);return x(I,k)&&R(V.data),V.data},O=()=>{C(),R(null);let m=o.activeBridge;o.activeBridge=null,m&&e.__VCP_SITE_EDIT__===m&&delete e.__VCP_SITE_EDIT__;let I=o.activeClient;o.activeClient=null,I?.disconnect()},H=m=>m===s.compositionKey&&!!o.activeBridge&&!!(o.currentDocument&&s.composition&&Rs(o.currentDocument,se(s.composition)))&&vs(o.activeClient),q=m=>Math.min(Hi*2**Math.max(0,m),8e3),E=(m,I,k,_)=>{if(o.disposed)return;d();let V=q(_);p({state:"reconnecting",composition:m,attempt:_,retryInMs:V,messageKey:"studio.status.previewBridgeConnecting"}),o.retryTimer=e.setTimeout(()=>{o.retryTimer=void 0,!(o.disposed||k!==o.routeSequence||!x(I,k))&&j(_+1).catch(ie=>{let L;try{L=h()}catch{return}if(I===L){if(We(ie)){p({state:"reload-required",composition:m,attempt:_,messageKey:"studio.errors.previewBridgeReloadRequired"});return}E(m,I,o.routeSequence,_+1)}})},V)},$=(m,I,k)=>{if(!x(I,k)||o.activeClient===null)return;let _=o.activeClient;C(),R(null);let V=o.activeBridge;o.activeBridge=null,V&&e.__VCP_SITE_EDIT__===V&&delete e.__VCP_SITE_EDIT__,o.activeClient=null,_.disconnect(),E(m,I,k,0)},re=(m,I,k,_)=>{if(!(!x(I,k)||o.activeClient===null)){if(We(_.message)){O(),d(),p({state:"reload-required",composition:m,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}$(m,I,k)}},U=m=>{let I;try{I=l()}catch{return}let k=Ge(I),_=o.routeSequence;if(!(!x(k,_)||o.activeClient===null)){if(We(m)){O(),d(),p({state:"reload-required",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(_s(m)){$(I,k,_);return}zr(m)&&re(I,k,_,{state:"failed",message:Ne(m,"Site edit bridge request failed")})}};o.cleanupFrameRuntime=ts(e,{getCurrentDocument:()=>o.currentDocument,getDocumentEntry:m=>o.currentEntriesByKey.get(m)??null,setCurrentDocument:R,onBridgeRequestError:m=>{U(m)}});let X=async()=>j(0),j=async m=>{if(o.disposed)return;let I=l(),k=Ge(I);if(H(k))return;let _=o.syncInFlight;if(_?.compositionKey===k)return _.promise;let V=o.routeSequence+1,ie=te(I,k,V,m);o.syncInFlight={compositionKey:k,sequence:V,promise:ie};try{await ie}finally{o.syncInFlight?.promise===ie&&(o.syncInFlight=null)}},te=async(m,I,k,_)=>{o.routeSequence=k,d(),O(),p({state:_>0?"reconnecting":"connecting",composition:m,attempt:_,messageKey:_>0?"studio.status.previewBridgeConnecting":"studio.status.previewLoading"});let V=u(n),ie=!1;o.activeClient=V,o.unsubscribeConnectionStatus=V.subscribeConnectionStatus?.(L=>{ie&&(L.state==="closed"||L.state==="failed")&&re(m,I,k,L)});try{if(await V.connect(),!x(I,k)){V.disconnect();return}let L=Zn({composition:m,client:V,initialDocument:es(m)});if(o.activeBridge=L,o.activeClient=V,o.unsubscribeDocument=L.subscribe(y=>{if(!(!s.composition||se(y.composition)!==se(s.composition))){if(y.type==="site-edit.snapshot.changed"){A(m,I,k).catch(()=>{});return}y.type==="site-edit.document.changed"&&o.currentDocument&&y.version>o.currentDocument.version?A(m,I,k).catch(()=>{}):y.type==="site-edit.graph.invalidated"&&(R(null),T())}}),c()&&(s.routeId=m.routeId,s.composition=void 0,s.compositionKey=I),t.launch_id){let y=new URL(n);y.protocol=y.protocol==="wss:"?"https:":"http:",y.pathname=y.pathname.replace(/\/bridge$/,"/health"),y.search="";let W=await e.fetch(y,{cache:"no-store"}),K=await W.json();if(!W.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 b=await L.initializeSession({composition:m}),S=b.data.document;if((m.templateId!==void 0?se(b.composition)!==I:b.composition.effectiveTemplateId!==void 0)||se(S.composition)!==se(b.composition))throw new Error(`${Mr}: initialize response does not match requested selector`);if(!x(I,k)){V.disconnect();return}R(S),c()&&(e.__VCP_SITE_EDIT__=L),ie=!0,c()&&(s.composition=b.composition),p({state:"ready",composition:b.composition,attempt:_,messageKey:"studio.status.previewReady"}),Gi(e,{documentVersion:S?.version??0,routeId:m.routeId,versions:t.runtime_versions}),S&&Hr(e,{composition:b.composition,editEngineVersion:t.runtime_versions?.engine??"unknown",sequence:k,version:S.version})}catch(L){if(!x(I,k)){V.disconnect();return}if(C(),o.activeClient===V&&(o.activeClient=null),o.activeBridge&&e.__VCP_SITE_EDIT__===o.activeBridge&&delete e.__VCP_SITE_EDIT__,o.activeBridge=null,V.disconnect(),R(null),!x(I,k))return;throw p({state:We(L)?"reload-required":"failed",composition:m,attempt:_,messageKey:We(L)?"studio.errors.previewBridgeReloadRequired":"studio.errors.previewBridgeDisconnected"}),L}},ne=m=>{if(o.disposed)return;let I;try{I=l()}catch{p({state:"failed",composition:{routeId:qr(e.location.pathname,t.basePath||"")},attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}let k=Ge(I);if(We(m)){d(),p({state:"reload-required",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(xs(m)){p({state:"failed",composition:I,attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}E(I,k,o.routeSequence,0)},T=()=>{o.syncScheduled||o.disposed||(o.syncScheduled=!0,a(()=>{o.syncScheduled=!1,!o.disposed&&X().catch(m=>ne(m))}))},w=()=>{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(),O(),c()&&delete e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__)};s={started:!0,signature:r,syncRoute:X,cleanup:w},e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__=s,o.unbindBootstrapLifecycle=Qi(e,w);let M=l();if(o.unbindRouteChange=Es(e,()=>{let m=l(),I=m.routeId===M.routeId&&m.templateId!==M.templateId;if(M=m,I){o.routeSequence+=1,O(),p({state:"connecting",composition:{routeId:m.routeId},attempt:0}),e.location.reload();return}T()},h),t.defer_initial_sync){T();return}await X()}function Xi(e){return{basePath:Ur(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:Ji(e.options.bridge_session_key)}}function Li(e,t){return!!e&&JSON.stringify(e)===JSON.stringify(t)}function Ji(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 Qi(e,t){let n=()=>t();return e.addEventListener("pagehide",n),e.addEventListener("beforeunload",n),Zi(t),()=>{e.removeEventListener("pagehide",n),e.removeEventListener("beforeunload",n)}}function Zi(e){let t=import.meta.hot,n=import.meta.webpackHot,r=t??n;!r||typeof r.dispose!="function"||r.dispose(()=>e())}function es(e){return{siteId:"preview",snapshotId:"preview",composition:{routeId:e.routeId},version:0,pageComposition:{status:"unsupported",reason:"ROUTE_RETURN_NOT_FOUND",diagnostics:[]},entries:[]}}function ts(e=window,t={}){let n=null,r=null,i=null,o=null,s=null,c=null,u=0,a=null,d=null,l=null,h=null,p=null,R=0,C=new Map,x=typeof t.expectedSessionKey=="string"&&t.expectedSessionKey.length>0?t.expectedSessionKey:null,A=()=>{n?.(),n=null,r=null},O=()=>{let b=e.parent;if(!(!b||b===e))try{b.postMessage(fr(),"*")}catch{}},H=()=>{i?.(),i=null,o?.(),o=null,s?.cleanup(),s=null,c?.cleanup(),c=null},q=(b,S,y)=>{let W=a?.sessionKey!==b||a?.sourceWindow!==S||a?.targetOrigin!==y;a={sessionKey:b,sourceWindow:S,targetOrigin:y},W&&(u=0,h=null,p=null)},E=(b,S)=>{let y=e.parent&&e.parent!==e?e.parent:null;return!y||S!==y?!1:!x||b===x},$=()=>{for(let b of C.values())b();C.clear()},re=b=>JSON.stringify([se(b.composition),b.editEngineVersion,b.sequence,b.version]),U=()=>!l||l.state==="ready",X=b=>JSON.stringify([b.state,se(b.composition),b.sequence,b.attempt??null,b.retryInMs??null,b.messageKey??null]),j=b=>{if(!U())return;let S=re(b);h!==S&&(o?.(),o=null,s?.cleanup(),s=null,c?.cleanup(),c=null,m({kind:"route-ready",payload:{composition:b.composition,editEngineVersion:b.editEngineVersion,sequence:b.sequence,version:b.version}}),a&&(h=S))},te=b=>{let S=X(b);p!==S&&(b.state!=="ready"&&(h=null,d=null),m({kind:"bridge-status",payload:b}),a&&(p=S))},ne=b=>{d=b,j(b)},T=b=>{l=b,te(b)},w=()=>{d&&j(d)},M=()=>{l&&te(l)},m=b=>{a&&a.sourceWindow.postMessage(ot({type:"event",...b},{sessionKey:a.sessionKey}),a.targetOrigin)},I=(b,S,y,W)=>{let K=t.getCurrentDocument?.()??null,oe=S.rawTarget&&typeof S.rawTarget.getAttribute=="function"?S.rawTarget:null,P=oe??Bs(e.document,S.clientX,S.clientY),J=oe?Bt(oe):null,ue=J?.getAttribute("data-vcp-edit-key")??"",le=S.resizeSession||S.skipHit?null:J&&bn(J,K,ue)?J:at(e.document,S.clientX,S.clientY,K),de=b==="pointer-move"&&Number(S.buttons??0)===0||b==="pointer-down"?"rect-only":"full",ce=le?ve(le,y==="full"?ge(e.document,le,K):Dt(e.document,le,K),t.getDocumentEntry,y,void 0,de,K):null,be=Ms(e.document,P,K),Se=Vs(e.document,S,K,t.getDocumentEntry);W&&ce&&(b==="pointer-click"||b==="pointer-double-click")&&(W.preventDefault(),W.stopPropagation(),typeof W.stopImmediatePropagation=="function"&&W.stopImmediatePropagation()),m({kind:b,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:ce,section:be,sectionGap:Se}})},k=b=>{m({kind:"pointer-leave",payload:{clientX:b?.clientX??0,clientY:b?.clientY??0,buttons:Number(b?.buttons??0),hit:null,section:null,sectionGap:null}})},_=(b,S,y)=>{H(),a={sessionKey:b,sourceWindow:S,targetOrigin:y};let W=xc(e.document),K=ns(e,t.getCurrentDocument),oe=null,P=null,J=null,ue=null,le=null,de=null,ce=!1,be=null,Se=!1,Ee=()=>{be=null,Se=!1},Ke=()=>{le!==null&&(e.clearTimeout(le),le=null)},N=()=>{J!==null&&(wt(e,J),J=null),oe=null},B=()=>{de!==null&&(e.clearTimeout(de),de=null)},Q=()=>{J=null;let g=oe;oe=null,g&&I("pointer-move",g,"summary")},xe=g=>{Ke(),P=g,oe=g,J===null&&(J=Nt(e,Q))},mt=g=>{P&&xe({...P,rawTarget:null,hoverVisualOwned:g&&!ce&&!Se?K?.updateAtPoint(P.clientX,P.clientY)??!1:!1})},pe=()=>mt(!0),Ao=()=>mt(!1),Le=e.document.documentElement,Ut=typeof Le.addEventListener=="function"?Le:e.document,kn=g=>{if(c?.update(g)){g.preventDefault();return}be?.pointerId===Number(g.pointerId)&&Number(g.buttons)===1?!Se&&Math.hypot(Number(g.clientX)-be.clientX,Number(g.clientY)-be.clientY)>=Ki&&(Se=!0,K?.clear()):be?.pointerId===Number(g.pointerId)&&Number(g.buttons)!==1&&Ee(),xe({clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),rawTarget:g.target,hoverVisualOwned:!ce&&!Se?K?.update(g.target)??!1:!1})},Dn=g=>{let z=hs(g.target),ze=z?c?.begin(g,z):null;ze&&(g.target?.setPointerCapture?.(g.pointerId),g.preventDefault(),g.stopPropagation()),!ze&&Number(g.buttons)===1?(be={clientX:Number(g.clientX),clientY:Number(g.clientY),pointerId:Number(g.pointerId)},Se=!1):Ee(),I("pointer-down",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),pointerId:Number(g.pointerId),rawTarget:g.target,resizeEdge:z,resizeSession:ze??void 0},"summary",g)},On=g=>{Ee();let z=c?.finish(g,"commit")??null;if(z){I("pointer-up",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),pointerId:Number(g.pointerId),resizeEdge:z.edge,resizeSession:z,skipHit:!0},"summary",g);return}I("pointer-up",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),rawTarget:g.target,skipHit:!0},"summary",g)},Bn=g=>{Ee();let z=c?.finish(g,"cancel")??null;I("pointer-cancel",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),pointerId:z?.pointerId,rawTarget:z?void 0:g.target,resizeEdge:z?.edge,resizeSession:z??void 0,skipHit:!0},"summary",g)},Mn=g=>{let z=c?.finish(g,"cancel")??null;z&&I("pointer-cancel",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),pointerId:z.pointerId,resizeEdge:z.edge,resizeSession:z,skipHit:!0},"summary",g)},Fn=g=>{I("pointer-click",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),rawTarget:g.target},"full",g)},Vn=g=>{I("pointer-double-click",{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons),rawTarget:g.target},"full",g)},Wt=g=>{if(g&&g.target!==Ut&&g.target!==Le)return;let z=g?{clientX:Number(g.clientX),clientY:Number(g.clientY),buttons:Number(g.buttons)}:P;if(g&&z&&z.clientX>0&&z.clientX<e.innerWidth&&z.clientY>0&&z.clientY<e.innerHeight){pe();return}if(N(),g){Ke(),le=e.setTimeout(()=>{le=null,P=null,B(),ce=!1,Ee(),k(z??void 0)},Vi);return}Ke(),B(),ce=!1,Ee(),P=null,K?.clear(),k(z??void 0)},qn=()=>Wt(),Po=()=>{ue=null,m({kind:"scroll",payload:{metrics:At(e)}}),Ao()},He=()=>{ce=!0,K?.clear(),B(),P&&(de=e.setTimeout(()=>{de=null,ce=!1,pe()},qi)),ue===null&&(ue=Nt(e,Po))};e.document.addEventListener("pointerdown",Dn,!0),e.document.addEventListener("pointermove",kn,{passive:!0,capture:!0}),e.document.addEventListener("pointerup",On,!0),e.document.addEventListener("pointercancel",Bn,!0),e.document.addEventListener("lostpointercapture",Mn,!0),e.document.addEventListener("click",Fn,!0),e.document.addEventListener("dblclick",Vn,!0),e.addEventListener("scroll",He,{passive:!0}),e.document.addEventListener("scroll",He,{capture:!0,passive:!0}),e.addEventListener("resize",pe,{passive:!0}),e.addEventListener("blur",qn),e.document.addEventListener("load",pe,!0),Ut.addEventListener("pointerleave",Wt,!0);let gt=e.visualViewport;gt?.addEventListener?.("resize",pe,{passive:!0}),gt?.addEventListener?.("scroll",He,{passive:!0});let Kn=e.ResizeObserver,Hn=typeof Kn=="function"?new Kn(pe):null;Hn?.observe(Le);let zn=e.MutationObserver,$n=typeof zn=="function"?new zn(g=>{g.some(ze=>ze.type!=="attributes"||ze.attributeName!==Fr)&&pe()}):null;$n?.observe(Le,{attributes:!0,childList:!0,subtree:!0}),i=()=>{N(),Ke(),B(),ce=!1,Ee(),P=null,K?.cleanup(),Hn?.disconnect(),$n?.disconnect(),ue!==null&&(wt(e,ue),ue=null),W(),e.document.removeEventListener("pointerdown",Dn,!0),e.document.removeEventListener("pointermove",kn,!0),e.document.removeEventListener("pointerup",On,!0),e.document.removeEventListener("pointercancel",Bn,!0),e.document.removeEventListener("lostpointercapture",Mn,!0),e.document.removeEventListener("click",Fn,!0),e.document.removeEventListener("dblclick",Vn,!0),e.removeEventListener("scroll",He),e.document.removeEventListener("scroll",He,!0),e.removeEventListener("resize",pe),e.removeEventListener("blur",qn),e.document.removeEventListener("load",pe,!0),Ut.removeEventListener("pointerleave",Wt,!0),gt?.removeEventListener?.("resize",pe),gt?.removeEventListener?.("scroll",He)}},V=b=>{let S=b.detail;S?.composition?.routeId&&ne(S)},ie=b=>{let S=b.detail;S?.state&&T(S)},L=b=>{let S=b.data;if(!hr(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"&&!xr(S.body))return;let y=S.body,W=typeof S.sessionKey=="string"?S.sessionKey:null,K=b.source,oe=b.origin;if(!W||!oe||!K||typeof K.postMessage!="function"||!E(W,K))return;if(a){if(a.sourceWindow!==K||a.targetOrigin!==oe)return;a.sessionKey!==W&&(A(),H(),$(),a=null)}q(W,K,oe),M(),w();let P=J=>{let ue=typeof y.id=="string"?y.id:"unknown";K.postMessage(ot({id:ue,...J},{sessionKey:W}),oe)};try{if(xr(y)){ys({message:y,sendEvent:N=>{K.postMessage(ot({type:"event",...N},{sessionKey:W}),oe)},sendResponse:P,subscriptions:C,getCurrentDocument:t.getCurrentDocument,setCurrentDocument:t.setCurrentDocument,onBridgeRequestError:t.onBridgeRequestError,nextRouteReadySequence:()=>R+=1,windowLike:e});return}if(y.kind==="apply-node-patch"){let N=ye(e.document,y.payload.ref,t.getCurrentDocument?.()??null);if(!N){P({type:"response",ok:!1,error:"No editable element found for patch target"});return}let B=y.payload.preview,Q=B?dc(B.sessionId,y.payload.ref):null;if(Q&&B){let xe=it.get(Q)??-1;if(B.revision<xe){P({type:"response",ok:!0,result:{applied:!1,appliedRevision:B.revision,stale:!0,latestRevision:xe}});return}if(B.revision===xe){P({type:"response",ok:!0,result:{applied:!1,appliedRevision:B.revision,duplicate:!0,latestRevision:xe}});return}}if(uc(N,y.payload.patch),Q&&B&&pc(Q,B.revision),B?.responseDetail==="none"){P({type:"response",ok:!0,result:{applied:!0,appliedRevision:B.revision}});return}P({type:"response",ok:!0,result:ve(N,ge(e.document,N,t.getCurrentDocument?.()??null),t.getDocumentEntry,B?.responseDetail??"full",void 0,"full",t.getCurrentDocument?.()??null)});return}if(y.kind==="get-hit-by-ref"){let N=ye(e.document,y.payload.ref,t.getCurrentDocument?.()??null);if(!N){P({type:"response",ok:!1,error:"No editable element found for hit target"});return}P({type:"response",ok:!0,result:ve(N,ge(e.document,N,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full",void 0,"full",t.getCurrentDocument?.()??null)});return}if(y.kind==="get-path-by-ref"){let N=ye(e.document,y.payload.ref,t.getCurrentDocument?.()??null);if(!N){P({type:"response",ok:!1,error:"No editable element found for path target"});return}let B=[],Q=N;for(;Q;)Q.getAttribute("data-vcp-edit-key")&&B.push(ve(Q,ge(e.document,Q,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full",void 0,"rect-only",t.getCurrentDocument?.()??null)),Q=Q.parentElement;P({type:"response",ok:!0,result:B.reverse()});return}if(y.kind==="restore-text-edit"||y.kind==="clear-text-edit-rollback"){let N=y.payload.ref;if(y.kind==="clear-text-edit-rollback"){r&&Tr(r.ref,N)&&(r=null),P({type:"response",ok:!0,result:{cleared:!0}});return}if(!r||!Tr(r.ref,N)){P({type:"response",ok:!1,error:"No pending text edit rollback snapshot"});return}let B=Ps(e.document,r,t.getCurrentDocument?.()??null);r=null,P(B?{type:"response",ok:!0,result:{restored:!0}}:{type:"response",ok:!1,error:"Failed to restore text edit snapshot"});return}if(y.kind==="get-scroll-metrics"){P({type:"response",ok:!0,result:At(e)});return}if(y.kind==="scroll-to"){let N=Number(y.payload.x),B=Number(y.payload.y);if(!Number.isFinite(N)||!Number.isFinite(B)){P({type:"response",ok:!1,error:"Invalid scroll position"});return}e.scrollTo({left:N,top:B}),P({type:"response",ok:!0,result:At(e)});return}if(y.kind==="scroll-by"){let N=Number(y.payload.deltaX),B=Number(y.payload.deltaY);if(!Number.isFinite(N)||!Number.isFinite(B)){P({type:"response",ok:!1,error:"Invalid scroll delta"});return}e.scrollBy({left:N,top:B}),P({type:"response",ok:!0,result:{...At(e),scrolled:!0}});return}if(y.kind==="set-interaction-mode"){y.payload.enabled?_(W,K,oe):a?.sourceWindow===K&&a.targetOrigin===oe&&a.sessionKey===W&&(A(),H()),P({type:"response",ok:!0,result:{interactionEnabled:y.payload.enabled}});return}if(y.kind==="set-selection-visual"){let N=!1;i?s?(N=s.setRef(y.payload.ref),N||(s.cleanup(),s=null)):(s=os(e,y.payload.ref,t.getCurrentDocument),N=!!s):(s?.cleanup(),s=null),P({type:"response",ok:!0,result:{version:tt,active:N}});return}if(y.kind==="clear-selection-visual"){s?.cleanup(),s=null,P({type:"response",ok:!0,result:{version:tt,active:!1}});return}if(y.kind==="set-resize-visual"){c?.cleanup(),c=null,i&&(c=ms(e,y.payload.ref,t.getCurrentDocument,({clientX:N,clientY:B,session:Q})=>{m({kind:"pointer-cancel",payload:{clientX:N,clientY:B,buttons:0,pointerId:Q.pointerId,resizeEdge:Q.edge,resizeSession:Q,hit:null,section:null,sectionGap:null}})})),P({type:"response",ok:!0,result:{version:nt,active:!!c}});return}if(y.kind==="clear-resize-visual"){c?.cleanup(),c=null,P({type:"response",ok:!0,result:{version:nt,active:!1}});return}if(y.kind==="set-theme-override"){fc(e.document,y.payload),P({type:"response",ok:!0,result:{themeOverrideApplied:!0}});return}if(y.kind==="clear-theme-override"){hc(e.document),P({type:"response",ok:!0,result:{themeOverrideCleared:!0}});return}if(y.kind==="get-theme-variables"){P({type:"response",ok:!0,result:mc(e.document,y.payload.names)});return}if(y.kind==="compute-drop-target-at-point"){let N=Number(y.payload?.x),B=Number(y.payload?.y);if(!Number.isFinite(N)||!Number.isFinite(B)){P({type:"response",ok:!1,error:"Invalid drop target point"});return}P({type:"response",ok:!0,result:rc(e,N,B,y.payload.dragKind,y.payload.movingRef,t.getCurrentDocument?.()??null,t.getDocumentEntry)});return}if(y.kind==="observe-node-bounds"){let N=y.payload.ref;if(!N){P({type:"response",ok:!1,error:"Missing bounds observer target"});return}let B=ye(e.document,N,t.getCurrentDocument?.()??null);if(!B){P({type:"response",ok:!1,error:"No editable element found for bounds observer target"});return}o?.();let Q=Js(e,B,N,t.getCurrentDocument,(xe,mt,pe)=>{u+=1,m({kind:"geometry-batch",payload:{sequence:u,sourceEventAt:pe.sourceEventAt,captureStartedAt:pe.captureStartedAt,capturedAt:pe.capturedAt,reason:xe,snapshots:[mt]}})});o=Q.cleanup,P({type:"response",ok:!0,result:{observing:!0}}),m({kind:"node-bounds-change",payload:{hit:Xs(ve(B,N,t.getDocumentEntry,"summary",e,"rect-only",t.getCurrentDocument?.()??null),Q.initialSnapshot)}});return}if(y.kind==="clear-node-bounds-observer"){o?.(),o=null,P({type:"response",ok:!0,result:{cleared:!0}});return}if(y.kind!=="hit-test-at-point"&&y.kind!=="start-text-edit-at-point")return;let J=Number(y.payload?.x),ue=Number(y.payload?.y);if(!Number.isFinite(J)||!Number.isFinite(ue)){P({type:"response",ok:!1,error:"Invalid text edit point"});return}let le=y.kind==="hit-test-at-point"?at(e.document,J,ue,t.getCurrentDocument?.()??null):ws(e.document,J,ue,t.getCurrentDocument?.()??null,t.getDocumentEntry);if(!le){P({type:"response",ok:!1,error:y.kind==="hit-test-at-point"?"No editable element at point":"No editable text element at point"});return}let de=y.kind==="start-text-edit-at-point"?le:null,ce=y.kind==="hit-test-at-point"?le:de.element,be=y.payload.detailLevel??"full",Se=be==="full"?ge(e.document,ce,t.getCurrentDocument?.()??null):Dt(e.document,ce,t.getCurrentDocument?.()??null),Ee=de&&typeof de.textSegmentIndex=="number"?{...Se,textSegmentIndex:de.textSegmentIndex}:Se,Ke=ve(ce,Ee,t.getDocumentEntry,be,void 0,"full",t.getCurrentDocument?.()??null);if(y.kind==="hit-test-at-point"){P({type:"response",ok:!0,result:Ke});return}A(),n=Sc(e,ce,Ee,N=>{K.postMessage(ot({type:"event",...N},{sessionKey:W}),oe)},{...de?.textNode?{textNode:de.textNode}:{},onCommitSnapshot:N=>{r=N}}),P({type:"response",ok:!0,result:{ref:Ee}})}catch(J){P({type:"response",ok:!1,error:J instanceof Error?J.message:"Failed to start text edit"})}};return e.addEventListener("message",L),e.addEventListener(ln,V),e.addEventListener(dn,ie),O(),()=>{A(),H(),a=null,$(),e.removeEventListener("message",L),e.removeEventListener(ln,V),e.removeEventListener(dn,ie)}}function ns(e,t){let n=e.document,r=n.head??n.documentElement;if(typeof r?.appendChild!="function")return null;let i=Fr,o="data-vcp-designer-selection-visual",s=n.createElement("style");s.setAttribute("data-vcp-designer-hover-visual-style","true"),s.textContent=`
2
2
  [${i}="true"]:not([${o}="true"]) {
3
- outline: 1px dashed #4f6bff !important;
3
+ outline: 1px dashed ${mn} !important;
4
4
  outline-offset: -1px !important;
5
- }`,r.appendChild(s);let c=null,u=()=>{c?.removeAttribute(i),c=null},a=h=>{let p=Bt(h),R=p?.getAttribute("data-vcp-edit-key")??"",C=p&&yn(p,t?.()??null,R)?p:null;return C===c||(u(),c=C,c?.setAttribute(i,"true")),!0};return{clear:u,cleanup:()=>{u(),s.remove()},update:a,updateAtPoint:(h,p)=>a(at(n,h,p,t?.()??null))}}var ns=0;function rs(e,t,n){let r=e.document,i=r.head??r.documentElement,o=++ns,s=`--vcp-designer-selection-target-${o}`,c=`--vcp-designer-spacing-gap-${o}`,u=e.CSS;if(typeof u?.supports!="function"||!u.supports(`anchor-name: ${s}`)||!u.supports(`position-anchor: ${s}`)||!u.supports("left: anchor(left)")||!u.supports("top: anchor(top)")||!u.supports("left: anchor(right)")||!u.supports("top: anchor(bottom)")||!u.supports("width: anchor-size(width)")||!u.supports("height: anchor-size(height)"))return null;let a=t,d=(_=a)=>ye(r,_,n?.()??null),l=d();if(!l||!l.isConnected||typeof i?.appendChild!="function"||typeof r.documentElement?.appendChild!="function")return null;let h="data-vcp-designer-selection-visual",p="data-vcp-designer-visual-layer",R="data-vcp-designer-resize-handle",C=r.createElement("style");C.setAttribute("data-vcp-designer-selection-visual-style","true"),C.textContent=`
5
+ }`,r.appendChild(s);let c=null,u=()=>{c?.removeAttribute(i),c=null},a=h=>{let p=Bt(h),R=p?.getAttribute("data-vcp-edit-key")??"",C=p&&bn(p,t?.()??null,R)?p:null;return C===c||(u(),c=C,c?.setAttribute(i,"true")),!0};return{clear:u,cleanup:()=>{u(),s.remove()},update:a,updateAtPoint:(h,p)=>a(at(n,h,p,t?.()??null))}}var rs=0;function os(e,t,n){let r=e.document,i=r.head??r.documentElement,o=++rs,s=`--vcp-designer-selection-target-${o}`,c=`--vcp-designer-spacing-gap-${o}`,u=e.CSS;if(typeof u?.supports!="function"||!u.supports(`anchor-name: ${s}`)||!u.supports(`position-anchor: ${s}`)||!u.supports("left: anchor(left)")||!u.supports("top: anchor(top)")||!u.supports("left: anchor(right)")||!u.supports("top: anchor(bottom)")||!u.supports("width: anchor-size(width)")||!u.supports("height: anchor-size(height)"))return null;let a=t,d=(_=a)=>ye(r,_,n?.()??null),l=d();if(!l||!l.isConnected||typeof i?.appendChild!="function"||typeof r.documentElement?.appendChild!="function")return null;let h="data-vcp-designer-selection-visual",p="data-vcp-designer-visual-layer",R="data-vcp-designer-resize-handle",C=r.createElement("style");C.setAttribute("data-vcp-designer-selection-visual-style","true"),C.textContent=`
6
6
  [${p}="true"] {
7
7
  position: fixed !important;
8
8
  position-anchor: ${s} !important;
@@ -11,12 +11,12 @@ function $n(e){let t=new Map,n=[],r=new Map,i=[],o=e.pageComposition.status==="s
11
11
  width: anchor-size(width) !important;
12
12
  height: anchor-size(height) !important;
13
13
  box-sizing: border-box !important;
14
- border: 2px solid #4f6bff !important;
14
+ border: 2px solid ${mn} !important;
15
15
  margin: 0 !important;
16
16
  padding: 0 !important;
17
17
  pointer-events: none !important;
18
18
  z-index: 2147483647 !important;
19
- }`,i.appendChild(C);let x=r.createElement("div");x.setAttribute(p,"true"),x.setAttribute("aria-hidden","true"),r.documentElement.appendChild(x);for(let _ of Array.from(r.documentElement.children))_.getAttribute(R)!==null&&(_.remove(),r.documentElement.appendChild(_));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(h,"true");let O=Pt(l,s),H=!1,q=null,E=[],U=[],re=()=>{q=null,U.forEach(_=>_()),U=is(A,E,l,s,c)},$=()=>{H||q!==null||(q=Nt(e,re))};re();let X=e.ResizeObserver,j=typeof X=="function"?new X($):null,te=[];function ne(){te.forEach(_=>j?.unobserve(_)),te=l?.isConnected?[l,...Array.from(l.children)].filter(_=>typeof _.getBoundingClientRect=="function"):[],te.forEach(_=>j?.observe(_))}ne();let T=_=>{_===l&&_?.isConnected||(l?.removeAttribute(h),O?.(),O=null,l=_,l?.isConnected?(l.setAttribute(h,"true"),O=Pt(l,s),x.style.removeProperty("display")):x.style.setProperty("display","none","important"),ne(),$())},w=()=>{H||T(d())},M=e.MutationObserver,m=typeof M=="function"?new M(_=>{let V=l;w();let ie=V!==l,L=_.some(b=>b.type!=="attributes"||b.attributeName!=="class"&&b.attributeName!=="style"?!1:b.target===l?!0:l?.contains?.(b.target)===!0&&b.target!==A&&b.target!==x);!ie&&!L||(ne(),$())}):null;return m?.observe(r.documentElement,{attributeFilter:["data-vcp-edit-key","class","style"],attributes:!0,childList:!0,subtree:!0}),e.addEventListener("resize",$),{setRef:_=>{if(H)return!1;if(os(a,_)&&l?.isConnected)return!0;let ie=d(_);return ie?.isConnected?(a=_,T(ie),!0):!1},cleanup:()=>{H||(H=!0,q!==null&&(wt(e,q),q=null),e.removeEventListener("resize",$),m?.disconnect(),j?.disconnect(),l?.removeAttribute(h),U.forEach(_=>_()),U=[],O?.(),O=null,l=null,x.remove(),A.remove(),C.remove())}}}function os(e,t){return e.key===t.key&&(e.instanceIndex??null)===(t.instanceIndex??null)&&(e.instanceCount??null)===(t.instanceCount??null)}function is(e,t,n,r,i){if(n?.isConnected===!0&&r)return ss(e,t,n,r,i);let o=n?.isConnected===!0?cs(n):[];return o.forEach((s,c)=>{let u=t[c]??e.ownerDocument.createElement("div");t[c]||(u.style.setProperty("position","fixed","important"),u.style.setProperty("pointer-events","none","important"),e.appendChild(u),t[c]=u),u.setAttribute("data-vcp-designer-spacing-kind",s.kind),u.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"),u.style.setProperty("display","block","important"),u.style.setProperty("left",`${s.left}px`,"important"),u.style.setProperty("top",`${s.top}px`,"important"),u.style.setProperty("width",`${s.width}px`,"important"),u.style.setProperty("height",`${s.height}px`,"important")}),t.slice(o.length).forEach(s=>{s.style.setProperty("display","none","important")}),[]}function ss(e,t,n,r,i){let o=Mt(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((a,d)=>{let l=Er(e,t,d);l.setAttribute("data-vcp-designer-spacing-kind",a.kind),l.style.setProperty("position-anchor",r,"important"),l.style.setProperty("left",a.left,"important"),l.style.setProperty("top",a.top,"important"),l.style.setProperty("width",a.width,"important"),l.style.setProperty("height",a.height,"important"),l.style.setProperty("background",a.kind==="margin"?"rgba(245, 158, 11, 0.24)":"rgba(56, 189, 248, 0.22)","important");let h=a.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",(h??0)>.5?"block":"none","important")});let c=us(n,o),u=c.map((a,d)=>{let l=Er(e,t,s.length+d),h=`${i}-${d}`,p=Pt(a.anchorElement,h);return l.setAttribute("data-vcp-designer-spacing-kind","gap"),l.style.setProperty("position-anchor",h,"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) + ${a.leftOffset}px)`,"important"),l.style.setProperty("top",`calc(anchor(top) + ${a.topOffset}px)`,"important"),l.style.setProperty("width",`${a.width}px`,"important"),l.style.setProperty("height",`${a.height}px`,"important"),p});return t.slice(s.length+c.length).forEach(a=>{a.style.setProperty("display","none","important")}),u}function Er(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 cs(e){let t=Ve(e.getBoundingClientRect()),n=Mt(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,u=s-n.paddingTop-n.paddingBottom,a=[{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&&a.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:u},{kind:"padding",left:r,top:i+s-n.paddingBottom,width:o,height:n.paddingBottom},{kind:"padding",left:r,top:c,width:n.paddingLeft,height:u}),a.push(...as(e,n)),a.filter(d=>d.width>.5&&d.height>.5)}function as(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=Sn(e);return[...Cr(r,"horizontal",t.columnGap),...Cr(r,"vertical",t.rowGap)]}function us(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:Ve(o.getBoundingClientRect()),margin:bn(r?.getComputedStyle(o))})).filter(({rect:o})=>o.width>0&&o.height>0);return[...Ir(i,"horizontal",t.columnGap),...Ir(i,"vertical",t.rowGap)].filter(o=>o.width>.5&&o.height>.5)}function Ir(e,t,n){if(n<=0||e.length<2)return[];let r=qr(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((c,u)=>t==="horizontal"?c.rect.left-u.rect.left:c.rect.top-u.rect.top);for(let c=0;c<s.length-1;c+=1){let u=s[c],a=s[c+1];if(t==="horizontal"){let d=u.rect.left+u.rect.width+u.margin.marginRight,l=a.rect.left-a.margin.marginLeft-d,h=Math.min(n,l);i.push({anchorElement:u.element,leftOffset:d+Math.max(0,(l-h)/2)-u.rect.left,topOffset:Math.max(u.rect.top,a.rect.top)-u.rect.top,width:h,height:Math.min(u.rect.top+u.rect.height,a.rect.top+a.rect.height)-Math.max(u.rect.top,a.rect.top)})}else{let d=u.rect.top+u.rect.height+u.margin.marginBottom,l=a.rect.top-a.margin.marginTop-d,h=Math.min(n,l);i.push({anchorElement:u.element,leftOffset:Math.max(u.rect.left,a.rect.left)-u.rect.left,topOffset:d+Math.max(0,(l-h)/2)-u.rect.top,width:Math.min(u.rect.left+u.rect.width,a.rect.left+a.rect.width)-Math.max(u.rect.left,a.rect.left),height:h})}}}),i}function Cr(e,t,n){if(n<=0||e.length<2)return[];let r=qr(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((c,u)=>t==="horizontal"?c.rect.left-u.rect.left:c.rect.top-u.rect.top);for(let c=0;c<s.length-1;c+=1){let u=s[c],a=s[c+1];if(t==="horizontal"){let d=u.rect.left+u.rect.width+u.margin.marginRight,l=a.rect.left-a.margin.marginLeft-d,h=Math.min(n,l);i.push({kind:"gap",left:d+Math.max(0,(l-h)/2),top:Math.max(u.rect.top,a.rect.top),width:h,height:Math.min(u.rect.top+u.rect.height,a.rect.top+a.rect.height)-Math.max(u.rect.top,a.rect.top)})}else{let d=u.rect.top+u.rect.height+u.margin.marginBottom,l=a.rect.top-a.margin.marginTop-d,h=Math.min(n,l);i.push({kind:"gap",left:Math.max(u.rect.left,a.rect.left),top:d+Math.max(0,(l-h)/2),width:Math.min(u.rect.left+u.rect.width,a.rect.left+a.rect.width)-Math.max(u.rect.left,a.rect.left),height:h})}}}),i}function qr(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=>ls(c.rect,i.rect,t)>.5));o?o.push(i):r.push([i])}),r}function ls(e,t,n){return n==="x"?Math.min(e.left+e.width,t.left+t.width)-Math.max(e.left,t.left):Math.min(e.top+e.height,t.top+t.height)-Math.max(e.top,t.top)}var Tt=new WeakMap;function Pt(e,t){let n=Tt.get(e);if(!n){let i=e.style.getPropertyValue("anchor-name"),o=e.ownerDocument?.defaultView?.getComputedStyle(e).getPropertyValue?.("anchor-name").trim()??"";n={names:new Set,originalValue:i,originalPriority:e.style.getPropertyPriority("anchor-name"),computedValue:o==="none"?"":o},Tt.set(e,n)}n.names.add(t),vr(e,n);let r=!1;return()=>{if(r)return;r=!0;let i=Tt.get(e);if(i){if(i.names.delete(t),i.names.size>0){vr(e,i);return}i.originalValue?e.style.setProperty("anchor-name",i.originalValue,i.originalPriority):e.style.removeProperty("anchor-name"),Tt.delete(e)}}}function vr(e,t){let n=t.originalValue.trim()||t.computedValue;e.style.setProperty("anchor-name",[...n?[n]:[],...t.names].join(", "),"important")}var ds=["e","se","s"],ps=0;function fs(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 hs(e,t,n,r){let i=++ps,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,u=c.head??c.documentElement,a=c.documentElement,d=()=>ye(c,t,n?.()??null),l=d();if(!l||!l.isConnected||typeof u?.appendChild!="function"||typeof a?.appendChild!="function")return null;let h="data-vcp-designer-resize-visual",p="data-vcp-designer-resize-handle",R=c.createElement("style");R.setAttribute("data-vcp-designer-resize-visual-style","true"),R.textContent=`
19
+ }`,i.appendChild(C);let x=r.createElement("div");x.setAttribute(p,"true"),x.setAttribute("aria-hidden","true"),r.documentElement.appendChild(x);for(let _ of Array.from(r.documentElement.children))_.getAttribute(R)!==null&&(_.remove(),r.documentElement.appendChild(_));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(h,"true");let O=Pt(l,s),H=!1,q=null,E=[],$=[],re=()=>{q=null,$.forEach(_=>_()),$=ss(A,E,l,s,c)},U=()=>{H||q!==null||(q=Nt(e,re))};re();let X=e.ResizeObserver,j=typeof X=="function"?new X(U):null,te=[];function ne(){te.forEach(_=>j?.unobserve(_)),te=l?.isConnected?[l,...Array.from(l.children)].filter(_=>typeof _.getBoundingClientRect=="function"):[],te.forEach(_=>j?.observe(_))}ne();let T=_=>{_===l&&_?.isConnected||(l?.removeAttribute(h),O?.(),O=null,l=_,l?.isConnected?(l.setAttribute(h,"true"),O=Pt(l,s),x.style.removeProperty("display")):x.style.setProperty("display","none","important"),ne(),U())},w=()=>{H||T(d())},M=e.MutationObserver,m=typeof M=="function"?new M(_=>{let V=l;w();let ie=V!==l,L=_.some(b=>b.type!=="attributes"||b.attributeName!=="class"&&b.attributeName!=="style"?!1:b.target===l?!0:l?.contains?.(b.target)===!0&&b.target!==A&&b.target!==x);!ie&&!L||(ne(),U())}):null;return m?.observe(r.documentElement,{attributeFilter:["data-vcp-edit-key","class","style"],attributes:!0,childList:!0,subtree:!0}),e.addEventListener("resize",U),{setRef:_=>{if(H)return!1;if(is(a,_)&&l?.isConnected)return!0;let ie=d(_);return ie?.isConnected?(a=_,T(ie),!0):!1},cleanup:()=>{H||(H=!0,q!==null&&(wt(e,q),q=null),e.removeEventListener("resize",U),m?.disconnect(),j?.disconnect(),l?.removeAttribute(h),$.forEach(_=>_()),$=[],O?.(),O=null,l=null,x.remove(),A.remove(),C.remove())}}}function is(e,t){return e.key===t.key&&(e.instanceIndex??null)===(t.instanceIndex??null)&&(e.instanceCount??null)===(t.instanceCount??null)}function ss(e,t,n,r,i){if(n?.isConnected===!0&&r)return cs(e,t,n,r,i);let o=n?.isConnected===!0?as(n):[];return o.forEach((s,c)=>{let u=t[c]??e.ownerDocument.createElement("div");t[c]||(u.style.setProperty("position","fixed","important"),u.style.setProperty("pointer-events","none","important"),e.appendChild(u),t[c]=u),u.setAttribute("data-vcp-designer-spacing-kind",s.kind),u.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"),u.style.setProperty("display","block","important"),u.style.setProperty("left",`${s.left}px`,"important"),u.style.setProperty("top",`${s.top}px`,"important"),u.style.setProperty("width",`${s.width}px`,"important"),u.style.setProperty("height",`${s.height}px`,"important")}),t.slice(o.length).forEach(s=>{s.style.setProperty("display","none","important")}),[]}function cs(e,t,n,r,i){let o=Mt(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((a,d)=>{let l=Ir(e,t,d);l.setAttribute("data-vcp-designer-spacing-kind",a.kind),l.style.setProperty("position-anchor",r,"important"),l.style.setProperty("left",a.left,"important"),l.style.setProperty("top",a.top,"important"),l.style.setProperty("width",a.width,"important"),l.style.setProperty("height",a.height,"important"),l.style.setProperty("background",a.kind==="margin"?"rgba(245, 158, 11, 0.24)":"rgba(56, 189, 248, 0.22)","important");let h=a.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",(h??0)>.5?"block":"none","important")});let c=ls(n,o),u=c.map((a,d)=>{let l=Ir(e,t,s.length+d),h=`${i}-${d}`,p=Pt(a.anchorElement,h);return l.setAttribute("data-vcp-designer-spacing-kind","gap"),l.style.setProperty("position-anchor",h,"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) + ${a.leftOffset}px)`,"important"),l.style.setProperty("top",`calc(anchor(top) + ${a.topOffset}px)`,"important"),l.style.setProperty("width",`${a.width}px`,"important"),l.style.setProperty("height",`${a.height}px`,"important"),p});return t.slice(s.length+c.length).forEach(a=>{a.style.setProperty("display","none","important")}),u}function Ir(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 as(e){let t=Ve(e.getBoundingClientRect()),n=Mt(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,u=s-n.paddingTop-n.paddingBottom,a=[{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&&a.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:u},{kind:"padding",left:r,top:i+s-n.paddingBottom,width:o,height:n.paddingBottom},{kind:"padding",left:r,top:c,width:n.paddingLeft,height:u}),a.push(...us(e,n)),a.filter(d=>d.width>.5&&d.height>.5)}function us(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=En(e);return[...vr(r,"horizontal",t.columnGap),...vr(r,"vertical",t.rowGap)]}function ls(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:Ve(o.getBoundingClientRect()),margin:Sn(r?.getComputedStyle(o))})).filter(({rect:o})=>o.width>0&&o.height>0);return[...Cr(i,"horizontal",t.columnGap),...Cr(i,"vertical",t.rowGap)].filter(o=>o.width>.5&&o.height>.5)}function Cr(e,t,n){if(n<=0||e.length<2)return[];let r=Kr(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((c,u)=>t==="horizontal"?c.rect.left-u.rect.left:c.rect.top-u.rect.top);for(let c=0;c<s.length-1;c+=1){let u=s[c],a=s[c+1];if(t==="horizontal"){let d=u.rect.left+u.rect.width+u.margin.marginRight,l=a.rect.left-a.margin.marginLeft-d,h=Math.min(n,l);i.push({anchorElement:u.element,leftOffset:d+Math.max(0,(l-h)/2)-u.rect.left,topOffset:Math.max(u.rect.top,a.rect.top)-u.rect.top,width:h,height:Math.min(u.rect.top+u.rect.height,a.rect.top+a.rect.height)-Math.max(u.rect.top,a.rect.top)})}else{let d=u.rect.top+u.rect.height+u.margin.marginBottom,l=a.rect.top-a.margin.marginTop-d,h=Math.min(n,l);i.push({anchorElement:u.element,leftOffset:Math.max(u.rect.left,a.rect.left)-u.rect.left,topOffset:d+Math.max(0,(l-h)/2)-u.rect.top,width:Math.min(u.rect.left+u.rect.width,a.rect.left+a.rect.width)-Math.max(u.rect.left,a.rect.left),height:h})}}}),i}function vr(e,t,n){if(n<=0||e.length<2)return[];let r=Kr(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((c,u)=>t==="horizontal"?c.rect.left-u.rect.left:c.rect.top-u.rect.top);for(let c=0;c<s.length-1;c+=1){let u=s[c],a=s[c+1];if(t==="horizontal"){let d=u.rect.left+u.rect.width+u.margin.marginRight,l=a.rect.left-a.margin.marginLeft-d,h=Math.min(n,l);i.push({kind:"gap",left:d+Math.max(0,(l-h)/2),top:Math.max(u.rect.top,a.rect.top),width:h,height:Math.min(u.rect.top+u.rect.height,a.rect.top+a.rect.height)-Math.max(u.rect.top,a.rect.top)})}else{let d=u.rect.top+u.rect.height+u.margin.marginBottom,l=a.rect.top-a.margin.marginTop-d,h=Math.min(n,l);i.push({kind:"gap",left:Math.max(u.rect.left,a.rect.left),top:d+Math.max(0,(l-h)/2),width:Math.min(u.rect.left+u.rect.width,a.rect.left+a.rect.width)-Math.max(u.rect.left,a.rect.left),height:h})}}}),i}function Kr(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=>ds(c.rect,i.rect,t)>.5));o?o.push(i):r.push([i])}),r}function ds(e,t,n){return n==="x"?Math.min(e.left+e.width,t.left+t.width)-Math.max(e.left,t.left):Math.min(e.top+e.height,t.top+t.height)-Math.max(e.top,t.top)}var Tt=new WeakMap;function Pt(e,t){let n=Tt.get(e);if(!n){let i=e.style.getPropertyValue("anchor-name"),o=e.ownerDocument?.defaultView?.getComputedStyle(e).getPropertyValue?.("anchor-name").trim()??"";n={names:new Set,originalValue:i,originalPriority:e.style.getPropertyPriority("anchor-name"),computedValue:o==="none"?"":o},Tt.set(e,n)}n.names.add(t),Rr(e,n);let r=!1;return()=>{if(r)return;r=!0;let i=Tt.get(e);if(i){if(i.names.delete(t),i.names.size>0){Rr(e,i);return}i.originalValue?e.style.setProperty("anchor-name",i.originalValue,i.originalPriority):e.style.removeProperty("anchor-name"),Tt.delete(e)}}}function Rr(e,t){let n=t.originalValue.trim()||t.computedValue;e.style.setProperty("anchor-name",[...n?[n]:[],...t.names].join(", "),"important")}var ps=["e","se","s"],fs=0;function hs(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 ms(e,t,n,r){let i=++fs,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,u=c.head??c.documentElement,a=c.documentElement,d=()=>ye(c,t,n?.()??null),l=d();if(!l||!l.isConnected||typeof u?.appendChild!="function"||typeof a?.appendChild!="function")return null;let h="data-vcp-designer-resize-visual",p="data-vcp-designer-resize-handle",R=c.createElement("style");R.setAttribute("data-vcp-designer-resize-visual-style","true"),R.textContent=`
20
20
  [${p}] {
21
21
  position: fixed !important;
22
22
  position-anchor: ${o};
@@ -26,7 +26,7 @@ function $n(e){let t=new Map,n=[],r=new Map,i=[],o=e.pageComposition.status==="s
26
26
  height: 8px !important;
27
27
  margin: 0 !important;
28
28
  padding: 0 !important;
29
- border: 1px solid #4f6bff !important;
29
+ border: 1px solid ${mn} !important;
30
30
  border-radius: 2px !important;
31
31
  background: #ffffff !important;
32
32
  pointer-events: auto !important;
@@ -38,9 +38,9 @@ function $n(e){let t=new Map,n=[],r=new Map,i=[],o=e.pageComposition.status==="s
38
38
  [${p}="e"] { left: anchor(right); top: anchor(center); }
39
39
  [${p}="se"] { left: anchor(right); top: anchor(bottom); }
40
40
  [${p}="s"] { left: anchor(center); top: anchor(bottom); }
41
- `,u.appendChild(R);let C=ds.map(T=>{let w=c.createElement("div");return w.setAttribute(p,T),w.setAttribute("aria-hidden","true"),a.appendChild(w),w}),x=null,A=null,O=()=>{x?.removeAttribute(h),A?.(),A=null,x=null},H=T=>{O(),x=T,A=Pt(T,o),T.setAttribute(h,"true"),C.forEach(w=>w.style.removeProperty("display"))};H(l);let q=!1,E=null,U=()=>{if(!E||!l)return;let T=(w,M,m)=>{M?l.style.setProperty(w,M,m):l.style.removeProperty(w)};T("width",E.widthValue,E.widthPriority),T("height",E.heightValue,E.heightPriority)},re=(T,w,M)=>E?{version:1,phase:T,sessionId:E.sessionId,pointerId:E.pointerId,edge:E.edge,ref:t,startWidth:E.startWidth,startHeight:E.startHeight,width:w,height:M,baselineStyleDeclarations:[{property:"width",value:E.widthValue||null,...E.widthPriority==="important"?{priority:"important"}:{}},{property:"height",value:E.heightValue||null,...E.heightPriority==="important"?{priority:"important"}:{}}]}:null,$=()=>{if(!E)return null;let T=re("cancel",E.startWidth,E.startHeight),w=E.captureTarget,M=E.pointerId,m=E.currentX,I=E.currentY;return U(),E=null,w?.releasePointerCapture?.(M),T&&r?.({clientX:m,clientY:I,session:T}),T},X=T=>{if(!E||!l?.isConnected||T.pointerId!==E.pointerId)return!1;E.currentX=Number(T.clientX),E.currentY=Number(T.clientY);let w=E.currentX-E.startX,M=E.currentY-E.startY,m=Math.max(1,Math.round(E.startWidth+w)),I=Math.max(1,Math.round(E.startHeight+M));return(E.edge==="e"||E.edge==="se")&&l.style.setProperty("width",`${m}px`,"important"),(E.edge==="s"||E.edge==="se")&&l.style.setProperty("height",`${I}px`,"important"),!0},j=()=>{if(q)return;let T=d();T===l&&T?.isConnected||($(),O(),l=T,l?.isConnected?H(l):C.forEach(w=>w.style.setProperty("display","none","important")))},te=e.MutationObserver,ne=typeof te=="function"?new te(j):null;return ne?.observe(c.documentElement,{attributeFilter:["data-vcp-edit-key"],attributes:!0,childList:!0,subtree:!0}),{begin(T,w){if(q||E||!l?.isConnected)return null;let M=l.getBoundingClientRect();return E={sessionId:`resize-${i}-${T.pointerId}`,pointerId:T.pointerId,edge:w,startX:Number(T.clientX),startY:Number(T.clientY),currentX:Number(T.clientX),currentY:Number(T.clientY),startWidth:M.width,startHeight:M.height,widthValue:l.style.getPropertyValue("width"),widthPriority:l.style.getPropertyPriority("width"),heightValue:l.style.getPropertyValue("height"),heightPriority:l.style.getPropertyPriority("height"),captureTarget:T.target},re("start",M.width,M.height)},update:X,finish(T,w){if(!E||T.pointerId!==E.pointerId)return null;w==="commit"&&X(T);let M=Math.max(1,Math.round(E.startWidth+Number(T.clientX)-E.startX)),m=Math.max(1,Math.round(E.startHeight+Number(T.clientY)-E.startY)),I=re(w,w==="commit"?M:E.startWidth,w==="commit"?m:E.startHeight),k=E.captureTarget,_=E.pointerId;return w==="cancel"&&U(),E=null,k?.releasePointerCapture?.(_),I},cleanup(){q||(q=!0,ne?.disconnect(),$(),O(),l=null,C.forEach(T=>T.remove()),R.remove())}}}function Rr(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 ms(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 gs({message:e,sendEvent:t,sendResponse:n,subscriptions:r,getCurrentDocument:i,setCurrentDocument:o,onBridgeRequestError:s,nextRouteReadySequence:c,windowLike:u}){let a=u.__VCP_SITE_EDIT__;if(!a){n({type:"response",ok:!1,error:"Site edit bridge is not ready in preview frame"});return}let d=()=>{if(u.__VCP_SITE_EDIT__!==a)throw new Error("SITE_EDIT_COMPOSITION_SESSION_MISMATCH: navigation changed while reading the document")};try{switch(e.kind){case"bridge-initialize-session":{let l=u.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(l?.compositionKey&&Ge(e.payload.composition)!==l.compositionKey&&(!l.composition||Ge(e.payload.composition)!==se(l.composition)))throw new Error("SITE_EDIT_COMPOSITION_SESSION_MISMATCH: navigation changed");let h,p=!1;if(l?.composition)try{let R=await a.getDocument(e.payload.composition),C=await a.getHistoryStatus(e.payload.composition);h={...R,composition:R.data.composition,data:{document:R.data,historyStatus:C.data}},p=!0}catch(R){if(!Ne(R,"").includes("SITE_EDIT_COMPOSITION_SESSION_REQUIRED"))throw R}h??=await a.initializeSession({composition:e.payload.composition}),d(),o?.(h.data.document),p||Kr(u,{composition:h.data.document.composition,editEngineVersion:"unknown",sequence:c(),version:h.data.document.version}),n({type:"response",ok:!0,result:h});return}case"bridge-get-document":{let l=await a.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 a.getHistoryStatus(e.payload.composition)});return;case"bridge-get-style-context":n({type:"response",ok:!0,result:await a.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=a.ensureDocumentVersion?await a.ensureDocumentVersion(e.payload.composition,Number(e.payload.minVersion)):await a.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=a.acknowledgeDocumentVersion?await a.acknowledgeDocumentVersion(e.payload.composition,Number(e.payload.version)):await a.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 a.getObjectEditContext(e.payload.key,e.payload.composition,e.payload.selectionRef)});return;case"bridge-get-class-name-source":{let l=await a.getClassNameSource(e.payload.key,e.payload.composition);n({type:"response",ok:!0,result:ys(l,e.payload.key,u.document,i?.()??null)});return}case"bridge-get-source-tree":n({type:"response",ok:!0,result:await a.getSourceTree(e.payload.composition)});return;case"bridge-get-source-file":n({type:"response",ok:!0,result:await a.getSourceFile({path:e.payload.path,composition:e.payload.composition})});return;case"bridge-resolve-source-location":n({type:"response",ok:!0,result:await a.resolveSourceLocation({key:e.payload.key,composition:e.payload.composition})});return;case"bridge-execute":{let l=await a.execute(e.payload.request);if(l.ok&&a.acknowledgeDocumentVersion&&ms(e.payload.request)){let h=await a.acknowledgeDocumentVersion(e.payload.composition,l.data.resultVersion);d(),o?.(h.data)}n({type:"response",ok:!0,result:l});return}case"bridge-undo":n({type:"response",ok:!0,result:await a.undo(e.payload.composition)});return;case"bridge-redo":n({type:"response",ok:!0,result:await a.redo(e.payload.composition)});return;case"bridge-subscribe":{let l=e.payload.subscriptionId;r.get(l)?.();let h=a.subscribe(p=>{t({kind:"bridge-event",payload:{composition:p.composition,event:p,subscriptionId:l}})});r.set(l,h),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){u.__VCP_SITE_EDIT__===a&&s?.(l,e),n({type:"response",ok:!1,error:xs(l)})}}function ys(e,t,n,r){if(!e.ok)return e;let i=ye(n,{key:t},r),o=i?bs(i):null;return o?{...e,data:{...e.data,computedStyle:{...e.data.computedStyle??{},...o}}}:e}function bs(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 Ss(e,t,n=()=>e.location.pathname){let r=e.history.pushState,i=e.history.replaceState,o=n(),s=()=>{let a=n();a!==o&&(o=a,t())},c=()=>s(),u=()=>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",u),()=>{e.history.pushState=r,e.history.replaceState=i,e.removeEventListener("popstate",c),e.removeEventListener("hashchange",u)}}function Es(e){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>requestAnimationFrame(e));return}setTimeout(e,0)}function Nt(e,t){return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(t):e.setTimeout(t,0)}function wt(e,t){if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(t);return}e.clearTimeout(t)}function Kr(e,t){e.dispatchEvent(new CustomEvent(ln,{detail:t}))}function Is(e,t){e.dispatchEvent(new CustomEvent(dn,{detail:t}))}function Cs(e){return e?e.getConnectionState?e.getConnectionState()==="open":!0:!1}function vs(e,t){return se(e.composition)===t}function Rs(e){return Ne(e,"").includes(Br)}function Ne(e,t){return e instanceof Error&&e.message?e.message:typeof e=="string"&&e?e:t}function Hr(e){let t=Ne(e,"");return/websocket|readyState|not open|disconnected|bridge request timed out|network|econnreset|broken pipe|socket closed/i.test(t)}function xs(e){let t=Ne(e,"Site edit bridge request failed");return/bridge request timed out/i.test(t)?"Site edit bridge request timed out":Hr(t)?"Site edit bridge disconnected":t}function zr(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 Ts(e){let t=zr(e);if(t)return t===Ue||t===Je;let n=Ne(e,"");return n.includes(Ue)||n.includes(Je)}function We(e){if(Ne(e,"").includes("SITE_EDIT_RUNTIME_RELOAD_REQUIRED"))return!0;if(zr(e))return!1;let t=Ne(e,"");return/\b(?:bridge(?: session)?|websocket)\s+authentication\b|\bbridge\s+(?:session\s+)?key\b/i.test(t)}function Ur(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function mn(e){return zi.has(Wr(e))}function _s(e){return Ui.has(Wr(e))}function $r(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:_s(e.tagName),canInsertChild:mn(e.tagName),canMove:!1,canRemove:!1}}function Wr(e){return e?.trim().toLowerCase()??""}function xr(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 As(e,t,n){let r=ye(e,t.ref,n);if(!r)return!1;if(typeof t.ref.textSegmentIndex=="number"){let i=Ps(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 Ps(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!kt(r)||(r.textContent??"").trim().length===0)){if(n===t)return r;n+=1}return null}function Ns(e,t,n,r,i){let o=at(e,t,n,r),s=Bt(o);if(!s)return null;let c=s.getAttribute("data-vcp-edit-key")??"",u=ge(e,s,r),a=i?.(u.key)??i?.(c);if(!$r({operationSummary:a?.operationSummary,tagName:s.tagName,fallbackMode:"preview"}).canUpdateText)return null;let l=ws(e,t,n,s);if(l){let h=Ds(s,l);if(h!==null)return{element:s,textNode:l,textSegmentIndex:h}}return Ft(s)?null:{element:s}}function ws(e,t,n,r){let i=ks(e,t,n);return!i||i.parentElement!==r?null:i}function ks(e,t,n){let r=e,o=r.caretPositionFromPoint?.(t,n)?.offsetNode??null;if(kt(o))return o;let c=r.caretRangeFromPoint?.(t,n)?.startContainer??null;return kt(c)?c:null}function Ds(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!kt(r)||(r.textContent??"").trim().length===0)){if(r===t)return n;n+=1}return null}function kt(e){return e?.nodeType===3}function Os(e,t,n){return(typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean))[0]??null}function Bs(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:Ms(e,r),ref:Dt(e,r,n),rect:Ve(r.getBoundingClientRect()),targetIsSectionRoot:t===r}}function Ms(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,jr(e,null).findIndex(i=>i.element===t))}function jr(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:Dt(e,n,t),rect:Ve(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 Fs(e,t,n,r){if(n?.pageComposition.status!=="supported")return null;let i=jr(e,n),o=i[0],s=i.at(-1);if(!o||!s)return null;let c=new Set(n.pageComposition.placements.map(p=>`${p.placementUnitKey}\0${p.relation}`)),u=p=>r?.(p)??n.entries.find(R=>R.key===p)??null,a=(p,R,C)=>{let x=u(p.ref.key)?.pageCompositionUnitKey;return!x||!c.has(`${x}\0${R}`)?null:{anchorBlockId:p.blockId,positionIndex:C,anchorRef:p.ref,placement:R,boundary:{top:R==="before"?p.rect.top:p.rect.top+p.rect.height,left:p.rect.left,width:p.rect.width}}},d=[],l=a(o,"before",0);l&&d.push(l),i.slice(1).forEach((p,R)=>{let C=R+1,x=a(p,"before",C);if(x){d.push(x);return}let A=i[R],O=A?a(A,"after",C):null;O&&d.push(O)});let h=a(s,"after",i.length);return h&&d.push(h),d.find(({boundary:p})=>t.clientX>=p.left&&t.clientX<=p.left+p.width&&Math.abs(t.clientY-p.top)<=dr)??null}function at(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&&yn(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(gn(t))return n??t;!Vs(r)&&!n&&(n=t)}t=t.parentElement}return n}function gn(e){return e.getAttribute(Hi)!==null}function Vs(e){return qs(e.split("::")[0]??"")}function qs(e){if(!e)return!1;let t=Ks(e);return t===xt||t.startsWith(`${xt}/`)||t.includes(`/${xt}/`)||t.endsWith(`/${xt}`)}function Ks(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 ge(e,t,n){let r=t.getAttribute("data-vcp-edit-key")??"",i=Yr(Lr(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${to(r)}"]`))),n,r);if(i.length<=1)return{key:Tr(n,r,0)};let o=i.indexOf(t);return o>=0?{key:Tr(n,r,o),instanceIndex:o,instanceCount:i.length}:{key:r}}function Dt(e,t,n){return ge(e,t,n)}function ye(e,t,n){let r=ut(t.key)??t.key,i=Yr(Lr(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${to(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=(ut(t.key)??t.key)!==t.key;if(o!==null&&!s)return i[o]??null;let c=Hs(n,t.key);return c!==null&&c>=0&&c<i.length?i[c]??null:o!==null?i[o]??null:i[0]??null}function Tr(e,t,n){return Gr(e,t)[n]?.key??t}function Hs(e,t){let n=ut(t);if(!n)return null;let i=Gr(e,n).findIndex(o=>o.key===t);return i>=0?i:null}function Gr(e,t){return(e?.entries??[]).filter(n=>(ut(n.key)??n.key)===t)}function Yr(e,t,n){let r=Xr(t,n);return r?e.filter(i=>i.tagName.toLowerCase()===r):e}function yn(e,t,n){let r=Xr(t,n);return!r||e.tagName.toLowerCase()===r}function Xr(e,t){return null}var zs=2,Us=4;function Lr(e){return[...e].sort((t,n)=>{if(t===n)return 0;let r=typeof t.compareDocumentPosition=="function"?t.compareDocumentPosition(n):0;return(r&Us)!==0?-1:(r&zs)!==0?1:0})}function ut(e){if(typeof e!="string"||e.length===0)return e??null;let t=e;for(;;){let n=t.lastIndexOf(Sr);if(n<0)break;let r=Number(t.slice(n+Sr.length));if(!Number.isInteger(r)||r<0)return e;t=t.slice(0,n)}return t}function Mt(e){let n=e.ownerDocument?.defaultView?.getComputedStyle(e);return{...bn(n),paddingTop:fe(n?.paddingTop),paddingRight:fe(n?.paddingRight),paddingBottom:fe(n?.paddingBottom),paddingLeft:fe(n?.paddingLeft),borderTopWidth:fe(n?.borderTopWidth),borderRightWidth:fe(n?.borderRightWidth),borderBottomWidth:fe(n?.borderBottomWidth),borderLeftWidth:fe(n?.borderLeftWidth),columnGap:fe(n?.columnGap),rowGap:fe(n?.rowGap)}}function bn(e){return{marginTop:fe(e?.marginTop,!0),marginRight:fe(e?.marginRight,!0),marginBottom:fe(e?.marginBottom,!0),marginLeft:fe(e?.marginLeft,!0)}}function fe(e,t=!1){let n=Number.parseFloat(e??"");return Number.isFinite(n)?t?n:Math.max(0,n):0}function Sn(e){let t=e.ownerDocument?.defaultView;return Array.from(e.children).filter(n=>typeof n.getBoundingClientRect=="function").map(n=>({rect:Ve(n.getBoundingClientRect()),margin:bn(t?.getComputedStyle(n))})).filter(({rect:n})=>n.width>0&&n.height>0)}function $s(e){return Array.from(e.children).filter(t=>typeof t.getBoundingClientRect=="function").map(t=>Ve(t.getBoundingClientRect())).filter(t=>t.width>0&&t.height>0)}var _r=new WeakMap,Ar=0;function st(e){let t=_r.get(e);if(t)return t;Ar+=1;let n=`runtime-node-${Ar}`;return _r.set(e,n),n}function Jr(e,t,n){let r=n??e.ownerDocument?.defaultView,i=e.ownerDocument?.defaultView?.getComputedStyle(e),o=Ve(t),s=ee(r?.scrollX),c=ee(r?.scrollY),u=i?.position||"static";return{version:on,runtimeNodeId:st(e),rect:{viewport:o,document:{top:o.top+c,left:o.left+s,width:o.width,height:o.height}},layout:{position:u,transform:i?.transform||"none",containingBlock:js(e,u)},scrollContext:{scrollX:s,scrollY:c,viewportWidth:ee(r?.innerWidth),viewportHeight:ee(r?.innerHeight),scrollContainers:Ws(e)}}}function Ws(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",u=ee(i.scrollLeft),a=ee(i.scrollTop),d=u!==0||Pr(s)&&ee(i.scrollWidth)>ee(i.clientWidth),l=a!==0||Pr(c)&&ee(i.scrollHeight)>ee(i.clientHeight);(d||l)&&r.push({runtimeNodeId:st(i),scrollLeft:u,scrollTop:a})}i=i.parentElement}return r}function Pr(e){return["auto","scroll","overlay","hidden"].includes(e)}function js(e,t){if(t==="fixed"){let r=Nr(e.parentElement,!0);return r?{kind:"element",runtimeNodeId:st(r)}:{kind:"viewport"}}if(t==="absolute"){let r=e.offsetParent,i=Gs(r)??Nr(e.parentElement,!1);return i?{kind:"element",runtimeNodeId:st(i)}:{kind:"document"}}let n=e.parentElement;return n?{kind:"element",runtimeNodeId:st(n)}:{kind:"document"}}function Nr(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 Gs(e){return e&&typeof e.getBoundingClientRect=="function"?e:null}function ve(e,t,n,r="full",i,o="full",s=null){let c=e.getBoundingClientRect(),u=n?.(t.key)??null,a=e.tagName.toLowerCase(),d=o==="full",l=d?lt(e):void 0,h=r==="full"?{textPreview:e.textContent?.trim().slice(0,80),dataset:Xs(e),attributes:Object.fromEntries(e.getAttributeNames().map(E=>[E,e.getAttribute(E)??""]))}:{},p=$r({operationSummary:u?.operationSummary,tagName:a,fallbackMode:"preview"}),R=gn(e),C=!0,x=u!==null&&hn(u),A=x?null:cc(e),O=x?u.parentKey:A?s&&ut(t.key)?ge(e.ownerDocument,A,s).key:A.getAttribute("data-vcp-edit-key"):null,H=d?Sn(e):void 0,q=d?Jr(e,c,i):void 0;return{ref:t,key:t.key,detailLevel:r,tagName:a,...u?{sourceKind:"jsx"}:{},...O?{parentKey:O}:{},...u?.pageCompositionUnitKey?{pageCompositionUnitKey:u.pageCompositionUnitKey}:{},...h,runtimeFlags:{selectable:!0,movable:p.canMove,removable:p.canRemove,textEditable:p.canUpdateText,container:R?!1:p.canInsertChild||C&&mn(a)||!!Ft(e)},...q?{layoutSnapshot:q}:{},...l?{layout:l}:{},rect:{top:c.top,left:c.left,width:c.width,height:c.height},...H?{childBoxes:H,childRects:H.map(({rect:E})=>E)}:{},...d?{spacing:Mt(e)}:{}}}function Ys(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 Xs(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 wr(e,t,n,r){let i=e.getBoundingClientRect(),o=Jr(e,i,n);if(r==="light")return{ref:t,layoutSnapshot:o};if(r==="child-rects")return{ref:t,layoutSnapshot:o,childRects:$s(e)};let s=Sn(e);return{ref:t,layoutSnapshot:o,childBoxes:s,childRects:s.map(({rect:c})=>c),layout:lt(e),spacing:Mt(e)}}function kr(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 Ls(e,t,n,r,i){let o=t,s=wr(o,n,e,"detailed"),c=kr(s),u=null,a=null,d="mutation",l=je(e),h=l,p=!1,R=!1,C=({reason:j,sourceEventAt:te,forceEmit:ne=!1,includeDetailedGeometry:T=!1})=>{(u===null||(j==="scroll"?0:1)>=(d==="scroll"?0:1))&&(d=j,l=te),p=p||ne,R=R||T,u===null&&(u=Nt(e,x))},x=()=>{let j=je(e);u=null;let te=d,ne=l,T=p,w=R;p=!1,R=!1;let M=ye(e.document,n,r?.()??null);if(!M)return;M!==o&&(U?.unobserve(o),o=M,U?.observe(o),w=!0);let m=w?"detailed":c?"child-rects":"light",I=wr(o,n,e,m),k=I.layoutSnapshot.rect.viewport;k.width<=0||k.height<=0||!T&&!Js(s,I)||(s=I,m==="detailed"&&(c=kr(I)),i(te,I,{sourceEventAt:ne,captureStartedAt:j,capturedAt:je(e)}))},A=()=>{a!==null&&(e.clearTimeout(a),a=null)},O=()=>{A(),C({reason:"resize",sourceEventAt:je(e),includeDetailedGeometry:!0})},H=()=>{A(),C({reason:"mutation",sourceEventAt:je(e),includeDetailedGeometry:!0})},q=()=>{h=je(e),C({reason:"scroll",sourceEventAt:h}),A(),a=e.setTimeout(()=>{a=null,C({reason:"scroll",sourceEventAt:h,forceEmit:!0,includeDetailedGeometry:!0})},Mi)},E=e.ResizeObserver,U=typeof E=="function"?new E(O):null;U?.observe(o);let re=e.MutationObserver,$=typeof re=="function"?new re(H):null;$?.observe(e.document.documentElement,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),e.addEventListener("resize",O,{passive:!0}),e.addEventListener("scroll",q,{passive:!0});let X=e.visualViewport;return X?.addEventListener?.("resize",O,{passive:!0}),X?.addEventListener?.("scroll",q,{passive:!0}),e.document.addEventListener("scroll",q,{capture:!0,passive:!0}),e.document.addEventListener("load",H,!0),{initialSnapshot:s,cleanup:()=>{u!==null&&(wt(e,u),u=null),A(),U?.disconnect(),$?.disconnect(),e.removeEventListener("resize",O),e.removeEventListener("scroll",q),X?.removeEventListener?.("resize",O),X?.removeEventListener?.("scroll",q),e.document.removeEventListener("scroll",q,!0),e.document.removeEventListener("load",H,!0)}}}function je(e){let t=e.performance;return t&&Number.isFinite(t.timeOrigin)&&typeof t.now=="function"?t.timeOrigin+t.now():Date.now()}function Js(e,t){return Qs(e.layoutSnapshot,t.layoutSnapshot)||t.childBoxes!==void 0&&ec(e.childBoxes,t.childBoxes)||t.childRects!==void 0&&tc(e.childRects,t.childRects)||t.layout!==void 0&&pn(e.layout,t.layout)||t.spacing!==void 0&&pn(e.spacing,t.spacing)}function Qs(e,t){return!e||!t?e!==t:e.version!==t.version||e.runtimeNodeId!==t.runtimeNodeId||Ot(e.rect.viewport,t.rect.viewport)||Ot(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||Zs(e.scrollContext.scrollContainers,t.scrollContext.scrollContainers)}function Zs(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 ec(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>{let s=r[o];return!s||Ot(i.rect,s.rect)||pn(i.margin,s.margin)})}function tc(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>Ot(i,r[o]??i))}function pn(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 Ve(e){return{top:e.top,left:e.left,width:e.width,height:e.height}}function Ot(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 nc(e,t,n,r,i,o,s){let c=e.document,u=at(c,t,n,o);if(!u)return{anchorHit:null,targetParentHit:null,relation:"none",rejectionReason:"no-editable-hit"};let a=i?ye(c,i,o):null;if(a&&fn(u,a))return Fe(c,u,"self-or-descendant",o,s);if(r==="move"){if(!a)return Fe(c,u,"no-accepting-parent",o,s);let C=ic(c,u,a,o,s);if(!C)return Fe(c,u,"no-accepting-parent",o,s);let x=C.kind==="parent"?Or(C.targetParent,t,n):an(C.child,C.targetParent,t,n,"nearest");return x?_t(c,C.child,C.targetParent,x,o,s):Fe(c,u,"no-accepting-parent",o,s)}let d=null,l=!1,h=u,p=u.parentElement;for(;p;){if(p.getAttribute("data-vcp-edit-key")){if(a&&fn(p,a))return Fe(c,u,"self-or-descendant",o,s);let C=Dr(p,r,s);if(C==="accept"){d={child:h,targetParent:p};break}C==="blocked"&&(l=!0),h=p}p=p.parentElement}let R=Dr(u,r,s);if(R==="accept"){if(d){let C=an(d.child,d.targetParent,t,n,"edge");if(C)return _t(c,d.child,d.targetParent,C,o,s)}return _t(c,u,u,Or(u,t,n),o,s)}if(d){let C=an(d.child,d.targetParent,t,n,"nearest");return _t(c,d.child,d.targetParent,C??"after",o,s)}return R==="blocked"||l?Fe(c,u,"operation-boundary-blocked",o,s):Fe(c,u,"no-accepting-parent",o,s)}function Fe(e,t,n,r,i){return{anchorHit:ve(t,ge(e,t,r),i,"summary",void 0,"full",r),targetParentHit:null,relation:"none",rejectionReason:n}}function _t(e,t,n,r,i,o){let s=ve(t,ge(e,t,i),o,"summary",void 0,"full",i),c=ve(n,ge(e,n,i),o,"summary",void 0,"full",i),u=lt(n).indicatorOrientation,a=r==="append"||r==="prepend"?rc(n.getBoundingClientRect(),u,r):oc(t.getBoundingClientRect(),u,r);return{anchorHit:s,targetParentHit:c,relation:r,indicatorOrientation:u,indicatorBounds:a}}function Dr(e,t,n){if(gn(e))return"not-container";let r=e.getAttribute("data-vcp-edit-key")??"",i=n?.(r)??null;if(i)return i.operationSummary.canInsertChild===!0?"accept":Ft(e)?"blocked":"not-container";let o=e.tagName.toLowerCase();return mn(o)?"accept":"not-container"}function an(e,t,n,r,i){let o=lt(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 Or(e,t,n){let r=lt(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 lt(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 rc(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 oc(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 fn(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentElement}return!1}function ic(e,t,n,r,i){return sc(e,t,n,r,i)}function sc(e,t,n,r,i){if(!r)return null;let o=x=>i?.(x)??r.entries.find(A=>A.key===x)??null,s=ge(e,n,r),c=o(s.key);if(!c||!hn(c)||!c.parentKey)return null;let u=c.parentKey;if(!o(u)?.operationSummary.canInsertChild)return null;let d=ye(e,{key:u},r);if(!d)return null;let l=t,h=null;for(;l;){if(l.getAttribute("data-vcp-edit-key")){let x=ge(e,l,r),A=o(x.key);if(A){h=A;break}}l=l.parentElement}if(!h)return null;if(h.key===u)return{kind:"parent",child:d,targetParent:d};let p=h,R=new Set;for(;;){if(!hn(p)||!p.parentKey)return null;if(p.parentKey===u)break;if(R.has(p.key))return null;R.add(p.key);let x=o(p.parentKey);if(!x)return null;p=x}if(p.key===c.key)return null;let C=ye(e,{key:p.key},r);return!C||C===n||fn(C,n)?null:{kind:"sibling",child:C,targetParent:d}}function hn(e){return Object.prototype.hasOwnProperty.call(e,"parentKey")}function cc(e){let t=e.parentElement;for(;t;){if(t.getAttribute("data-vcp-edit-key"))return t;t=t.parentElement}return null}function Ft(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=Ft(n);if(r)return r}return null}function At(e){let t=e.document.documentElement,n=e.document.body;return{scrollX:ee(e.scrollX),scrollY:ee(e.scrollY),scrollWidth:Math.max(ee(t?.scrollWidth),ee(n?.scrollWidth),ee(e.innerWidth)),scrollHeight:Math.max(ee(t?.scrollHeight),ee(n?.scrollHeight),ee(e.innerHeight)),viewportWidth:ee(e.innerWidth),viewportHeight:ee(e.innerHeight)}}function ac(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 uc=500,it=new Map;function lc(e,t){return`${e}:${t.key}:${t.instanceIndex??""}`}function dc(e,t){if(it.size>=uc){let n=it.keys().next().value;n&&it.delete(n)}it.set(e,t)}var ct=new Set;function pc(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 ct)r.has(i)||n?.removeProperty(i);ct.clear();for(let i of r)ct.add(i);yc(e,t.stylesheets??[])}function fc(e){let t=e.documentElement?.style;for(let n of ct)t?.removeProperty(n);ct.clear();for(let n of eo(e))n.remove()}function hc(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=Qr(i,s);c&&(o[s]=c)}return o}function Qr(e,t,n=new Set){if(!e||n.has(t))return null;n.add(t);let r=e.getPropertyValue(t).trim();return Zr(e,r,n)}function Zr(e,t,n){if(!t)return null;let r=mc(t);if(!r)return t;let i=Qr(e,r.name,n);return i||(r.fallback?Zr(e,r.fallback,n)??r.fallback:null)}function mc(e){let t=e.trim();if(!t.startsWith("var(")||!t.endsWith(")"))return null;let n=t.slice(4,-1).trim(),r=gc(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 gc(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 yc(e,t){let n=new Set(t.filter(o=>typeof o=="string"&&o.length>0)),r=new Map;for(let o of eo(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(Fr,"true"),s.setAttribute("href",o),i.appendChild(s)}}function eo(e){return Array.from(e.querySelectorAll(`link[${Fr}]`))}function bc(e,t,n,r,i={}){let o=i.textNode?Sc(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??"",u=o?void 0:t.innerHTML,a=Ec(s),d=!1,l=()=>{e.document.removeEventListener("pointerdown",p,!0),s.removeEventListener("keydown",R),s.removeEventListener("blur",C),s.removeEventListener("input",x),Cc(s,a)},h=A=>{if(d)return;d=!0;let O=s.textContent??"";if(l(),A==="cancel"){o?.restore(c),o||(t.textContent=c),r({kind:"text-edit-cancel",payload:{ref:n}});return}if(o?.restore(O),A==="commit"&&O!==c){i.onCommitSnapshot?.({ref:n,initialText:c,...u!==void 0?{initialHtml:u}:{}}),r({kind:"text-edit-commit",payload:{ref:n,value:O}});return}r({kind:"text-edit-exit",payload:{ref:n}})};function p(A){let O=A.target;O&&s.contains(O)||h("commit")}function R(A){if(A.key==="Escape"){A.preventDefault(),h("cancel");return}A.key==="Enter"&&(A.metaKey||A.ctrlKey)&&(A.preventDefault(),h("commit"))}function C(){h("commit")}function x(){r({kind:"text-edit-input",payload:{ref:n,hit:ve(t,n,void 0,"full")}})}return Ic(s),e.document.addEventListener("pointerdown",p,!0),s.addEventListener("keydown",R),s.addEventListener("blur",C),s.addEventListener("input",x),xc(s),Tc(s,e.document),l}function Sc(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 Ec(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 Ic(e){vc(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 Cc(e,t){un(e,"contenteditable",t.contentEditable),un(e,"spellcheck",t.spellcheck),un(e,"data-vcp-edit-text-editing",t.marker),e.style.cursor=t.cursor,e.style.userSelect=t.userSelect}function vc(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 un(e,t,n){if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)}function Rc(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 xc(e){try{e.focus({preventScroll:!0})}catch{e.focus()}}function Tc(e,t){let n=t.createRange();n.selectNodeContents(e);let r=t.getSelection?.();r?.removeAllRanges(),r?.addRange(n)}function to(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function ee(e){let t=Number(e);return Number.isFinite(t)?t:0}import _c from"node:http";import dt from"node:fs";import{createHash as so,randomBytes as Ac,timingSafeEqual as Pc}from"node:crypto";import Re from"node:path";import{WebSocket as co,WebSocketServer as Nc}from"ws";import{createPreviewSiteEditEngineRuntime as wc,openFileHistoryStore as kc,resolveManagedPageTemplateComposition as Dc,scanSiteEditCompositionsFromFiles as Oc}from"@vcp-dev/site-edit-engine";import{resolveNextAppRouteId as Bc,scanNextAppRouterRoutesFromFiles as Mc}from"@vcp-dev/site-edit-engine/next-app-router";import{SiteEditSourceWatcher as Fc}from"@vcp-dev/site-edit-engine/source-watcher";var Vt=class{constructor(){this.tail=Promise.resolve()}run(t){let n=this.tail.then(t,t);return this.tail=n.then(()=>{},()=>{}),n}};import{SiteEditOperationRequestSchema as Vc,computeSiteEditCompositionKey as qe}from"@vcp-dev/contracts";var qc="127.0.0.1",Kc=30218,Hc="/__vcp/site-edit/bridge",ao=6*1024*1024,zc=ao*2,Uc=3e3,no=50,Cn=".vcp/current-snapshot.json",ro="__VCP_SITE_EDIT_BRIDGE_SERVERS__";function ku(e){let t=lo(e),n=fo(t),r=po(),i=r.get(n);if(i)return i;let o=new qt(t);r.set(n,o);try{o.start()}catch(s){throw r.delete(n),o.stop(),s}return o}function uo(e,t,n={}){let r=new qt(lo(t),e,!1,n);return r.start({listen:!1}),r}var qt=class{constructor(t,n=_c.createServer((o,s)=>{s.writeHead(404),s.end("VCP site edit bridge server")}),r=!0,i={}){this.options=t,this.server=n,this.closeHttpServerOnStop=r,this.dependencies=i,this.runtime=null,this.activeHistorySessionId=null,this.historySessionTransition=Promise.resolve(),this.mutationQueue=new Vt,this.eventListeners=new Set,this.routes=[],this.compositions=[],this.compositionFiles=[],this.compositionResolutionError=null,this.launchCandidateEntries=null,this.stopWatching=null,this.stopWebSocketServer=null,this.pendingChangedFiles=new Set,this.fileChangeTimer=null,this.isStarted=!1,this.stopping=!1,this.runtimeVersionFloors=new Map,this.activeHistoryStore=null,this.versionPersistence=Promise.resolve()}start(t={}){if(this.isStarted)return;this.stopping=!1;try{dt.mkdirSync(Re.join(this.options.projectRoot,".vcp"),{recursive:!0})}catch(r){console.warn(`[vcp-site-edit] failed to ensure .vcp directory: ${r instanceof Error?r.message:String(r)}`)}this.refreshCompositions(!0),this.isStarted=!0,this.createRuntime();let n=Yc({server:this.server,path:this.options.path,sessionKey:this.options.sessionKey,host:this.options.host,allowedOrigins:this.options.allowedOrigins,engine:this.createBridgeEngine()});this.stopWebSocketServer=n.stop,this.stopWatching=new Fc({projectRoot:this.options.projectRoot,watch_dirs:$c(this.options.runtime.watch_dirs),interval_ms:this.options.runtime.watch_interval_ms,debounce_ms:this.options.runtime.watch_debounce_ms??no,max_dirs:this.options.runtime.watch_max_dirs,max_files:this.options.runtime.watch_max_files,max_depth:this.options.runtime.watch_max_depth,max_startup_ms:this.options.runtime.watch_max_startup_ms,on_change:r=>this.handleFileChanged(r),on_batch_change:r=>this.handleFilesChanged(r)}).start(),t.listen!==!1&&this.server.listen(this.options.port,this.options.host)}getHealth(){let t=!!this.runtime&&!this.compositionResolutionError;return{ok:this.isStarted&&t,bridgePath:this.options.path,runtimeReady:t,routesIndexed:this.routes.length,sessionRequired:!!this.options.sessionKey}}stop(){this.stopping=!0,this.stopWatching?.(),this.stopWatching=null,this.flushChangedFiles(),this.fileChangeTimer&&(clearTimeout(this.fileChangeTimer),this.fileChangeTimer=null),this.stopWebSocketServer?.(),this.stopWebSocketServer=null,this.runtime?.dispose(),this.runtime=null,this.compositions=[],this.compositionFiles=[],this.compositionResolutionError=null,this.closeHttpServerOnStop&&this.server.close();let t=po(),n=fo(this.options);t.get(n)===this&&t.delete(n),this.isStarted=!1}createRuntime(t,n=null){let r=this.runtime;this.activeHistoryStore=t??null;let i=(this.dependencies.createRuntime??wc)({...this.options.tenantId?{tenantId:this.options.tenantId}:{},siteId:this.options.siteId,snapshotId:this.options.snapshotId,projectRoot:this.options.projectRoot,compositions:this.compositions,onEvent:o=>{"version"in o&&typeof o.version=="number"&&this.recordRuntimeVersion(o.version,"composition"in o?o.composition:void 0);for(let s of this.eventListeners)s(o)},...t?{historyStore:t}:{},...this.getInitialDocumentVersions().length>0?{initialDocumentVersions:this.getInitialDocumentVersions()}:{}});this.runtime=i,this.activeHistorySessionId=n,r?.dispose()}createBridgeEngine(){return{resolveComposition:t=>this.resolveComposition(t),initializeSession:t=>this.mutationQueue.run(async()=>{let n=await this.bindHistorySession(this.options.snapshotId);if(!n.ok)throw new Error(`${n.code}: ${n.message}`);let r=jc(t.composition),i=this.getRuntime(),o=Te(r);await i.initializeComposition(o);let c=i.getDocument(o).data;await this.recordRuntimeVersion(c.version,r);let u=(await i.getHistoryStatus()).data;return{ok:!0,composition:r,data:{document:c,historyStatus:u}}}),getDocument:async t=>{let n=this.getRuntime(),r=Te(t);await n.initializeComposition(r);let i=n.getDocument(r);return await this.recordRuntimeVersion(i.data.version,t),{...i,composition:t}},getHistoryStatus:async t=>({...await this.getRuntime().getHistoryStatus(),composition:t}),getStyleContext:async t=>this.getRuntime().getStyleContext(Te(t)),getObjectEditContext:async(t,n,r)=>this.getRuntime().getObjectEditContext(t,Te(n),r),getClassNameSource:async(t,n)=>this.getRuntime().getClassNameSource(t,Te(n)),getSourceTree:async t=>this.getRuntime().getSourceTree(Te(t)),getSourceFile:async t=>this.getRuntime().getSourceFile({path:t.path,composition:Te(t.composition)}),resolveSourceLocation:async t=>this.getRuntime().resolveSourceLocation({key:t.key,composition:Te(t.composition)}),execute:(t,n)=>this.mutationQueue.run(async()=>{let r=await this.bindHistorySession(this.options.snapshotId);if(!r.ok)return En(r,t);let i=await this.getRuntime().executeOperation(t);return i.data?.resultVersion!==void 0&&await this.recordRuntimeVersion(i.data.resultVersion,i.composition),i}),undo:t=>this.mutationQueue.run(async()=>{let n=await this.bindHistorySession(this.options.snapshotId);if(!n.ok)return En(n,void 0,t);let r=await this.getRuntime().undo();return r.data?.resultVersion!==void 0&&await this.recordRuntimeVersion(r.data.resultVersion,r.composition??t),r.composition?r:{...r,composition:t}}),redo:t=>this.mutationQueue.run(async()=>{let n=await this.bindHistorySession(this.options.snapshotId);if(!n.ok)return En(n,void 0,t);let r=await this.getRuntime().redo();return r.data?.resultVersion!==void 0&&await this.recordRuntimeVersion(r.data.resultVersion,r.composition??t),r.composition?r:{...r,composition:t}}),subscribe:t=>(this.eventListeners.add(t),()=>this.eventListeners.delete(t))}}async bindHistorySession(t){if(!this.options.historyRoot)return{ok:!1,code:"RECOVERY_PERSIST_FAILED",message:"Durable edit history is not configured."};if(this.activeHistorySessionId===t)return{ok:!0};let n=this.historySessionTransition.then(async()=>{if(this.activeHistorySessionId===t)return;let r=await(this.dependencies.openHistoryStore??kc)(Gc({root:this.options.historyRoot,siteId:this.options.siteId,snapshotId:this.options.snapshotId,editingSessionId:t}));if(!this.isStarted)return;let i=r.readDocumentVersion?await r.readDocumentVersion():0,o=this.compositions[0]?.context;if(o){let s=qe(o);this.runtimeVersionFloors.set(s,Math.max(this.runtimeVersionFloors.get(s)??0,i))}this.createRuntime(r,t)});this.historySessionTransition=n.catch(()=>{});try{return await n,{ok:!0}}catch{return{ok:!1,code:"RECOVERY_PERSIST_FAILED",message:"Durable edit history could not be opened."}}}recordRuntimeVersion(t,n){let r=n?qe(n):null;r&&this.runtimeVersionFloors.set(r,Math.max(this.runtimeVersionFloors.get(r)??0,t));let i=this.activeHistoryStore;if(!i?.writeDocumentVersion)return Promise.resolve();let o=r?this.runtimeVersionFloors.get(r)??t:t;return this.versionPersistence=this.versionPersistence.then(()=>i.writeDocumentVersion(o)).catch(()=>{}),this.versionPersistence}handleFileChanged(t){this.handleFilesChanged([t])}handleFilesChanged(t){for(let r of t)this.pendingChangedFiles.add(r);this.fileChangeTimer&&clearTimeout(this.fileChangeTimer);let n=this.options.runtime.watch_debounce_ms??no;this.fileChangeTimer=setTimeout(()=>{this.fileChangeTimer=null,this.flushChangedFiles()},n),this.fileChangeTimer?.unref?.()}flushChangedFiles(){if(this.fileChangeTimer&&(clearTimeout(this.fileChangeTimer),this.fileChangeTimer=null),this.pendingChangedFiles.size===0)return;let t=[...this.pendingChangedFiles].sort((n,r)=>n.localeCompare(r));if(this.pendingChangedFiles.clear(),t.some(na)&&this.scheduleSnapshotIdentityAdvance(),!!this.refreshCompositions(!1))for(let n of t)this.runtime?.notifyFileChanged(n)}scheduleSnapshotIdentityAdvance(){if(this.stopping||!this.isStarted)return;let t=this.readCurrentSnapshotMarker();!t||t===this.options.snapshotId||this.mutationQueue.run(()=>this.advanceSnapshotId(t)).catch(n=>{console.warn(`[vcp-site-edit] snapshot identity advance failed: ${n instanceof Error?n.message:String(n)}`)})}readCurrentSnapshotMarker(){try{let t=dt.readFileSync(Re.join(this.options.projectRoot,Cn),"utf8"),n=JSON.parse(t),r=typeof n.snapshot_id=="string"?n.snapshot_id:"";return!r||vn(r)!==r?(console.warn("[vcp-site-edit] current-snapshot marker has no valid snapshot_id"),null):r}catch(t){return console.warn(`[vcp-site-edit] current-snapshot marker unreadable: ${t instanceof Error?t.message:String(t)}`),null}}async advanceSnapshotId(t){if(this.stopping||!this.isStarted||t===this.options.snapshotId)return;let n=this.options.snapshotId;this.options.snapshotId=t;try{if(this.options.historyRoot){let i=await this.bindHistorySession(t);if(!i.ok)throw new Error(`${i.code}: ${i.message}`)}else this.createRuntime()}catch(i){this.options.snapshotId=n,console.warn(`[vcp-site-edit] snapshot identity advance rolled back to ${n}: ${i instanceof Error?i.message:String(i)}`);return}let r=new Date().toISOString();for(let i of this.compositions){let o={type:"site-edit.snapshot.changed",siteId:this.options.siteId,composition:i.context,snapshotId:t,previousSnapshotId:n,at:r};for(let s of this.eventListeners)try{s(o)}catch(c){console.warn(`[vcp-site-edit] snapshot.changed listener failed: ${c instanceof Error?c.message:String(c)}`)}}try{this.options.onSnapshotIdChanged?.(t,n)}catch(i){console.warn(`[vcp-site-edit] onSnapshotIdChanged callback failed: ${i instanceof Error?i.message:String(i)}`)}}refreshCompositions(t=!1){try{let n=Wc(this.options.projectRoot),r=Mc(n),i=r.length>0?r:(this.options.runtime.routes??[]).map(a=>({...a})),o=Oc({files:n});if(o.length===0)throw new Error("No canonical App Router composition is indexed by the preview bridge.");let s=JSON.stringify(o.filter(a=>a.context.effectiveTemplateId!==void 0).map(a=>a.entryFile).sort());if(t&&(this.launchCandidateEntries=s),this.launchCandidateEntries!==s)throw new Error("SITE_EDIT_RUNTIME_RELOAD_REQUIRED: Candidate route collection changed since preview launch");let c=new Map(this.compositions.map(a=>[qe(a.context),a])),u=new Map(o.map(a=>[qe(a.context),a]));if(this.runtime){for(let[a,d]of c){let l=u.get(a);(!l||l.entryFile!==d.entryFile)&&this.runtime.unregisterComposition(Te(d.context))}for(let[a,d]of u){let l=c.get(a);(!l||l.entryFile!==d.entryFile)&&this.runtime.registerComposition(d.context,d.entryFile)}}return this.routes=i,this.compositions=o,this.compositionFiles=n,this.compositionResolutionError=null,!0}catch(n){let r=n instanceof Error?n:new Error(String(n));if(this.compositionResolutionError=r,t)throw r;return!1}}resolveComposition(t){if(this.compositionResolutionError)throw this.compositionResolutionError;let n=Bc(t.routeId,this.routes,this.options.basePath);if(!n)throw new Error(`Route is not indexed by the preview bridge: ${t.routeId}`);let r=this.routes.find(s=>s.routeId===n);if(!r)throw new Error(`Route is not indexed by the preview bridge: ${t.routeId}`);let i=Dc({selector:{routeId:n,...t.templateId!==void 0?{templateId:t.templateId}:{}},files:this.compositionFiles,canonicalEntryFile:r.entryFile}),o=qe(i.context);if(!this.compositions.some(s=>qe(s.context)===o))throw new Error(`Composition is not registered by the preview bridge: ${o}`);return i}getInitialDocumentVersions(){return this.compositions.flatMap(t=>{let n=this.runtimeVersionFloors.get(qe(t.context));return n===void 0?[]:[{composition:t.context,version:n}]})}getRuntime(){if(!this.runtime)throw new Error("VCP site edit preview bridge runtime is not ready");return this.runtime}};function lo(e){return{tenantId:e.tenantId,siteId:e.siteId,snapshotId:e.snapshotId,projectRoot:Re.resolve(e.projectRoot??process.cwd()),basePath:e.basePath??"",host:e.host??qc,port:e.port??Kc,path:e.path??Hc,sessionKey:e.sessionKey??ta(),historyRoot:e.historyRoot,allowedOrigins:e.allowedOrigins??[],runtime:e.runtime??{},onSnapshotIdChanged:e.onSnapshotIdChanged}}function $c(e){let t=["app","src/app","components/site","src/components/site","lib/generated","src/lib/generated","public"];return[...new Set([...e?.length?e:t,".vcp"])]}function Wc(e){let t=[],n=["app","src/app",".vcp"],r=new Set([".git",".next",".turbo","coverage","dist","node_modules","output","snapshot-store"]),i=o=>{if(!dt.existsSync(o))return;let s;try{s=dt.readdirSync(o,{withFileTypes:!0})}catch{return}for(let c of s){if(c.name.startsWith(".")&&c.name!==".vcp")continue;if(c.isDirectory()){if(r.has(c.name))continue;i(Re.join(o,c.name));continue}if(!c.isFile())continue;let u=Re.join(o,c.name),a="";try{a=dt.readFileSync(u,"utf8")}catch{}t.push({path:Re.relative(e,u).replaceAll(Re.sep,"/"),content:a})}};for(let o of n)i(Re.join(e,o));return t.sort((o,s)=>o.path.localeCompare(s.path))}function jc(e){if(!e||typeof e!="object"||typeof e.routeId!="string")throw new Error("Normalized composition context is required.");if("effectiveTemplateId"in e)return e;let t=e;return{routeId:t.routeId,...t.templateId?{effectiveTemplateId:t.templateId}:{}}}function Te(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function Gc(e){return Re.join(Re.resolve(e.root),vn(e.siteId),vn(e.snapshotId),so("sha256").update(e.editingSessionId).digest("hex").slice(0,32))}function vn(e){return/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(e)&&e!=="."&&e!==".."?e:so("sha256").update(e).digest("hex").slice(0,32)}function po(){let e=globalThis;return e[ro]??=new Map,e[ro]}function fo(e){return`${e.projectRoot}:${e.host}:${e.port}:${e.path}:${e.historyRoot??""}`}function En(e,t,n){let r=n??(t?.composition?{routeId:t.composition.routeId,...t.composition.templateId?{effectiveTemplateId:t.composition.templateId}:{}}:void 0);if(!r)throw new Error("A normalized composition is required to construct a mutation result.");return{ok:!1,composition:r,error:{code:e.code,message:e.message},data:{requestId:t?.id??"mutation-context",kind:t?.kind??"update-text",composition:r,target:t?.target??{kind:"node",key:""},resultVersion:t?.documentVersion??0}}}function Yc(e){let t=new Nc({maxPayload:ao,noServer:!0}),n=new WeakSet,r=o=>{new yt({socket:new Rn(o),engine:e.engine,validateOperationRequest:s=>Vc.safeParse(s).success})},i=(o,s,c)=>{if(!Xc(o,e))return;let u=Lc(o,e);if(!u){s.write(`HTTP/1.1 401 Unauthorized\r
41
+ `,u.appendChild(R);let C=ps.map(T=>{let w=c.createElement("div");return w.setAttribute(p,T),w.setAttribute("aria-hidden","true"),a.appendChild(w),w}),x=null,A=null,O=()=>{x?.removeAttribute(h),A?.(),A=null,x=null},H=T=>{O(),x=T,A=Pt(T,o),T.setAttribute(h,"true"),C.forEach(w=>w.style.removeProperty("display"))};H(l);let q=!1,E=null,$=()=>{if(!E||!l)return;let T=(w,M,m)=>{M?l.style.setProperty(w,M,m):l.style.removeProperty(w)};T("width",E.widthValue,E.widthPriority),T("height",E.heightValue,E.heightPriority)},re=(T,w,M)=>E?{version:1,phase:T,sessionId:E.sessionId,pointerId:E.pointerId,edge:E.edge,ref:t,startWidth:E.startWidth,startHeight:E.startHeight,width:w,height:M,baselineStyleDeclarations:[{property:"width",value:E.widthValue||null,...E.widthPriority==="important"?{priority:"important"}:{}},{property:"height",value:E.heightValue||null,...E.heightPriority==="important"?{priority:"important"}:{}}]}:null,U=()=>{if(!E)return null;let T=re("cancel",E.startWidth,E.startHeight),w=E.captureTarget,M=E.pointerId,m=E.currentX,I=E.currentY;return $(),E=null,w?.releasePointerCapture?.(M),T&&r?.({clientX:m,clientY:I,session:T}),T},X=T=>{if(!E||!l?.isConnected||T.pointerId!==E.pointerId)return!1;E.currentX=Number(T.clientX),E.currentY=Number(T.clientY);let w=E.currentX-E.startX,M=E.currentY-E.startY,m=Math.max(1,Math.round(E.startWidth+w)),I=Math.max(1,Math.round(E.startHeight+M));return(E.edge==="e"||E.edge==="se")&&l.style.setProperty("width",`${m}px`,"important"),(E.edge==="s"||E.edge==="se")&&l.style.setProperty("height",`${I}px`,"important"),!0},j=()=>{if(q)return;let T=d();T===l&&T?.isConnected||(U(),O(),l=T,l?.isConnected?H(l):C.forEach(w=>w.style.setProperty("display","none","important")))},te=e.MutationObserver,ne=typeof te=="function"?new te(j):null;return ne?.observe(c.documentElement,{attributeFilter:["data-vcp-edit-key"],attributes:!0,childList:!0,subtree:!0}),{begin(T,w){if(q||E||!l?.isConnected)return null;let M=l.getBoundingClientRect();return E={sessionId:`resize-${i}-${T.pointerId}`,pointerId:T.pointerId,edge:w,startX:Number(T.clientX),startY:Number(T.clientY),currentX:Number(T.clientX),currentY:Number(T.clientY),startWidth:M.width,startHeight:M.height,widthValue:l.style.getPropertyValue("width"),widthPriority:l.style.getPropertyPriority("width"),heightValue:l.style.getPropertyValue("height"),heightPriority:l.style.getPropertyPriority("height"),captureTarget:T.target},re("start",M.width,M.height)},update:X,finish(T,w){if(!E||T.pointerId!==E.pointerId)return null;w==="commit"&&X(T);let M=Math.max(1,Math.round(E.startWidth+Number(T.clientX)-E.startX)),m=Math.max(1,Math.round(E.startHeight+Number(T.clientY)-E.startY)),I=re(w,w==="commit"?M:E.startWidth,w==="commit"?m:E.startHeight),k=E.captureTarget,_=E.pointerId;return w==="cancel"&&$(),E=null,k?.releasePointerCapture?.(_),I},cleanup(){q||(q=!0,ne?.disconnect(),U(),O(),l=null,C.forEach(T=>T.remove()),R.remove())}}}function xr(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 gs(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 ys({message:e,sendEvent:t,sendResponse:n,subscriptions:r,getCurrentDocument:i,setCurrentDocument:o,onBridgeRequestError:s,nextRouteReadySequence:c,windowLike:u}){let a=u.__VCP_SITE_EDIT__;if(!a){n({type:"response",ok:!1,error:"Site edit bridge is not ready in preview frame"});return}let d=()=>{if(u.__VCP_SITE_EDIT__!==a)throw new Error("SITE_EDIT_COMPOSITION_SESSION_MISMATCH: navigation changed while reading the document")};try{switch(e.kind){case"bridge-initialize-session":{let l=u.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(l?.compositionKey&&Ge(e.payload.composition)!==l.compositionKey&&(!l.composition||Ge(e.payload.composition)!==se(l.composition)))throw new Error("SITE_EDIT_COMPOSITION_SESSION_MISMATCH: navigation changed");let h,p=!1;if(l?.composition)try{let R=await a.getDocument(e.payload.composition),C=await a.getHistoryStatus(e.payload.composition);h={...R,composition:R.data.composition,data:{document:R.data,historyStatus:C.data}},p=!0}catch(R){if(!Ne(R,"").includes("SITE_EDIT_COMPOSITION_SESSION_REQUIRED"))throw R}h??=await a.initializeSession({composition:e.payload.composition}),d(),o?.(h.data.document),p||Hr(u,{composition:h.data.document.composition,editEngineVersion:"unknown",sequence:c(),version:h.data.document.version}),n({type:"response",ok:!0,result:h});return}case"bridge-get-document":{let l=await a.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 a.getHistoryStatus(e.payload.composition)});return;case"bridge-get-style-context":n({type:"response",ok:!0,result:await a.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=a.ensureDocumentVersion?await a.ensureDocumentVersion(e.payload.composition,Number(e.payload.minVersion)):await a.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=a.acknowledgeDocumentVersion?await a.acknowledgeDocumentVersion(e.payload.composition,Number(e.payload.version)):await a.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 a.getObjectEditContext(e.payload.key,e.payload.composition,e.payload.selectionRef)});return;case"bridge-get-class-name-source":{let l=await a.getClassNameSource(e.payload.key,e.payload.composition);n({type:"response",ok:!0,result:bs(l,e.payload.key,u.document,i?.()??null)});return}case"bridge-get-source-tree":n({type:"response",ok:!0,result:await a.getSourceTree(e.payload.composition)});return;case"bridge-get-source-file":n({type:"response",ok:!0,result:await a.getSourceFile({path:e.payload.path,composition:e.payload.composition})});return;case"bridge-resolve-source-location":n({type:"response",ok:!0,result:await a.resolveSourceLocation({key:e.payload.key,composition:e.payload.composition})});return;case"bridge-execute":{let l=await a.execute(e.payload.request);if(l.ok&&a.acknowledgeDocumentVersion&&gs(e.payload.request)){let h=await a.acknowledgeDocumentVersion(e.payload.composition,l.data.resultVersion);d(),o?.(h.data)}n({type:"response",ok:!0,result:l});return}case"bridge-undo":n({type:"response",ok:!0,result:await a.undo(e.payload.composition)});return;case"bridge-redo":n({type:"response",ok:!0,result:await a.redo(e.payload.composition)});return;case"bridge-subscribe":{let l=e.payload.subscriptionId;r.get(l)?.();let h=a.subscribe(p=>{t({kind:"bridge-event",payload:{composition:p.composition,event:p,subscriptionId:l}})});r.set(l,h),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){u.__VCP_SITE_EDIT__===a&&s?.(l,e),n({type:"response",ok:!1,error:Ts(l)})}}function bs(e,t,n,r){if(!e.ok)return e;let i=ye(n,{key:t},r),o=i?Ss(i):null;return o?{...e,data:{...e.data,computedStyle:{...e.data.computedStyle??{},...o}}}:e}function Ss(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 Es(e,t,n=()=>e.location.pathname){let r=e.history.pushState,i=e.history.replaceState,o=n(),s=()=>{let a=n();a!==o&&(o=a,t())},c=()=>s(),u=()=>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",u),()=>{e.history.pushState=r,e.history.replaceState=i,e.removeEventListener("popstate",c),e.removeEventListener("hashchange",u)}}function Is(e){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>requestAnimationFrame(e));return}setTimeout(e,0)}function Nt(e,t){return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(t):e.setTimeout(t,0)}function wt(e,t){if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(t);return}e.clearTimeout(t)}function Hr(e,t){e.dispatchEvent(new CustomEvent(ln,{detail:t}))}function Cs(e,t){e.dispatchEvent(new CustomEvent(dn,{detail:t}))}function vs(e){return e?e.getConnectionState?e.getConnectionState()==="open":!0:!1}function Rs(e,t){return se(e.composition)===t}function xs(e){return Ne(e,"").includes(Mr)}function Ne(e,t){return e instanceof Error&&e.message?e.message:typeof e=="string"&&e?e:t}function zr(e){let t=Ne(e,"");return/websocket|readyState|not open|disconnected|bridge request timed out|network|econnreset|broken pipe|socket closed/i.test(t)}function Ts(e){let t=Ne(e,"Site edit bridge request failed");return/bridge request timed out/i.test(t)?"Site edit bridge request timed out":zr(t)?"Site edit bridge disconnected":t}function $r(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 _s(e){let t=$r(e);if(t)return t===$e||t===Je;let n=Ne(e,"");return n.includes($e)||n.includes(Je)}function We(e){if(Ne(e,"").includes("SITE_EDIT_RUNTIME_RELOAD_REQUIRED"))return!0;if($r(e))return!1;let t=Ne(e,"");return/\b(?:bridge(?: session)?|websocket)\s+authentication\b|\bbridge\s+(?:session\s+)?key\b/i.test(t)}function Ur(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function gn(e){return $i.has(jr(e))}function As(e){return Ui.has(jr(e))}function Wr(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:As(e.tagName),canInsertChild:gn(e.tagName),canMove:!1,canRemove:!1}}function jr(e){return e?.trim().toLowerCase()??""}function Tr(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 Ps(e,t,n){let r=ye(e,t.ref,n);if(!r)return!1;if(typeof t.ref.textSegmentIndex=="number"){let i=Ns(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 Ns(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!kt(r)||(r.textContent??"").trim().length===0)){if(n===t)return r;n+=1}return null}function ws(e,t,n,r,i){let o=at(e,t,n,r),s=Bt(o);if(!s)return null;let c=s.getAttribute("data-vcp-edit-key")??"",u=ge(e,s,r),a=i?.(u.key)??i?.(c);if(!Wr({operationSummary:a?.operationSummary,tagName:s.tagName,fallbackMode:"preview"}).canUpdateText)return null;let l=ks(e,t,n,s);if(l){let h=Os(s,l);if(h!==null)return{element:s,textNode:l,textSegmentIndex:h}}return Ft(s)?null:{element:s}}function ks(e,t,n,r){let i=Ds(e,t,n);return!i||i.parentElement!==r?null:i}function Ds(e,t,n){let r=e,o=r.caretPositionFromPoint?.(t,n)?.offsetNode??null;if(kt(o))return o;let c=r.caretRangeFromPoint?.(t,n)?.startContainer??null;return kt(c)?c:null}function Os(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!kt(r)||(r.textContent??"").trim().length===0)){if(r===t)return n;n+=1}return null}function kt(e){return e?.nodeType===3}function Bs(e,t,n){return(typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean))[0]??null}function Ms(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:Fs(e,r),ref:Dt(e,r,n),rect:Ve(r.getBoundingClientRect()),targetIsSectionRoot:t===r}}function Fs(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,Gr(e,null).findIndex(i=>i.element===t))}function Gr(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:Dt(e,n,t),rect:Ve(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 Vs(e,t,n,r){if(n?.pageComposition.status!=="supported")return null;let i=Gr(e,n),o=i[0],s=i.at(-1);if(!o||!s)return null;let c=new Set(n.pageComposition.placements.map(p=>`${p.placementUnitKey}\0${p.relation}`)),u=p=>r?.(p)??n.entries.find(R=>R.key===p)??null,a=(p,R,C)=>{let x=u(p.ref.key)?.pageCompositionUnitKey;return!x||!c.has(`${x}\0${R}`)?null:{anchorBlockId:p.blockId,positionIndex:C,anchorRef:p.ref,placement:R,boundary:{top:R==="before"?p.rect.top:p.rect.top+p.rect.height,left:p.rect.left,width:p.rect.width}}},d=[],l=a(o,"before",0);l&&d.push(l),i.slice(1).forEach((p,R)=>{let C=R+1,x=a(p,"before",C);if(x){d.push(x);return}let A=i[R],O=A?a(A,"after",C):null;O&&d.push(O)});let h=a(s,"after",i.length);return h&&d.push(h),d.find(({boundary:p})=>t.clientX>=p.left&&t.clientX<=p.left+p.width&&Math.abs(t.clientY-p.top)<=pr)??null}function at(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&&bn(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(yn(t))return n??t;!qs(r)&&!n&&(n=t)}t=t.parentElement}return n}function yn(e){return e.getAttribute(zi)!==null}function qs(e){return Ks(e.split("::")[0]??"")}function Ks(e){if(!e)return!1;let t=Hs(e);return t===xt||t.startsWith(`${xt}/`)||t.includes(`/${xt}/`)||t.endsWith(`/${xt}`)}function Hs(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 ge(e,t,n){let r=t.getAttribute("data-vcp-edit-key")??"",i=Xr(Jr(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${no(r)}"]`))),n,r);if(i.length<=1)return{key:_r(n,r,0)};let o=i.indexOf(t);return o>=0?{key:_r(n,r,o),instanceIndex:o,instanceCount:i.length}:{key:r}}function Dt(e,t,n){return ge(e,t,n)}function ye(e,t,n){let r=ut(t.key)??t.key,i=Xr(Jr(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${no(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=(ut(t.key)??t.key)!==t.key;if(o!==null&&!s)return i[o]??null;let c=zs(n,t.key);return c!==null&&c>=0&&c<i.length?i[c]??null:o!==null?i[o]??null:i[0]??null}function _r(e,t,n){return Yr(e,t)[n]?.key??t}function zs(e,t){let n=ut(t);if(!n)return null;let i=Yr(e,n).findIndex(o=>o.key===t);return i>=0?i:null}function Yr(e,t){return(e?.entries??[]).filter(n=>(ut(n.key)??n.key)===t)}function Xr(e,t,n){let r=Lr(t,n);return r?e.filter(i=>i.tagName.toLowerCase()===r):e}function bn(e,t,n){let r=Lr(t,n);return!r||e.tagName.toLowerCase()===r}function Lr(e,t){return null}var $s=2,Us=4;function Jr(e){return[...e].sort((t,n)=>{if(t===n)return 0;let r=typeof t.compareDocumentPosition=="function"?t.compareDocumentPosition(n):0;return(r&Us)!==0?-1:(r&$s)!==0?1:0})}function ut(e){if(typeof e!="string"||e.length===0)return e??null;let t=e;for(;;){let n=t.lastIndexOf(Er);if(n<0)break;let r=Number(t.slice(n+Er.length));if(!Number.isInteger(r)||r<0)return e;t=t.slice(0,n)}return t}function Mt(e){let n=e.ownerDocument?.defaultView?.getComputedStyle(e);return{...Sn(n),paddingTop:fe(n?.paddingTop),paddingRight:fe(n?.paddingRight),paddingBottom:fe(n?.paddingBottom),paddingLeft:fe(n?.paddingLeft),borderTopWidth:fe(n?.borderTopWidth),borderRightWidth:fe(n?.borderRightWidth),borderBottomWidth:fe(n?.borderBottomWidth),borderLeftWidth:fe(n?.borderLeftWidth),columnGap:fe(n?.columnGap),rowGap:fe(n?.rowGap)}}function Sn(e){return{marginTop:fe(e?.marginTop,!0),marginRight:fe(e?.marginRight,!0),marginBottom:fe(e?.marginBottom,!0),marginLeft:fe(e?.marginLeft,!0)}}function fe(e,t=!1){let n=Number.parseFloat(e??"");return Number.isFinite(n)?t?n:Math.max(0,n):0}function En(e){let t=e.ownerDocument?.defaultView;return Array.from(e.children).filter(n=>typeof n.getBoundingClientRect=="function").map(n=>({rect:Ve(n.getBoundingClientRect()),margin:Sn(t?.getComputedStyle(n))})).filter(({rect:n})=>n.width>0&&n.height>0)}function Ws(e){return Array.from(e.children).filter(t=>typeof t.getBoundingClientRect=="function").map(t=>Ve(t.getBoundingClientRect())).filter(t=>t.width>0&&t.height>0)}var Ar=new WeakMap,Pr=0;function st(e){let t=Ar.get(e);if(t)return t;Pr+=1;let n=`runtime-node-${Pr}`;return Ar.set(e,n),n}function Qr(e,t,n){let r=n??e.ownerDocument?.defaultView,i=e.ownerDocument?.defaultView?.getComputedStyle(e),o=Ve(t),s=ee(r?.scrollX),c=ee(r?.scrollY),u=i?.position||"static";return{version:on,runtimeNodeId:st(e),rect:{viewport:o,document:{top:o.top+c,left:o.left+s,width:o.width,height:o.height}},layout:{position:u,transform:i?.transform||"none",containingBlock:Gs(e,u)},scrollContext:{scrollX:s,scrollY:c,viewportWidth:ee(r?.innerWidth),viewportHeight:ee(r?.innerHeight),scrollContainers:js(e)}}}function js(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",u=ee(i.scrollLeft),a=ee(i.scrollTop),d=u!==0||Nr(s)&&ee(i.scrollWidth)>ee(i.clientWidth),l=a!==0||Nr(c)&&ee(i.scrollHeight)>ee(i.clientHeight);(d||l)&&r.push({runtimeNodeId:st(i),scrollLeft:u,scrollTop:a})}i=i.parentElement}return r}function Nr(e){return["auto","scroll","overlay","hidden"].includes(e)}function Gs(e,t){if(t==="fixed"){let r=wr(e.parentElement,!0);return r?{kind:"element",runtimeNodeId:st(r)}:{kind:"viewport"}}if(t==="absolute"){let r=e.offsetParent,i=Ys(r)??wr(e.parentElement,!1);return i?{kind:"element",runtimeNodeId:st(i)}:{kind:"document"}}let n=e.parentElement;return n?{kind:"element",runtimeNodeId:st(n)}:{kind:"document"}}function wr(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 Ys(e){return e&&typeof e.getBoundingClientRect=="function"?e:null}function ve(e,t,n,r="full",i,o="full",s=null){let c=e.getBoundingClientRect(),u=n?.(t.key)??null,a=e.tagName.toLowerCase(),d=o==="full",l=d?lt(e):void 0,h=r==="full"?{textPreview:e.textContent?.trim().slice(0,80),dataset:Ls(e),attributes:Object.fromEntries(e.getAttributeNames().map(E=>[E,e.getAttribute(E)??""]))}:{},p=Wr({operationSummary:u?.operationSummary,tagName:a,fallbackMode:"preview"}),R=yn(e),C=!0,x=u!==null&&hn(u),A=x?null:ac(e),O=x?u.parentKey:A?s&&ut(t.key)?ge(e.ownerDocument,A,s).key:A.getAttribute("data-vcp-edit-key"):null,H=d?En(e):void 0,q=d?Qr(e,c,i):void 0;return{ref:t,key:t.key,detailLevel:r,tagName:a,...u?{sourceKind:"jsx"}:{},...O?{parentKey:O}:{},...u?.pageCompositionUnitKey?{pageCompositionUnitKey:u.pageCompositionUnitKey}:{},...h,runtimeFlags:{selectable:!0,movable:p.canMove,removable:p.canRemove,textEditable:p.canUpdateText,container:R?!1:p.canInsertChild||C&&gn(a)||!!Ft(e)},...q?{layoutSnapshot:q}:{},...l?{layout:l}:{},rect:{top:c.top,left:c.left,width:c.width,height:c.height},...H?{childBoxes:H,childRects:H.map(({rect:E})=>E)}:{},...d?{spacing:Mt(e)}:{}}}function Xs(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 Ls(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 kr(e,t,n,r){let i=e.getBoundingClientRect(),o=Qr(e,i,n);if(r==="light")return{ref:t,layoutSnapshot:o};if(r==="child-rects")return{ref:t,layoutSnapshot:o,childRects:Ws(e)};let s=En(e);return{ref:t,layoutSnapshot:o,childBoxes:s,childRects:s.map(({rect:c})=>c),layout:lt(e),spacing:Mt(e)}}function Dr(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 Js(e,t,n,r,i){let o=t,s=kr(o,n,e,"detailed"),c=Dr(s),u=null,a=null,d="mutation",l=je(e),h=l,p=!1,R=!1,C=({reason:j,sourceEventAt:te,forceEmit:ne=!1,includeDetailedGeometry:T=!1})=>{(u===null||(j==="scroll"?0:1)>=(d==="scroll"?0:1))&&(d=j,l=te),p=p||ne,R=R||T,u===null&&(u=Nt(e,x))},x=()=>{let j=je(e);u=null;let te=d,ne=l,T=p,w=R;p=!1,R=!1;let M=ye(e.document,n,r?.()??null);if(!M)return;M!==o&&($?.unobserve(o),o=M,$?.observe(o),w=!0);let m=w?"detailed":c?"child-rects":"light",I=kr(o,n,e,m),k=I.layoutSnapshot.rect.viewport;k.width<=0||k.height<=0||!T&&!Qs(s,I)||(s=I,m==="detailed"&&(c=Dr(I)),i(te,I,{sourceEventAt:ne,captureStartedAt:j,capturedAt:je(e)}))},A=()=>{a!==null&&(e.clearTimeout(a),a=null)},O=()=>{A(),C({reason:"resize",sourceEventAt:je(e),includeDetailedGeometry:!0})},H=()=>{A(),C({reason:"mutation",sourceEventAt:je(e),includeDetailedGeometry:!0})},q=()=>{h=je(e),C({reason:"scroll",sourceEventAt:h}),A(),a=e.setTimeout(()=>{a=null,C({reason:"scroll",sourceEventAt:h,forceEmit:!0,includeDetailedGeometry:!0})},Fi)},E=e.ResizeObserver,$=typeof E=="function"?new E(O):null;$?.observe(o);let re=e.MutationObserver,U=typeof re=="function"?new re(H):null;U?.observe(e.document.documentElement,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),e.addEventListener("resize",O,{passive:!0}),e.addEventListener("scroll",q,{passive:!0});let X=e.visualViewport;return X?.addEventListener?.("resize",O,{passive:!0}),X?.addEventListener?.("scroll",q,{passive:!0}),e.document.addEventListener("scroll",q,{capture:!0,passive:!0}),e.document.addEventListener("load",H,!0),{initialSnapshot:s,cleanup:()=>{u!==null&&(wt(e,u),u=null),A(),$?.disconnect(),U?.disconnect(),e.removeEventListener("resize",O),e.removeEventListener("scroll",q),X?.removeEventListener?.("resize",O),X?.removeEventListener?.("scroll",q),e.document.removeEventListener("scroll",q,!0),e.document.removeEventListener("load",H,!0)}}}function je(e){let t=e.performance;return t&&Number.isFinite(t.timeOrigin)&&typeof t.now=="function"?t.timeOrigin+t.now():Date.now()}function Qs(e,t){return Zs(e.layoutSnapshot,t.layoutSnapshot)||t.childBoxes!==void 0&&tc(e.childBoxes,t.childBoxes)||t.childRects!==void 0&&nc(e.childRects,t.childRects)||t.layout!==void 0&&pn(e.layout,t.layout)||t.spacing!==void 0&&pn(e.spacing,t.spacing)}function Zs(e,t){return!e||!t?e!==t:e.version!==t.version||e.runtimeNodeId!==t.runtimeNodeId||Ot(e.rect.viewport,t.rect.viewport)||Ot(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||ec(e.scrollContext.scrollContainers,t.scrollContext.scrollContainers)}function ec(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 tc(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>{let s=r[o];return!s||Ot(i.rect,s.rect)||pn(i.margin,s.margin)})}function nc(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>Ot(i,r[o]??i))}function pn(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 Ve(e){return{top:e.top,left:e.left,width:e.width,height:e.height}}function Ot(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 rc(e,t,n,r,i,o,s){let c=e.document,u=at(c,t,n,o);if(!u)return{anchorHit:null,targetParentHit:null,relation:"none",rejectionReason:"no-editable-hit"};let a=i?ye(c,i,o):null;if(a&&fn(u,a))return Fe(c,u,"self-or-descendant",o,s);if(r==="move"){if(!a)return Fe(c,u,"no-accepting-parent",o,s);let C=sc(c,u,a,o,s);if(!C)return Fe(c,u,"no-accepting-parent",o,s);let x=C.kind==="parent"?Br(C.targetParent,t,n):an(C.child,C.targetParent,t,n,"nearest");return x?_t(c,C.child,C.targetParent,x,o,s):Fe(c,u,"no-accepting-parent",o,s)}let d=null,l=!1,h=u,p=u.parentElement;for(;p;){if(p.getAttribute("data-vcp-edit-key")){if(a&&fn(p,a))return Fe(c,u,"self-or-descendant",o,s);let C=Or(p,r,s);if(C==="accept"){d={child:h,targetParent:p};break}C==="blocked"&&(l=!0),h=p}p=p.parentElement}let R=Or(u,r,s);if(R==="accept"){if(d){let C=an(d.child,d.targetParent,t,n,"edge");if(C)return _t(c,d.child,d.targetParent,C,o,s)}return _t(c,u,u,Br(u,t,n),o,s)}if(d){let C=an(d.child,d.targetParent,t,n,"nearest");return _t(c,d.child,d.targetParent,C??"after",o,s)}return R==="blocked"||l?Fe(c,u,"operation-boundary-blocked",o,s):Fe(c,u,"no-accepting-parent",o,s)}function Fe(e,t,n,r,i){return{anchorHit:ve(t,ge(e,t,r),i,"summary",void 0,"full",r),targetParentHit:null,relation:"none",rejectionReason:n}}function _t(e,t,n,r,i,o){let s=ve(t,ge(e,t,i),o,"summary",void 0,"full",i),c=ve(n,ge(e,n,i),o,"summary",void 0,"full",i),u=lt(n).indicatorOrientation,a=r==="append"||r==="prepend"?oc(n.getBoundingClientRect(),u,r):ic(t.getBoundingClientRect(),u,r);return{anchorHit:s,targetParentHit:c,relation:r,indicatorOrientation:u,indicatorBounds:a}}function Or(e,t,n){if(yn(e))return"not-container";let r=e.getAttribute("data-vcp-edit-key")??"",i=n?.(r)??null;if(i)return i.operationSummary.canInsertChild===!0?"accept":Ft(e)?"blocked":"not-container";let o=e.tagName.toLowerCase();return gn(o)?"accept":"not-container"}function an(e,t,n,r,i){let o=lt(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 Br(e,t,n){let r=lt(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 lt(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 oc(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 ic(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 fn(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentElement}return!1}function sc(e,t,n,r,i){return cc(e,t,n,r,i)}function cc(e,t,n,r,i){if(!r)return null;let o=x=>i?.(x)??r.entries.find(A=>A.key===x)??null,s=ge(e,n,r),c=o(s.key);if(!c||!hn(c)||!c.parentKey)return null;let u=c.parentKey;if(!o(u)?.operationSummary.canInsertChild)return null;let d=ye(e,{key:u},r);if(!d)return null;let l=t,h=null;for(;l;){if(l.getAttribute("data-vcp-edit-key")){let x=ge(e,l,r),A=o(x.key);if(A){h=A;break}}l=l.parentElement}if(!h)return null;if(h.key===u)return{kind:"parent",child:d,targetParent:d};let p=h,R=new Set;for(;;){if(!hn(p)||!p.parentKey)return null;if(p.parentKey===u)break;if(R.has(p.key))return null;R.add(p.key);let x=o(p.parentKey);if(!x)return null;p=x}if(p.key===c.key)return null;let C=ye(e,{key:p.key},r);return!C||C===n||fn(C,n)?null:{kind:"sibling",child:C,targetParent:d}}function hn(e){return Object.prototype.hasOwnProperty.call(e,"parentKey")}function ac(e){let t=e.parentElement;for(;t;){if(t.getAttribute("data-vcp-edit-key"))return t;t=t.parentElement}return null}function Ft(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=Ft(n);if(r)return r}return null}function At(e){let t=e.document.documentElement,n=e.document.body;return{scrollX:ee(e.scrollX),scrollY:ee(e.scrollY),scrollWidth:Math.max(ee(t?.scrollWidth),ee(n?.scrollWidth),ee(e.innerWidth)),scrollHeight:Math.max(ee(t?.scrollHeight),ee(n?.scrollHeight),ee(e.innerHeight)),viewportWidth:ee(e.innerWidth),viewportHeight:ee(e.innerHeight)}}function uc(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 lc=500,it=new Map;function dc(e,t){return`${e}:${t.key}:${t.instanceIndex??""}`}function pc(e,t){if(it.size>=lc){let n=it.keys().next().value;n&&it.delete(n)}it.set(e,t)}var ct=new Set;function fc(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 ct)r.has(i)||n?.removeProperty(i);ct.clear();for(let i of r)ct.add(i);bc(e,t.stylesheets??[])}function hc(e){let t=e.documentElement?.style;for(let n of ct)t?.removeProperty(n);ct.clear();for(let n of to(e))n.remove()}function mc(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=Zr(i,s);c&&(o[s]=c)}return o}function Zr(e,t,n=new Set){if(!e||n.has(t))return null;n.add(t);let r=e.getPropertyValue(t).trim();return eo(e,r,n)}function eo(e,t,n){if(!t)return null;let r=gc(t);if(!r)return t;let i=Zr(e,r.name,n);return i||(r.fallback?eo(e,r.fallback,n)??r.fallback:null)}function gc(e){let t=e.trim();if(!t.startsWith("var(")||!t.endsWith(")"))return null;let n=t.slice(4,-1).trim(),r=yc(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 yc(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 bc(e,t){let n=new Set(t.filter(o=>typeof o=="string"&&o.length>0)),r=new Map;for(let o of to(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(Vr,"true"),s.setAttribute("href",o),i.appendChild(s)}}function to(e){return Array.from(e.querySelectorAll(`link[${Vr}]`))}function Sc(e,t,n,r,i={}){let o=i.textNode?Ec(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??"",u=o?void 0:t.innerHTML,a=Ic(s),d=!1,l=()=>{e.document.removeEventListener("pointerdown",p,!0),s.removeEventListener("keydown",R),s.removeEventListener("blur",C),s.removeEventListener("input",x),vc(s,a)},h=A=>{if(d)return;d=!0;let O=s.textContent??"";if(l(),A==="cancel"){o?.restore(c),o||(t.textContent=c),r({kind:"text-edit-cancel",payload:{ref:n}});return}if(o?.restore(O),A==="commit"&&O!==c){i.onCommitSnapshot?.({ref:n,initialText:c,...u!==void 0?{initialHtml:u}:{}}),r({kind:"text-edit-commit",payload:{ref:n,value:O}});return}r({kind:"text-edit-exit",payload:{ref:n}})};function p(A){let O=A.target;O&&s.contains(O)||h("commit")}function R(A){if(A.key==="Escape"){A.preventDefault(),h("cancel");return}A.key==="Enter"&&(A.metaKey||A.ctrlKey)&&(A.preventDefault(),h("commit"))}function C(){h("commit")}function x(){r({kind:"text-edit-input",payload:{ref:n,hit:ve(t,n,void 0,"full")}})}return Cc(s),e.document.addEventListener("pointerdown",p,!0),s.addEventListener("keydown",R),s.addEventListener("blur",C),s.addEventListener("input",x),Tc(s),_c(s,e.document),l}function Ec(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 Ic(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 Cc(e){Rc(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 vc(e,t){un(e,"contenteditable",t.contentEditable),un(e,"spellcheck",t.spellcheck),un(e,"data-vcp-edit-text-editing",t.marker),e.style.cursor=t.cursor,e.style.userSelect=t.userSelect}function Rc(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 un(e,t,n){if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)}function xc(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 Tc(e){try{e.focus({preventScroll:!0})}catch{e.focus()}}function _c(e,t){let n=t.createRange();n.selectNodeContents(e);let r=t.getSelection?.();r?.removeAllRanges(),r?.addRange(n)}function no(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function ee(e){let t=Number(e);return Number.isFinite(t)?t:0}import Ac from"node:http";import dt from"node:fs";import{createHash as co,randomBytes as Pc,timingSafeEqual as Nc}from"node:crypto";import Re from"node:path";import{WebSocket as ao,WebSocketServer as wc}from"ws";import{createPreviewSiteEditEngineRuntime as kc,openFileHistoryStore as Dc,resolveManagedPageTemplateComposition as Oc,scanSiteEditCompositionsFromFiles as Bc}from"@vcp-dev/site-edit-engine";import{resolveNextAppRouteId as Mc,scanNextAppRouterRoutesFromFiles as Fc}from"@vcp-dev/site-edit-engine/next-app-router";import{SiteEditSourceWatcher as Vc}from"@vcp-dev/site-edit-engine/source-watcher";var Vt=class{constructor(){this.tail=Promise.resolve()}run(t){let n=this.tail.then(t,t);return this.tail=n.then(()=>{},()=>{}),n}};import{SiteEditOperationRequestSchema as qc,computeSiteEditCompositionKey as qe}from"@vcp-dev/contracts";var Kc="127.0.0.1",Hc=30218,zc="/__vcp/site-edit/bridge",uo=6*1024*1024,$c=uo*2,Uc=3e3,ro=50,vn=".vcp/current-snapshot.json",oo="__VCP_SITE_EDIT_BRIDGE_SERVERS__";function Du(e){let t=po(e),n=ho(t),r=fo(),i=r.get(n);if(i)return i;let o=new qt(t);r.set(n,o);try{o.start()}catch(s){throw r.delete(n),o.stop(),s}return o}function lo(e,t,n={}){let r=new qt(po(t),e,!1,n);return r.start({listen:!1}),r}var qt=class{constructor(t,n=Ac.createServer((o,s)=>{s.writeHead(404),s.end("VCP site edit bridge server")}),r=!0,i={}){this.options=t,this.server=n,this.closeHttpServerOnStop=r,this.dependencies=i,this.runtime=null,this.activeHistorySessionId=null,this.historySessionTransition=Promise.resolve(),this.mutationQueue=new Vt,this.eventListeners=new Set,this.routes=[],this.compositions=[],this.compositionFiles=[],this.compositionResolutionError=null,this.launchCandidateEntries=null,this.stopWatching=null,this.stopWebSocketServer=null,this.pendingChangedFiles=new Set,this.fileChangeTimer=null,this.isStarted=!1,this.stopping=!1,this.runtimeVersionFloors=new Map,this.activeHistoryStore=null,this.versionPersistence=Promise.resolve()}start(t={}){if(this.isStarted)return;this.stopping=!1;try{dt.mkdirSync(Re.join(this.options.projectRoot,".vcp"),{recursive:!0})}catch(r){console.warn(`[vcp-site-edit] failed to ensure .vcp directory: ${r instanceof Error?r.message:String(r)}`)}this.refreshCompositions(!0),this.isStarted=!0,this.createRuntime();let n=Xc({server:this.server,path:this.options.path,sessionKey:this.options.sessionKey,host:this.options.host,allowedOrigins:this.options.allowedOrigins,engine:this.createBridgeEngine()});this.stopWebSocketServer=n.stop,this.stopWatching=new Vc({projectRoot:this.options.projectRoot,watch_dirs:Wc(this.options.runtime.watch_dirs),interval_ms:this.options.runtime.watch_interval_ms,debounce_ms:this.options.runtime.watch_debounce_ms??ro,max_dirs:this.options.runtime.watch_max_dirs,max_files:this.options.runtime.watch_max_files,max_depth:this.options.runtime.watch_max_depth,max_startup_ms:this.options.runtime.watch_max_startup_ms,on_change:r=>this.handleFileChanged(r),on_batch_change:r=>this.handleFilesChanged(r)}).start(),t.listen!==!1&&this.server.listen(this.options.port,this.options.host)}getHealth(){let t=!!this.runtime&&!this.compositionResolutionError;return{ok:this.isStarted&&t,bridgePath:this.options.path,runtimeReady:t,routesIndexed:this.routes.length,sessionRequired:!!this.options.sessionKey}}stop(){this.stopping=!0,this.stopWatching?.(),this.stopWatching=null,this.flushChangedFiles(),this.fileChangeTimer&&(clearTimeout(this.fileChangeTimer),this.fileChangeTimer=null),this.stopWebSocketServer?.(),this.stopWebSocketServer=null,this.runtime?.dispose(),this.runtime=null,this.compositions=[],this.compositionFiles=[],this.compositionResolutionError=null,this.closeHttpServerOnStop&&this.server.close();let t=fo(),n=ho(this.options);t.get(n)===this&&t.delete(n),this.isStarted=!1}createRuntime(t,n=null){let r=this.runtime;this.activeHistoryStore=t??null;let i=(this.dependencies.createRuntime??kc)({...this.options.tenantId?{tenantId:this.options.tenantId}:{},siteId:this.options.siteId,snapshotId:this.options.snapshotId,projectRoot:this.options.projectRoot,compositions:this.compositions,onEvent:o=>{"version"in o&&typeof o.version=="number"&&this.recordRuntimeVersion(o.version,"composition"in o?o.composition:void 0);for(let s of this.eventListeners)s(o)},...t?{historyStore:t}:{},...this.getInitialDocumentVersions().length>0?{initialDocumentVersions:this.getInitialDocumentVersions()}:{}});this.runtime=i,this.activeHistorySessionId=n,r?.dispose()}createBridgeEngine(){return{resolveComposition:t=>this.resolveComposition(t),initializeSession:t=>this.mutationQueue.run(async()=>{let n=await this.bindHistorySession(this.options.snapshotId);if(!n.ok)throw new Error(`${n.code}: ${n.message}`);let r=Gc(t.composition),i=this.getRuntime(),o=Te(r);await i.initializeComposition(o);let c=i.getDocument(o).data;await this.recordRuntimeVersion(c.version,r);let u=(await i.getHistoryStatus()).data;return{ok:!0,composition:r,data:{document:c,historyStatus:u}}}),getDocument:async t=>{let n=this.getRuntime(),r=Te(t);await n.initializeComposition(r);let i=n.getDocument(r);return await this.recordRuntimeVersion(i.data.version,t),{...i,composition:t}},getHistoryStatus:async t=>({...await this.getRuntime().getHistoryStatus(),composition:t}),getStyleContext:async t=>this.getRuntime().getStyleContext(Te(t)),getObjectEditContext:async(t,n,r)=>this.getRuntime().getObjectEditContext(t,Te(n),r),getClassNameSource:async(t,n)=>this.getRuntime().getClassNameSource(t,Te(n)),getSourceTree:async t=>this.getRuntime().getSourceTree(Te(t)),getSourceFile:async t=>this.getRuntime().getSourceFile({path:t.path,composition:Te(t.composition)}),resolveSourceLocation:async t=>this.getRuntime().resolveSourceLocation({key:t.key,composition:Te(t.composition)}),execute:(t,n)=>this.mutationQueue.run(async()=>{let r=await this.bindHistorySession(this.options.snapshotId);if(!r.ok)return In(r,t);let i=await this.getRuntime().executeOperation(t);return i.data?.resultVersion!==void 0&&await this.recordRuntimeVersion(i.data.resultVersion,i.composition),i}),undo:t=>this.mutationQueue.run(async()=>{let n=await this.bindHistorySession(this.options.snapshotId);if(!n.ok)return In(n,void 0,t);let r=await this.getRuntime().undo();return r.data?.resultVersion!==void 0&&await this.recordRuntimeVersion(r.data.resultVersion,r.composition??t),r.composition?r:{...r,composition:t}}),redo:t=>this.mutationQueue.run(async()=>{let n=await this.bindHistorySession(this.options.snapshotId);if(!n.ok)return In(n,void 0,t);let r=await this.getRuntime().redo();return r.data?.resultVersion!==void 0&&await this.recordRuntimeVersion(r.data.resultVersion,r.composition??t),r.composition?r:{...r,composition:t}}),subscribe:t=>(this.eventListeners.add(t),()=>this.eventListeners.delete(t))}}async bindHistorySession(t){if(!this.options.historyRoot)return{ok:!1,code:"RECOVERY_PERSIST_FAILED",message:"Durable edit history is not configured."};if(this.activeHistorySessionId===t)return{ok:!0};let n=this.historySessionTransition.then(async()=>{if(this.activeHistorySessionId===t)return;let r=await(this.dependencies.openHistoryStore??Dc)(Yc({root:this.options.historyRoot,siteId:this.options.siteId,snapshotId:this.options.snapshotId,editingSessionId:t}));if(!this.isStarted)return;let i=r.readDocumentVersion?await r.readDocumentVersion():0,o=this.compositions[0]?.context;if(o){let s=qe(o);this.runtimeVersionFloors.set(s,Math.max(this.runtimeVersionFloors.get(s)??0,i))}this.createRuntime(r,t)});this.historySessionTransition=n.catch(()=>{});try{return await n,{ok:!0}}catch{return{ok:!1,code:"RECOVERY_PERSIST_FAILED",message:"Durable edit history could not be opened."}}}recordRuntimeVersion(t,n){let r=n?qe(n):null;r&&this.runtimeVersionFloors.set(r,Math.max(this.runtimeVersionFloors.get(r)??0,t));let i=this.activeHistoryStore;if(!i?.writeDocumentVersion)return Promise.resolve();let o=r?this.runtimeVersionFloors.get(r)??t:t;return this.versionPersistence=this.versionPersistence.then(()=>i.writeDocumentVersion(o)).catch(()=>{}),this.versionPersistence}handleFileChanged(t){this.handleFilesChanged([t])}handleFilesChanged(t){for(let r of t)this.pendingChangedFiles.add(r);this.fileChangeTimer&&clearTimeout(this.fileChangeTimer);let n=this.options.runtime.watch_debounce_ms??ro;this.fileChangeTimer=setTimeout(()=>{this.fileChangeTimer=null,this.flushChangedFiles()},n),this.fileChangeTimer?.unref?.()}flushChangedFiles(){if(this.fileChangeTimer&&(clearTimeout(this.fileChangeTimer),this.fileChangeTimer=null),this.pendingChangedFiles.size===0)return;let t=[...this.pendingChangedFiles].sort((n,r)=>n.localeCompare(r));if(this.pendingChangedFiles.clear(),t.some(ra)&&this.scheduleSnapshotIdentityAdvance(),!!this.refreshCompositions(!1))for(let n of t)this.runtime?.notifyFileChanged(n)}scheduleSnapshotIdentityAdvance(){if(this.stopping||!this.isStarted)return;let t=this.readCurrentSnapshotMarker();!t||t===this.options.snapshotId||this.mutationQueue.run(()=>this.advanceSnapshotId(t)).catch(n=>{console.warn(`[vcp-site-edit] snapshot identity advance failed: ${n instanceof Error?n.message:String(n)}`)})}readCurrentSnapshotMarker(){try{let t=dt.readFileSync(Re.join(this.options.projectRoot,vn),"utf8"),n=JSON.parse(t),r=typeof n.snapshot_id=="string"?n.snapshot_id:"";return!r||Rn(r)!==r?(console.warn("[vcp-site-edit] current-snapshot marker has no valid snapshot_id"),null):r}catch(t){return console.warn(`[vcp-site-edit] current-snapshot marker unreadable: ${t instanceof Error?t.message:String(t)}`),null}}async advanceSnapshotId(t){if(this.stopping||!this.isStarted||t===this.options.snapshotId)return;let n=this.options.snapshotId;this.options.snapshotId=t;try{if(this.options.historyRoot){let i=await this.bindHistorySession(t);if(!i.ok)throw new Error(`${i.code}: ${i.message}`)}else this.createRuntime()}catch(i){this.options.snapshotId=n,console.warn(`[vcp-site-edit] snapshot identity advance rolled back to ${n}: ${i instanceof Error?i.message:String(i)}`);return}let r=new Date().toISOString();for(let i of this.compositions){let o={type:"site-edit.snapshot.changed",siteId:this.options.siteId,composition:i.context,snapshotId:t,previousSnapshotId:n,at:r};for(let s of this.eventListeners)try{s(o)}catch(c){console.warn(`[vcp-site-edit] snapshot.changed listener failed: ${c instanceof Error?c.message:String(c)}`)}}try{this.options.onSnapshotIdChanged?.(t,n)}catch(i){console.warn(`[vcp-site-edit] onSnapshotIdChanged callback failed: ${i instanceof Error?i.message:String(i)}`)}}refreshCompositions(t=!1){try{let n=jc(this.options.projectRoot),r=Fc(n),i=r.length>0?r:(this.options.runtime.routes??[]).map(a=>({...a})),o=Bc({files:n});if(o.length===0)throw new Error("No canonical App Router composition is indexed by the preview bridge.");let s=JSON.stringify(o.filter(a=>a.context.effectiveTemplateId!==void 0).map(a=>a.entryFile).sort());if(t&&(this.launchCandidateEntries=s),this.launchCandidateEntries!==s)throw new Error("SITE_EDIT_RUNTIME_RELOAD_REQUIRED: Candidate route collection changed since preview launch");let c=new Map(this.compositions.map(a=>[qe(a.context),a])),u=new Map(o.map(a=>[qe(a.context),a]));if(this.runtime){for(let[a,d]of c){let l=u.get(a);(!l||l.entryFile!==d.entryFile)&&this.runtime.unregisterComposition(Te(d.context))}for(let[a,d]of u){let l=c.get(a);(!l||l.entryFile!==d.entryFile)&&this.runtime.registerComposition(d.context,d.entryFile)}}return this.routes=i,this.compositions=o,this.compositionFiles=n,this.compositionResolutionError=null,!0}catch(n){let r=n instanceof Error?n:new Error(String(n));if(this.compositionResolutionError=r,t)throw r;return!1}}resolveComposition(t){if(this.compositionResolutionError)throw this.compositionResolutionError;let n=Mc(t.routeId,this.routes,this.options.basePath);if(!n)throw new Error(`Route is not indexed by the preview bridge: ${t.routeId}`);let r=this.routes.find(s=>s.routeId===n);if(!r)throw new Error(`Route is not indexed by the preview bridge: ${t.routeId}`);let i=Oc({selector:{routeId:n,...t.templateId!==void 0?{templateId:t.templateId}:{}},files:this.compositionFiles,canonicalEntryFile:r.entryFile}),o=qe(i.context);if(!this.compositions.some(s=>qe(s.context)===o))throw new Error(`Composition is not registered by the preview bridge: ${o}`);return i}getInitialDocumentVersions(){return this.compositions.flatMap(t=>{let n=this.runtimeVersionFloors.get(qe(t.context));return n===void 0?[]:[{composition:t.context,version:n}]})}getRuntime(){if(!this.runtime)throw new Error("VCP site edit preview bridge runtime is not ready");return this.runtime}};function po(e){return{tenantId:e.tenantId,siteId:e.siteId,snapshotId:e.snapshotId,projectRoot:Re.resolve(e.projectRoot??process.cwd()),basePath:e.basePath??"",host:e.host??Kc,port:e.port??Hc,path:e.path??zc,sessionKey:e.sessionKey??na(),historyRoot:e.historyRoot,allowedOrigins:e.allowedOrigins??[],runtime:e.runtime??{},onSnapshotIdChanged:e.onSnapshotIdChanged}}function Wc(e){let t=["app","src/app","components/site","src/components/site","lib/generated","src/lib/generated","public"];return[...new Set([...e?.length?e:t,".vcp"])]}function jc(e){let t=[],n=["app","src/app",".vcp"],r=new Set([".git",".next",".turbo","coverage","dist","node_modules","output","snapshot-store"]),i=o=>{if(!dt.existsSync(o))return;let s;try{s=dt.readdirSync(o,{withFileTypes:!0})}catch{return}for(let c of s){if(c.name.startsWith(".")&&c.name!==".vcp")continue;if(c.isDirectory()){if(r.has(c.name))continue;i(Re.join(o,c.name));continue}if(!c.isFile())continue;let u=Re.join(o,c.name),a="";try{a=dt.readFileSync(u,"utf8")}catch{}t.push({path:Re.relative(e,u).replaceAll(Re.sep,"/"),content:a})}};for(let o of n)i(Re.join(e,o));return t.sort((o,s)=>o.path.localeCompare(s.path))}function Gc(e){if(!e||typeof e!="object"||typeof e.routeId!="string")throw new Error("Normalized composition context is required.");if("effectiveTemplateId"in e)return e;let t=e;return{routeId:t.routeId,...t.templateId?{effectiveTemplateId:t.templateId}:{}}}function Te(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function Yc(e){return Re.join(Re.resolve(e.root),Rn(e.siteId),Rn(e.snapshotId),co("sha256").update(e.editingSessionId).digest("hex").slice(0,32))}function Rn(e){return/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(e)&&e!=="."&&e!==".."?e:co("sha256").update(e).digest("hex").slice(0,32)}function fo(){let e=globalThis;return e[oo]??=new Map,e[oo]}function ho(e){return`${e.projectRoot}:${e.host}:${e.port}:${e.path}:${e.historyRoot??""}`}function In(e,t,n){let r=n??(t?.composition?{routeId:t.composition.routeId,...t.composition.templateId?{effectiveTemplateId:t.composition.templateId}:{}}:void 0);if(!r)throw new Error("A normalized composition is required to construct a mutation result.");return{ok:!1,composition:r,error:{code:e.code,message:e.message},data:{requestId:t?.id??"mutation-context",kind:t?.kind??"update-text",composition:r,target:t?.target??{kind:"node",key:""},resultVersion:t?.documentVersion??0}}}function Xc(e){let t=new wc({maxPayload:uo,noServer:!0}),n=new WeakSet,r=o=>{new yt({socket:new xn(o),engine:e.engine,validateOperationRequest:s=>qc.safeParse(s).success})},i=(o,s,c)=>{if(!Lc(o,e))return;let u=Jc(o,e);if(!u){s.write(`HTTP/1.1 401 Unauthorized\r
42
42
  Connection: close\r
43
43
  \r
44
- `),s.destroy();return}u.authenticatedByHeader&&n.add(o),t.handleUpgrade(o,s,c,a=>{t.emit("connection",a,o)})};return e.server.on("upgrade",i),t.on("connection",(o,s)=>{if(n.has(s)){r(o);return}Jc(o,e.sessionKey,()=>{r(o)})}),t.stop=()=>{e.server.off("upgrade",i);for(let o of t.clients)o.close(1001,"bridge stopped");t.close()},t}var Rn=class{constructor(t){this.socket=t,this.onmessage=null,this.onclose=null,t.on("error",()=>{}),t.on("message",n=>{this.onmessage?.({data:n.toString()})}),t.on("close",()=>{this.onclose?.()})}send(t){if(this.socket.readyState===co.OPEN){if(this.socket.bufferedAmount+Buffer.byteLength(t,"utf8")>zc){this.socket.close(1013,"bridge backpressure");return}this.socket.send(t)}}close(t,n){this.socket.close(t,n)}};function Xc(e,t){return new URL(e.url??"/","http://localhost").pathname===t.path}function Lc(e,t){if(new URL(e.url??"/","http://localhost").searchParams.has("vcp_bridge_key"))return null;let r=In(e.headers["x-vcp-site-edit-key"]),i=ho(r,t.sessionKey),o=In(e.headers.host),s=In(e.headers.origin);return o&&!Qc(o,t.host,s)?null:s?ea(s,o,t.allowedOrigins)?{authenticatedByHeader:i}:null:i?{authenticatedByHeader:!0}:null}function Jc(e,t,n){let r=setTimeout(()=>{e.close(1008,"bridge authentication timeout")},Uc),i,o=()=>{clearTimeout(r),e.off("message",i),e.off("close",o)},s=()=>{o(),e.close(1008,"bridge authentication failed")};i=c=>{try{let u=ae.parseMessage(c.toString());if(u.type!=="auth"||!ho(u.payload.key,t)){s();return}o(),e.readyState===co.OPEN&&e.send(ae.stringifyMessage({type:"auth-ok",payload:{ok:!0}})),n()}catch{s()}},e.on("message",i),e.on("close",o)}function ho(e,t){if(!e)return!1;let n=Buffer.from(e),r=Buffer.from(t);return n.length===r.length&&Pc(n,r)}function Qc(e,t,n){let r=io(e),i=io(t);return r===i||oo(i)&&oo(r)&&(!n||xn(n,e))||Zc(i)&&(!n||xn(n,e))}function Zc(e){return e==="0.0.0.0"||e==="::"}function oo(e){return e==="localhost"||e==="127.0.0.1"||e==="::1"}function ea(e,t,n){return n.includes(e)||(t?xn(e,t):!1)}function xn(e,t){try{return new URL(e).host===mo(t)}catch{return!1}}function io(e){let t=mo(e);return t.startsWith("[")?t.slice(1,t.indexOf("]")):t.split(":").length-1===1?t.split(":",1)[0]??"":t}function mo(e){return e.trim().toLowerCase()}function In(e){return Array.isArray(e)?e[0]:e}function ta(){return Ac(32).toString("base64url")}function na(e){let t=e.replaceAll("\\","/");return t===Cn||t.endsWith(`/${Cn}`)}import Pn from"node:http";import{existsSync as Xe,readFileSync as Ye}from"node:fs";import{randomUUID as ra}from"node:crypto";import{createRequire as So}from"node:module";import{Socket as go}from"node:net";import pt from"node:path";import{basename as Eo,dirname as ft,join as ht}from"node:path";import{fileURLToPath as Io}from"node:url";var oa="next",Co="127.0.0.1",ia=3e3,zt="/__vcp/site-edit/bridge",vo="/__vcp/site-edit/health",sa="probe",ca="render",yo="/_error",Ut="/__vcp/site-edit/client/",aa=`${Ut}auto-bootstrap.js`,Ro='data-vcp-site-edit-bootstrap="true"',ua=["next.config.ts","next.config.mts","next.config.cts","next.config.js","next.config.mjs","next.config.cjs"],la="@vcp-dev/site-edit-engine/webpack-loader",da=/@vcp\/site-edit-engine\/(?:webpack-loader|site-edit-instrumentation-loader)/,pa=[/\bconfig\.webpack\s*=/,/\bwebpack\s*\([^)]*\)\s*\{/,/\bwebpack\s*:\s*(?:async\s*)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)?\s*=>/,/\bwebpack\s*:\s*(?:async\s+)?function\b/],fa=new Set(["auto-bootstrap.js","client.js","composition-key.js","designer-trace.js","document-codec.js","property-preview.js","protocol.js","window-message.js"]);async function Uu(e={},t={}){let n=t.process??process,r=t.createServer??Pn.createServer,i=t.attachBridgeServer??uo,o=t.loadNext??$a,s=pt.resolve(e.projectRoot??process.cwd()),c=e.host??Co,u=e.port??Ya(n.env.PORT)??ia,a=e.bridgePath??zt,d=Ea(a),l=qa(),h=e.basePath??n.env.VCP_SITE_PREVIEW_BASE_PATH??"/",p=(e.tenantId??n.env.VCP_TENANT_ID)?.trim()||void 0,R=await o(s),C=ha(s),x=R({dev:!0,dir:s,hostname:c,port:u,...ma(C)}),A=x.getRequestHandler(),O=e.siteId??n.env.VCP_SITE_ID??"018f6f4d-a9b8-7120-8000-000000000120",H=e.snapshotId??n.env.VCP_SNAPSHOT_ID??Ga(s),q=e.historyRoot??n.env.VCP_SITE_EDIT_HISTORY_ROOT,E=q?.trim()?pt.resolve(q):void 0,U=null,re={launchId:ra(),pid:process.pid,snapshotId:H},$=r((T,w)=>{_a({basePath:h,bridgePath:a,bridgeHealthPath:d,bridgeSessionKey:l,getBridgeHealth:()=>U?.getHealth()??Da(a),launch:re,runRenderProbe:()=>Na(x),handle:A,request:T,response:w}).catch(M=>{console.error(M),w.headersSent||(w.statusCode=500),w.end("site edit preview request failed")})}),X=null,j=null,te=()=>j||(Ht(()=>n.off("SIGINT",ne)),Ht(()=>n.off("SIGTERM",ne)),Ht(()=>X?.()),X=null,Ht(()=>U?.stop()),U=null,j=Promise.allSettled([La($),Ja(()=>x.close())]).then(()=>{}),j),ne=()=>{te()};try{return await x.prepare(),U=i($,{...p?{tenantId:p}:{},siteId:O,snapshotId:H,projectRoot:s,basePath:h,host:c,port:u,path:a,sessionKey:l,...E?{historyRoot:E}:{},onSnapshotIdChanged:T=>{re.snapshotId=T}}),X=ba({server:$,bridgePath:a,handleUpgrade:x.getUpgradeHandler()}),n.on("SIGINT",ne),n.on("SIGTERM",ne),await Xa($,u,c),{bundler:C,close:te,host:c,port:Qa($,u),server:$}}catch(T){throw await te(),T}}function ha(e){let t=ga(e);return t&&ya(t)?"webpack":"turbopack"}function ma(e){return e==="webpack"?{webpack:!0}:{turbopack:!0}}function ga(e){for(let t of ua){let n=ht(e,t);if(Xe(n))return Ye(n,"utf8")}return null}function ya(e){return e.includes(la)?!0:da.test(e)&&pa.some(t=>t.test(e))}function ba(e){let t=(n,r,i)=>{Sa(n.url,e.bridgePath)||e.handleUpgrade(n,r,i).catch(o=>{console.error(o),r.destroyed||r.destroy()})};return e.server.on("upgrade",t),()=>e.server.off("upgrade",t)}function Sa(e,t){return new URL(e??"/","http://localhost").pathname===t}function Ea(e=zt){if(e===zt)return vo;let t=(e.startsWith("/")?e:`/${e}`).replace(/\/+$/,"");return t.endsWith("/bridge")?`${t.slice(0,-7)}/health`:t?`${t}/health`:"/health"}function Ia(e){let t=JSON.stringify({basePath:e.basePath,launch_id:e.launch?.launchId,snapshot_id:e.launch?.snapshotId,wsPath:e.bridgePath,bridge_session_key:e.bridgeSessionKey,defer_initial_sync:!0,runtime_versions:e.runtimeVersions??Ca()});return`<script type="module" ${Ro}>import { startSiteEditAutoBootstrap } from ${JSON.stringify(aa)};void startSiteEditAutoBootstrap(window, ${t}).catch(() => undefined);</script>`}function Ca(){return{bridge:Tn("@vcp-dev/site-edit-bridge"),contracts:Tn("@vcp-dev/contracts"),engine:Tn("@vcp-dev/site-edit-engine")}}function Tn(e){let t=So(import.meta.url);try{let n=t.resolve(e),r=va(n,e);if(!r)return;let i=JSON.parse(Ye(r,"utf8"));return typeof i.version=="string"?i.version:void 0}catch{return}}function va(e,t){let n=pt.parse(e).root,r=ft(e);for(;r&&r!==n;){let i=ht(r,"package.json");if(Xe(i))try{if(JSON.parse(Ye(i,"utf8")).name===t)return i}catch{return}r=ft(r)}}function Ra(e,t){if(e.includes(Ro))return e;let n=Ia(t),r=/<\/body\s*>/i.exec(e);return r?`${e.slice(0,r.index)}${n}${e.slice(r.index)}`:`${e}${n}`}function $u(e,t=ft(Io(import.meta.url)),n=Xe){return xo(e,t,n)?.path??null}function xo(e,t=ft(Io(import.meta.url)),n=Xe){let r=new URL(e??"/","http://localhost").pathname;if(!r.startsWith(Ut))return null;let i=r.slice(Ut.length);if(!fa.has(i))return null;let o=Nn(Wa(t),i);if(Eo(t)!=="src")return{path:o,requiresTranspile:!1};let s=Nn(t,i.replace(/\.js$/,".ts"));return n(s)?{path:s,requiresTranspile:!0}:{path:o,requiresTranspile:!1}}async function xa(e,t){let n=xo(e.url);if(!n)return!1;if(!Xe(n.path))return t.writeHead(404),t.end("site edit client asset not found"),!0;let r=n.requiresTranspile?await Ta(Ye(n.path,"utf8")):Ye(n.path);return t.writeHead(200,{"cache-control":"no-store","content-type":"text/javascript; charset=utf-8"}),t.end(r),!0}async function Ta(e){let t=await import("typescript");return t.transpileModule(e,{compilerOptions:{module:t.ModuleKind.ES2022,target:t.ScriptTarget.ES2022}}).outputText}async function _a({basePath:e,bridgePath:t,bridgeHealthPath:n,bridgeSessionKey:r,getBridgeHealth:i,launch:o,runRenderProbe:s,handle:c,request:u,response:a}){if(Aa(u.url,e)){a.statusCode=404,a.end();return}if(await ka(u,a,n,i,o,s)||await xa(u,a))return;let d=Oa(u),l=Ba(u),h=d||l?Va(a,{basePath:e,bridgePath:t,bridgeSessionKey:r,patchNextDevChunk:l,launch:{...o}}):()=>{};try{await c(u,a)}catch(p){throw h(),p}}function Aa(e,t){let n=(e??"/").split(/[?#]/,1)[0]??"/";if(!/(\\|\/\/)/.test(n))return!1;let r;try{r=decodeURIComponent(n).replace(/\\/g,"/").replace(/\/{2,}/g,"/")}catch{return!1}let i=new URL(r,"http://namespace.invalid").pathname,o=t.replace(/\/+$/,"");return(o&&(i===o||i.startsWith(o+"/"))?i.slice(o.length)||"/":i).startsWith("/.vcp")}function Pa(e){let t=e instanceof Error?e.message:String(e),n=e&&typeof e=="object"&&"code"in e?e.code:void 0;return/\.next[/\\]/.test(t)||/chunks[/\\]ssr[/\\]/.test(t)?n==="ENOENT"||n==="MODULE_NOT_FOUND"?{verdict:"artifact_broken",detail:t}:t.includes("Cannot find module")?{verdict:"artifact_broken",detail:t}:{verdict:"inconclusive",detail:t}:{verdict:"inconclusive",detail:t}}async function Na(e){let t=new Pn.IncomingMessage(new go);t.method="GET",t.url=yo,t.headers={host:Co};let n=new Pn.ServerResponse(t);n.assignSocket(new go);try{return await e.renderToHTML(t,n,yo,{}),{verdict:"ok"}}catch(r){return Pa(r)}finally{try{let r=n.socket;r&&(n.detachSocket(r),r.destroy())}catch{}}}function wa(e){return new URL(e??"/","http://localhost").searchParams.get(sa)===ca}async function ka(e,t,n,r,i,o){if(e.method!=="GET"||new URL(e.url??"/","http://localhost").pathname!==n)return!1;let c=r(),u=wa(e.url)?await o():void 0,a={...c,launch:i,...u?{render:u}:{}};return t.writeHead(c.ok?200:503,{"cache-control":"no-store","content-type":"application/json; charset=utf-8"}),t.end(JSON.stringify(a)),!0}function Da(e){return{ok:!1,bridgePath:e,runtimeReady:!1,routesIndexed:0,sessionRequired:!0}}function Oa(e){return Ma(e)?(e.headers["accept-encoding"]="identity",!0):!1}function Ba(e){return Fa(e)?(e.headers["accept-encoding"]="identity",!0):!1}function Ma(e){if(e.method!=="GET")return!1;let t=new URL(e.url??"/","http://localhost");if(e.headers["x-template-id"]!==void 0&&!t.searchParams.has("template_id"))return!1;let n=t.pathname;if(n.startsWith("/_next/")||n.startsWith(Ut)||n===zt||n===vo)return!1;let r=e.headers.accept??"";return r===""||r.includes("text/html")}function Fa(e){if(e.method!=="GET"||!String(e.headers["user-agent"]??"").includes("Firefox"))return!1;let n=new URL(e.url??"/","http://localhost").pathname;return n.startsWith("/_next/static/chunks/")&&n.endsWith(".js")}function Va(e,t){let n=[],r=e,i=r.flushHeaders.bind(e),o=r.write.bind(e),s=r.end.bind(e),c=!1;r.flushHeaders=()=>{};let u=()=>{if(t.patchNextDevChunk||c)return!1;let a=Buffer.concat(n);if(!/<body\b[^>]*>/iu.test(a.toString("utf8")))return!1;let d=bo(e,a,t);return d!==a&&!e.headersSent&&e.removeHeader("content-length"),o(d),n.length=0,c=!0,!0};return r.write=(a,d,l)=>c?(a!==void 0&&o(_n(a,An(d))),Kt(d),Kt(l),!0):(a!==void 0&&(n.push(_n(a,An(d))),u()),Kt(d),Kt(l),!0),r.end=(a,d,l)=>{let h=typeof a=="function"?void 0:a;if(c)return r.write=o,r.end=s,r.flushHeaders=i,h===void 0?typeof a=="function"?s(a):typeof d=="function"?s(d):typeof l=="function"?s(l):s():typeof d=="function"?s(h,d):typeof l=="function"?s(h,d,l):s(h,d);h!==void 0&&n.push(_n(h,An(d))),r.write=o,r.end=s,r.flushHeaders=i;let p=Buffer.concat(n),R=bo(e,p,t);R!==p&&!e.headersSent&&e.removeHeader("content-length");let C=typeof a=="function"?a:typeof d=="function"?d:typeof l=="function"?l:void 0;return C?s(R,C):s(R)},()=>{r.write=o,r.end=s,r.flushHeaders=i}}function bo(e,t,n){if(Ka(e,t))return Buffer.from(Ra(t.toString("utf8"),n));if(n.patchNextDevChunk&&Ha(e)){let r=t.toString("utf8"),i=za(r);if(i!==r)return Buffer.from(i)}return t}function qa(){let e=new Uint8Array(32);return globalThis.crypto.getRandomValues(e),Buffer.from(e).toString("base64url")}function Ka(e,t){if(e.statusCode<200||e.statusCode>=300)return!1;let n=e.getHeader("content-type"),r=Array.isArray(n)?n.join(";"):String(n??"");return t.toString("utf8",0,256).includes("<html")&&(r===""||r.includes("text/html"))}function Ha(e){if(e.statusCode<200||e.statusCode>=300)return!1;let t=e.getHeader("content-type"),n=Array.isArray(t)?t.join(";"):String(t??"");return n===""||n.includes("javascript")||n.includes("ecmascript")}function za(e){return[["debugChannel = createDebugChannel(undefined);","debugChannel = undefined;"],["if (isStreamErrorOrUnfinished(ctr)) {","if (false) {"],["return ctr.desiredSize === null || ctr.desiredSize < 0;","return false;"],[["findSourceMapURL: _appfindsourcemapurl.findSourceMapURL,"," debugChannel,"," startTime: 0"].join(`
44
+ `),s.destroy();return}u.authenticatedByHeader&&n.add(o),t.handleUpgrade(o,s,c,a=>{t.emit("connection",a,o)})};return e.server.on("upgrade",i),t.on("connection",(o,s)=>{if(n.has(s)){r(o);return}Qc(o,e.sessionKey,()=>{r(o)})}),t.stop=()=>{e.server.off("upgrade",i);for(let o of t.clients)o.close(1001,"bridge stopped");t.close()},t}var xn=class{constructor(t){this.socket=t,this.onmessage=null,this.onclose=null,t.on("error",()=>{}),t.on("message",n=>{this.onmessage?.({data:n.toString()})}),t.on("close",()=>{this.onclose?.()})}send(t){if(this.socket.readyState===ao.OPEN){if(this.socket.bufferedAmount+Buffer.byteLength(t,"utf8")>$c){this.socket.close(1013,"bridge backpressure");return}this.socket.send(t)}}close(t,n){this.socket.close(t,n)}};function Lc(e,t){return new URL(e.url??"/","http://localhost").pathname===t.path}function Jc(e,t){if(new URL(e.url??"/","http://localhost").searchParams.has("vcp_bridge_key"))return null;let r=Cn(e.headers["x-vcp-site-edit-key"]),i=mo(r,t.sessionKey),o=Cn(e.headers.host),s=Cn(e.headers.origin);return o&&!Zc(o,t.host,s)?null:s?ta(s,o,t.allowedOrigins)?{authenticatedByHeader:i}:null:i?{authenticatedByHeader:!0}:null}function Qc(e,t,n){let r=setTimeout(()=>{e.close(1008,"bridge authentication timeout")},Uc),i,o=()=>{clearTimeout(r),e.off("message",i),e.off("close",o)},s=()=>{o(),e.close(1008,"bridge authentication failed")};i=c=>{try{let u=ae.parseMessage(c.toString());if(u.type!=="auth"||!mo(u.payload.key,t)){s();return}o(),e.readyState===ao.OPEN&&e.send(ae.stringifyMessage({type:"auth-ok",payload:{ok:!0}})),n()}catch{s()}},e.on("message",i),e.on("close",o)}function mo(e,t){if(!e)return!1;let n=Buffer.from(e),r=Buffer.from(t);return n.length===r.length&&Nc(n,r)}function Zc(e,t,n){let r=so(e),i=so(t);return r===i||io(i)&&io(r)&&(!n||Tn(n,e))||ea(i)&&(!n||Tn(n,e))}function ea(e){return e==="0.0.0.0"||e==="::"}function io(e){return e==="localhost"||e==="127.0.0.1"||e==="::1"}function ta(e,t,n){return n.includes(e)||(t?Tn(e,t):!1)}function Tn(e,t){try{return new URL(e).host===go(t)}catch{return!1}}function so(e){let t=go(e);return t.startsWith("[")?t.slice(1,t.indexOf("]")):t.split(":").length-1===1?t.split(":",1)[0]??"":t}function go(e){return e.trim().toLowerCase()}function Cn(e){return Array.isArray(e)?e[0]:e}function na(){return Pc(32).toString("base64url")}function ra(e){let t=e.replaceAll("\\","/");return t===vn||t.endsWith(`/${vn}`)}import Nn from"node:http";import{existsSync as Xe,readFileSync as Ye}from"node:fs";import{randomUUID as oa}from"node:crypto";import{createRequire as Eo}from"node:module";import{Socket as yo}from"node:net";import pt from"node:path";import{basename as Io,dirname as ft,join as ht}from"node:path";import{fileURLToPath as Co}from"node:url";var ia="next",vo="127.0.0.1",sa=3e3,zt="/__vcp/site-edit/bridge",Ro="/__vcp/site-edit/health",ca="probe",aa="render",bo="/_error",$t="/__vcp/site-edit/client/",ua=`${$t}auto-bootstrap.js`,xo='data-vcp-site-edit-bootstrap="true"',la=["next.config.ts","next.config.mts","next.config.cts","next.config.js","next.config.mjs","next.config.cjs"],da="@vcp-dev/site-edit-engine/webpack-loader",pa=/@vcp\/site-edit-engine\/(?:webpack-loader|site-edit-instrumentation-loader)/,fa=[/\bconfig\.webpack\s*=/,/\bwebpack\s*\([^)]*\)\s*\{/,/\bwebpack\s*:\s*(?:async\s*)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)?\s*=>/,/\bwebpack\s*:\s*(?:async\s+)?function\b/],ha=new Set(["auto-bootstrap.js","client.js","composition-key.js","designer-trace.js","document-codec.js","property-preview.js","protocol.js","window-message.js"]);async function Uu(e={},t={}){let n=t.process??process,r=t.createServer??Nn.createServer,i=t.attachBridgeServer??lo,o=t.loadNext??Wa,s=pt.resolve(e.projectRoot??process.cwd()),c=e.host??vo,u=e.port??Xa(n.env.PORT)??sa,a=e.bridgePath??zt,d=Ia(a),l=Ka(),h=e.basePath??n.env.VCP_SITE_PREVIEW_BASE_PATH??"/",p=(e.tenantId??n.env.VCP_TENANT_ID)?.trim()||void 0,R=await o(s),C=ma(s),x=R({dev:!0,dir:s,hostname:c,port:u,...ga(C)}),A=x.getRequestHandler(),O=e.siteId??n.env.VCP_SITE_ID??"018f6f4d-a9b8-7120-8000-000000000120",H=e.snapshotId??n.env.VCP_SNAPSHOT_ID??Ya(s),q=e.historyRoot??n.env.VCP_SITE_EDIT_HISTORY_ROOT,E=q?.trim()?pt.resolve(q):void 0,$=null,re={launchId:oa(),pid:process.pid,snapshotId:H},U=r((T,w)=>{Aa({basePath:h,bridgePath:a,bridgeHealthPath:d,bridgeSessionKey:l,getBridgeHealth:()=>$?.getHealth()??Oa(a),launch:re,runRenderProbe:()=>wa(x),handle:A,request:T,response:w}).catch(M=>{console.error(M),w.headersSent||(w.statusCode=500),w.end("site edit preview request failed")})}),X=null,j=null,te=()=>j||(Ht(()=>n.off("SIGINT",ne)),Ht(()=>n.off("SIGTERM",ne)),Ht(()=>X?.()),X=null,Ht(()=>$?.stop()),$=null,j=Promise.allSettled([Ja(U),Qa(()=>x.close())]).then(()=>{}),j),ne=()=>{te()};try{return await x.prepare(),$=i(U,{...p?{tenantId:p}:{},siteId:O,snapshotId:H,projectRoot:s,basePath:h,host:c,port:u,path:a,sessionKey:l,...E?{historyRoot:E}:{},onSnapshotIdChanged:T=>{re.snapshotId=T}}),X=Sa({server:U,bridgePath:a,handleUpgrade:x.getUpgradeHandler()}),n.on("SIGINT",ne),n.on("SIGTERM",ne),await La(U,u,c),{bundler:C,close:te,host:c,port:Za(U,u),server:U}}catch(T){throw await te(),T}}function ma(e){let t=ya(e);return t&&ba(t)?"webpack":"turbopack"}function ga(e){return e==="webpack"?{webpack:!0}:{turbopack:!0}}function ya(e){for(let t of la){let n=ht(e,t);if(Xe(n))return Ye(n,"utf8")}return null}function ba(e){return e.includes(da)?!0:pa.test(e)&&fa.some(t=>t.test(e))}function Sa(e){let t=(n,r,i)=>{Ea(n.url,e.bridgePath)||e.handleUpgrade(n,r,i).catch(o=>{console.error(o),r.destroyed||r.destroy()})};return e.server.on("upgrade",t),()=>e.server.off("upgrade",t)}function Ea(e,t){return new URL(e??"/","http://localhost").pathname===t}function Ia(e=zt){if(e===zt)return Ro;let t=(e.startsWith("/")?e:`/${e}`).replace(/\/+$/,"");return t.endsWith("/bridge")?`${t.slice(0,-7)}/health`:t?`${t}/health`:"/health"}function Ca(e){let t=JSON.stringify({basePath:e.basePath,launch_id:e.launch?.launchId,snapshot_id:e.launch?.snapshotId,wsPath:e.bridgePath,bridge_session_key:e.bridgeSessionKey,defer_initial_sync:!0,runtime_versions:e.runtimeVersions??va()});return`<script type="module" ${xo}>import { startSiteEditAutoBootstrap } from ${JSON.stringify(ua)};void startSiteEditAutoBootstrap(window, ${t}).catch(() => undefined);</script>`}function va(){return{bridge:_n("@vcp-dev/site-edit-bridge"),contracts:_n("@vcp-dev/contracts"),engine:_n("@vcp-dev/site-edit-engine")}}function _n(e){let t=Eo(import.meta.url);try{let n=t.resolve(e),r=Ra(n,e);if(!r)return;let i=JSON.parse(Ye(r,"utf8"));return typeof i.version=="string"?i.version:void 0}catch{return}}function Ra(e,t){let n=pt.parse(e).root,r=ft(e);for(;r&&r!==n;){let i=ht(r,"package.json");if(Xe(i))try{if(JSON.parse(Ye(i,"utf8")).name===t)return i}catch{return}r=ft(r)}}function xa(e,t){if(e.includes(xo))return e;let n=Ca(t),r=/<\/body\s*>/i.exec(e);return r?`${e.slice(0,r.index)}${n}${e.slice(r.index)}`:`${e}${n}`}function Wu(e,t=ft(Co(import.meta.url)),n=Xe){return To(e,t,n)?.path??null}function To(e,t=ft(Co(import.meta.url)),n=Xe){let r=new URL(e??"/","http://localhost").pathname;if(!r.startsWith($t))return null;let i=r.slice($t.length);if(!ha.has(i))return null;let o=wn(ja(t),i);if(Io(t)!=="src")return{path:o,requiresTranspile:!1};let s=wn(t,i.replace(/\.js$/,".ts"));return n(s)?{path:s,requiresTranspile:!0}:{path:o,requiresTranspile:!1}}async function Ta(e,t){let n=To(e.url);if(!n)return!1;if(!Xe(n.path))return t.writeHead(404),t.end("site edit client asset not found"),!0;let r=n.requiresTranspile?await _a(Ye(n.path,"utf8")):Ye(n.path);return t.writeHead(200,{"cache-control":"no-store","content-type":"text/javascript; charset=utf-8"}),t.end(r),!0}async function _a(e){let t=await import("typescript");return t.transpileModule(e,{compilerOptions:{module:t.ModuleKind.ES2022,target:t.ScriptTarget.ES2022}}).outputText}async function Aa({basePath:e,bridgePath:t,bridgeHealthPath:n,bridgeSessionKey:r,getBridgeHealth:i,launch:o,runRenderProbe:s,handle:c,request:u,response:a}){if(Pa(u.url,e)){a.statusCode=404,a.end();return}if(await Da(u,a,n,i,o,s)||await Ta(u,a))return;let d=Ba(u),l=Ma(u),h=d||l?qa(a,{basePath:e,bridgePath:t,bridgeSessionKey:r,patchNextDevChunk:l,launch:{...o}}):()=>{};try{await c(u,a)}catch(p){throw h(),p}}function Pa(e,t){let n=(e??"/").split(/[?#]/,1)[0]??"/";if(!/(\\|\/\/)/.test(n))return!1;let r;try{r=decodeURIComponent(n).replace(/\\/g,"/").replace(/\/{2,}/g,"/")}catch{return!1}let i=new URL(r,"http://namespace.invalid").pathname,o=t.replace(/\/+$/,"");return(o&&(i===o||i.startsWith(o+"/"))?i.slice(o.length)||"/":i).startsWith("/.vcp")}function Na(e){let t=e instanceof Error?e.message:String(e),n=e&&typeof e=="object"&&"code"in e?e.code:void 0;return/\.next[/\\]/.test(t)||/chunks[/\\]ssr[/\\]/.test(t)?n==="ENOENT"||n==="MODULE_NOT_FOUND"?{verdict:"artifact_broken",detail:t}:t.includes("Cannot find module")?{verdict:"artifact_broken",detail:t}:{verdict:"inconclusive",detail:t}:{verdict:"inconclusive",detail:t}}async function wa(e){let t=new Nn.IncomingMessage(new yo);t.method="GET",t.url=bo,t.headers={host:vo};let n=new Nn.ServerResponse(t);n.assignSocket(new yo);try{return await e.renderToHTML(t,n,bo,{}),{verdict:"ok"}}catch(r){return Na(r)}finally{try{let r=n.socket;r&&(n.detachSocket(r),r.destroy())}catch{}}}function ka(e){return new URL(e??"/","http://localhost").searchParams.get(ca)===aa}async function Da(e,t,n,r,i,o){if(e.method!=="GET"||new URL(e.url??"/","http://localhost").pathname!==n)return!1;let c=r(),u=ka(e.url)?await o():void 0,a={...c,launch:i,...u?{render:u}:{}};return t.writeHead(c.ok?200:503,{"cache-control":"no-store","content-type":"application/json; charset=utf-8"}),t.end(JSON.stringify(a)),!0}function Oa(e){return{ok:!1,bridgePath:e,runtimeReady:!1,routesIndexed:0,sessionRequired:!0}}function Ba(e){return Fa(e)?(e.headers["accept-encoding"]="identity",!0):!1}function Ma(e){return Va(e)?(e.headers["accept-encoding"]="identity",!0):!1}function Fa(e){if(e.method!=="GET")return!1;let t=new URL(e.url??"/","http://localhost");if(e.headers["x-template-id"]!==void 0&&!t.searchParams.has("template_id"))return!1;let n=t.pathname;if(n.startsWith("/_next/")||n.startsWith($t)||n===zt||n===Ro)return!1;let r=e.headers.accept??"";return r===""||r.includes("text/html")}function Va(e){if(e.method!=="GET"||!String(e.headers["user-agent"]??"").includes("Firefox"))return!1;let n=new URL(e.url??"/","http://localhost").pathname;return n.startsWith("/_next/static/chunks/")&&n.endsWith(".js")}function qa(e,t){let n=[],r=e,i=r.flushHeaders.bind(e),o=r.write.bind(e),s=r.end.bind(e),c=!1;r.flushHeaders=()=>{};let u=()=>{if(t.patchNextDevChunk||c)return!1;let a=Buffer.concat(n);if(!/<body\b[^>]*>/iu.test(a.toString("utf8")))return!1;let d=So(e,a,t);return d!==a&&!e.headersSent&&e.removeHeader("content-length"),o(d),n.length=0,c=!0,!0};return r.write=(a,d,l)=>c?(a!==void 0&&o(An(a,Pn(d))),Kt(d),Kt(l),!0):(a!==void 0&&(n.push(An(a,Pn(d))),u()),Kt(d),Kt(l),!0),r.end=(a,d,l)=>{let h=typeof a=="function"?void 0:a;if(c)return r.write=o,r.end=s,r.flushHeaders=i,h===void 0?typeof a=="function"?s(a):typeof d=="function"?s(d):typeof l=="function"?s(l):s():typeof d=="function"?s(h,d):typeof l=="function"?s(h,d,l):s(h,d);h!==void 0&&n.push(An(h,Pn(d))),r.write=o,r.end=s,r.flushHeaders=i;let p=Buffer.concat(n),R=So(e,p,t);R!==p&&!e.headersSent&&e.removeHeader("content-length");let C=typeof a=="function"?a:typeof d=="function"?d:typeof l=="function"?l:void 0;return C?s(R,C):s(R)},()=>{r.write=o,r.end=s,r.flushHeaders=i}}function So(e,t,n){if(Ha(e,t))return Buffer.from(xa(t.toString("utf8"),n));if(n.patchNextDevChunk&&za(e)){let r=t.toString("utf8"),i=$a(r);if(i!==r)return Buffer.from(i)}return t}function Ka(){let e=new Uint8Array(32);return globalThis.crypto.getRandomValues(e),Buffer.from(e).toString("base64url")}function Ha(e,t){if(e.statusCode<200||e.statusCode>=300)return!1;let n=e.getHeader("content-type"),r=Array.isArray(n)?n.join(";"):String(n??"");return t.toString("utf8",0,256).includes("<html")&&(r===""||r.includes("text/html"))}function za(e){if(e.statusCode<200||e.statusCode>=300)return!1;let t=e.getHeader("content-type"),n=Array.isArray(t)?t.join(";"):String(t??"");return n===""||n.includes("javascript")||n.includes("ecmascript")}function $a(e){return[["debugChannel = createDebugChannel(undefined);","debugChannel = undefined;"],["if (isStreamErrorOrUnfinished(ctr)) {","if (false) {"],["return ctr.desiredSize === null || ctr.desiredSize < 0;","return false;"],[["findSourceMapURL: _appfindsourcemapurl.findSourceMapURL,"," debugChannel,"," startTime: 0"].join(`
45
45
  `),["unstable_allowPartialStream: true,"," debugChannel,"," startTime: 0"].join(`
46
- `)],[["findSourceMapURL: _appfindsourcemapurl.findSourceMapURL,"," debugChannel,"," startTime: 0"].join("\\n"),["unstable_allowPartialStream: true,"," debugChannel,"," startTime: 0"].join("\\n")],["debugChannel: createDebugChannel && createDebugChannel(requestHeaders)","debugChannel: undefined"],["debugChannel: createDebugChannel && createDebugChannel(headers)","debugChannel: undefined"]].reduce((n,[r,i])=>Ua(n,r,i),e)}function Ua(e,t,n){if(n.length>t.length)throw new Error("Replacement must not be longer than the search string.");return e.replaceAll(t,n.padEnd(t.length," "))}function _n(e,t){return Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e):Buffer.from(String(e),t)}function An(e){return typeof e=="string"?e:void 0}function Kt(e){typeof e=="function"&&e()}async function $a(e){let n=So(ht(e,"package.json"))(oa);return n.default??n}function Wa(e){return Eo(e)!=="src"?e:Nn(ja(e),"dist")}function ja(e){return To(e)?pt.posix.dirname(e):ft(e)}function Nn(e,t){return To(e)?pt.posix.join(e,t):ht(e,t)}function To(e){return e.includes("/")&&!e.includes("\\")}function Ga(e){let t=ht(e,".vcp/current-snapshot.json");if(!Xe(t))return"sandbox_worktree";try{let n=JSON.parse(Ye(t,"utf8"));return typeof n.snapshot_id=="string"&&n.snapshot_id?n.snapshot_id:typeof n.snapshotId=="string"&&n.snapshotId?n.snapshotId:"sandbox_worktree"}catch{return"sandbox_worktree"}}function Ya(e){if(!e)return null;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0&&t<=65535?t:null}function Xa(e,t,n){return new Promise((r,i)=>{e.once("error",i),e.listen(t,n,()=>{e.off("error",i),r()})})}function La(e){return new Promise(t=>{e.close(()=>t())})}function Ht(e){try{e()}catch{}}function Ja(e){try{return e()}catch(t){return Promise.reject(t)}}function Qa(e,t){let n=e.address();return typeof n=="object"&&n?n.port:t}export{zc as SITE_EDIT_BRIDGE_MAX_BUFFERED_BYTES,ao as SITE_EDIT_BRIDGE_MAX_PAYLOAD_BYTES,tu as SITE_EDIT_COMPOSITION_REINITIALIZE_REQUIRED,Br as SITE_EDIT_COMPOSITION_RENDER_MISMATCH,Je as SITE_EDIT_COMPOSITION_SESSION_MISMATCH,Ue as SITE_EDIT_COMPOSITION_SESSION_REQUIRED,lr as SITE_EDIT_FRAME_ANNOUNCE_CHANNEL,ur as SITE_EDIT_FRAME_RUNTIME_CHANNEL,on as SITE_EDIT_FRAME_RUNTIME_LAYOUT_SNAPSHOT_VERSION,nt as SITE_EDIT_FRAME_RUNTIME_RESIZE_VISUAL_VERSION,tt as SITE_EDIT_FRAME_RUNTIME_SELECTION_VISUAL_VERSION,dr as SITE_EDIT_FRAME_SECTION_GAP_RADIUS_PX,vt as SITE_EDIT_WINDOW_MESSAGE_NAMESPACE,qt as SiteEditBridgeServer,yt as SiteEditBridgeSocketServer,ae as SiteEditBridgeTransport,St as SiteEditWebSocketClient,dn as VCP_SITE_EDIT_BRIDGE_STATUS_EVENT,ln as VCP_SITE_EDIT_ROUTE_READY_EVENT,ir as VCP_WINDOW_MESSAGE_SOURCE,sr as VCP_WINDOW_MESSAGE_VERSION,ba as attachNextDevUpgradeHandler,uo as attachSiteEditBridgeServer,Yc as attachSiteEditWebSocketServer,Pa as classifySiteEditRenderProbeError,Ia as createSiteEditAutoBootstrapHtmlSnippet,Qn as createSiteEditBridge,pr as createSiteEditFrameAnnounceMessage,ot as createSiteEditFrameRuntimeMessage,cr as createVcpWindowMessageEnvelope,Wn as decodeRenderDocument,$n as encodeRenderDocument,ku as ensureSiteEditBridgeServerStarted,rr as getPropertyPreviewDomAttributeName,Ra as injectSiteEditAutoBootstrap,wo as isCompactRenderDocument,Wo as isDesignerTraceEnabled,du as isSiteEditFrameAnnounceMessage,mr as isSiteEditFrameRuntimeLayoutSnapshot,fr as isSiteEditFrameRuntimeMessage,wa as isSiteEditRenderProbeRequested,ar as isVcpWindowMessageEnvelope,za as patchNextFirefoxDevChunk,ii as planPropertyPreview,Ba as prepareFirefoxNextDevChunkPatchRequest,Oa as prepareSiteEditHtmlInjectionRequest,Wi as resolveBrowserCompositionSelector,Ea as resolveSiteEditBridgeHealthPath,xo as resolveSiteEditClientAsset,$u as resolveSiteEditClientAssetPath,ha as resolveSiteEditNextDevBundler,Vr as resolveSiteEditRouteId,Gi as resolveSiteEditWebSocketUrl,Na as runSiteEditRenderProbe,jo as sanitizeTracePayload,bu as startSiteEditAutoBootstrap,es as startSiteEditFrameRuntime,Uu as startSiteEditNextDevServer,$i as syncRuntimeSiteBlockIds,Ae as traceDesignerEvent,Ta as transpileSiteEditClientSource};
46
+ `)],[["findSourceMapURL: _appfindsourcemapurl.findSourceMapURL,"," debugChannel,"," startTime: 0"].join("\\n"),["unstable_allowPartialStream: true,"," debugChannel,"," startTime: 0"].join("\\n")],["debugChannel: createDebugChannel && createDebugChannel(requestHeaders)","debugChannel: undefined"],["debugChannel: createDebugChannel && createDebugChannel(headers)","debugChannel: undefined"]].reduce((n,[r,i])=>Ua(n,r,i),e)}function Ua(e,t,n){if(n.length>t.length)throw new Error("Replacement must not be longer than the search string.");return e.replaceAll(t,n.padEnd(t.length," "))}function An(e,t){return Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e):Buffer.from(String(e),t)}function Pn(e){return typeof e=="string"?e:void 0}function Kt(e){typeof e=="function"&&e()}async function Wa(e){let n=Eo(ht(e,"package.json"))(ia);return n.default??n}function ja(e){return Io(e)!=="src"?e:wn(Ga(e),"dist")}function Ga(e){return _o(e)?pt.posix.dirname(e):ft(e)}function wn(e,t){return _o(e)?pt.posix.join(e,t):ht(e,t)}function _o(e){return e.includes("/")&&!e.includes("\\")}function Ya(e){let t=ht(e,".vcp/current-snapshot.json");if(!Xe(t))return"sandbox_worktree";try{let n=JSON.parse(Ye(t,"utf8"));return typeof n.snapshot_id=="string"&&n.snapshot_id?n.snapshot_id:typeof n.snapshotId=="string"&&n.snapshotId?n.snapshotId:"sandbox_worktree"}catch{return"sandbox_worktree"}}function Xa(e){if(!e)return null;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0&&t<=65535?t:null}function La(e,t,n){return new Promise((r,i)=>{e.once("error",i),e.listen(t,n,()=>{e.off("error",i),r()})})}function Ja(e){return new Promise(t=>{e.close(()=>t())})}function Ht(e){try{e()}catch{}}function Qa(e){try{return e()}catch(t){return Promise.reject(t)}}function Za(e,t){let n=e.address();return typeof n=="object"&&n?n.port:t}export{$c as SITE_EDIT_BRIDGE_MAX_BUFFERED_BYTES,uo as SITE_EDIT_BRIDGE_MAX_PAYLOAD_BYTES,nu as SITE_EDIT_COMPOSITION_REINITIALIZE_REQUIRED,Mr as SITE_EDIT_COMPOSITION_RENDER_MISMATCH,Je as SITE_EDIT_COMPOSITION_SESSION_MISMATCH,$e as SITE_EDIT_COMPOSITION_SESSION_REQUIRED,dr as SITE_EDIT_FRAME_ANNOUNCE_CHANNEL,lr as SITE_EDIT_FRAME_RUNTIME_CHANNEL,on as SITE_EDIT_FRAME_RUNTIME_LAYOUT_SNAPSHOT_VERSION,nt as SITE_EDIT_FRAME_RUNTIME_RESIZE_VISUAL_VERSION,tt as SITE_EDIT_FRAME_RUNTIME_SELECTION_VISUAL_VERSION,pr as SITE_EDIT_FRAME_SECTION_GAP_RADIUS_PX,vt as SITE_EDIT_WINDOW_MESSAGE_NAMESPACE,qt as SiteEditBridgeServer,yt as SiteEditBridgeSocketServer,ae as SiteEditBridgeTransport,St as SiteEditWebSocketClient,dn as VCP_SITE_EDIT_BRIDGE_STATUS_EVENT,ln as VCP_SITE_EDIT_ROUTE_READY_EVENT,sr as VCP_WINDOW_MESSAGE_SOURCE,cr as VCP_WINDOW_MESSAGE_VERSION,Sa as attachNextDevUpgradeHandler,lo as attachSiteEditBridgeServer,Xc as attachSiteEditWebSocketServer,Na as classifySiteEditRenderProbeError,Ca as createSiteEditAutoBootstrapHtmlSnippet,Zn as createSiteEditBridge,fr as createSiteEditFrameAnnounceMessage,ot as createSiteEditFrameRuntimeMessage,ar as createVcpWindowMessageEnvelope,jn as decodeRenderDocument,Wn as encodeRenderDocument,Du as ensureSiteEditBridgeServerStarted,or as getPropertyPreviewDomAttributeName,xa as injectSiteEditAutoBootstrap,ko as isCompactRenderDocument,jo as isDesignerTraceEnabled,pu as isSiteEditFrameAnnounceMessage,gr as isSiteEditFrameRuntimeLayoutSnapshot,hr as isSiteEditFrameRuntimeMessage,ka as isSiteEditRenderProbeRequested,ur as isVcpWindowMessageEnvelope,$a as patchNextFirefoxDevChunk,si as planPropertyPreview,Ma as prepareFirefoxNextDevChunkPatchRequest,Ba as prepareSiteEditHtmlInjectionRequest,ji as resolveBrowserCompositionSelector,Ia as resolveSiteEditBridgeHealthPath,To as resolveSiteEditClientAsset,Wu as resolveSiteEditClientAssetPath,ma as resolveSiteEditNextDevBundler,qr as resolveSiteEditRouteId,Yi as resolveSiteEditWebSocketUrl,wa as runSiteEditRenderProbe,Go as sanitizeTracePayload,Su as startSiteEditAutoBootstrap,ts as startSiteEditFrameRuntime,Uu as startSiteEditNextDevServer,Wi as syncRuntimeSiteBlockIds,Ae as traceDesignerEvent,_a as transpileSiteEditClientSource};