@vcp-dev/site-edit-bridge 0.10.34 → 0.10.36

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 Qn(e){let t=new Map,n=[],r=new Map,i=[],o=e.pageComposition.status==="supported"?e.pageComposition.placementUnitKeys:[],s=new Map(o.map((p,g)=>[p,g])),a=e.pageComposition.status==="supported"?{status:"supported",containerKey:e.pageComposition.containerKey,hasBusinessMembers:e.pageComposition.hasBusinessMembers,placementUnitKeys:e.pageComposition.placementUnitKeys,placements:e.pageComposition.placements.map(p=>({placementKey:p.placementKey,placementUnitKey:p.placementUnitKey,relation:p.relation}))}:{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics},c=e.entries.flatMap((p,g)=>p.dynamicDataSummary?[[g,p.dynamicDataSummary]]:[]),u=new Map(e.entries.map((p,g)=>[p.key,g])),d=[];for(let[p,g]of e.entries.entries()){let b=g.pageCompositionActionScope;if(!b)continue;if(b.kind!=="source-siblings"){d.push([p,{kind:b.kind}]);continue}let T=b.siblingKeys.map(_=>{let P=u.get(_);if(P===void 0)throw new Error("Render entry "+g.key+" references missing source sibling "+_);return P});d.push([p,{kind:"source-siblings",siblingEntryIndexes:T}])}let l=p=>{let g=t.get(p);if(typeof g=="number")return g;let b=n.length;return n.push(p),t.set(p,b),b},m=p=>{let g=null;for(let b of jo(p)){let T=`${g??"root"}\0${b}`,_=r.get(T);if(typeof _=="number"){g=_;continue}let P=i.length;i.push([g,l(b)]),r.set(T,P),g=P}if(g===null)throw new Error("Document key must not be empty");return g};return{encoding:"segment-trie-v1",siteId:e.siteId,snapshotId:e.snapshotId,composition:{...e.composition},routeId:e.composition.routeId,version:e.version,pageComposition:a,tokens:n,nodes:i,entries:e.entries.map(p=>{let g=p.pageCompositionUnitKey?s.get(p.pageCompositionUnitKey)??-1:-1;if(p.pageCompositionUnitKey&&g<0)throw new Error(`Render entry ${p.key} references unknown page composition unit ${p.pageCompositionUnitKey}`);return[m(p.key),Ko(p.operationSummary),...g>=0?[g]:[]]}),...d.length>0?{pageCompositionActionScopes:d}:{},...e.entries.every(p=>p.parentKey!==void 0)?{entryParentNodeIds:e.entries.map(p=>p.parentKey===null?null:m(p.parentKey))}:{},...c.length>0?{dynamicDataSummaries:c}:{}}}function Zn(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=new Map(e.pageCompositionActionScopes??[]),o=s=>{let a=t.get(s);if(a)return a;let c=e.nodes[s];if(!c)throw new Error(`Missing compact document node ${s}`);let[u,d]=c,l=e.tokens[d];if(typeof l!="string")throw new Error(`Missing compact document token ${d}`);let m=`${u===null?"":o(u)}${l}`;return t.set(s,m),m};return{siteId:e.siteId,snapshotId:e.snapshotId,composition:{...e.composition},routeId:e.composition.routeId,version:e.version,pageComposition:e.pageComposition,entries:e.entries.map((s,a)=>{let[c,u,d]=s,l=d===void 0?void 0:n[d];if(d!==void 0&&!l)throw new Error(`Missing page composition unit ${d}`);let m=e.entryParentNodeIds?.[a],p=i.get(a),g=p?.kind==="source-siblings"?{kind:"source-siblings",siblingKeys:p.siblingEntryIndexes.map(b=>{let T=e.entries[b];if(!T)throw new Error(`Missing source sibling entry ${b}`);return o(T[0])})}:p;return{key:o(c),...e.entryParentNodeIds?{parentKey:m===null?null:o(m)}:{},...l?{pageCompositionUnitKey:l}:{},...g?{pageCompositionActionScope:g}:{},operationSummary:Uo(u),...r.get(a)?{dynamicDataSummary:r.get(a)}:{}}})}}function Ko(e){return(e.canUpdateText?1:0)|(e.canInsertChild?2:0)|(e.canMove?4:0)|(e.canRemove?8:0)}function Uo(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"||!zo(t.composition)||typeof t.routeId!="string"||t.routeId!==t.composition.routeId||!Number.isInteger(t.version)||t.version<0||!St(t.pageComposition)||!Array.isArray(t.tokens)||!t.tokens.every(a=>typeof a=="string")||!Array.isArray(t.nodes)||!Array.isArray(t.entries))return!1;let n=t.nodes;if(!n.every((a,c)=>Array.isArray(a)&&a.length===2&&(a[0]===null||xe(a[0])&&a[0]<c)&&xe(a[1])&&a[1]<t.tokens.length)||!t.entries.every(a=>Array.isArray(a)&&(a.length===2||a.length===3)&&xe(a[0])&&a[0]<n.length&&xe(a[1])&&a[1]<=15&&(a.length===2||xe(a[2]))))return!1;let r=t.entryParentNodeIds;if(r!==void 0&&(!Array.isArray(r)||r.length!==t.entries.length||!r.every(a=>a===null||xe(a)&&a<n.length)))return!1;let i=t.dynamicDataSummaries,o=t.pageCompositionActionScopes;return(o===void 0||Array.isArray(o)&&o.every(a=>{if(!Array.isArray(a)||a.length!==2||!xe(a[0])||a[0]>=t.entries.length||!St(a[1])||!["route-unit","source-siblings","unavailable"].includes(String(a[1].kind)))return!1;let c=a[1];return c.kind!=="source-siblings"||Array.isArray(c.siblingEntryIndexes)&&c.siblingEntryIndexes.length>=2&&c.siblingEntryIndexes.every(u=>xe(u)&&u<t.entries.length)&&c.siblingEntryIndexes.includes(a[0])}))&&(i===void 0||Array.isArray(i)&&i.every(a=>Array.isArray(a)&&a.length===2&&xe(a[0])&&a[0]<t.entries.length&&St(a[1])))}function St(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function zo(e){return!St(e)||typeof e.routeId!="string"?!1:e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string"}function xe(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0}function jo(e){if(!e)return[];let t=[],n=0,r=Jn(e,n);if(r<0)return t.push(e),t;for(t.push(e.slice(0,r)),n=r;n<e.length;){if(r=Jn(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 Jn(e,t){let n=e.indexOf("/",t),r=e.indexOf("::",t);return n<0?r:r<0?n:Math.min(n,r)}var Qe="SITE_EDIT_COMPOSITION_SESSION_MISMATCH",Ue="SITE_EDIT_COMPOSITION_SESSION_REQUIRED",ku="SITE_EDIT_COMPOSITION_REINITIALIZE_REQUIRED",se=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(j(t)&&j(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==="get-operation-result"||t==="undo"||t==="redo"}static isMessage(t,n={}){return!j(t)||typeof t.type!="string"?!1:t.type==="request"?Xo(t.payload,n):t.type==="response"||t.type==="error"?j(t.payload)&&typeof t.payload.id=="string":t.type==="event"?j(t.payload)&&j(t.payload.event):t.type==="auth"?j(t.payload)&&typeof t.payload.key=="string":t.type==="ping"||t.type==="pong"?j(t.payload)&&typeof t.payload.id=="string":t.type==="auth-ok"&&j(t.payload)&&t.payload.ok===!0}},Et=class{constructor(t){this.options=t,this.session={subscribedCompositionKeys:new Set},this.messageQueue=new Zt,this.eventDispatcher=new Qt(n=>{this.sendJson(n)}),this.unsubscribe=t.engine.subscribe(n=>{this.handleEngineEvent(n)}),t.socket.onmessage=n=>{let r=Yo(n.data);if(r!==null){this.sendJson({type:"pong",payload:{id:r}});return}try{this.messageQueue.enqueue(()=>this.handleRawMessage(n.data))}catch(i){this.sendJson({type:"error",payload:{id:"unknown",kind:"get-document",message:i instanceof Error?i.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=Yt(r),s=await this.resolve(o),a=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:Ne({...a,data:{...a.data,document:tr(a.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,ti(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,Ne(s,o));return}case"get-style-context":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,Ne(await this.options.engine.getStyleContext(o),o));return}case"get-object-edit-context":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,Ne(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,Ne(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,Ne(await this.options.engine.getSourceTree(o),o));return}case"get-source-file":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,Ne(await this.options.engine.getSourceFile({path:r.path,composition:o}),o));return}case"resolve-source-location":{let o=await this.resolveWireContext(r),s=Ne(await this.options.engine.resolveSourceLocation({key:r.key,composition:o}),o);this.sendResult(i,r.kind,s);return}case"execute":case"get-operation-result":{let o=await this.resolveOperationWireContext(r.request),s=await this.resolveWireContext(r);if(De(o)!==De(s))throw new Oe(Qe,"The execute request composition does not match its operation composition.");let a=await this.normalizeOperationRequest(r.request,o);if(r.kind==="get-operation-result"){this.sendResult(i,r.kind,await this.options.engine.getOperationResult?.(a)??null);return}await this.handleBufferedOperation(i,r.kind,()=>this.options.engine.execute(a));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=se.extractRequestInfo(t);this.sendJson({type:"error",payload:{...r,message:Jt(n),code:Lt(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 Oe(Ue,"Initialize a composition session before issuing this request.");if(De(r)!==De(n.context))throw new Oe(Qe,"The request composition does not match the active socket session.");return n.context}async resolveWireContext(t){let n=Yt(t);return this.resolveAndAssert(n)}async resolveOperationWireContext(t){let n=Zo(t);return this.resolveAndAssert(n)}activateSession(t){this.session.activeComposition=t,this.session.subscribedCompositionKeys.clear(),this.session.subscribedCompositionKeys.add(De(t))}async normalizeOperationRequest(t,n){let r={...t,composition:er(n)};if(r.target.kind==="route"){let i=r.target,o=Yt(i),s=await this.resolveAndAssert(o);r.target={...i,composition:er(s)}}return r}handleEngineEvent(t){let n=t?.composition;if(!Qo(n))return;let r=De(n);this.session.subscribedCompositionKeys.has(r)&&(this.eventDispatcher.push(t),t.type==="site-edit.graph.invalidated"&&r===ei(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(se.parseMessage(t,{validateOperationRequest:this.options.validateOperationRequest}))}catch(n){let r=ni(t);this.sendJson({type:"error",payload:{...r,message:Jt(n),code:Lt(n)}})}}sendJson(t){this.options.socket.send(se.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:Jt(i),code:Lt(i)}})}finally{this.eventDispatcher.flush()}}},Go=256;function Yo(e){if(e.length>Go||!e.includes('"ping"'))return null;try{let t=JSON.parse(e);return j(t)&&t.type==="ping"&&j(t.payload)&&typeof t.payload.id=="string"?t.payload.id:null}catch{return null}}var Oe=class extends Error{constructor(t,n){super(n),this.code=t,this.name="BridgeProtocolError"}},Qt=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))}},Zt=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 Xo(e,t){if(!j(e)||typeof e.id!="string"||!se.isRequestKind(e.kind))return!1;let n=Ze(e.composition);switch(e.kind){case"initialize-session":return n&&(e.mutationContext===void 0||Xt(e.mutationContext));case"get-document":case"get-style-context":return n;case"get-object-edit-context":return typeof e.key=="string"&&n&&Lo(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":case"get-operation-result":return n&&Jo(e.request)&&(e.request.mutationContext===void 0||Xt(e.request.mutationContext))&&(t.validateOperationRequest?.(e.request)??!0);case"undo":case"redo":return n&&e.mutationContext===void 0||n&&Xt(e.mutationContext)}}function Lo(e){if(e===void 0)return!0;if(!j(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 Jo(e){return j(e)&&typeof e.id=="string"&&typeof e.siteId=="string"&&typeof e.baseSnapshotId=="string"&&Ze(e.composition)&&typeof e.kind=="string"&&j(e.target)&&(e.target.kind!=="route"||Ze(e.target.composition))&&typeof e.documentVersion=="number"&&Number.isInteger(e.documentVersion)&&e.documentVersion>=0&&j(e.params)}function Ze(e){return j(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 Qo(e){return j(e)&&typeof e.routeId=="string"&&(e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string")}function Yt(e){if(Ze(e.composition))return e.composition;throw new Oe(Ue,"A composition selector is required for this request.")}function Zo(e){if(j(e)&&Ze(e.composition))return e.composition;throw new Oe(Ue,"A composition selector is required for execute.")}function er(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function ei(e){return e.activeComposition?De(e.activeComposition):null}function De(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function Ne(e,t){return j(e)&&e.ok===!0?{...e,composition:t}:e}function ti(e,t){return!j(e)||e.ok!==!0?e:{...e,...t?{composition:t}:{},data:tr(e.data)}}function tr(e){let t=e;return Qn(t.routeId?t:{...t,routeId:t.composition.routeId})}function j(e){return typeof e=="object"&&e!==null}function Xt(e){return j(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 Lt(e){if(!(!j(e)||typeof e.code!="string"||e.code.length===0))return e.code}function Jt(e){return e instanceof Error||j(e)&&typeof e.message=="string"&&e.message.length>0?e.message:"Unknown websocket operation failure"}function ni(e){try{return se.extractRequestInfo(JSON.parse(e))}catch{return{id:"unknown",kind:"get-document"}}}var ri="vcp:designer:trace",oi="designer_trace",nr="__VCP_DESIGNER_TRACE__";var ii=/(authorization|cookie|token|secret|providerTrace|headers?|sourceCode|rawSource|fullSource)/i;function si(e=globalThis){let t=e;try{if(t.localStorage?.getItem(ri)==="1")return!0}catch{}try{let n=t.location?.search??"";return new URLSearchParams(n).get(oi)==="1"}catch{return!1}}function Ce(e,t={},n=globalThis){if(!si(n))return;let r={type:e,timestamp:Date.now(),payload:ai(t)},i=n,o=i[nr]??[];o.push(r),o.length>1e3&&o.splice(0,o.length-1e3),i[nr]=o;let s=n.console?.debug;r.payload.diagnosticOnly!==!0&&typeof s=="function"&&s.call(n.console,"[designer-trace]",r)}function ai(e){return en(e,0)}function en(e,t){if(t>4)return"[truncated]";if(Array.isArray(e))return e.map(r=>en(r,t+1));if(!e||typeof e!="object")return e;let n={};for(let[r,i]of Object.entries(e)){if(ii.test(r)){n[r]="[redacted]";continue}n[r]=en(i,t+1)}return n}var Ct=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.heartbeatState=null,this.connectionStatusListeners=new Set}connect(){return this.socket?.readyState===tn&&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=We(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=Math.max(0,this.options.connectTimeoutMs??ui);o>0&&(i.deadline=setTimeout(()=>{this.connectAttempt!==i||i.settled||(Ce("bridge.connect-timeout",{connectTimeoutMs:o}),this.cleanupSocket(r,rr(di,`Bridge connection did not complete within ${o}ms`),"failed"))},o));let s=()=>{this.socket!==r||this.connectAttempt!==i||(i.settled=!0,clearTimeout(i.deadline),this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("open"),this.startHeartbeat(r),t())},a=(c,u)=>{this.cleanupSocket(r,c,u)};r.onopen=()=>{if(!(this.socket!==r||this.connectAttempt!==i)){if(this.options.authKey){try{r.send(se.stringifyMessage({type:"auth",payload:{key:this.options.authKey}}))}catch(c){a(We(c,"WebSocket auth failed"),"failed")}return}s()}},r.onerror=c=>{if(this.socket!==r)return;let u=We(c,"WebSocket failed");a(u,"failed")},r.onmessage=c=>{if(this.socket===r){if(this.noteInboundMessage(r),this.options.authKey&&this.connectAttempt===i&&!i.settled){this.handleAuthHandshakeMessage(c.data,r,i,()=>{s()});return}this.handleMessage(c.data)}},r.onclose=c=>{if(this.socket!==r)return;let u=this.intentionalClose,d=new Error(gi(c,{intentional:u}));a(d,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=tt(t),i={...t,composition:Ae(r)};return this.request("execute",{request:i})}getOperationResult(t){return this.request("get-operation-result",{request:t,composition:Ae(tt(t))})}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 Ae(t)}request(t,n){let r=this.socket;if(!r||r.readyState!==tn||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 Ce("bridge.request",{id:i,kind:t,routeId:typeof n.routeId=="string"?n.routeId:null,key:typeof n.key=="string"?n.key:null,operationKind:or(n.request,"kind"),documentVersion:or(n.request,"documentVersion")}),new Promise((s,a)=>{let c=this.resolveRequestTimeoutMs(t),u=c>0?setTimeout(()=>{let d=this.pending.get(i);d&&(this.pending.delete(i),Ce("bridge.response",{id:i,kind:t,ok:!1,timedOut:!0}),d.reject(new Error(`Bridge request timed out after ${c}ms: ${t}`)))},c):null;u?.unref?.(),this.pending.set(i,{kind:t,timeout:u,resolve:d=>s(d),reject:a});try{r.send(se.stringifyMessage(o))}catch(d){let l=We(d,"WebSocket send failed");this.clearPendingRequest(i),a(l),this.cleanupSocket(r,l,"failed")}})}handleAuthHandshakeMessage(t,n,r,i){try{if(se.parseMessage(t).type==="auth-ok"){i();return}throw new Error("Bridge authentication failed")}catch(o){let s=We(o,"Bridge authentication failed");this.connectAttempt===r&&this.cleanupSocket(n,s,"failed")}}handleMessage(t){let n=se.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"){Ce("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}Ce("bridge.response",{id:n.payload.id,kind:r.kind,ok:!0,resultVersion:yi(n.payload.result)}),r.resolve(r.kind==="get-document"?{...n.payload.result,data:cr(n.payload.result.data,n.payload.result.composition)}:r.kind==="initialize-session"?bi(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):mi[t]??fi}cleanupSocket(t,n,r){if(this.socket===t&&(this.socket=null),this.stopHeartbeat(t),this.connectAttempt?.socket===t){let i=this.connectAttempt;this.connectAttempt=null,clearTimeout(i.deadline),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===ci||t.readyState===tn)&&t.close()}catch{}}startHeartbeat(t){let n=this.options.heartbeat===void 0?li:this.options.heartbeat;if(!n||n.intervalMs<=0||n.timeoutMs<=0)return;this.stopHeartbeat(this.heartbeatState?.socket??t);let r=this.options.visibility===void 0?hi():this.options.visibility,i=()=>r?.visibilityState!=="hidden",o=()=>{this.heartbeatState?.socket===t&&this.heartbeatState.deadline&&(clearTimeout(this.heartbeatState.deadline),this.heartbeatState.deadline=null)},s=()=>{let c=this.heartbeatState;if(!(c?.socket!==t||this.socket!==t||this.connectionState!=="open"||c.deadline||!i())){try{t.send(se.stringifyMessage({type:"ping",payload:{id:`ping-${this.sequence+=1}`}}))}catch(u){this.cleanupSocket(t,We(u,"WebSocket heartbeat send failed"),"failed");return}c.deadline=setTimeout(()=>{this.heartbeatState?.socket===t&&(this.heartbeatState.deadline=null,i()&&(Ce("bridge.heartbeat-timeout",{timeoutMs:n.timeoutMs}),this.cleanupSocket(t,rr(pi,`Bridge heartbeat was not answered within ${n.timeoutMs}ms`),"failed")))},n.timeoutMs)}},a=()=>{i()?s():o()};r?.addEventListener("visibilitychange",a),this.heartbeatState={socket:t,interval:setInterval(s,n.intervalMs),deadline:null,unbindVisibility:()=>r?.removeEventListener("visibilitychange",a)}}stopHeartbeat(t){let n=this.heartbeatState;!n||n.socket!==t||(clearInterval(n.interval),n.deadline&&clearTimeout(n.deadline),n.unbindVisibility(),this.heartbeatState=null)}noteInboundMessage(t){let n=this.heartbeatState;n?.socket===t&&n.deadline&&(clearTimeout(n.deadline),n.deadline=null)}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)}},ci=0,tn=1,ui=1e4,li={intervalMs:2e4,timeoutMs:1e4},di="SITE_EDIT_BRIDGE_CONNECT_TIMEOUT",pi="SITE_EDIT_BRIDGE_HEARTBEAT_TIMEOUT";function hi(){let e=globalThis.document;return e&&typeof e.visibilityState=="string"&&typeof e.addEventListener=="function"&&typeof e.removeEventListener=="function"?e:null}function rr(e,t){let n=new Error(`${e}: ${t}`);return n.code=e,n}var fi=15e3,mi={"get-source-tree":1e4,"get-source-file":1e4,"resolve-source-location":1e4,execute:6e4,"get-operation-result":6e4,undo:2e4,redo:2e4};function We(e,t){return e instanceof Error?e:new Error(t)}function gi(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 or(e,t){if(!e||typeof e!="object")return null;let r=e[t];return typeof r=="string"||typeof r=="number"?r:null}function yi(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 ar(e){let t="composition"in e?Ae(e.composition):Ae({routeId:e.routeId});return new nn({composition:t,initialDocument:e.initialDocument,client:e.client})}var nn=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=Ae(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=!ir(t.initialDocument),this.activeCompositionContext=this.sessionInitialized?{...t.initialDocument.composition}:null}async getDocument(t){this.requireBoundComposition(t);let n=ir(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,a=this.params.client.getStyleContext(n).then(c=>(this.styleGeneration===s&&this.styleContextCache.set(r,{generation:s,value:c.data}),c)).finally(()=>{this.styleContextInFlight.get(r)?.request===a&&this.styleContextInFlight.delete(r)});return this.styleContextInFlight.set(r,{generation:s,request:a}),a}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 a=this.editContextInFlight.get(o);if(a)return a;let c=this.objectGeneration,u=this.params.client.getObjectEditContext(t,i,...r?[r]:[]).then(d=>(this.objectGeneration===c&&this.editContextCache.set(o,d.data),d)).finally(()=>{this.editContextInFlight.get(o)===u&&this.editContextInFlight.delete(o)});return this.editContextInFlight.set(o,u),u}async getClassNameSource(t,n){let r=this.requireBoundComposition(n),i=this.objectCacheKey(t,r),o=this.classNameSourceCache.get(i);if(o)return o;let s=this.classNameSourceInFlight.get(i);if(s)return s;let a=this.objectGeneration,c=this.params.client.getClassNameSource(t,r).then(u=>(this.objectGeneration===a&&this.classNameSourceCache.set(i,u),u)).finally(()=>{this.classNameSourceInFlight.get(i)===c&&this.classNameSourceInFlight.delete(i)});return this.classNameSourceInFlight.set(i,c),c}async getSourceTree(t){return this.params.client.getSourceTree(this.requireBoundComposition(t))}async getSourceFile(t){return this.params.client.getSourceFile({path:t.path,composition:this.requireBoundComposition(t.composition)})}async resolveSourceLocation(t){return this.params.client.resolveSourceLocation({key:t.key,composition:this.requireBoundComposition(t.composition)})}async execute(t,n){let r=tt(t);r&&this.composition.templateId!==void 0&&this.requireBoundComposition(r);let i={...t,composition:r??this.composition};return this.params.client.execute(i)}async getOperationResult(t){return this.requireBoundComposition(t.composition),this.params.client.getOperationResult?this.params.client.getOperationResult(t):null}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 Ce("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){Ce("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}Ce("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${Si(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&&It(n)===It(sr(t))}requireBoundComposition(t){let n=t===void 0?this.composition:Ae(t);if(!this.isAcceptedComposition(n))throw new Error(`Site edit bridge is bound to composition ${JSON.stringify(this.composition)}, received ${JSON.stringify(n)}`);return Ae(n)}isActiveComposition(t){let n=this.activeCompositionContext??sr(this.composition);return It(t)===It(n)}};function ir(e){return e.version===0&&e.entries.length===0}function bi(e){let t=e;return{...t,data:{...t.data,document:cr(t.data.document,t.composition)}}}function cr(e,t){let n=e,r=Zn(n.routeId?n:{...n,routeId:t?.routeId??n.composition?.routeId});return t?{...r,composition:t}:r}function Ae(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 Si(e){return e?JSON.stringify([e.key,e.instanceIndex??null,e.instanceCount??null]):""}function It(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function sr(e){return{routeId:e.routeId,...e.templateId?{effectiveTemplateId:e.templateId}:{}}}function tt(e){if(e&&typeof e=="object"){let t=e;if(t.composition&&typeof t.composition=="object"){let n=t.composition;if(typeof n.routeId=="string")return{routeId:n.routeId,...typeof n.templateId=="string"?{templateId:n.templateId}:{}}}}}function Ei(e,t,n){let r=Ae(t==="execute"?tt(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":case"get-operation-result":return{type:"request",payload:{...i,request:{...n.request,composition:tt(n.request)??r}}}}}function ae(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}var Ii={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"},ur=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"]),lr=new Set(["checked","selected","value"]),Ci=new Set(["children","key","ref","dangerouslysetinnerhtml"]),vi=new Set(["data-designer-hover-outline","data-designer-select-outline"]),Ri=/^[A-Za-z_$][A-Za-z0-9_$:-]*$/u,dr=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 _i(e){if(!xi(e))return rn("Typed property changes are not previewable");if(e.element.kind!=="host")return rn(`The '${e.element.tagName}' component may transform its props before rendering`);let t={};for(let n of e.changes){let r=Ti(n);if(!r)return rn(`The DOM result for '${n.name}' cannot be proven equivalent`);t[r.name]=r.value}return e.runtimeAttributes,{mode:"dom",patch:{attributes:t}}}function Ti(e){if(!hr(e.name))return null;let t=e.name,n=pr(t);if(!n||lr.has(t))return null;if(e.operation==="remove")return{name:n,value:null};let r=e.value;return t==="download"?wi(n,r):ur.has(t)?Ai(n,r):/^(aria|data)-[A-Za-z0-9_.:-]+$/u.test(t)?Ni(n,r):dr.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 pr(e){return hr(e)&&(e==="download"||lr.has(e)||ur.has(e)||dr.has(e)||/^(aria|data)-[A-Za-z0-9_.:-]+$/u.test(e))?Ii[e]??e:null}function xi(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 hr(e){if(!Ri.test(e))return!1;let t=e.toLowerCase();return Ci.has(t)||t.startsWith("data-vcp-")||vi.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 wi(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 Ni(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 rn(e){return{mode:"after-render",reason:e}}var fr="vcp-window-message",mr=1;function gr(e){return{source:fr,version:mr,namespace:e.namespace,channel:e.channel,...e.sessionKey?{sessionKey:e.sessionKey}:{},body:e.body}}function yr(e){try{return A(e)?re(e,"source",fr)&&re(e,"version",mr)&&M(e,"namespace")&&M(e,"channel")&&me(e,"body")&&(!Be(e,"sessionKey")||M(e,"sessionKey")):!1}catch{return!1}}var _t="site-edit",br="frame-runtime",Sr="frame-announce",sn=1,nt=1,rt=1,Er=24;function it(e,t={}){return gr({namespace:_t,channel:br,sessionKey:t.sessionKey,body:e})}function Ir(){return gr({namespace:_t,channel:Sr,body:{type:"announce"}})}function Ku(e){try{return!yr(e)||e.namespace!==_t||e.channel!==Sr?!1:A(e.body)&&re(e.body,"type","announce")&&fe(e.body,["type"])}catch{return!1}}function Cr(e){try{return!yr(e)||e.namespace!==_t||e.channel!==br?!1:ts(e.body)}catch{return!1}}function ve(e){return A(e)&&M(e,"routeId")&&Pe(e,"templateId")&&fe(e,["routeId","templateId"])}function vt(e){return A(e)&&M(e,"routeId")&&Pe(e,"effectiveTemplateId")&&fe(e,["routeId","effectiveTemplateId"])}function fe(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(r=>typeof r=="string"&&n.has(r))}var Be=(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 h(e,t){return Object.getOwnPropertyDescriptor(e,t)?.value}function re(e,t,n){return me(e,t)&&h(e,t)===n}function M(e,t){return me(e,t)&&typeof h(e,t)=="string"}function Tt(e,t){return me(e,t)&&typeof h(e,t)=="boolean"}function H(e,t){let n=h(e,t);return me(e,t)&&typeof n=="number"&&Number.isFinite(n)}function vr(e,t){let n=h(e,t);return me(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>0}function Pe(e,t){return!Be(e,t)||h(e,t)===void 0||M(e,t)}function ze(e,t){return!Be(e,t)||h(e,t)===void 0||H(e,t)}function Me(e,t){let n=h(e,t);return!Be(e,t)||n===void 0||me(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>=0}function J(e,t){return!Be(e,t)||h(e,t)===void 0}function A(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 A(e)&&Reflect.ownKeys(e).length===0}function Rt(e){if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t+=1){let n=Object.getOwnPropertyDescriptor(e,String(t));if(n===void 0||!("value"in n)||typeof n.value!="string")return!1}return!0}function Ie(e){return A(e)&&M(e,"key")&&Me(e,"instanceIndex")&&Me(e,"instanceCount")&&Me(e,"textSegmentIndex")}function ki(e){return A(e)&&M(e,"blockId")&&Me(e,"blockIndex")&&Ie(h(e,"ref"))&&ot(h(e,"rect"))&&Tt(e,"targetIsSectionRoot")}function Di(e){if(!A(e))return!1;let t=h(e,"placement"),n=h(e,"boundary");return M(e,"anchorBlockId")&&Me(e,"positionIndex")&&Ie(h(e,"anchorRef"))&&(t==="before"||t==="after")&&A(n)&&H(n,"top")&&H(n,"left")&&H(n,"width")}function ot(e){return A(e)&&["top","left","width","height"].every(t=>H(e,t))}function Rr(e){if(!A(e))return!1;let t=h(e,"rect"),n=h(e,"layout"),r=A(n)?h(n,"containingBlock"):null,i=h(e,"scrollContext"),o=A(r)&&(re(r,"kind","viewport")&&Reflect.ownKeys(r).length===1||re(r,"kind","document")&&Reflect.ownKeys(r).length===1||re(r,"kind","element")&&M(r,"runtimeNodeId"));return re(e,"version",sn)&&M(e,"runtimeNodeId")&&A(t)&&ot(h(t,"viewport"))&&ot(h(t,"document"))&&A(n)&&M(n,"position")&&M(n,"transform")&&o&&A(i)&&["scrollX","scrollY","viewportWidth","viewportHeight"].every(s=>H(i,s))&&me(i,"scrollContainers")&&Oi(h(i,"scrollContainers"))}function Oi(e){return Array.isArray(e)&&e.every(t=>A(t)&&M(t,"runtimeNodeId")&&H(t,"scrollLeft")&&H(t,"scrollTop"))}function on(e){return A(e)&&(J(e,"layoutSnapshot")||Rr(h(e,"layoutSnapshot")))}function Mi(e){return A(e)&&Ie(h(e,"ref"))&&me(e,"layoutSnapshot")&&Rr(h(e,"layoutSnapshot"))&&(J(e,"childBoxes")||Vi(h(e,"childBoxes")))&&(J(e,"childRects")||Fi(h(e,"childRects")))&&(J(e,"layout")||Bi(h(e,"layout")))&&(J(e,"spacing")||Hi(h(e,"spacing")))}function Bi(e){if(!A(e))return!1;let t=h(e,"indicatorOrientation");return M(e,"display")&&(t==="horizontal"||t==="vertical")&&Pe(e,"flexDirection")&&Pe(e,"gridAutoFlow")}function Fi(e){return Array.isArray(e)&&e.every(t=>ot(t))}function Vi(e){return Array.isArray(e)&&e.every(t=>A(t)&&ot(h(t,"rect"))&&_r(h(t,"margin")))}function _r(e){return A(e)&&["marginTop","marginRight","marginBottom","marginLeft"].every(t=>H(e,t))}function Hi(e){return _r(e)&&["paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","columnGap","rowGap"].every(t=>H(e,t))}function $i(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 qi(e){return A(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&me(e,t)&&(typeof h(e,t)=="string"||h(e,t)===null))}function Tr(e){return e==null||typeof e=="string"||typeof e=="number"&&Number.isFinite(e)}function Ki(e){return A(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&me(e,t)&&Tr(h(e,t)))}function Ui(e){if(!A(e))return!1;let t=h(e,"priority");return M(e,"property")&&me(e,"value")&&Tr(h(e,"value"))&&(!Be(e,"priority")||t===void 0||t==="important")}function Wi(e){return A(e)?(J(e,"attributes")||qi(h(e,"attributes")))&&Pe(e,"className")&&(J(e,"style")||Ki(h(e,"style")))&&(J(e,"styleDeclarations")||Array.isArray(h(e,"styleDeclarations"))&&h(e,"styleDeclarations").every(Ui)):!1}function zi(e){return A(e)&&H(e,"x")&&H(e,"y")&&(J(e,"detailLevel")||re(e,"detailLevel","summary")||re(e,"detailLevel","full"))}function ji(e){return A(e)&&Ie(h(e,"ref"))}function Gi(e){if(!A(e)||!A(h(e,"variables")))return!1;let t=h(e,"variables");return Reflect.ownKeys(t).every(n=>typeof n=="string"&&M(t,n))?J(e,"stylesheets")||Rt(h(e,"stylesheets")):!1}function Yi(e){if(!re(e,"type","request")||!M(e,"id")||!M(e,"kind")||!me(e,"payload"))return!1;let t=h(e,"kind"),n=h(e,"payload");switch(t){case"hit-test-at-point":case"start-text-edit-at-point":return zi(n);case"bridge-get-source-tree":return A(n)&&ve(h(n,"composition"))&&fe(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 A(n)&&ve(h(n,"composition"))&&fe(n,["composition"]);case"bridge-get-source-file":return A(n)&&M(n,"path")&&ve(h(n,"composition"))&&fe(n,["path","composition"]);case"bridge-get-object-edit-context":return A(n)&&M(n,"key")&&ve(h(n,"composition"))&&es(h(n,"selectionRef"))&&fe(n,["key","composition","selectionRef"]);case"bridge-resolve-source-location":case"bridge-get-class-name-source":return A(n)&&M(n,"key")&&ve(h(n,"composition"))&&fe(n,["key","composition"]);case"scroll-to":return A(n)&&H(n,"x")&&H(n,"y");case"scroll-by":return A(n)&&H(n,"deltaX")&&H(n,"deltaY");case"set-interaction-mode":return A(n)&&Tt(n,"enabled");case"set-selection-visual":return A(n)&&re(n,"version",nt)&&Ie(h(n,"ref"))&&re(n,"visible",!0);case"clear-selection-visual":return A(n)&&re(n,"version",nt);case"set-resize-visual":return A(n)&&re(n,"version",rt)&&Ie(h(n,"ref"))&&re(n,"visible",!0);case"clear-resize-visual":return A(n)&&re(n,"version",rt);case"set-theme-override":return Gi(n);case"get-theme-variables":return A(n)&&Rt(h(n,"names"));case"compute-drop-target-at-point":return A(n)&&H(n,"x")&&H(n,"y")&&(re(n,"dragKind","insert")||re(n,"dragKind","move"))&&(J(n,"movingRef")||Ie(h(n,"movingRef")));case"observe-node-bounds":case"clear-node-bounds-observer":return A(n)&&(J(n,"ref")||Ie(h(n,"ref")));case"apply-node-patch":return A(n)&&Ie(h(n,"ref"))&&Wi(h(n,"patch"))&&(J(n,"preview")||A(h(n,"preview"))&&M(h(n,"preview"),"sessionId")&&Me(h(n,"preview"),"revision")&&Be(h(n,"preview"),"revision"));case"get-hit-by-ref":case"get-path-by-ref":case"restore-text-edit":case"clear-text-edit-rollback":return ji(n);case"bridge-initialize-session":case"bridge-get-style-context":return A(n)&&ve(h(n,"composition"))&&fe(n,["composition"]);case"bridge-get-document":case"bridge-ensure-document-version":case"bridge-acknowledge-document-version":return A(n)&&ve(h(n,"composition"))&&ze(n,"minVersion")&&ze(n,"version")&&fe(n,["composition","minVersion","version"]);case"bridge-execute":case"bridge-get-operation-result":{if(!A(n))return!1;let r=h(n,"request"),i=h(n,"composition"),o=A(r)?h(r,"composition"):null;return!ve(i)||!A(r)||!ve(o)?!1:ae({routeId:i.routeId,...i.templateId?{effectiveTemplateId:i.templateId}:{}})===ae({routeId:o.routeId,...o.templateId?{effectiveTemplateId:o.templateId}:{}})&&fe(n,["composition","request"])}case"bridge-subscribe":case"bridge-unsubscribe":return A(n)&&M(n,"subscriptionId")&&ve(h(n,"composition"))&&fe(n,["subscriptionId","composition"]);default:return!1}}function Xi(e){return re(e,"type","response")&&M(e,"id")&&Tt(e,"ok")&&(J(e,"error")||M(e,"error"))}function Li(e){if(!A(e))return!1;let t=h(e,"type");if(typeof t!="string"||!vt(h(e,"composition"))||!M(e,"siteId")||!M(e,"at"))return!1;switch(t){case"site-edit.document.changed":return M(e,"snapshotId")&&H(e,"version");case"site-edit.operation.planned":return M(e,"operationId")&&M(e,"baseSnapshotId")&&Rt(h(e,"changedFiles"));case"site-edit.operation.completed":return A(h(e,"result"));case"site-edit.operation.failed":return M(e,"requestId")&&A(h(e,"error"));case"site-edit.capability.changed":return Rt(h(e,"keys"));case"site-edit.graph.invalidated":return!0;case"site-edit.graph.ready":return H(e,"version");case"site-edit.graph.error":return M(e,"message");default:return!1}}var Ji=new Set(["pointer-down","pointer-move","pointer-leave","pointer-up","pointer-cancel","pointer-click","pointer-double-click"]),xr=new Set(["e","s","se"]);function Qi(e,t){if(J(e,"resizeSession"))return!0;let n=h(e,"resizeSession");if(!A(n))return!1;let r=h(e,"pointerId"),i=h(n,"pointerId"),o=h(n,"phase"),s=h(n,"edge"),a=t==="pointer-down"?"start":t==="pointer-up"?"commit":t==="pointer-cancel"?"cancel":null;return h(n,"version")===1&&o===a&&M(n,"sessionId")&&String(h(n,"sessionId")).length>0&&typeof r=="number"&&Number.isInteger(r)&&typeof i=="number"&&Number.isInteger(i)&&r===i&&typeof s=="string"&&xr.has(s)&&h(e,"resizeEdge")===s&&Ie(h(n,"ref"))&&["startWidth","startHeight","width","height"].every(c=>H(n,c))}function Zi(e){if(!re(e,"type","event")||!M(e,"kind")||!A(h(e,"payload")))return!1;let t=h(e,"kind"),n=h(e,"payload");switch(t){case"text-edit-commit":case"text-edit-cancel":case"text-edit-exit":case"text-edit-input":return Ie(h(n,"ref"))&&Pe(n,"value")&&(J(n,"hit")||on(h(n,"hit")));case"node-bounds-change":return on(h(n,"hit"));case"geometry-batch":{let r=h(n,"reason");return vr(n,"sequence")&&H(n,"sourceEventAt")&&H(n,"captureStartedAt")&&H(n,"capturedAt")&&(r==="scroll"||r==="resize"||r==="mutation")&&$i(h(n,"snapshots"))}case"bridge-event":{let r=h(n,"event"),i=h(n,"composition");return!Li(r)||!vt(i)?!1:M(n,"subscriptionId")&&ae(i)===ae(r.composition)}case"route-ready":return vt(h(n,"composition"))&&M(n,"editEngineVersion")&&H(n,"sequence")&&H(n,"version");case"bridge-status":{let r=h(n,"state");return(r==="connecting"||r==="ready"||r==="reconnecting"||r==="failed"||r==="reload-required")&&vt(h(n,"composition"))&&H(n,"sequence")&&ze(n,"attempt")&&ze(n,"retryInMs")&&Pe(n,"messageKey")&&Pe(n,"failureCode")}case"scroll":{let r=h(n,"metrics");return A(r)&&["scrollX","scrollY","scrollWidth","scrollHeight","viewportWidth","viewportHeight"].every(i=>H(r,i))}default:return Ji.has(t)&&H(n,"clientX")&&H(n,"clientY")&&ze(n,"buttons")&&ze(n,"pointerId")&&(J(n,"hoverVisualOwned")||Tt(n,"hoverVisualOwned"))&&(J(n,"resizeEdge")||M(n,"resizeEdge")&&xr.has(h(n,"resizeEdge")))&&Qi(n,t)&&(h(n,"hit")===null||on(h(n,"hit")))&&(J(n,"section")||h(n,"section")===null||ki(h(n,"section")))&&(J(n,"sectionGap")||h(n,"sectionGap")===null||Di(h(n,"sectionGap")))}}function es(e){if(e===void 0)return!0;if(!A(e)||!fe(e,["key","instanceIndex","instanceCount"])||!M(e,"key")||h(e,"key").length===0||!Me(e,"instanceIndex")||!J(e,"instanceCount")&&!vr(e,"instanceCount"))return!1;let t=h(e,"instanceIndex"),n=h(e,"instanceCount");return!(typeof t=="number"&&typeof n=="number"&&t>=n)}function ts(e){if(!A(e))return!1;switch(h(e,"type")){case"request":return Yi(e);case"response":return Xi(e);case"event":return Zi(e);default:return!1}}var hn="vcp-site-edit:route-ready",fn="vcp-site-edit:bridge-status",Gr="SITE_EDIT_COMPOSITION_RENDER_MISMATCH",bn="#655ae8",ns=80,rs=120,os=160,is=4,Yr="data-vcp-designer-hover-visual",ss=1e3,as="data-vcp-ui-component",Xr="data-vcp-theme-preview",Ar="::repeat-item#",xt="components/ui",an="data-site-block-id",cn="data-vcp-runtime-site-block-id",cs=new Set(["article","aside","div","footer","form","header","li","main","nav","ol","section","select","table","tbody","tfoot","thead","tr","ul"]),us=new Set(["a","button","em","h1","h2","h3","h4","h5","h6","label","p","small","span","strong"]);function ls(e,t){let n=Array.from(e.querySelectorAll("[data-vcp-edit-key]"));for(let a of n)a.getAttribute(cn)==="true"&&(a.removeAttribute(an),a.removeAttribute(cn));if(!t)return;let r=n.filter(a=>a.tagName.toLowerCase()==="section"),i=r.length>0?r:n.filter(a=>a.tagName.toLowerCase()==="main"),o=new Set(i),s=new Map;for(let a of i){let c=a.parentElement,u=!1;for(;c;){if(o.has(c)){u=!0;break}c=c.parentElement}if(u||a.getAttribute(an)?.trim())continue;let d=a.getAttribute("data-vcp-edit-key")?.trim();if(!d)continue;let l=s.get(d)??0;s.set(d,l+1);let m=`vcp-runtime:${encodeURIComponent(d)}:${l}`;a.setAttribute(an,m),a.setAttribute(cn,"true")}}function Lr(e,t=""){let n=to(t),r=n&&(e===n||e.startsWith(`${n}/`))?e.slice(n.length)||"/":e,i=r.startsWith("/")?r:`/${r}`;return i==="/"?"/":i.replace(/\/+$/,"")}function ds(e){let t=Lr(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 Ye(e){return JSON.stringify([e.routeId,e.templateId??null])}function ps(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 hs(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 Xu(e=window,t={}){let n=hs(e,{explicit_ws_url:t.explicit_ws_url,port:t.ws_port,path:t.wsPath||"/__vcp/site-edit/bridge"}),r=fs({bridgeUrl:n,options:t}),i=e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(i?.started){if(ms(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,a=()=>e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__===s,c=t.create_client??(f=>new Ct({url:f,authKey:t.bridge_session_key})),u=t.schedule_after_navigation??Ks,d=()=>{o.retryTimer&&(e.clearTimeout(o.retryTimer),o.retryTimer=void 0)},l=()=>ds({pathname:e.location.pathname,search:e.location.search,basePath:t.basePath}),m=()=>Ye(l()),p=f=>{Us(e,{...f,composition:f.state==="ready"?f.composition:{routeId:f.composition.routeId},sequence:f.sequence??o.routeSequence})},g=f=>{o.currentDocument=f,o.currentEntriesByKey=new Map((f?.entries??[]).map(C=>[C.key,C])),ls(e.document,!!f)},b=()=>{o.unsubscribeConnectionStatus?.(),o.unsubscribeConnectionStatus=void 0,o.unsubscribeDocument?.(),o.unsubscribeDocument=void 0},T=(f,C)=>{if(o.disposed||C!==o.routeSequence)return!1;try{return f===m()}catch{return!1}},_=async(f,C,k)=>{let N=o.activeBridge;if(!N)return null;let K=await N.getDocument(f);return T(C,k)&&g(K.data),K.data},P=()=>{b(),g(null);let f=o.activeBridge;o.activeBridge=null,f&&e.__VCP_SITE_EDIT__===f&&delete e.__VCP_SITE_EDIT__;let C=o.activeClient;o.activeClient=null,C?.disconnect()},$=f=>f===s.compositionKey&&!!o.activeBridge&&!!(o.currentDocument&&s.composition&&zs(o.currentDocument,ae(s.composition)))&&Ws(o.activeClient),F=f=>Math.min(ss*2**Math.max(0,f),8e3),v=(f,C,k,N,K)=>{if(o.disposed)return;d();let Z=F(N);p({state:"reconnecting",composition:f,attempt:N,retryInMs:Z,...K?{failureCode:K}:{},messageKey:"studio.status.previewBridgeConnecting"}),o.retryTimer=e.setTimeout(()=>{o.retryTimer=void 0,!(o.disposed||k!==o.routeSequence||!T(C,k))&&W(N+1).catch(ee=>{let I;try{I=m()}catch{return}if(C===I){if(je(ee)){p({state:"reload-required",composition:f,attempt:N,messageKey:"studio.errors.previewBridgeReloadRequired"});return}v(f,C,o.routeSequence,N+1)}})},Z)},q=(f,C,k,N)=>{if(!T(C,k)||o.activeClient===null)return;let K=o.activeClient;b(),g(null);let Z=o.activeBridge;o.activeBridge=null,Z&&e.__VCP_SITE_EDIT__===Z&&delete e.__VCP_SITE_EDIT__,o.activeClient=null,K.disconnect(),v(f,C,k,0,N)},Q=(f,C,k,N)=>{if(!(!T(C,k)||o.activeClient===null)){if(je(N.message)){P(),d(),p({state:"reload-required",composition:f,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}q(f,C,k,un(new Error(N.message??"")).failureCode)}},z=f=>{let C;try{C=l()}catch{return}let k=Ye(C),N=o.routeSequence;if(!(!T(k,N)||o.activeClient===null)){if(je(f)){P(),d(),p({state:"reload-required",composition:C,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(Ys(f)){q(C,k,N);return}Zr(f)&&Q(C,k,N,{state:"failed",message:ke(f,"Site edit bridge request failed")})}};o.cleanupFrameRuntime=Es(e,{getCurrentDocument:()=>o.currentDocument,getDocumentEntry:f=>o.currentEntriesByKey.get(f)??null,setCurrentDocument:g,onBridgeRequestError:f=>{z(f)}});let G=async()=>W(0),W=async f=>{if(o.disposed)return;let C=l(),k=Ye(C);if($(k))return;let N=o.syncInFlight;if(N?.compositionKey===k)return N.promise;let K=o.routeSequence+1,Z=X(C,k,K,f);o.syncInFlight={compositionKey:k,sequence:K,promise:Z};try{await Z}finally{o.syncInFlight?.promise===Z&&(o.syncInFlight=null)}},X=async(f,C,k,N)=>{o.routeSequence=k,d(),P(),p({state:N>0?"reconnecting":"connecting",composition:f,attempt:N,messageKey:N>0?"studio.status.previewBridgeConnecting":"studio.status.previewLoading"});let K=c(n),Z=!1;o.activeClient=K,o.unsubscribeConnectionStatus=K.subscribeConnectionStatus?.(ee=>{Z&&(ee.state==="closed"||ee.state==="failed")&&Q(f,C,k,ee)});try{if(await K.connect(),!T(C,k)){K.disconnect();return}let ee=ar({composition:f,client:K,initialDocument:Ss(f)});if(o.activeBridge=ee,o.activeClient=K,o.unsubscribeDocument=ee.subscribe(S=>{if(!(!s.composition||ae(S.composition)!==ae(s.composition))){if(S.type==="site-edit.snapshot.changed"){_(f,C,k).catch(()=>{});return}S.type==="site-edit.document.changed"&&o.currentDocument&&S.version>o.currentDocument.version?_(f,C,k).catch(()=>{}):S.type==="site-edit.graph.invalidated"&&(g(null),w())}}),a()&&(s.routeId=f.routeId,s.composition=void 0,s.compositionKey=C),t.launch_id){let S=new URL(n);S.protocol=S.protocol==="wss:"?"https:":"http:",S.pathname=S.pathname.replace(/\/bridge$/,"/health"),S.search="";let{response:Y,health:V}=await $s(e,S);if(V.launch?.launchId===t.launch_id&&(Y.status===503||Y.ok&&!V.ok))throw new Error("SITE_EDIT_ENGINE_UNAVAILABLE: preview engine is temporarily unavailable");if(!Y.ok||!V.ok||V.launch?.launchId!==t.launch_id)throw new Error("SITE_EDIT_RUNTIME_RELOAD_REQUIRED: preview navigation belongs to a stale launch")}let I=await ee.initializeSession({composition:f}),R=I.data.document;if((f.templateId!==void 0?ae(I.composition)!==C:I.composition.effectiveTemplateId!==void 0)||ae(R.composition)!==ae(I.composition))throw new Error(`${Gr}: initialize response does not match requested selector`);if(!T(C,k)){K.disconnect();return}g(R),a()&&(e.__VCP_SITE_EDIT__=ee),Z=!0,a()&&(s.composition=I.composition),p({state:"ready",composition:I.composition,attempt:N,messageKey:"studio.status.previewReady"}),ps(e,{documentVersion:R?.version??0,routeId:f.routeId,versions:t.runtime_versions}),R&&Qr(e,{composition:I.composition,editEngineVersion:t.runtime_versions?.engine??"unknown",sequence:k,version:R.version})}catch(ee){if(!T(C,k)){K.disconnect();return}if(b(),o.activeClient===K&&(o.activeClient=null),o.activeBridge&&e.__VCP_SITE_EDIT__===o.activeBridge&&delete e.__VCP_SITE_EDIT__,o.activeBridge=null,K.disconnect(),g(null),!T(C,k))return;throw p({state:je(ee)?"reload-required":"failed",composition:f,attempt:N,...un(ee),messageKey:je(ee)?"studio.errors.previewBridgeReloadRequired":"studio.errors.previewBridgeDisconnected"}),ee}},L=f=>{if(o.disposed)return;let C;try{C=l()}catch{p({state:"failed",composition:{routeId:Lr(e.location.pathname,t.basePath||"")},attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}let k=Ye(C);if(je(f)){d(),p({state:"reload-required",composition:C,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(js(f)){p({state:"failed",composition:C,attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}v(C,k,o.routeSequence,0,un(f).failureCode)},w=()=>{o.syncScheduled||o.disposed||(o.syncScheduled=!0,u(()=>{o.syncScheduled=!1,!o.disposed&&G().catch(f=>L(f))}))},E=()=>{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(),P(),a()&&delete e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__)};s={started:!0,signature:r,syncRoute:G,cleanup:E},e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__=s,o.unbindBootstrapLifecycle=ys(e,E);let x=l();if(o.unbindRouteChange=Hs(e,()=>{let f=l(),C=f.routeId===x.routeId&&f.templateId!==x.templateId;if(x=f,C){o.routeSequence+=1,P(),p({state:"connecting",composition:{routeId:f.routeId},attempt:0}),e.location.reload();return}w()},m),t.defer_initial_sync){w();return}await G()}function fs(e){return{basePath:to(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:gs(e.options.bridge_session_key)}}function ms(e,t){return!!e&&JSON.stringify(e)===JSON.stringify(t)}function gs(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 ys(e,t){let n=()=>t();return e.addEventListener("pagehide",n),e.addEventListener("beforeunload",n),bs(t),()=>{e.removeEventListener("pagehide",n),e.removeEventListener("beforeunload",n)}}function bs(e){let t=import.meta.hot,n=import.meta.webpackHot,r=t??n;!r||typeof r.dispose!="function"||r.dispose(()=>e())}function Ss(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,a=null,c=0,u=null,d=null,l=null,m=null,p=null,g=0,b=new Map,T=typeof t.expectedSessionKey=="string"&&t.expectedSessionKey.length>0?t.expectedSessionKey:null,_=()=>{n?.(),n=null,r=null},P=()=>{let I=e.parent;if(!(!I||I===e))try{I.postMessage(Ir(),"*")}catch{}},$=()=>{i?.(),i=null,o?.(),o=null,s?.cleanup(),s=null,a?.cleanup(),a=null},F=(I,R,S)=>{let Y=u?.sessionKey!==I||u?.sourceWindow!==R||u?.targetOrigin!==S;u={sessionKey:I,sourceWindow:R,targetOrigin:S},Y&&(c=0,m=null,p=null)},v=(I,R)=>{let S=e.parent&&e.parent!==e?e.parent:null;return!S||R!==S?!1:!T||I===T},q=()=>{for(let I of b.values())I();b.clear()},Q=I=>JSON.stringify([ae(I.composition),I.editEngineVersion,I.sequence,I.version]),z=()=>!l||l.state==="ready",G=I=>JSON.stringify([I.state,ae(I.composition),I.sequence,I.attempt??null,I.retryInMs??null,I.messageKey??null]),W=I=>{if(!z())return;let R=Q(I);m!==R&&(o?.(),o=null,s?.cleanup(),s=null,a?.cleanup(),a=null,f({kind:"route-ready",payload:{composition:I.composition,editEngineVersion:I.editEngineVersion,sequence:I.sequence,version:I.version}}),u&&(m=R))},X=I=>{let R=G(I);p!==R&&(I.state!=="ready"&&(m=null,d=null),f({kind:"bridge-status",payload:I}),u&&(p=R))},L=I=>{d=I,W(I)},w=I=>{l=I,X(I)},E=()=>{d&&W(d)},x=()=>{l&&X(l)},f=I=>{u&&u.sourceWindow.postMessage(it({type:"event",...I},{sessionKey:u.sessionKey}),u.targetOrigin)},C=(I,R,S,Y)=>{let V=t.getCurrentDocument?.()??null,ie=R.rawTarget&&typeof R.rawTarget.getAttribute=="function"?R.rawTarget:null,D=ie??na(e.document,R.clientX,R.clientY),te=ie?Ft(ie):null,ue=te?.getAttribute("data-vcp-edit-key")??"",le=R.resizeSession||R.skipHit?null:te&&In(te,V,ue)?te:ut(e.document,R.clientX,R.clientY,V),de=I==="pointer-move"&&Number(R.buttons??0)===0||I==="pointer-down"?"rect-only":"full",ce=le?Re(le,S==="full"?ge(e.document,le,V):Mt(e.document,le,V),t.getDocumentEntry,S,void 0,de,V):null,be=ra(e.document,D,V),Se=ia(e.document,R,V,t.getDocumentEntry);Y&&ce&&(I==="pointer-click"||I==="pointer-double-click")&&(Y.preventDefault(),Y.stopPropagation(),typeof Y.stopImmediatePropagation=="function"&&Y.stopImmediatePropagation()),f({kind:I,payload:{clientX:R.clientX,clientY:R.clientY,buttons:Number(R.buttons??0),pointerId:R.pointerId,hoverVisualOwned:R.hoverVisualOwned,resizeEdge:R.resizeEdge,resizeSession:R.resizeSession,hit:ce,section:be,sectionGap:Se}})},k=I=>{f({kind:"pointer-leave",payload:{clientX:I?.clientX??0,clientY:I?.clientY??0,buttons:Number(I?.buttons??0),hit:null,section:null,sectionGap:null}})},N=(I,R,S)=>{$(),u={sessionKey:I,sourceWindow:R,targetOrigin:S};let Y=ja(e.document),V=Is(e,t.getCurrentDocument),ie=null,D=null,te=null,ue=null,le=null,de=null,ce=!1,be=null,Se=!1,Ee=()=>{be=null,Se=!1},$e=()=>{le!==null&&(e.clearTimeout(le),le=null)},O=()=>{te!==null&&(Dt(e,te),te=null),ie=null},B=()=>{de!==null&&(e.clearTimeout(de),de=null)},ne=()=>{te=null;let y=ie;ie=null,y&&C("pointer-move",y,"summary")},Te=y=>{$e(),D=y,ie=y,te===null&&(te=kt(e,ne))},yt=y=>{D&&Te({...D,rawTarget:null,hoverVisualOwned:y&&!ce&&!Se?V?.updateAtPoint(D.clientX,D.clientY)??!1:!1})},pe=()=>yt(!0),$o=()=>yt(!1),Je=e.document.documentElement,jt=typeof Je.addEventListener=="function"?Je:e.document,Hn=y=>{if(a?.update(y)){y.preventDefault();return}be?.pointerId===Number(y.pointerId)&&Number(y.buttons)===1?!Se&&Math.hypot(Number(y.clientX)-be.clientX,Number(y.clientY)-be.clientY)>=is&&(Se=!0,V?.clear()):be?.pointerId===Number(y.pointerId)&&Number(y.buttons)!==1&&Ee(),Te({clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),rawTarget:y.target,hoverVisualOwned:!ce&&!Se?V?.update(y.target)??!1:!1})},$n=y=>{let U=Ds(y.target),Ke=U?a?.begin(y,U):null;Ke&&(y.target?.setPointerCapture?.(y.pointerId),y.preventDefault(),y.stopPropagation()),!Ke&&Number(y.buttons)===1?(be={clientX:Number(y.clientX),clientY:Number(y.clientY),pointerId:Number(y.pointerId)},Se=!1):Ee(),C("pointer-down",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:Number(y.pointerId),rawTarget:y.target,resizeEdge:U,resizeSession:Ke??void 0},"summary",y)},qn=y=>{Ee();let U=a?.finish(y,"commit")??null;if(U){C("pointer-up",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:Number(y.pointerId),resizeEdge:U.edge,resizeSession:U,skipHit:!0},"summary",y);return}C("pointer-up",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),rawTarget:y.target,skipHit:!0},"summary",y)},Kn=y=>{Ee();let U=a?.finish(y,"cancel")??null;C("pointer-cancel",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:U?.pointerId,rawTarget:U?void 0:y.target,resizeEdge:U?.edge,resizeSession:U??void 0,skipHit:!0},"summary",y)},Un=y=>{let U=a?.finish(y,"cancel")??null;U&&C("pointer-cancel",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:U.pointerId,resizeEdge:U.edge,resizeSession:U,skipHit:!0},"summary",y)},Wn=y=>{C("pointer-click",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),rawTarget:y.target},"full",y)},zn=y=>{C("pointer-double-click",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),rawTarget:y.target},"full",y)},Gt=y=>{if(y&&y.target!==jt&&y.target!==Je)return;let U=y?{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)}:D;if(y&&U&&U.clientX>0&&U.clientX<e.innerWidth&&U.clientY>0&&U.clientY<e.innerHeight){pe();return}if(O(),y){$e(),le=e.setTimeout(()=>{le=null,D=null,B(),ce=!1,Ee(),k(U??void 0)},rs);return}$e(),B(),ce=!1,Ee(),D=null,V?.clear(),k(U??void 0)},jn=()=>Gt(),qo=()=>{ue=null,f({kind:"scroll",payload:{metrics:Nt(e)}}),$o()},qe=()=>{ce=!0,V?.clear(),B(),D&&(de=e.setTimeout(()=>{de=null,ce=!1,pe()},os)),ue===null&&(ue=kt(e,qo))};e.document.addEventListener("pointerdown",$n,!0),e.document.addEventListener("pointermove",Hn,{passive:!0,capture:!0}),e.document.addEventListener("pointerup",qn,!0),e.document.addEventListener("pointercancel",Kn,!0),e.document.addEventListener("lostpointercapture",Un,!0),e.document.addEventListener("click",Wn,!0),e.document.addEventListener("dblclick",zn,!0),e.addEventListener("scroll",qe,{passive:!0}),e.document.addEventListener("scroll",qe,{capture:!0,passive:!0}),e.addEventListener("resize",pe,{passive:!0}),e.addEventListener("blur",jn),e.document.addEventListener("load",pe,!0),jt.addEventListener("pointerleave",Gt,!0);let bt=e.visualViewport;bt?.addEventListener?.("resize",pe,{passive:!0}),bt?.addEventListener?.("scroll",qe,{passive:!0});let Gn=e.ResizeObserver,Yn=typeof Gn=="function"?new Gn(pe):null;Yn?.observe(Je);let Xn=e.MutationObserver,Ln=typeof Xn=="function"?new Xn(y=>{y.some(Ke=>Ke.type!=="attributes"||Ke.attributeName!==Yr)&&pe()}):null;Ln?.observe(Je,{attributes:!0,childList:!0,subtree:!0}),i=()=>{O(),$e(),B(),ce=!1,Ee(),D=null,V?.cleanup(),Yn?.disconnect(),Ln?.disconnect(),ue!==null&&(Dt(e,ue),ue=null),Y(),e.document.removeEventListener("pointerdown",$n,!0),e.document.removeEventListener("pointermove",Hn,!0),e.document.removeEventListener("pointerup",qn,!0),e.document.removeEventListener("pointercancel",Kn,!0),e.document.removeEventListener("lostpointercapture",Un,!0),e.document.removeEventListener("click",Wn,!0),e.document.removeEventListener("dblclick",zn,!0),e.removeEventListener("scroll",qe),e.document.removeEventListener("scroll",qe,!0),e.removeEventListener("resize",pe),e.removeEventListener("blur",jn),e.document.removeEventListener("load",pe,!0),jt.removeEventListener("pointerleave",Gt,!0),bt?.removeEventListener?.("resize",pe),bt?.removeEventListener?.("scroll",qe)}},K=I=>{let R=I.detail;R?.composition?.routeId&&L(R)},Z=I=>{let R=I.detail;R?.state&&w(R)},ee=I=>{let R=I.data;if(!Cr(R)||R.body.type!=="request"||R.body.kind!=="apply-node-patch"&&R.body.kind!=="get-hit-by-ref"&&R.body.kind!=="get-path-by-ref"&&R.body.kind!=="get-scroll-metrics"&&R.body.kind!=="scroll-to"&&R.body.kind!=="scroll-by"&&R.body.kind!=="set-interaction-mode"&&R.body.kind!=="set-selection-visual"&&R.body.kind!=="clear-selection-visual"&&R.body.kind!=="set-resize-visual"&&R.body.kind!=="clear-resize-visual"&&R.body.kind!=="set-theme-override"&&R.body.kind!=="clear-theme-override"&&R.body.kind!=="get-theme-variables"&&R.body.kind!=="compute-drop-target-at-point"&&R.body.kind!=="observe-node-bounds"&&R.body.kind!=="clear-node-bounds-observer"&&R.body.kind!=="restore-text-edit"&&R.body.kind!=="clear-text-edit-rollback"&&R.body.kind!=="start-text-edit-at-point"&&R.body.kind!=="hit-test-at-point"&&!Dr(R.body))return;let S=R.body,Y=typeof R.sessionKey=="string"?R.sessionKey:null,V=I.source,ie=I.origin;if(!Y||!ie||!V||typeof V.postMessage!="function"||!v(Y,V))return;if(u){if(u.sourceWindow!==V||u.targetOrigin!==ie)return;u.sessionKey!==Y&&(_(),$(),q(),u=null)}F(Y,V,ie),x(),E();let D=te=>{let ue=typeof S.id=="string"?S.id:"unknown";V.postMessage(it({id:ue,...te},{sessionKey:Y}),ie)};try{if(Dr(S)){Bs({message:S,sendEvent:O=>{V.postMessage(it({type:"event",...O},{sessionKey:Y}),ie)},sendResponse:D,subscriptions:b,getCurrentDocument:t.getCurrentDocument,setCurrentDocument:t.setCurrentDocument,onBridgeRequestError:t.onBridgeRequestError,nextRouteReadySequence:()=>g+=1,windowLike:e});return}if(S.kind==="apply-node-patch"){let O=ye(e.document,S.payload.ref,t.getCurrentDocument?.()??null);if(!O){D({type:"response",ok:!1,error:"No editable element found for patch target"});return}let B=S.payload.preview,ne=B?ka(B.sessionId,S.payload.ref):null;if(ne&&B){let Te=st.get(ne)??-1;if(B.revision<Te){D({type:"response",ok:!0,result:{applied:!1,appliedRevision:B.revision,stale:!0,latestRevision:Te}});return}if(B.revision===Te){D({type:"response",ok:!0,result:{applied:!1,appliedRevision:B.revision,duplicate:!0,latestRevision:Te}});return}}if(Na(O,S.payload.patch),ne&&B&&Da(ne,B.revision),B?.responseDetail==="none"){D({type:"response",ok:!0,result:{applied:!0,appliedRevision:B.revision}});return}D({type:"response",ok:!0,result:Re(O,ge(e.document,O,t.getCurrentDocument?.()??null),t.getDocumentEntry,B?.responseDetail??"full",void 0,"full",t.getCurrentDocument?.()??null)});return}if(S.kind==="get-hit-by-ref"){let O=ye(e.document,S.payload.ref,t.getCurrentDocument?.()??null);if(!O){D({type:"response",ok:!1,error:"No editable element found for hit target"});return}D({type:"response",ok:!0,result:Re(O,ge(e.document,O,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full",void 0,"full",t.getCurrentDocument?.()??null)});return}if(S.kind==="get-path-by-ref"){let O=ye(e.document,S.payload.ref,t.getCurrentDocument?.()??null);if(!O){D({type:"response",ok:!1,error:"No editable element found for path target"});return}let B=[],ne=O;for(;ne;)ne.getAttribute("data-vcp-edit-key")&&B.push(Re(ne,ge(e.document,ne,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full",void 0,"rect-only",t.getCurrentDocument?.()??null)),ne=ne.parentElement;D({type:"response",ok:!0,result:B.reverse()});return}if(S.kind==="restore-text-edit"||S.kind==="clear-text-edit-rollback"){let O=S.payload.ref;if(S.kind==="clear-text-edit-rollback"){r&&Br(r.ref,O)&&(r=null),D({type:"response",ok:!0,result:{cleared:!0}});return}if(!r||!Br(r.ref,O)){D({type:"response",ok:!1,error:"No pending text edit rollback snapshot"});return}let B=Ls(e.document,r,t.getCurrentDocument?.()??null);r=null,D(B?{type:"response",ok:!0,result:{restored:!0}}:{type:"response",ok:!1,error:"Failed to restore text edit snapshot"});return}if(S.kind==="get-scroll-metrics"){D({type:"response",ok:!0,result:Nt(e)});return}if(S.kind==="scroll-to"){let O=Number(S.payload.x),B=Number(S.payload.y);if(!Number.isFinite(O)||!Number.isFinite(B)){D({type:"response",ok:!1,error:"Invalid scroll position"});return}e.scrollTo({left:O,top:B}),D({type:"response",ok:!0,result:Nt(e)});return}if(S.kind==="scroll-by"){let O=Number(S.payload.deltaX),B=Number(S.payload.deltaY);if(!Number.isFinite(O)||!Number.isFinite(B)){D({type:"response",ok:!1,error:"Invalid scroll delta"});return}e.scrollBy({left:O,top:B}),D({type:"response",ok:!0,result:{...Nt(e),scrolled:!0}});return}if(S.kind==="set-interaction-mode"){S.payload.enabled?N(Y,V,ie):u?.sourceWindow===V&&u.targetOrigin===ie&&u.sessionKey===Y&&(_(),$()),D({type:"response",ok:!0,result:{interactionEnabled:S.payload.enabled}});return}if(S.kind==="set-selection-visual"){let O=!1;i?s?(O=s.setRef(S.payload.ref),O||(s.cleanup(),s=null)):(s=vs(e,S.payload.ref,t.getCurrentDocument),O=!!s):(s?.cleanup(),s=null),D({type:"response",ok:!0,result:{version:nt,active:O}});return}if(S.kind==="clear-selection-visual"){s?.cleanup(),s=null,D({type:"response",ok:!0,result:{version:nt,active:!1}});return}if(S.kind==="set-resize-visual"){a?.cleanup(),a=null,i&&(a=Os(e,S.payload.ref,t.getCurrentDocument,({clientX:O,clientY:B,session:ne})=>{f({kind:"pointer-cancel",payload:{clientX:O,clientY:B,buttons:0,pointerId:ne.pointerId,resizeEdge:ne.edge,resizeSession:ne,hit:null,section:null,sectionGap:null}})})),D({type:"response",ok:!0,result:{version:rt,active:!!a}});return}if(S.kind==="clear-resize-visual"){a?.cleanup(),a=null,D({type:"response",ok:!0,result:{version:rt,active:!1}});return}if(S.kind==="set-theme-override"){Oa(e.document,S.payload),D({type:"response",ok:!0,result:{themeOverrideApplied:!0}});return}if(S.kind==="clear-theme-override"){Ma(e.document),D({type:"response",ok:!0,result:{themeOverrideCleared:!0}});return}if(S.kind==="get-theme-variables"){D({type:"response",ok:!0,result:Ba(e.document,S.payload.names)});return}if(S.kind==="compute-drop-target-at-point"){let O=Number(S.payload?.x),B=Number(S.payload?.y);if(!Number.isFinite(O)||!Number.isFinite(B)){D({type:"response",ok:!1,error:"Invalid drop target point"});return}D({type:"response",ok:!0,result:Ra(e,O,B,S.payload.dragKind,S.payload.movingRef,t.getCurrentDocument?.()??null,t.getDocumentEntry)});return}if(S.kind==="observe-node-bounds"){let O=S.payload.ref;if(!O){D({type:"response",ok:!1,error:"Missing bounds observer target"});return}let B=ye(e.document,O,t.getCurrentDocument?.()??null);if(!B){D({type:"response",ok:!1,error:"No editable element found for bounds observer target"});return}o?.();let ne=ba(e,B,O,t.getCurrentDocument,(Te,yt,pe)=>{c+=1,f({kind:"geometry-batch",payload:{sequence:c,sourceEventAt:pe.sourceEventAt,captureStartedAt:pe.captureStartedAt,capturedAt:pe.capturedAt,reason:Te,snapshots:[yt]}})});o=ne.cleanup,D({type:"response",ok:!0,result:{observing:!0}}),f({kind:"node-bounds-change",payload:{hit:ga(Re(B,O,t.getDocumentEntry,"summary",e,"rect-only",t.getCurrentDocument?.()??null),ne.initialSnapshot)}});return}if(S.kind==="clear-node-bounds-observer"){o?.(),o=null,D({type:"response",ok:!0,result:{cleared:!0}});return}if(S.kind!=="hit-test-at-point"&&S.kind!=="start-text-edit-at-point")return;let te=Number(S.payload?.x),ue=Number(S.payload?.y);if(!Number.isFinite(te)||!Number.isFinite(ue)){D({type:"response",ok:!1,error:"Invalid text edit point"});return}let le=S.kind==="hit-test-at-point"?ut(e.document,te,ue,t.getCurrentDocument?.()??null):Qs(e.document,te,ue,t.getCurrentDocument?.()??null,t.getDocumentEntry);if(!le){D({type:"response",ok:!1,error:S.kind==="hit-test-at-point"?"No editable element at point":"No editable text element at point"});return}let de=S.kind==="start-text-edit-at-point"?le:null,ce=S.kind==="hit-test-at-point"?le:de.element,be=S.payload.detailLevel??"full",Se=be==="full"?ge(e.document,ce,t.getCurrentDocument?.()??null):Mt(e.document,ce,t.getCurrentDocument?.()??null),Ee=de&&typeof de.textSegmentIndex=="number"?{...Se,textSegmentIndex:de.textSegmentIndex}:Se,$e=Re(ce,Ee,t.getDocumentEntry,be,void 0,"full",t.getCurrentDocument?.()??null);if(S.kind==="hit-test-at-point"){D({type:"response",ok:!0,result:$e});return}_(),n=$a(e,ce,Ee,O=>{V.postMessage(it({type:"event",...O},{sessionKey:Y}),ie)},{...de?.textNode?{textNode:de.textNode}:{},onCommitSnapshot:O=>{r=O}}),D({type:"response",ok:!0,result:{ref:Ee}})}catch(te){D({type:"response",ok:!1,error:te instanceof Error?te.message:"Failed to start text edit"})}};return e.addEventListener("message",ee),e.addEventListener(hn,K),e.addEventListener(fn,Z),P(),()=>{_(),$(),u=null,q(),e.removeEventListener("message",ee),e.removeEventListener(hn,K),e.removeEventListener(fn,Z)}}function Is(e,t){let n=e.document,r=n.head??n.documentElement;if(typeof r?.appendChild!="function")return null;let i=Yr,o="data-vcp-designer-selection-visual",s=n.createElement("style");s.setAttribute("data-vcp-designer-hover-visual-style","true"),s.textContent=`
1
+ function Qn(e){let t=new Map,n=[],r=new Map,i=[],o=e.pageComposition.status==="supported"?e.pageComposition.placementUnitKeys:[],s=new Map(o.map((p,g)=>[p,g])),a=e.pageComposition.status==="supported"?{status:"supported",containerKey:e.pageComposition.containerKey,hasBusinessMembers:e.pageComposition.hasBusinessMembers,placementUnitKeys:e.pageComposition.placementUnitKeys,placements:e.pageComposition.placements.map(p=>({placementKey:p.placementKey,placementUnitKey:p.placementUnitKey,relation:p.relation}))}:{status:"unsupported",reason:e.pageComposition.reason,diagnostics:e.pageComposition.diagnostics},c=e.entries.flatMap((p,g)=>p.dynamicDataSummary?[[g,p.dynamicDataSummary]]:[]),u=new Map(e.entries.map((p,g)=>[p.key,g])),d=[];for(let[p,g]of e.entries.entries()){let b=g.pageCompositionActionScope;if(!b)continue;if(b.kind!=="source-siblings"){d.push([p,{kind:b.kind}]);continue}let T=b.siblingKeys.map(_=>{let P=u.get(_);if(P===void 0)throw new Error("Render entry "+g.key+" references missing source sibling "+_);return P});d.push([p,{kind:"source-siblings",siblingEntryIndexes:T}])}let l=p=>{let g=t.get(p);if(typeof g=="number")return g;let b=n.length;return n.push(p),t.set(p,b),b},m=p=>{let g=null;for(let b of Go(p)){let T=`${g??"root"}\0${b}`,_=r.get(T);if(typeof _=="number"){g=_;continue}let P=i.length;i.push([g,l(b)]),r.set(T,P),g=P}if(g===null)throw new Error("Document key must not be empty");return g};return{encoding:"segment-trie-v1",siteId:e.siteId,snapshotId:e.snapshotId,composition:{...e.composition},routeId:e.composition.routeId,version:e.version,pageComposition:a,tokens:n,nodes:i,entries:e.entries.map(p=>{let g=p.pageCompositionUnitKey?s.get(p.pageCompositionUnitKey)??-1:-1;if(p.pageCompositionUnitKey&&g<0)throw new Error(`Render entry ${p.key} references unknown page composition unit ${p.pageCompositionUnitKey}`);return[m(p.key),Uo(p.operationSummary),...g>=0?[g]:[]]}),...d.length>0?{pageCompositionActionScopes:d}:{},...e.entries.every(p=>p.parentKey!==void 0)?{entryParentNodeIds:e.entries.map(p=>p.parentKey===null?null:m(p.parentKey))}:{},...c.length>0?{dynamicDataSummaries:c}:{}}}function Zn(e){if(!zo(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=new Map(e.pageCompositionActionScopes??[]),o=s=>{let a=t.get(s);if(a)return a;let c=e.nodes[s];if(!c)throw new Error(`Missing compact document node ${s}`);let[u,d]=c,l=e.tokens[d];if(typeof l!="string")throw new Error(`Missing compact document token ${d}`);let m=`${u===null?"":o(u)}${l}`;return t.set(s,m),m};return{siteId:e.siteId,snapshotId:e.snapshotId,composition:{...e.composition},routeId:e.composition.routeId,version:e.version,pageComposition:e.pageComposition,entries:e.entries.map((s,a)=>{let[c,u,d]=s,l=d===void 0?void 0:n[d];if(d!==void 0&&!l)throw new Error(`Missing page composition unit ${d}`);let m=e.entryParentNodeIds?.[a],p=i.get(a),g=p?.kind==="source-siblings"?{kind:"source-siblings",siblingKeys:p.siblingEntryIndexes.map(b=>{let T=e.entries[b];if(!T)throw new Error(`Missing source sibling entry ${b}`);return o(T[0])})}:p;return{key:o(c),...e.entryParentNodeIds?{parentKey:m===null?null:o(m)}:{},...l?{pageCompositionUnitKey:l}:{},...g?{pageCompositionActionScope:g}:{},operationSummary:Wo(u),...r.get(a)?{dynamicDataSummary:r.get(a)}:{}}})}}function Uo(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 zo(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"||!jo(t.composition)||typeof t.routeId!="string"||t.routeId!==t.composition.routeId||!Number.isInteger(t.version)||t.version<0||!St(t.pageComposition)||!Array.isArray(t.tokens)||!t.tokens.every(a=>typeof a=="string")||!Array.isArray(t.nodes)||!Array.isArray(t.entries))return!1;let n=t.nodes;if(!n.every((a,c)=>Array.isArray(a)&&a.length===2&&(a[0]===null||xe(a[0])&&a[0]<c)&&xe(a[1])&&a[1]<t.tokens.length)||!t.entries.every(a=>Array.isArray(a)&&(a.length===2||a.length===3)&&xe(a[0])&&a[0]<n.length&&xe(a[1])&&a[1]<=15&&(a.length===2||xe(a[2]))))return!1;let r=t.entryParentNodeIds;if(r!==void 0&&(!Array.isArray(r)||r.length!==t.entries.length||!r.every(a=>a===null||xe(a)&&a<n.length)))return!1;let i=t.dynamicDataSummaries,o=t.pageCompositionActionScopes;return(o===void 0||Array.isArray(o)&&o.every(a=>{if(!Array.isArray(a)||a.length!==2||!xe(a[0])||a[0]>=t.entries.length||!St(a[1])||!["route-unit","source-siblings","unavailable"].includes(String(a[1].kind)))return!1;let c=a[1];return c.kind!=="source-siblings"||Array.isArray(c.siblingEntryIndexes)&&c.siblingEntryIndexes.length>=2&&c.siblingEntryIndexes.every(u=>xe(u)&&u<t.entries.length)&&c.siblingEntryIndexes.includes(a[0])}))&&(i===void 0||Array.isArray(i)&&i.every(a=>Array.isArray(a)&&a.length===2&&xe(a[0])&&a[0]<t.entries.length&&St(a[1])))}function St(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function jo(e){return!St(e)||typeof e.routeId!="string"?!1:e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string"}function xe(e){return typeof e=="number"&&Number.isInteger(e)&&e>=0}function Go(e){if(!e)return[];let t=[],n=0,r=Jn(e,n);if(r<0)return t.push(e),t;for(t.push(e.slice(0,r)),n=r;n<e.length;){if(r=Jn(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 Jn(e,t){let n=e.indexOf("/",t),r=e.indexOf("::",t);return n<0?r:r<0?n:Math.min(n,r)}var Qe="SITE_EDIT_COMPOSITION_SESSION_MISMATCH",Ue="SITE_EDIT_COMPOSITION_SESSION_REQUIRED",Du="SITE_EDIT_COMPOSITION_REINITIALIZE_REQUIRED",se=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(j(t)&&j(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==="get-operation-result"||t==="undo"||t==="redo"}static isMessage(t,n={}){return!j(t)||typeof t.type!="string"?!1:t.type==="request"?Lo(t.payload,n):t.type==="response"||t.type==="error"?j(t.payload)&&typeof t.payload.id=="string":t.type==="event"?j(t.payload)&&j(t.payload.event):t.type==="auth"?j(t.payload)&&typeof t.payload.key=="string":t.type==="ping"||t.type==="pong"?j(t.payload)&&typeof t.payload.id=="string":t.type==="auth-ok"&&j(t.payload)&&t.payload.ok===!0}},Et=class{constructor(t){this.options=t,this.session={subscribedCompositionKeys:new Set},this.messageQueue=new Zt,this.eventDispatcher=new Qt(n=>{this.sendJson(n)}),this.unsubscribe=t.engine.subscribe(n=>{this.handleEngineEvent(n)}),t.socket.onmessage=n=>{let r=Xo(n.data);if(r!==null){this.sendJson({type:"pong",payload:{id:r}});return}try{this.messageQueue.enqueue(()=>this.handleRawMessage(n.data))}catch(i){this.sendJson({type:"error",payload:{id:"unknown",kind:"get-document",message:i instanceof Error?i.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=Yt(r),s=await this.resolve(o),a=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:Ne({...a,data:{...a.data,document:tr(a.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,ni(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,Ne(s,o));return}case"get-style-context":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,Ne(await this.options.engine.getStyleContext(o),o));return}case"get-object-edit-context":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,Ne(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,Ne(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,Ne(await this.options.engine.getSourceTree(o),o));return}case"get-source-file":{let o=await this.resolveWireContext(r);this.sendResult(i,r.kind,Ne(await this.options.engine.getSourceFile({path:r.path,composition:o}),o));return}case"resolve-source-location":{let o=await this.resolveWireContext(r),s=Ne(await this.options.engine.resolveSourceLocation({key:r.key,composition:o}),o);this.sendResult(i,r.kind,s);return}case"execute":case"get-operation-result":{let o=await this.resolveOperationWireContext(r.request),s=await this.resolveWireContext(r);if(De(o)!==De(s))throw new Oe(Qe,"The execute request composition does not match its operation composition.");let a=await this.normalizeOperationRequest(r.request,o);if(r.kind==="get-operation-result"){this.sendResult(i,r.kind,await this.options.engine.getOperationResult?.(a)??null);return}await this.handleBufferedOperation(i,r.kind,()=>this.options.engine.execute(a));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=se.extractRequestInfo(t);this.sendJson({type:"error",payload:{...r,message:Jt(n),code:Lt(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 Oe(Ue,"Initialize a composition session before issuing this request.");if(De(r)!==De(n.context))throw new Oe(Qe,"The request composition does not match the active socket session.");return n.context}async resolveWireContext(t){let n=Yt(t);return this.resolveAndAssert(n)}async resolveOperationWireContext(t){let n=ei(t);return this.resolveAndAssert(n)}activateSession(t){this.session.activeComposition=t,this.session.subscribedCompositionKeys.clear(),this.session.subscribedCompositionKeys.add(De(t))}async normalizeOperationRequest(t,n){let r={...t,composition:er(n)};if(r.target.kind==="route"){let i=r.target,o=Yt(i),s=await this.resolveAndAssert(o);r.target={...i,composition:er(s)}}return r}handleEngineEvent(t){let n=t?.composition;if(!Zo(n))return;let r=De(n);this.session.subscribedCompositionKeys.has(r)&&(this.eventDispatcher.push(t),t.type==="site-edit.graph.invalidated"&&r===ti(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(se.parseMessage(t,{validateOperationRequest:this.options.validateOperationRequest}))}catch(n){let r=ri(t);this.sendJson({type:"error",payload:{...r,message:Jt(n),code:Lt(n)}})}}sendJson(t){this.options.socket.send(se.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:Jt(i),code:Lt(i)}})}finally{this.eventDispatcher.flush()}}},Yo=256;function Xo(e){if(e.length>Yo||!e.includes('"ping"'))return null;try{let t=JSON.parse(e);return j(t)&&t.type==="ping"&&j(t.payload)&&typeof t.payload.id=="string"?t.payload.id:null}catch{return null}}var Oe=class extends Error{constructor(t,n){super(n),this.code=t,this.name="BridgeProtocolError"}},Qt=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))}},Zt=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 Lo(e,t){if(!j(e)||typeof e.id!="string"||!se.isRequestKind(e.kind))return!1;let n=Ze(e.composition);switch(e.kind){case"initialize-session":return n&&(e.mutationContext===void 0||Xt(e.mutationContext));case"get-document":case"get-style-context":return n;case"get-object-edit-context":return typeof e.key=="string"&&n&&Jo(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":case"get-operation-result":return n&&Qo(e.request)&&(e.request.mutationContext===void 0||Xt(e.request.mutationContext))&&(t.validateOperationRequest?.(e.request)??!0);case"undo":case"redo":return n&&e.mutationContext===void 0||n&&Xt(e.mutationContext)}}function Jo(e){if(e===void 0)return!0;if(!j(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 Qo(e){return j(e)&&typeof e.id=="string"&&typeof e.siteId=="string"&&typeof e.baseSnapshotId=="string"&&Ze(e.composition)&&typeof e.kind=="string"&&j(e.target)&&(e.target.kind!=="route"||Ze(e.target.composition))&&typeof e.documentVersion=="number"&&Number.isInteger(e.documentVersion)&&e.documentVersion>=0&&j(e.params)}function Ze(e){return j(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 Zo(e){return j(e)&&typeof e.routeId=="string"&&(e.effectiveTemplateId===void 0||typeof e.effectiveTemplateId=="string")}function Yt(e){if(Ze(e.composition))return e.composition;throw new Oe(Ue,"A composition selector is required for this request.")}function ei(e){if(j(e)&&Ze(e.composition))return e.composition;throw new Oe(Ue,"A composition selector is required for execute.")}function er(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function ti(e){return e.activeComposition?De(e.activeComposition):null}function De(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function Ne(e,t){return j(e)&&e.ok===!0?{...e,composition:t}:e}function ni(e,t){return!j(e)||e.ok!==!0?e:{...e,...t?{composition:t}:{},data:tr(e.data)}}function tr(e){let t=e;return Qn(t.routeId?t:{...t,routeId:t.composition.routeId})}function j(e){return typeof e=="object"&&e!==null}function Xt(e){return j(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 Lt(e){if(!(!j(e)||typeof e.code!="string"||e.code.length===0))return e.code}function Jt(e){return e instanceof Error||j(e)&&typeof e.message=="string"&&e.message.length>0?e.message:"Unknown websocket operation failure"}function ri(e){try{return se.extractRequestInfo(JSON.parse(e))}catch{return{id:"unknown",kind:"get-document"}}}var oi="vcp:designer:trace",ii="designer_trace",nr="__VCP_DESIGNER_TRACE__";var si=/(authorization|cookie|token|secret|providerTrace|headers?|sourceCode|rawSource|fullSource)/i;function ai(e=globalThis){let t=e;try{if(t.localStorage?.getItem(oi)==="1")return!0}catch{}try{let n=t.location?.search??"";return new URLSearchParams(n).get(ii)==="1"}catch{return!1}}function Ce(e,t={},n=globalThis){if(!ai(n))return;let r={type:e,timestamp:Date.now(),payload:ci(t)},i=n,o=i[nr]??[];o.push(r),o.length>1e3&&o.splice(0,o.length-1e3),i[nr]=o;let s=n.console?.debug;r.payload.diagnosticOnly!==!0&&typeof s=="function"&&s.call(n.console,"[designer-trace]",r)}function ci(e){return en(e,0)}function en(e,t){if(t>4)return"[truncated]";if(Array.isArray(e))return e.map(r=>en(r,t+1));if(!e||typeof e!="object")return e;let n={};for(let[r,i]of Object.entries(e)){if(si.test(r)){n[r]="[redacted]";continue}n[r]=en(i,t+1)}return n}var Ct=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.heartbeatState=null,this.connectionStatusListeners=new Set}connect(){return this.socket?.readyState===tn&&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=We(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=Math.max(0,this.options.connectTimeoutMs??li);o>0&&(i.deadline=setTimeout(()=>{this.connectAttempt!==i||i.settled||(Ce("bridge.connect-timeout",{connectTimeoutMs:o}),this.cleanupSocket(r,rr(pi,`Bridge connection did not complete within ${o}ms`),"failed"))},o));let s=()=>{this.socket!==r||this.connectAttempt!==i||(i.settled=!0,clearTimeout(i.deadline),this.connectAttempt=null,this.connectPromise=null,this.setConnectionState("open"),this.startHeartbeat(r),t())},a=(c,u)=>{this.cleanupSocket(r,c,u)};r.onopen=()=>{if(!(this.socket!==r||this.connectAttempt!==i)){if(this.options.authKey){try{r.send(se.stringifyMessage({type:"auth",payload:{key:this.options.authKey}}))}catch(c){a(We(c,"WebSocket auth failed"),"failed")}return}s()}},r.onerror=c=>{if(this.socket!==r)return;let u=We(c,"WebSocket failed");a(u,"failed")},r.onmessage=c=>{if(this.socket===r){if(this.noteInboundMessage(r),this.options.authKey&&this.connectAttempt===i&&!i.settled){this.handleAuthHandshakeMessage(c.data,r,i,()=>{s()});return}this.handleMessage(c.data)}},r.onclose=c=>{if(this.socket!==r)return;let u=this.intentionalClose,d=new Error(yi(c,{intentional:u}));a(d,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=tt(t),i={...t,composition:Ae(r)};return this.request("execute",{request:i})}getOperationResult(t){return this.request("get-operation-result",{request:t,composition:Ae(tt(t))})}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 Ae(t)}request(t,n){let r=this.socket;if(!r||r.readyState!==tn||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=Ii(i,t,n);return Ce("bridge.request",{id:i,kind:t,routeId:typeof n.routeId=="string"?n.routeId:null,key:typeof n.key=="string"?n.key:null,operationKind:or(n.request,"kind"),documentVersion:or(n.request,"documentVersion")}),new Promise((s,a)=>{let c=this.resolveRequestTimeoutMs(t),u=c>0?setTimeout(()=>{let d=this.pending.get(i);d&&(this.pending.delete(i),Ce("bridge.response",{id:i,kind:t,ok:!1,timedOut:!0}),d.reject(new Error(`Bridge request timed out after ${c}ms: ${t}`)))},c):null;u?.unref?.(),this.pending.set(i,{kind:t,timeout:u,resolve:d=>s(d),reject:a});try{r.send(se.stringifyMessage(o))}catch(d){let l=We(d,"WebSocket send failed");this.clearPendingRequest(i),a(l),this.cleanupSocket(r,l,"failed")}})}handleAuthHandshakeMessage(t,n,r,i){try{if(se.parseMessage(t).type==="auth-ok"){i();return}throw new Error("Bridge authentication failed")}catch(o){let s=We(o,"Bridge authentication failed");this.connectAttempt===r&&this.cleanupSocket(n,s,"failed")}}handleMessage(t){let n=se.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"){Ce("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}Ce("bridge.response",{id:n.payload.id,kind:r.kind,ok:!0,resultVersion:bi(n.payload.result)}),r.resolve(r.kind==="get-document"?{...n.payload.result,data:cr(n.payload.result.data,n.payload.result.composition)}:r.kind==="initialize-session"?Si(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):gi[t]??mi}cleanupSocket(t,n,r){if(this.socket===t&&(this.socket=null),this.stopHeartbeat(t),this.connectAttempt?.socket===t){let i=this.connectAttempt;this.connectAttempt=null,clearTimeout(i.deadline),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===ui||t.readyState===tn)&&t.close()}catch{}}startHeartbeat(t){let n=this.options.heartbeat===void 0?di:this.options.heartbeat;if(!n||n.intervalMs<=0||n.timeoutMs<=0)return;this.stopHeartbeat(this.heartbeatState?.socket??t);let r=this.options.visibility===void 0?fi():this.options.visibility,i=()=>r?.visibilityState!=="hidden",o=()=>{this.heartbeatState?.socket===t&&this.heartbeatState.deadline&&(clearTimeout(this.heartbeatState.deadline),this.heartbeatState.deadline=null)},s=()=>{let c=this.heartbeatState;if(!(c?.socket!==t||this.socket!==t||this.connectionState!=="open"||c.deadline||!i())){try{t.send(se.stringifyMessage({type:"ping",payload:{id:`ping-${this.sequence+=1}`}}))}catch(u){this.cleanupSocket(t,We(u,"WebSocket heartbeat send failed"),"failed");return}c.deadline=setTimeout(()=>{this.heartbeatState?.socket===t&&(this.heartbeatState.deadline=null,i()&&(Ce("bridge.heartbeat-timeout",{timeoutMs:n.timeoutMs}),this.cleanupSocket(t,rr(hi,`Bridge heartbeat was not answered within ${n.timeoutMs}ms`),"failed")))},n.timeoutMs)}},a=()=>{i()?s():o()};r?.addEventListener("visibilitychange",a),this.heartbeatState={socket:t,interval:setInterval(s,n.intervalMs),deadline:null,unbindVisibility:()=>r?.removeEventListener("visibilitychange",a)}}stopHeartbeat(t){let n=this.heartbeatState;!n||n.socket!==t||(clearInterval(n.interval),n.deadline&&clearTimeout(n.deadline),n.unbindVisibility(),this.heartbeatState=null)}noteInboundMessage(t){let n=this.heartbeatState;n?.socket===t&&n.deadline&&(clearTimeout(n.deadline),n.deadline=null)}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)}},ui=0,tn=1,li=1e4,di={intervalMs:2e4,timeoutMs:1e4},pi="SITE_EDIT_BRIDGE_CONNECT_TIMEOUT",hi="SITE_EDIT_BRIDGE_HEARTBEAT_TIMEOUT";function fi(){let e=globalThis.document;return e&&typeof e.visibilityState=="string"&&typeof e.addEventListener=="function"&&typeof e.removeEventListener=="function"?e:null}function rr(e,t){let n=new Error(`${e}: ${t}`);return n.code=e,n}var mi=15e3,gi={"get-source-tree":1e4,"get-source-file":1e4,"resolve-source-location":1e4,execute:6e4,"get-operation-result":6e4,undo:2e4,redo:2e4};function We(e,t){return e instanceof Error?e:new Error(t)}function yi(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 or(e,t){if(!e||typeof e!="object")return null;let r=e[t];return typeof r=="string"||typeof r=="number"?r:null}function bi(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 ar(e){let t="composition"in e?Ae(e.composition):Ae({routeId:e.routeId});return new nn({composition:t,initialDocument:e.initialDocument,client:e.client})}var nn=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=Ae(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=!ir(t.initialDocument),this.activeCompositionContext=this.sessionInitialized?{...t.initialDocument.composition}:null}async getDocument(t){this.requireBoundComposition(t);let n=ir(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,a=this.params.client.getStyleContext(n).then(c=>(this.styleGeneration===s&&this.styleContextCache.set(r,{generation:s,value:c.data}),c)).finally(()=>{this.styleContextInFlight.get(r)?.request===a&&this.styleContextInFlight.delete(r)});return this.styleContextInFlight.set(r,{generation:s,request:a}),a}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 a=this.editContextInFlight.get(o);if(a)return a;let c=this.objectGeneration,u=this.params.client.getObjectEditContext(t,i,...r?[r]:[]).then(d=>(this.objectGeneration===c&&this.editContextCache.set(o,d.data),d)).finally(()=>{this.editContextInFlight.get(o)===u&&this.editContextInFlight.delete(o)});return this.editContextInFlight.set(o,u),u}async getClassNameSource(t,n){let r=this.requireBoundComposition(n),i=this.objectCacheKey(t,r),o=this.classNameSourceCache.get(i);if(o)return o;let s=this.classNameSourceInFlight.get(i);if(s)return s;let a=this.objectGeneration,c=this.params.client.getClassNameSource(t,r).then(u=>(this.objectGeneration===a&&this.classNameSourceCache.set(i,u),u)).finally(()=>{this.classNameSourceInFlight.get(i)===c&&this.classNameSourceInFlight.delete(i)});return this.classNameSourceInFlight.set(i,c),c}async getSourceTree(t){return this.params.client.getSourceTree(this.requireBoundComposition(t))}async getSourceFile(t){return this.params.client.getSourceFile({path:t.path,composition:this.requireBoundComposition(t.composition)})}async resolveSourceLocation(t){return this.params.client.resolveSourceLocation({key:t.key,composition:this.requireBoundComposition(t.composition)})}async execute(t,n){let r=tt(t);r&&this.composition.templateId!==void 0&&this.requireBoundComposition(r);let i={...t,composition:r??this.composition};return this.params.client.execute(i)}async getOperationResult(t){return this.requireBoundComposition(t.composition),this.params.client.getOperationResult?this.params.client.getOperationResult(t):null}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 Ce("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){Ce("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}Ce("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&&It(n)===It(sr(t))}requireBoundComposition(t){let n=t===void 0?this.composition:Ae(t);if(!this.isAcceptedComposition(n))throw new Error(`Site edit bridge is bound to composition ${JSON.stringify(this.composition)}, received ${JSON.stringify(n)}`);return Ae(n)}isActiveComposition(t){let n=this.activeCompositionContext??sr(this.composition);return It(t)===It(n)}};function ir(e){return e.version===0&&e.entries.length===0}function Si(e){let t=e;return{...t,data:{...t.data,document:cr(t.data.document,t.composition)}}}function cr(e,t){let n=e,r=Zn(n.routeId?n:{...n,routeId:t?.routeId??n.composition?.routeId});return t?{...r,composition:t}:r}function Ae(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 It(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}function sr(e){return{routeId:e.routeId,...e.templateId?{effectiveTemplateId:e.templateId}:{}}}function tt(e){if(e&&typeof e=="object"){let t=e;if(t.composition&&typeof t.composition=="object"){let n=t.composition;if(typeof n.routeId=="string")return{routeId:n.routeId,...typeof n.templateId=="string"?{templateId:n.templateId}:{}}}}}function Ii(e,t,n){let r=Ae(t==="execute"?tt(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":case"get-operation-result":return{type:"request",payload:{...i,request:{...n.request,composition:tt(n.request)??r}}}}}function ae(e){return JSON.stringify([e.routeId,e.effectiveTemplateId??null])}var Ci={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"},ur=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"]),lr=new Set(["checked","selected","value"]),vi=new Set(["children","key","ref","dangerouslysetinnerhtml"]),Ri=new Set(["data-designer-hover-outline","data-designer-select-outline"]),_i=/^[A-Za-z_$][A-Za-z0-9_$:-]*$/u,dr=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 Ti(e){if(!Ai(e))return rn("Typed property changes are not previewable");if(e.element.kind!=="host")return rn(`The '${e.element.tagName}' component may transform its props before rendering`);let t={};for(let n of e.changes){let r=xi(n);if(!r)return rn(`The DOM result for '${n.name}' cannot be proven equivalent`);t[r.name]=r.value}return e.runtimeAttributes,{mode:"dom",patch:{attributes:t}}}function xi(e){if(!hr(e.name))return null;let t=e.name,n=pr(t);if(!n||lr.has(t))return null;if(e.operation==="remove")return{name:n,value:null};let r=e.value;return t==="download"?Ni(n,r):ur.has(t)?wi(n,r):/^(aria|data)-[A-Za-z0-9_.:-]+$/u.test(t)?Pi(n,r):dr.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 pr(e){return hr(e)&&(e==="download"||lr.has(e)||ur.has(e)||dr.has(e)||/^(aria|data)-[A-Za-z0-9_.:-]+$/u.test(e))?Ci[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 hr(e){if(!_i.test(e))return!1;let t=e.toLowerCase();return vi.has(t)||t.startsWith("data-vcp-")||Ri.has(t)||/^on[a-z]/iu.test(e)?!1:t!=="classname"&&t!=="class"&&t!=="style"}function wi(e,t){return t===null||t===!1?{name:e,value:null}:t===!0?{name:e,value:""}:null}function Ni(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 Pi(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 rn(e){return{mode:"after-render",reason:e}}var fr="vcp-window-message",mr=1;function gr(e){return{source:fr,version:mr,namespace:e.namespace,channel:e.channel,...e.sessionKey?{sessionKey:e.sessionKey}:{},body:e.body}}function yr(e){try{return A(e)?re(e,"source",fr)&&re(e,"version",mr)&&M(e,"namespace")&&M(e,"channel")&&me(e,"body")&&(!Be(e,"sessionKey")||M(e,"sessionKey")):!1}catch{return!1}}var _t="site-edit",br="frame-runtime",Sr="frame-announce",sn=1,nt=1,rt=1,Er=24;function it(e,t={}){return gr({namespace:_t,channel:br,sessionKey:t.sessionKey,body:e})}function Ir(){return gr({namespace:_t,channel:Sr,body:{type:"announce"}})}function Uu(e){try{return!yr(e)||e.namespace!==_t||e.channel!==Sr?!1:A(e.body)&&re(e.body,"type","announce")&&fe(e.body,["type"])}catch{return!1}}function Cr(e){try{return!yr(e)||e.namespace!==_t||e.channel!==br?!1:ns(e.body)}catch{return!1}}function ve(e){return A(e)&&M(e,"routeId")&&Pe(e,"templateId")&&fe(e,["routeId","templateId"])}function vt(e){return A(e)&&M(e,"routeId")&&Pe(e,"effectiveTemplateId")&&fe(e,["routeId","effectiveTemplateId"])}function fe(e,t){let n=new Set(t);return Reflect.ownKeys(e).every(r=>typeof r=="string"&&n.has(r))}var Be=(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 h(e,t){return Object.getOwnPropertyDescriptor(e,t)?.value}function re(e,t,n){return me(e,t)&&h(e,t)===n}function M(e,t){return me(e,t)&&typeof h(e,t)=="string"}function Tt(e,t){return me(e,t)&&typeof h(e,t)=="boolean"}function H(e,t){let n=h(e,t);return me(e,t)&&typeof n=="number"&&Number.isFinite(n)}function vr(e,t){let n=h(e,t);return me(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>0}function Pe(e,t){return!Be(e,t)||h(e,t)===void 0||M(e,t)}function ze(e,t){return!Be(e,t)||h(e,t)===void 0||H(e,t)}function Me(e,t){let n=h(e,t);return!Be(e,t)||n===void 0||me(e,t)&&typeof n=="number"&&Number.isInteger(n)&&n>=0}function J(e,t){return!Be(e,t)||h(e,t)===void 0}function A(e){if(typeof e!="object"||e===null||Array.isArray(e))return!1;let t=Object.getPrototypeOf(e);return t===Object.prototype||t===null}function ki(e){return A(e)&&Reflect.ownKeys(e).length===0}function Rt(e){if(!Array.isArray(e))return!1;for(let t=0;t<e.length;t+=1){let n=Object.getOwnPropertyDescriptor(e,String(t));if(n===void 0||!("value"in n)||typeof n.value!="string")return!1}return!0}function Ie(e){return A(e)&&M(e,"key")&&Me(e,"instanceIndex")&&Me(e,"instanceCount")&&Me(e,"textSegmentIndex")}function Di(e){return A(e)&&M(e,"blockId")&&Me(e,"blockIndex")&&Ie(h(e,"ref"))&&ot(h(e,"rect"))&&Tt(e,"targetIsSectionRoot")}function Oi(e){if(!A(e))return!1;let t=h(e,"placement"),n=h(e,"boundary");return M(e,"anchorBlockId")&&Me(e,"positionIndex")&&Ie(h(e,"anchorRef"))&&(t==="before"||t==="after")&&A(n)&&H(n,"top")&&H(n,"left")&&H(n,"width")}function ot(e){return A(e)&&["top","left","width","height"].every(t=>H(e,t))}function Rr(e){if(!A(e))return!1;let t=h(e,"rect"),n=h(e,"layout"),r=A(n)?h(n,"containingBlock"):null,i=h(e,"scrollContext"),o=A(r)&&(re(r,"kind","viewport")&&Reflect.ownKeys(r).length===1||re(r,"kind","document")&&Reflect.ownKeys(r).length===1||re(r,"kind","element")&&M(r,"runtimeNodeId"));return re(e,"version",sn)&&M(e,"runtimeNodeId")&&A(t)&&ot(h(t,"viewport"))&&ot(h(t,"document"))&&A(n)&&M(n,"position")&&M(n,"transform")&&o&&A(i)&&["scrollX","scrollY","viewportWidth","viewportHeight"].every(s=>H(i,s))&&me(i,"scrollContainers")&&Mi(h(i,"scrollContainers"))}function Mi(e){return Array.isArray(e)&&e.every(t=>A(t)&&M(t,"runtimeNodeId")&&H(t,"scrollLeft")&&H(t,"scrollTop"))}function on(e){return A(e)&&(J(e,"layoutSnapshot")||Rr(h(e,"layoutSnapshot")))}function Bi(e){return A(e)&&Ie(h(e,"ref"))&&me(e,"layoutSnapshot")&&Rr(h(e,"layoutSnapshot"))&&(J(e,"childBoxes")||Hi(h(e,"childBoxes")))&&(J(e,"childRects")||Vi(h(e,"childRects")))&&(J(e,"layout")||Fi(h(e,"layout")))&&(J(e,"spacing")||$i(h(e,"spacing")))}function Fi(e){if(!A(e))return!1;let t=h(e,"indicatorOrientation");return M(e,"display")&&(t==="horizontal"||t==="vertical")&&Pe(e,"flexDirection")&&Pe(e,"gridAutoFlow")}function Vi(e){return Array.isArray(e)&&e.every(t=>ot(t))}function Hi(e){return Array.isArray(e)&&e.every(t=>A(t)&&ot(h(t,"rect"))&&_r(h(t,"margin")))}function _r(e){return A(e)&&["marginTop","marginRight","marginBottom","marginLeft"].every(t=>H(e,t))}function $i(e){return _r(e)&&["paddingTop","paddingRight","paddingBottom","paddingLeft","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","columnGap","rowGap"].every(t=>H(e,t))}function qi(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)||!Bi(n.value))return!1}return!0}function Ki(e){return A(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&me(e,t)&&(typeof h(e,t)=="string"||h(e,t)===null))}function Tr(e){return e==null||typeof e=="string"||typeof e=="number"&&Number.isFinite(e)}function Ui(e){return A(e)&&Reflect.ownKeys(e).every(t=>typeof t=="string"&&me(e,t)&&Tr(h(e,t)))}function Wi(e){if(!A(e))return!1;let t=h(e,"priority");return M(e,"property")&&me(e,"value")&&Tr(h(e,"value"))&&(!Be(e,"priority")||t===void 0||t==="important")}function zi(e){return A(e)?(J(e,"attributes")||Ki(h(e,"attributes")))&&Pe(e,"className")&&(J(e,"style")||Ui(h(e,"style")))&&(J(e,"styleDeclarations")||Array.isArray(h(e,"styleDeclarations"))&&h(e,"styleDeclarations").every(Wi)):!1}function ji(e){return A(e)&&H(e,"x")&&H(e,"y")&&(J(e,"detailLevel")||re(e,"detailLevel","summary")||re(e,"detailLevel","full"))}function Gi(e){return A(e)&&Ie(h(e,"ref"))}function Yi(e){if(!A(e)||!A(h(e,"variables")))return!1;let t=h(e,"variables");return Reflect.ownKeys(t).every(n=>typeof n=="string"&&M(t,n))?J(e,"stylesheets")||Rt(h(e,"stylesheets")):!1}function Xi(e){if(!re(e,"type","request")||!M(e,"id")||!M(e,"kind")||!me(e,"payload"))return!1;let t=h(e,"kind"),n=h(e,"payload");switch(t){case"hit-test-at-point":case"start-text-edit-at-point":return ji(n);case"bridge-get-source-tree":return A(n)&&ve(h(n,"composition"))&&fe(n,["composition"]);case"get-scroll-metrics":case"clear-theme-override":return ki(n);case"bridge-get-history-status":case"bridge-undo":case"bridge-redo":return A(n)&&ve(h(n,"composition"))&&fe(n,["composition"]);case"bridge-get-source-file":return A(n)&&M(n,"path")&&ve(h(n,"composition"))&&fe(n,["path","composition"]);case"bridge-get-object-edit-context":return A(n)&&M(n,"key")&&ve(h(n,"composition"))&&ts(h(n,"selectionRef"))&&fe(n,["key","composition","selectionRef"]);case"bridge-resolve-source-location":case"bridge-get-class-name-source":return A(n)&&M(n,"key")&&ve(h(n,"composition"))&&fe(n,["key","composition"]);case"scroll-to":return A(n)&&H(n,"x")&&H(n,"y");case"scroll-by":return A(n)&&H(n,"deltaX")&&H(n,"deltaY");case"set-interaction-mode":return A(n)&&Tt(n,"enabled");case"set-selection-visual":return A(n)&&re(n,"version",nt)&&Ie(h(n,"ref"))&&re(n,"visible",!0);case"clear-selection-visual":return A(n)&&re(n,"version",nt);case"set-resize-visual":return A(n)&&re(n,"version",rt)&&Ie(h(n,"ref"))&&re(n,"visible",!0);case"clear-resize-visual":return A(n)&&re(n,"version",rt);case"set-theme-override":return Yi(n);case"get-theme-variables":return A(n)&&Rt(h(n,"names"));case"compute-drop-target-at-point":return A(n)&&H(n,"x")&&H(n,"y")&&(re(n,"dragKind","insert")||re(n,"dragKind","move"))&&(J(n,"movingRef")||Ie(h(n,"movingRef")));case"observe-node-bounds":case"clear-node-bounds-observer":return A(n)&&(J(n,"ref")||Ie(h(n,"ref")));case"apply-node-patch":return A(n)&&Ie(h(n,"ref"))&&zi(h(n,"patch"))&&(J(n,"preview")||A(h(n,"preview"))&&M(h(n,"preview"),"sessionId")&&Me(h(n,"preview"),"revision")&&Be(h(n,"preview"),"revision"));case"get-hit-by-ref":case"get-path-by-ref":case"restore-text-edit":case"clear-text-edit-rollback":return Gi(n);case"bridge-initialize-session":case"bridge-get-style-context":return A(n)&&ve(h(n,"composition"))&&fe(n,["composition"]);case"bridge-get-document":case"bridge-ensure-document-version":case"bridge-acknowledge-document-version":return A(n)&&ve(h(n,"composition"))&&ze(n,"minVersion")&&ze(n,"version")&&fe(n,["composition","minVersion","version"]);case"bridge-execute":case"bridge-get-operation-result":{if(!A(n))return!1;let r=h(n,"request"),i=h(n,"composition"),o=A(r)?h(r,"composition"):null;return!ve(i)||!A(r)||!ve(o)?!1:ae({routeId:i.routeId,...i.templateId?{effectiveTemplateId:i.templateId}:{}})===ae({routeId:o.routeId,...o.templateId?{effectiveTemplateId:o.templateId}:{}})&&fe(n,["composition","request"])}case"bridge-subscribe":case"bridge-unsubscribe":return A(n)&&M(n,"subscriptionId")&&ve(h(n,"composition"))&&fe(n,["subscriptionId","composition"]);default:return!1}}function Li(e){return re(e,"type","response")&&M(e,"id")&&Tt(e,"ok")&&(J(e,"error")||M(e,"error"))}function Ji(e){if(!A(e))return!1;let t=h(e,"type");if(typeof t!="string"||!vt(h(e,"composition"))||!M(e,"siteId")||!M(e,"at"))return!1;switch(t){case"site-edit.document.changed":return M(e,"snapshotId")&&H(e,"version");case"site-edit.operation.planned":return M(e,"operationId")&&M(e,"baseSnapshotId")&&Rt(h(e,"changedFiles"));case"site-edit.operation.completed":return A(h(e,"result"));case"site-edit.operation.failed":return M(e,"requestId")&&A(h(e,"error"));case"site-edit.capability.changed":return Rt(h(e,"keys"));case"site-edit.graph.invalidated":return!0;case"site-edit.graph.ready":return H(e,"version");case"site-edit.graph.error":return M(e,"message");default:return!1}}var Qi=new Set(["pointer-down","pointer-move","pointer-leave","pointer-up","pointer-cancel","pointer-click","pointer-double-click"]),xr=new Set(["e","s","se"]);function Zi(e,t){if(J(e,"resizeSession"))return!0;let n=h(e,"resizeSession");if(!A(n))return!1;let r=h(e,"pointerId"),i=h(n,"pointerId"),o=h(n,"phase"),s=h(n,"edge"),a=t==="pointer-down"?"start":t==="pointer-up"?"commit":t==="pointer-cancel"?"cancel":null;return h(n,"version")===1&&o===a&&M(n,"sessionId")&&String(h(n,"sessionId")).length>0&&typeof r=="number"&&Number.isInteger(r)&&typeof i=="number"&&Number.isInteger(i)&&r===i&&typeof s=="string"&&xr.has(s)&&h(e,"resizeEdge")===s&&Ie(h(n,"ref"))&&["startWidth","startHeight","width","height"].every(c=>H(n,c))}function es(e){if(!re(e,"type","event")||!M(e,"kind")||!A(h(e,"payload")))return!1;let t=h(e,"kind"),n=h(e,"payload");switch(t){case"text-edit-commit":case"text-edit-cancel":case"text-edit-exit":case"text-edit-input":return Ie(h(n,"ref"))&&Pe(n,"value")&&(J(n,"hit")||on(h(n,"hit")));case"node-bounds-change":return on(h(n,"hit"));case"geometry-batch":{let r=h(n,"reason");return vr(n,"sequence")&&H(n,"sourceEventAt")&&H(n,"captureStartedAt")&&H(n,"capturedAt")&&(r==="scroll"||r==="resize"||r==="mutation")&&qi(h(n,"snapshots"))}case"bridge-event":{let r=h(n,"event"),i=h(n,"composition");return!Ji(r)||!vt(i)?!1:M(n,"subscriptionId")&&ae(i)===ae(r.composition)}case"route-ready":return vt(h(n,"composition"))&&M(n,"editEngineVersion")&&H(n,"sequence")&&H(n,"version");case"bridge-status":{let r=h(n,"state");return(r==="connecting"||r==="ready"||r==="reconnecting"||r==="failed"||r==="reload-required")&&vt(h(n,"composition"))&&H(n,"sequence")&&ze(n,"attempt")&&ze(n,"retryInMs")&&Pe(n,"messageKey")&&Pe(n,"failureCode")}case"scroll":{let r=h(n,"metrics");return A(r)&&["scrollX","scrollY","scrollWidth","scrollHeight","viewportWidth","viewportHeight"].every(i=>H(r,i))}default:return Qi.has(t)&&H(n,"clientX")&&H(n,"clientY")&&ze(n,"buttons")&&ze(n,"pointerId")&&(J(n,"hoverVisualOwned")||Tt(n,"hoverVisualOwned"))&&(J(n,"resizeEdge")||M(n,"resizeEdge")&&xr.has(h(n,"resizeEdge")))&&Zi(n,t)&&(h(n,"hit")===null||on(h(n,"hit")))&&(J(n,"section")||h(n,"section")===null||Di(h(n,"section")))&&(J(n,"sectionGap")||h(n,"sectionGap")===null||Oi(h(n,"sectionGap")))}}function ts(e){if(e===void 0)return!0;if(!A(e)||!fe(e,["key","instanceIndex","instanceCount"])||!M(e,"key")||h(e,"key").length===0||!Me(e,"instanceIndex")||!J(e,"instanceCount")&&!vr(e,"instanceCount"))return!1;let t=h(e,"instanceIndex"),n=h(e,"instanceCount");return!(typeof t=="number"&&typeof n=="number"&&t>=n)}function ns(e){if(!A(e))return!1;switch(h(e,"type")){case"request":return Xi(e);case"response":return Li(e);case"event":return es(e);default:return!1}}var hn="vcp-site-edit:route-ready",fn="vcp-site-edit:bridge-status",Gr="SITE_EDIT_COMPOSITION_RENDER_MISMATCH",bn="#655ae8",rs=80,os=120,is=160,ss=4,Yr="data-vcp-designer-hover-visual",as=1e3,cs="data-vcp-ui-component",Xr="data-vcp-theme-preview",Ar="::repeat-item#",xt="components/ui",an="data-site-block-id",cn="data-vcp-runtime-site-block-id",us=new Set(["article","aside","div","footer","form","header","li","main","nav","ol","section","select","table","tbody","tfoot","thead","tr","ul"]),ls=new Set(["a","button","em","h1","h2","h3","h4","h5","h6","label","p","small","span","strong"]);function ds(e,t){let n=Array.from(e.querySelectorAll("[data-vcp-edit-key]"));for(let a of n)a.getAttribute(cn)==="true"&&(a.removeAttribute(an),a.removeAttribute(cn));if(!t)return;let r=n.filter(a=>a.tagName.toLowerCase()==="section"),i=r.length>0?r:n.filter(a=>a.tagName.toLowerCase()==="main"),o=new Set(i),s=new Map;for(let a of i){let c=a.parentElement,u=!1;for(;c;){if(o.has(c)){u=!0;break}c=c.parentElement}if(u||a.getAttribute(an)?.trim())continue;let d=a.getAttribute("data-vcp-edit-key")?.trim();if(!d)continue;let l=s.get(d)??0;s.set(d,l+1);let m=`vcp-runtime:${encodeURIComponent(d)}:${l}`;a.setAttribute(an,m),a.setAttribute(cn,"true")}}function Lr(e,t=""){let n=to(t),r=n&&(e===n||e.startsWith(`${n}/`))?e.slice(n.length)||"/":e,i=r.startsWith("/")?r:`/${r}`;return i==="/"?"/":i.replace(/\/+$/,"")}function ps(e){let t=Lr(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 Ye(e){return JSON.stringify([e.routeId,e.templateId??null])}function hs(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 fs(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 Lu(e=window,t={}){let n=fs(e,{explicit_ws_url:t.explicit_ws_url,port:t.ws_port,path:t.wsPath||"/__vcp/site-edit/bridge"}),r=ms({bridgeUrl:n,options:t}),i=e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(i?.started){if(gs(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,a=()=>e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__===s,c=t.create_client??(f=>new Ct({url:f,authKey:t.bridge_session_key})),u=t.schedule_after_navigation??Us,d=()=>{o.retryTimer&&(e.clearTimeout(o.retryTimer),o.retryTimer=void 0)},l=()=>ps({pathname:e.location.pathname,search:e.location.search,basePath:t.basePath}),m=()=>Ye(l()),p=f=>{Ws(e,{...f,composition:f.state==="ready"?f.composition:{routeId:f.composition.routeId},sequence:f.sequence??o.routeSequence})},g=f=>{o.currentDocument=f,o.currentEntriesByKey=new Map((f?.entries??[]).map(C=>[C.key,C])),ds(e.document,!!f)},b=()=>{o.unsubscribeConnectionStatus?.(),o.unsubscribeConnectionStatus=void 0,o.unsubscribeDocument?.(),o.unsubscribeDocument=void 0},T=(f,C)=>{if(o.disposed||C!==o.routeSequence)return!1;try{return f===m()}catch{return!1}},_=async(f,C,k)=>{let N=o.activeBridge;if(!N)return null;let K=await N.getDocument(f);return T(C,k)&&g(K.data),K.data},P=()=>{b(),g(null);let f=o.activeBridge;o.activeBridge=null,f&&e.__VCP_SITE_EDIT__===f&&delete e.__VCP_SITE_EDIT__;let C=o.activeClient;o.activeClient=null,C?.disconnect()},$=f=>f===s.compositionKey&&!!o.activeBridge&&!!(o.currentDocument&&s.composition&&js(o.currentDocument,ae(s.composition)))&&zs(o.activeClient),F=f=>Math.min(as*2**Math.max(0,f),8e3),v=(f,C,k,N,K)=>{if(o.disposed)return;d();let Z=F(N);p({state:"reconnecting",composition:f,attempt:N,retryInMs:Z,...K?{failureCode:K}:{},messageKey:"studio.status.previewBridgeConnecting"}),o.retryTimer=e.setTimeout(()=>{o.retryTimer=void 0,!(o.disposed||k!==o.routeSequence||!T(C,k))&&W(N+1).catch(ee=>{let I;try{I=m()}catch{return}if(C===I){if(je(ee)){p({state:"reload-required",composition:f,attempt:N,messageKey:"studio.errors.previewBridgeReloadRequired"});return}v(f,C,o.routeSequence,N+1)}})},Z)},q=(f,C,k,N)=>{if(!T(C,k)||o.activeClient===null)return;let K=o.activeClient;b(),g(null);let Z=o.activeBridge;o.activeBridge=null,Z&&e.__VCP_SITE_EDIT__===Z&&delete e.__VCP_SITE_EDIT__,o.activeClient=null,K.disconnect(),v(f,C,k,0,N)},Q=(f,C,k,N)=>{if(!(!T(C,k)||o.activeClient===null)){if(je(N.message)){P(),d(),p({state:"reload-required",composition:f,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}q(f,C,k,un(new Error(N.message??"")).failureCode)}},z=f=>{let C;try{C=l()}catch{return}let k=Ye(C),N=o.routeSequence;if(!(!T(k,N)||o.activeClient===null)){if(je(f)){P(),d(),p({state:"reload-required",composition:C,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(Xs(f)){q(C,k,N);return}Zr(f)&&Q(C,k,N,{state:"failed",message:ke(f,"Site edit bridge request failed")})}};o.cleanupFrameRuntime=Is(e,{getCurrentDocument:()=>o.currentDocument,getDocumentEntry:f=>o.currentEntriesByKey.get(f)??null,setCurrentDocument:g,onBridgeRequestError:f=>{z(f)}});let G=async()=>W(0),W=async f=>{if(o.disposed)return;let C=l(),k=Ye(C);if($(k))return;let N=o.syncInFlight;if(N?.compositionKey===k)return N.promise;let K=o.routeSequence+1,Z=X(C,k,K,f);o.syncInFlight={compositionKey:k,sequence:K,promise:Z};try{await Z}finally{o.syncInFlight?.promise===Z&&(o.syncInFlight=null)}},X=async(f,C,k,N)=>{o.routeSequence=k,d(),P(),p({state:N>0?"reconnecting":"connecting",composition:f,attempt:N,messageKey:N>0?"studio.status.previewBridgeConnecting":"studio.status.previewLoading"});let K=c(n),Z=!1;o.activeClient=K,o.unsubscribeConnectionStatus=K.subscribeConnectionStatus?.(ee=>{Z&&(ee.state==="closed"||ee.state==="failed")&&Q(f,C,k,ee)});try{if(await K.connect(),!T(C,k)){K.disconnect();return}let ee=ar({composition:f,client:K,initialDocument:Es(f)});if(o.activeBridge=ee,o.activeClient=K,o.unsubscribeDocument=ee.subscribe(S=>{if(!(!s.composition||ae(S.composition)!==ae(s.composition))){if(S.type==="site-edit.snapshot.changed"){_(f,C,k).catch(()=>{});return}S.type==="site-edit.document.changed"&&o.currentDocument&&S.version>o.currentDocument.version?_(f,C,k).catch(()=>{}):S.type==="site-edit.graph.invalidated"&&(g(null),w())}}),a()&&(s.routeId=f.routeId,s.composition=void 0,s.compositionKey=C),t.launch_id){let S=new URL(n);S.protocol=S.protocol==="wss:"?"https:":"http:",S.pathname=S.pathname.replace(/\/bridge$/,"/health"),S.search="";let{response:Y,health:V}=await qs(e,S);if(V.launch?.launchId===t.launch_id&&(Y.status===503||Y.ok&&!V.ok))throw new Error("SITE_EDIT_ENGINE_UNAVAILABLE: preview engine is temporarily unavailable");if(!Y.ok||!V.ok||V.launch?.launchId!==t.launch_id)throw new Error("SITE_EDIT_RUNTIME_RELOAD_REQUIRED: preview navigation belongs to a stale launch")}let I=await ee.initializeSession({composition:f}),R=I.data.document;if((f.templateId!==void 0?ae(I.composition)!==C:I.composition.effectiveTemplateId!==void 0)||ae(R.composition)!==ae(I.composition))throw new Error(`${Gr}: initialize response does not match requested selector`);if(!T(C,k)){K.disconnect();return}g(R),a()&&(e.__VCP_SITE_EDIT__=ee),Z=!0,a()&&(s.composition=I.composition),p({state:"ready",composition:I.composition,attempt:N,messageKey:"studio.status.previewReady"}),hs(e,{documentVersion:R?.version??0,routeId:f.routeId,versions:t.runtime_versions}),R&&Qr(e,{composition:I.composition,editEngineVersion:t.runtime_versions?.engine??"unknown",sequence:k,version:R.version})}catch(ee){if(!T(C,k)){K.disconnect();return}if(b(),o.activeClient===K&&(o.activeClient=null),o.activeBridge&&e.__VCP_SITE_EDIT__===o.activeBridge&&delete e.__VCP_SITE_EDIT__,o.activeBridge=null,K.disconnect(),g(null),!T(C,k))return;throw p({state:je(ee)?"reload-required":"failed",composition:f,attempt:N,...un(ee),messageKey:je(ee)?"studio.errors.previewBridgeReloadRequired":"studio.errors.previewBridgeDisconnected"}),ee}},L=f=>{if(o.disposed)return;let C;try{C=l()}catch{p({state:"failed",composition:{routeId:Lr(e.location.pathname,t.basePath||"")},attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}let k=Ye(C);if(je(f)){d(),p({state:"reload-required",composition:C,attempt:0,messageKey:"studio.errors.previewBridgeReloadRequired"});return}if(Gs(f)){p({state:"failed",composition:C,attempt:0,messageKey:"studio.errors.previewBridgeDisconnected"});return}v(C,k,o.routeSequence,0,un(f).failureCode)},w=()=>{o.syncScheduled||o.disposed||(o.syncScheduled=!0,u(()=>{o.syncScheduled=!1,!o.disposed&&G().catch(f=>L(f))}))},E=()=>{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(),P(),a()&&delete e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__)};s={started:!0,signature:r,syncRoute:G,cleanup:E},e.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__=s,o.unbindBootstrapLifecycle=bs(e,E);let x=l();if(o.unbindRouteChange=$s(e,()=>{let f=l(),C=f.routeId===x.routeId&&f.templateId!==x.templateId;if(x=f,C){o.routeSequence+=1,P(),p({state:"connecting",composition:{routeId:f.routeId},attempt:0}),e.location.reload();return}w()},m),t.defer_initial_sync){w();return}await G()}function ms(e){return{basePath:to(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:ys(e.options.bridge_session_key)}}function gs(e,t){return!!e&&JSON.stringify(e)===JSON.stringify(t)}function ys(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 bs(e,t){let n=()=>t();return e.addEventListener("pagehide",n),e.addEventListener("beforeunload",n),Ss(t),()=>{e.removeEventListener("pagehide",n),e.removeEventListener("beforeunload",n)}}function Ss(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 Is(e=window,t={}){let n=null,r=null,i=null,o=null,s=null,a=null,c=0,u=null,d=null,l=null,m=null,p=null,g=0,b=new Map,T=typeof t.expectedSessionKey=="string"&&t.expectedSessionKey.length>0?t.expectedSessionKey:null,_=()=>{n?.(),n=null,r=null},P=()=>{let I=e.parent;if(!(!I||I===e))try{I.postMessage(Ir(),"*")}catch{}},$=()=>{i?.(),i=null,o?.(),o=null,s?.cleanup(),s=null,a?.cleanup(),a=null},F=(I,R,S)=>{let Y=u?.sessionKey!==I||u?.sourceWindow!==R||u?.targetOrigin!==S;u={sessionKey:I,sourceWindow:R,targetOrigin:S},Y&&(c=0,m=null,p=null)},v=(I,R)=>{let S=e.parent&&e.parent!==e?e.parent:null;return!S||R!==S?!1:!T||I===T},q=()=>{for(let I of b.values())I();b.clear()},Q=I=>JSON.stringify([ae(I.composition),I.editEngineVersion,I.sequence,I.version]),z=()=>!l||l.state==="ready",G=I=>JSON.stringify([I.state,ae(I.composition),I.sequence,I.attempt??null,I.retryInMs??null,I.messageKey??null]),W=I=>{if(!z())return;let R=Q(I);m!==R&&(o?.(),o=null,s?.cleanup(),s=null,a?.cleanup(),a=null,f({kind:"route-ready",payload:{composition:I.composition,editEngineVersion:I.editEngineVersion,sequence:I.sequence,version:I.version}}),u&&(m=R))},X=I=>{let R=G(I);p!==R&&(I.state!=="ready"&&(m=null,d=null),f({kind:"bridge-status",payload:I}),u&&(p=R))},L=I=>{d=I,W(I)},w=I=>{l=I,X(I)},E=()=>{d&&W(d)},x=()=>{l&&X(l)},f=I=>{u&&u.sourceWindow.postMessage(it({type:"event",...I},{sessionKey:u.sessionKey}),u.targetOrigin)},C=(I,R,S,Y)=>{let V=t.getCurrentDocument?.()??null,ie=R.rawTarget&&typeof R.rawTarget.getAttribute=="function"?R.rawTarget:null,D=ie??ra(e.document,R.clientX,R.clientY),te=ie?Ft(ie):null,ue=te?.getAttribute("data-vcp-edit-key")??"",le=R.resizeSession||R.skipHit?null:te&&In(te,V,ue)?te:ut(e.document,R.clientX,R.clientY,V),de=I==="pointer-move"&&Number(R.buttons??0)===0||I==="pointer-down"?"rect-only":"full",ce=le?Re(le,S==="full"?ge(e.document,le,V):Mt(e.document,le,V),t.getDocumentEntry,S,void 0,de,V):null,be=oa(e.document,D,V),Se=sa(e.document,R,V,t.getDocumentEntry);Y&&ce&&(I==="pointer-click"||I==="pointer-double-click")&&(Y.preventDefault(),Y.stopPropagation(),typeof Y.stopImmediatePropagation=="function"&&Y.stopImmediatePropagation()),f({kind:I,payload:{clientX:R.clientX,clientY:R.clientY,buttons:Number(R.buttons??0),pointerId:R.pointerId,hoverVisualOwned:R.hoverVisualOwned,resizeEdge:R.resizeEdge,resizeSession:R.resizeSession,hit:ce,section:be,sectionGap:Se}})},k=I=>{f({kind:"pointer-leave",payload:{clientX:I?.clientX??0,clientY:I?.clientY??0,buttons:Number(I?.buttons??0),hit:null,section:null,sectionGap:null}})},N=(I,R,S)=>{$(),u={sessionKey:I,sourceWindow:R,targetOrigin:S};let Y=Ga(e.document),V=Cs(e,t.getCurrentDocument),ie=null,D=null,te=null,ue=null,le=null,de=null,ce=!1,be=null,Se=!1,Ee=()=>{be=null,Se=!1},$e=()=>{le!==null&&(e.clearTimeout(le),le=null)},O=()=>{te!==null&&(Dt(e,te),te=null),ie=null},B=()=>{de!==null&&(e.clearTimeout(de),de=null)},ne=()=>{te=null;let y=ie;ie=null,y&&C("pointer-move",y,"summary")},Te=y=>{$e(),D=y,ie=y,te===null&&(te=kt(e,ne))},yt=y=>{D&&Te({...D,rawTarget:null,hoverVisualOwned:y&&!ce&&!Se?V?.updateAtPoint(D.clientX,D.clientY)??!1:!1})},pe=()=>yt(!0),qo=()=>yt(!1),Je=e.document.documentElement,jt=typeof Je.addEventListener=="function"?Je:e.document,Hn=y=>{if(a?.update(y)){y.preventDefault();return}be?.pointerId===Number(y.pointerId)&&Number(y.buttons)===1?!Se&&Math.hypot(Number(y.clientX)-be.clientX,Number(y.clientY)-be.clientY)>=ss&&(Se=!0,V?.clear()):be?.pointerId===Number(y.pointerId)&&Number(y.buttons)!==1&&Ee(),Te({clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),rawTarget:y.target,hoverVisualOwned:!ce&&!Se?V?.update(y.target)??!1:!1})},$n=y=>{let U=Os(y.target),Ke=U?a?.begin(y,U):null;Ke&&(y.target?.setPointerCapture?.(y.pointerId),y.preventDefault(),y.stopPropagation()),!Ke&&Number(y.buttons)===1?(be={clientX:Number(y.clientX),clientY:Number(y.clientY),pointerId:Number(y.pointerId)},Se=!1):Ee(),C("pointer-down",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:Number(y.pointerId),rawTarget:y.target,resizeEdge:U,resizeSession:Ke??void 0},"summary",y)},qn=y=>{Ee();let U=a?.finish(y,"commit")??null;if(U){C("pointer-up",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:Number(y.pointerId),resizeEdge:U.edge,resizeSession:U,skipHit:!0},"summary",y);return}C("pointer-up",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),rawTarget:y.target,skipHit:!0},"summary",y)},Kn=y=>{Ee();let U=a?.finish(y,"cancel")??null;C("pointer-cancel",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:U?.pointerId,rawTarget:U?void 0:y.target,resizeEdge:U?.edge,resizeSession:U??void 0,skipHit:!0},"summary",y)},Un=y=>{let U=a?.finish(y,"cancel")??null;U&&C("pointer-cancel",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),pointerId:U.pointerId,resizeEdge:U.edge,resizeSession:U,skipHit:!0},"summary",y)},Wn=y=>{C("pointer-click",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),rawTarget:y.target},"full",y)},zn=y=>{C("pointer-double-click",{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons),rawTarget:y.target},"full",y)},Gt=y=>{if(y&&y.target!==jt&&y.target!==Je)return;let U=y?{clientX:Number(y.clientX),clientY:Number(y.clientY),buttons:Number(y.buttons)}:D;if(y&&U&&U.clientX>0&&U.clientX<e.innerWidth&&U.clientY>0&&U.clientY<e.innerHeight){pe();return}if(O(),y){$e(),le=e.setTimeout(()=>{le=null,D=null,B(),ce=!1,Ee(),k(U??void 0)},os);return}$e(),B(),ce=!1,Ee(),D=null,V?.clear(),k(U??void 0)},jn=()=>Gt(),Ko=()=>{ue=null,f({kind:"scroll",payload:{metrics:Nt(e)}}),qo()},qe=()=>{ce=!0,V?.clear(),B(),D&&(de=e.setTimeout(()=>{de=null,ce=!1,pe()},is)),ue===null&&(ue=kt(e,Ko))};e.document.addEventListener("pointerdown",$n,!0),e.document.addEventListener("pointermove",Hn,{passive:!0,capture:!0}),e.document.addEventListener("pointerup",qn,!0),e.document.addEventListener("pointercancel",Kn,!0),e.document.addEventListener("lostpointercapture",Un,!0),e.document.addEventListener("click",Wn,!0),e.document.addEventListener("dblclick",zn,!0),e.addEventListener("scroll",qe,{passive:!0}),e.document.addEventListener("scroll",qe,{capture:!0,passive:!0}),e.addEventListener("resize",pe,{passive:!0}),e.addEventListener("blur",jn),e.document.addEventListener("load",pe,!0),jt.addEventListener("pointerleave",Gt,!0);let bt=e.visualViewport;bt?.addEventListener?.("resize",pe,{passive:!0}),bt?.addEventListener?.("scroll",qe,{passive:!0});let Gn=e.ResizeObserver,Yn=typeof Gn=="function"?new Gn(pe):null;Yn?.observe(Je);let Xn=e.MutationObserver,Ln=typeof Xn=="function"?new Xn(y=>{y.some(Ke=>Ke.type!=="attributes"||Ke.attributeName!==Yr)&&pe()}):null;Ln?.observe(Je,{attributes:!0,childList:!0,subtree:!0}),i=()=>{O(),$e(),B(),ce=!1,Ee(),D=null,V?.cleanup(),Yn?.disconnect(),Ln?.disconnect(),ue!==null&&(Dt(e,ue),ue=null),Y(),e.document.removeEventListener("pointerdown",$n,!0),e.document.removeEventListener("pointermove",Hn,!0),e.document.removeEventListener("pointerup",qn,!0),e.document.removeEventListener("pointercancel",Kn,!0),e.document.removeEventListener("lostpointercapture",Un,!0),e.document.removeEventListener("click",Wn,!0),e.document.removeEventListener("dblclick",zn,!0),e.removeEventListener("scroll",qe),e.document.removeEventListener("scroll",qe,!0),e.removeEventListener("resize",pe),e.removeEventListener("blur",jn),e.document.removeEventListener("load",pe,!0),jt.removeEventListener("pointerleave",Gt,!0),bt?.removeEventListener?.("resize",pe),bt?.removeEventListener?.("scroll",qe)}},K=I=>{let R=I.detail;R?.composition?.routeId&&L(R)},Z=I=>{let R=I.detail;R?.state&&w(R)},ee=I=>{let R=I.data;if(!Cr(R)||R.body.type!=="request"||R.body.kind!=="apply-node-patch"&&R.body.kind!=="get-hit-by-ref"&&R.body.kind!=="get-path-by-ref"&&R.body.kind!=="get-scroll-metrics"&&R.body.kind!=="scroll-to"&&R.body.kind!=="scroll-by"&&R.body.kind!=="set-interaction-mode"&&R.body.kind!=="set-selection-visual"&&R.body.kind!=="clear-selection-visual"&&R.body.kind!=="set-resize-visual"&&R.body.kind!=="clear-resize-visual"&&R.body.kind!=="set-theme-override"&&R.body.kind!=="clear-theme-override"&&R.body.kind!=="get-theme-variables"&&R.body.kind!=="compute-drop-target-at-point"&&R.body.kind!=="observe-node-bounds"&&R.body.kind!=="clear-node-bounds-observer"&&R.body.kind!=="restore-text-edit"&&R.body.kind!=="clear-text-edit-rollback"&&R.body.kind!=="start-text-edit-at-point"&&R.body.kind!=="hit-test-at-point"&&!Dr(R.body))return;let S=R.body,Y=typeof R.sessionKey=="string"?R.sessionKey:null,V=I.source,ie=I.origin;if(!Y||!ie||!V||typeof V.postMessage!="function"||!v(Y,V))return;if(u){if(u.sourceWindow!==V||u.targetOrigin!==ie)return;u.sessionKey!==Y&&(_(),$(),q(),u=null)}F(Y,V,ie),x(),E();let D=te=>{let ue=typeof S.id=="string"?S.id:"unknown";V.postMessage(it({id:ue,...te},{sessionKey:Y}),ie)};try{if(Dr(S)){Fs({message:S,sendEvent:O=>{V.postMessage(it({type:"event",...O},{sessionKey:Y}),ie)},sendResponse:D,subscriptions:b,getCurrentDocument:t.getCurrentDocument,setCurrentDocument:t.setCurrentDocument,onBridgeRequestError:t.onBridgeRequestError,nextRouteReadySequence:()=>g+=1,windowLike:e});return}if(S.kind==="apply-node-patch"){let O=ye(e.document,S.payload.ref,t.getCurrentDocument?.()??null);if(!O){D({type:"response",ok:!1,error:"No editable element found for patch target"});return}let B=S.payload.preview,ne=B?Da(B.sessionId,S.payload.ref):null;if(ne&&B){let Te=st.get(ne)??-1;if(B.revision<Te){D({type:"response",ok:!0,result:{applied:!1,appliedRevision:B.revision,stale:!0,latestRevision:Te}});return}if(B.revision===Te){D({type:"response",ok:!0,result:{applied:!1,appliedRevision:B.revision,duplicate:!0,latestRevision:Te}});return}}if(Pa(O,S.payload.patch),ne&&B&&Oa(ne,B.revision),B?.responseDetail==="none"){D({type:"response",ok:!0,result:{applied:!0,appliedRevision:B.revision}});return}D({type:"response",ok:!0,result:Re(O,ge(e.document,O,t.getCurrentDocument?.()??null),t.getDocumentEntry,B?.responseDetail??"full",void 0,"full",t.getCurrentDocument?.()??null)});return}if(S.kind==="get-hit-by-ref"){let O=ye(e.document,S.payload.ref,t.getCurrentDocument?.()??null);if(!O){D({type:"response",ok:!1,error:"No editable element found for hit target"});return}D({type:"response",ok:!0,result:Re(O,ge(e.document,O,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full",void 0,"full",t.getCurrentDocument?.()??null)});return}if(S.kind==="get-path-by-ref"){let O=ye(e.document,S.payload.ref,t.getCurrentDocument?.()??null);if(!O){D({type:"response",ok:!1,error:"No editable element found for path target"});return}let B=[],ne=O;for(;ne;)ne.getAttribute("data-vcp-edit-key")&&B.push(Re(ne,ge(e.document,ne,t.getCurrentDocument?.()??null),t.getDocumentEntry,"full",void 0,"rect-only",t.getCurrentDocument?.()??null)),ne=ne.parentElement;D({type:"response",ok:!0,result:B.reverse()});return}if(S.kind==="restore-text-edit"||S.kind==="clear-text-edit-rollback"){let O=S.payload.ref;if(S.kind==="clear-text-edit-rollback"){r&&Br(r.ref,O)&&(r=null),D({type:"response",ok:!0,result:{cleared:!0}});return}if(!r||!Br(r.ref,O)){D({type:"response",ok:!1,error:"No pending text edit rollback snapshot"});return}let B=Js(e.document,r,t.getCurrentDocument?.()??null);r=null,D(B?{type:"response",ok:!0,result:{restored:!0}}:{type:"response",ok:!1,error:"Failed to restore text edit snapshot"});return}if(S.kind==="get-scroll-metrics"){D({type:"response",ok:!0,result:Nt(e)});return}if(S.kind==="scroll-to"){let O=Number(S.payload.x),B=Number(S.payload.y);if(!Number.isFinite(O)||!Number.isFinite(B)){D({type:"response",ok:!1,error:"Invalid scroll position"});return}e.scrollTo({left:O,top:B}),D({type:"response",ok:!0,result:Nt(e)});return}if(S.kind==="scroll-by"){let O=Number(S.payload.deltaX),B=Number(S.payload.deltaY);if(!Number.isFinite(O)||!Number.isFinite(B)){D({type:"response",ok:!1,error:"Invalid scroll delta"});return}e.scrollBy({left:O,top:B}),D({type:"response",ok:!0,result:{...Nt(e),scrolled:!0}});return}if(S.kind==="set-interaction-mode"){S.payload.enabled?N(Y,V,ie):u?.sourceWindow===V&&u.targetOrigin===ie&&u.sessionKey===Y&&(_(),$()),D({type:"response",ok:!0,result:{interactionEnabled:S.payload.enabled}});return}if(S.kind==="set-selection-visual"){let O=!1;i?s?(O=s.setRef(S.payload.ref),O||(s.cleanup(),s=null)):(s=Rs(e,S.payload.ref,t.getCurrentDocument),O=!!s):(s?.cleanup(),s=null),D({type:"response",ok:!0,result:{version:nt,active:O}});return}if(S.kind==="clear-selection-visual"){s?.cleanup(),s=null,D({type:"response",ok:!0,result:{version:nt,active:!1}});return}if(S.kind==="set-resize-visual"){a?.cleanup(),a=null,i&&(a=Ms(e,S.payload.ref,t.getCurrentDocument,({clientX:O,clientY:B,session:ne})=>{f({kind:"pointer-cancel",payload:{clientX:O,clientY:B,buttons:0,pointerId:ne.pointerId,resizeEdge:ne.edge,resizeSession:ne,hit:null,section:null,sectionGap:null}})})),D({type:"response",ok:!0,result:{version:rt,active:!!a}});return}if(S.kind==="clear-resize-visual"){a?.cleanup(),a=null,D({type:"response",ok:!0,result:{version:rt,active:!1}});return}if(S.kind==="set-theme-override"){Ma(e.document,S.payload),D({type:"response",ok:!0,result:{themeOverrideApplied:!0}});return}if(S.kind==="clear-theme-override"){Ba(e.document),D({type:"response",ok:!0,result:{themeOverrideCleared:!0}});return}if(S.kind==="get-theme-variables"){D({type:"response",ok:!0,result:Fa(e.document,S.payload.names)});return}if(S.kind==="compute-drop-target-at-point"){let O=Number(S.payload?.x),B=Number(S.payload?.y);if(!Number.isFinite(O)||!Number.isFinite(B)){D({type:"response",ok:!1,error:"Invalid drop target point"});return}D({type:"response",ok:!0,result:_a(e,O,B,S.payload.dragKind,S.payload.movingRef,t.getCurrentDocument?.()??null,t.getDocumentEntry)});return}if(S.kind==="observe-node-bounds"){let O=S.payload.ref;if(!O){D({type:"response",ok:!1,error:"Missing bounds observer target"});return}let B=ye(e.document,O,t.getCurrentDocument?.()??null);if(!B){D({type:"response",ok:!1,error:"No editable element found for bounds observer target"});return}o?.();let ne=Sa(e,B,O,t.getCurrentDocument,(Te,yt,pe)=>{c+=1,f({kind:"geometry-batch",payload:{sequence:c,sourceEventAt:pe.sourceEventAt,captureStartedAt:pe.captureStartedAt,capturedAt:pe.capturedAt,reason:Te,snapshots:[yt]}})});o=ne.cleanup,D({type:"response",ok:!0,result:{observing:!0}}),f({kind:"node-bounds-change",payload:{hit:ya(Re(B,O,t.getDocumentEntry,"summary",e,"rect-only",t.getCurrentDocument?.()??null),ne.initialSnapshot)}});return}if(S.kind==="clear-node-bounds-observer"){o?.(),o=null,D({type:"response",ok:!0,result:{cleared:!0}});return}if(S.kind!=="hit-test-at-point"&&S.kind!=="start-text-edit-at-point")return;let te=Number(S.payload?.x),ue=Number(S.payload?.y);if(!Number.isFinite(te)||!Number.isFinite(ue)){D({type:"response",ok:!1,error:"Invalid text edit point"});return}let le=S.kind==="hit-test-at-point"?ut(e.document,te,ue,t.getCurrentDocument?.()??null):Zs(e.document,te,ue,t.getCurrentDocument?.()??null,t.getDocumentEntry);if(!le){D({type:"response",ok:!1,error:S.kind==="hit-test-at-point"?"No editable element at point":"No editable text element at point"});return}let de=S.kind==="start-text-edit-at-point"?le:null,ce=S.kind==="hit-test-at-point"?le:de.element,be=S.payload.detailLevel??"full",Se=be==="full"?ge(e.document,ce,t.getCurrentDocument?.()??null):Mt(e.document,ce,t.getCurrentDocument?.()??null),Ee=de&&typeof de.textSegmentIndex=="number"?{...Se,textSegmentIndex:de.textSegmentIndex}:Se,$e=Re(ce,Ee,t.getDocumentEntry,be,void 0,"full",t.getCurrentDocument?.()??null);if(S.kind==="hit-test-at-point"){D({type:"response",ok:!0,result:$e});return}_(),n=qa(e,ce,Ee,O=>{V.postMessage(it({type:"event",...O},{sessionKey:Y}),ie)},{...de?.textNode?{textNode:de.textNode}:{},onCommitSnapshot:O=>{r=O}}),D({type:"response",ok:!0,result:{ref:Ee}})}catch(te){D({type:"response",ok:!1,error:te instanceof Error?te.message:"Failed to start text edit"})}};return e.addEventListener("message",ee),e.addEventListener(hn,K),e.addEventListener(fn,Z),P(),()=>{_(),$(),u=null,q(),e.removeEventListener("message",ee),e.removeEventListener(hn,K),e.removeEventListener(fn,Z)}}function Cs(e,t){let n=e.document,r=n.head??n.documentElement;if(typeof r?.appendChild!="function")return null;let i=Yr,o="data-vcp-designer-selection-visual",s=n.createElement("style");s.setAttribute("data-vcp-designer-hover-visual-style","true"),s.textContent=`
2
2
  [${i}="true"]:not([${o}="true"]) {
3
3
  outline: 1px dashed ${bn} !important;
4
4
  outline-offset: -1px !important;
5
- }`,r.appendChild(s);let a=null,c=()=>{a?.removeAttribute(i),a=null},u=m=>{let p=Ft(m),g=p?.getAttribute("data-vcp-edit-key")??"",b=p&&In(p,t?.()??null,g)?p:null;return b===a||(c(),a=b,a?.setAttribute(i,"true")),!0};return{clear:c,cleanup:()=>{c(),s.remove()},update:u,updateAtPoint:(m,p)=>u(ut(n,m,p,t?.()??null))}}var Cs=0;function vs(e,t,n){let r=e.document,i=r.head??r.documentElement,o=++Cs,s=`--vcp-designer-selection-target-${o}`,a=`--vcp-designer-spacing-gap-${o}`,c=e.CSS;if(typeof c?.supports!="function"||!c.supports(`anchor-name: ${s}`)||!c.supports(`position-anchor: ${s}`)||!c.supports("left: anchor(left)")||!c.supports("top: anchor(top)")||!c.supports("left: anchor(right)")||!c.supports("top: anchor(bottom)")||!c.supports("width: anchor-size(width)")||!c.supports("height: anchor-size(height)"))return null;let u=t,d=(N=u)=>ye(r,N,n?.()??null),l=d();if(!l||!l.isConnected||typeof i?.appendChild!="function"||typeof r.documentElement?.appendChild!="function")return null;let m="data-vcp-designer-selection-visual",p="data-vcp-designer-visual-layer",g="data-vcp-designer-resize-handle",b=r.createElement("style");b.setAttribute("data-vcp-designer-selection-visual-style","true"),b.textContent=`
5
+ }`,r.appendChild(s);let a=null,c=()=>{a?.removeAttribute(i),a=null},u=m=>{let p=Ft(m),g=p?.getAttribute("data-vcp-edit-key")??"",b=p&&In(p,t?.()??null,g)?p:null;return b===a||(c(),a=b,a?.setAttribute(i,"true")),!0};return{clear:c,cleanup:()=>{c(),s.remove()},update:u,updateAtPoint:(m,p)=>u(ut(n,m,p,t?.()??null))}}var vs=0;function Rs(e,t,n){let r=e.document,i=r.head??r.documentElement,o=++vs,s=`--vcp-designer-selection-target-${o}`,a=`--vcp-designer-spacing-gap-${o}`,c=e.CSS;if(typeof c?.supports!="function"||!c.supports(`anchor-name: ${s}`)||!c.supports(`position-anchor: ${s}`)||!c.supports("left: anchor(left)")||!c.supports("top: anchor(top)")||!c.supports("left: anchor(right)")||!c.supports("top: anchor(bottom)")||!c.supports("width: anchor-size(width)")||!c.supports("height: anchor-size(height)"))return null;let u=t,d=(N=u)=>ye(r,N,n?.()??null),l=d();if(!l||!l.isConnected||typeof i?.appendChild!="function"||typeof r.documentElement?.appendChild!="function")return null;let m="data-vcp-designer-selection-visual",p="data-vcp-designer-visual-layer",g="data-vcp-designer-resize-handle",b=r.createElement("style");b.setAttribute("data-vcp-designer-selection-visual-style","true"),b.textContent=`
6
6
  [${p}="true"] {
7
7
  position: fixed !important;
8
8
  position-anchor: ${s} !important;
@@ -16,7 +16,7 @@ function Qn(e){let t=new Map,n=[],r=new Map,i=[],o=e.pageComposition.status==="s
16
16
  padding: 0 !important;
17
17
  pointer-events: none !important;
18
18
  z-index: 2147483647 !important;
19
- }`,i.appendChild(b);let T=r.createElement("div");T.setAttribute(p,"true"),T.setAttribute("aria-hidden","true"),r.documentElement.appendChild(T);for(let N of Array.from(r.documentElement.children))N.getAttribute(g)!==null&&(N.remove(),r.documentElement.appendChild(N));let _=r.createElement("div");_.setAttribute("data-vcp-designer-spacing-visual-layer","true"),_.setAttribute("aria-hidden","true"),_.style.setProperty("position","fixed","important"),_.style.setProperty("inset","0","important"),_.style.setProperty("overflow","hidden","important"),_.style.setProperty("pointer-events","none","important"),_.style.setProperty("z-index","2147483645","important"),r.documentElement.appendChild(_),l.setAttribute(m,"true");let P=Pt(l,s),$=!1,F=null,v=[],q=[],Q=()=>{F=null,q.forEach(N=>N()),q=_s(_,v,l,s,a)},z=()=>{$||F!==null||(F=kt(e,Q))};Q();let G=e.ResizeObserver,W=typeof G=="function"?new G(z):null,X=[];function L(){X.forEach(N=>W?.unobserve(N)),X=l?.isConnected?[l,...Array.from(l.children)].filter(N=>typeof N.getBoundingClientRect=="function"):[],X.forEach(N=>W?.observe(N))}L();let w=N=>{N===l&&N?.isConnected||(l?.removeAttribute(m),P?.(),P=null,l=N,l?.isConnected?(l.setAttribute(m,"true"),P=Pt(l,s),T.style.removeProperty("display")):T.style.setProperty("display","none","important"),L(),z())},E=()=>{$||w(d())},x=e.MutationObserver,f=typeof x=="function"?new x(N=>{let K=l;E();let Z=K!==l,ee=N.some(I=>I.type!=="attributes"||I.attributeName!=="class"&&I.attributeName!=="style"?!1:I.target===l?!0:l?.contains?.(I.target)===!0&&I.target!==_&&I.target!==T);!Z&&!ee||(L(),z())}):null;return f?.observe(r.documentElement,{attributeFilter:["data-vcp-edit-key","class","style"],attributes:!0,childList:!0,subtree:!0}),e.addEventListener("resize",z),{setRef:N=>{if($)return!1;if(Rs(u,N)&&l?.isConnected)return!0;let Z=d(N);return Z?.isConnected?(u=N,w(Z),!0):!1},cleanup:()=>{$||($=!0,F!==null&&(Dt(e,F),F=null),e.removeEventListener("resize",z),f?.disconnect(),W?.disconnect(),l?.removeAttribute(m),q.forEach(N=>N()),q=[],P?.(),P=null,l=null,T.remove(),_.remove(),b.remove())}}}function Rs(e,t){return e.key===t.key&&(e.instanceIndex??null)===(t.instanceIndex??null)&&(e.instanceCount??null)===(t.instanceCount??null)}function _s(e,t,n,r,i){if(n?.isConnected===!0&&r)return Ts(e,t,n,r,i);let o=n?.isConnected===!0?xs(n):[];return o.forEach((s,a)=>{let c=t[a]??e.ownerDocument.createElement("div");t[a]||(c.style.setProperty("position","fixed","important"),c.style.setProperty("pointer-events","none","important"),e.appendChild(c),t[a]=c),c.setAttribute("data-vcp-designer-spacing-kind",s.kind),c.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"),c.style.setProperty("display","block","important"),c.style.setProperty("left",`${s.left}px`,"important"),c.style.setProperty("top",`${s.top}px`,"important"),c.style.setProperty("width",`${s.width}px`,"important"),c.style.setProperty("height",`${s.height}px`,"important")}),t.slice(o.length).forEach(s=>{s.style.setProperty("display","none","important")}),[]}function Ts(e,t,n,r,i){let o=Vt(n),s=[{kind:"margin",left:"anchor(left)",top:`calc(anchor(top) - ${o.marginTop}px)`,width:"anchor-size(width)",height:`${o.marginTop}px`},{kind:"margin",left:"anchor(right)",top:"anchor(top)",width:`${o.marginRight}px`,height:"anchor-size(height)"},{kind:"margin",left:"anchor(left)",top:"anchor(bottom)",width:"anchor-size(width)",height:`${o.marginBottom}px`},{kind:"margin",left:`calc(anchor(left) - ${o.marginLeft}px)`,top:"anchor(top)",width:`${o.marginLeft}px`,height:"anchor-size(height)"},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(top) + ${o.borderTopWidth}px)`,width:`calc(anchor-size(width) - ${o.borderLeftWidth+o.borderRightWidth}px)`,height:`${o.paddingTop}px`},{kind:"padding",left:`calc(anchor(right) - ${o.borderRightWidth+o.paddingRight}px)`,top:`calc(anchor(top) + ${o.borderTopWidth+o.paddingTop}px)`,width:`${o.paddingRight}px`,height:`calc(anchor-size(height) - ${o.borderTopWidth+o.borderBottomWidth+o.paddingTop+o.paddingBottom}px)`},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(bottom) - ${o.borderBottomWidth+o.paddingBottom}px)`,width:`calc(anchor-size(width) - ${o.borderLeftWidth+o.borderRightWidth}px)`,height:`${o.paddingBottom}px`},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(top) + ${o.borderTopWidth+o.paddingTop}px)`,width:`${o.paddingLeft}px`,height:`calc(anchor-size(height) - ${o.borderTopWidth+o.borderBottomWidth+o.paddingTop+o.paddingBottom}px)`}];s.forEach((u,d)=>{let l=wr(e,t,d);l.setAttribute("data-vcp-designer-spacing-kind",u.kind),l.style.setProperty("position-anchor",r,"important"),l.style.setProperty("left",u.left,"important"),l.style.setProperty("top",u.top,"important"),l.style.setProperty("width",u.width,"important"),l.style.setProperty("height",u.height,"important"),l.style.setProperty("background",u.kind==="margin"?"rgba(245, 158, 11, 0.24)":"rgba(56, 189, 248, 0.22)","important");let m=u.kind==="margin"?[o.marginTop,o.marginRight,o.marginBottom,o.marginLeft][d]:[o.paddingTop,o.paddingRight,o.paddingBottom,o.paddingLeft][d-4];l.style.setProperty("display",(m??0)>.5?"block":"none","important")});let a=ws(n,o),c=a.map((u,d)=>{let l=wr(e,t,s.length+d),m=`${i}-${d}`,p=Pt(u.anchorElement,m);return l.setAttribute("data-vcp-designer-spacing-kind","gap"),l.style.setProperty("position-anchor",m,"important"),l.style.setProperty("background","rgba(34, 197, 94, 0.22)","important"),l.style.setProperty("display","block","important"),l.style.setProperty("left",`calc(anchor(left) + ${u.leftOffset}px)`,"important"),l.style.setProperty("top",`calc(anchor(top) + ${u.topOffset}px)`,"important"),l.style.setProperty("width",`${u.width}px`,"important"),l.style.setProperty("height",`${u.height}px`,"important"),p});return t.slice(s.length+a.length).forEach(u=>{u.style.setProperty("display","none","important")}),c}function wr(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 xs(e){let t=Ve(e.getBoundingClientRect()),n=Vt(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,a=i+n.paddingTop,c=s-n.paddingTop-n.paddingBottom,u=[{kind:"margin",left:t.left,top:t.top-n.marginTop,width:t.width,height:n.marginTop},{kind:"margin",left:t.left+t.width,top:t.top,width:n.marginRight,height:t.height},{kind:"margin",left:t.left,top:t.top+t.height,width:t.width,height:n.marginBottom},{kind:"margin",left:t.left-n.marginLeft,top:t.top,width:n.marginLeft,height:t.height}];return o>0&&s>0&&u.push({kind:"padding",left:r,top:i,width:o,height:n.paddingTop},{kind:"padding",left:r+o-n.paddingRight,top:a,width:n.paddingRight,height:c},{kind:"padding",left:r,top:i+s-n.paddingBottom,width:o,height:n.paddingBottom},{kind:"padding",left:r,top:a,width:n.paddingLeft,height:c}),u.push(...As(e,n)),u.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=vn(e);return[...Pr(r,"horizontal",t.columnGap),...Pr(r,"vertical",t.rowGap)]}function ws(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:Cn(r?.getComputedStyle(o))})).filter(({rect:o})=>o.width>0&&o.height>0);return[...Nr(i,"horizontal",t.columnGap),...Nr(i,"vertical",t.rowGap)].filter(o=>o.width>.5&&o.height>.5)}function Nr(e,t,n){if(n<=0||e.length<2)return[];let r=Jr(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((a,c)=>t==="horizontal"?a.rect.left-c.rect.left:a.rect.top-c.rect.top);for(let a=0;a<s.length-1;a+=1){let c=s[a],u=s[a+1];if(t==="horizontal"){let d=c.rect.left+c.rect.width+c.margin.marginRight,l=u.rect.left-u.margin.marginLeft-d,m=Math.min(n,l);i.push({anchorElement:c.element,leftOffset:d+Math.max(0,(l-m)/2)-c.rect.left,topOffset:Math.max(c.rect.top,u.rect.top)-c.rect.top,width:m,height:Math.min(c.rect.top+c.rect.height,u.rect.top+u.rect.height)-Math.max(c.rect.top,u.rect.top)})}else{let d=c.rect.top+c.rect.height+c.margin.marginBottom,l=u.rect.top-u.margin.marginTop-d,m=Math.min(n,l);i.push({anchorElement:c.element,leftOffset:Math.max(c.rect.left,u.rect.left)-c.rect.left,topOffset:d+Math.max(0,(l-m)/2)-c.rect.top,width:Math.min(c.rect.left+c.rect.width,u.rect.left+u.rect.width)-Math.max(c.rect.left,u.rect.left),height:m})}}}),i}function Pr(e,t,n){if(n<=0||e.length<2)return[];let r=Jr(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((a,c)=>t==="horizontal"?a.rect.left-c.rect.left:a.rect.top-c.rect.top);for(let a=0;a<s.length-1;a+=1){let c=s[a],u=s[a+1];if(t==="horizontal"){let d=c.rect.left+c.rect.width+c.margin.marginRight,l=u.rect.left-u.margin.marginLeft-d,m=Math.min(n,l);i.push({kind:"gap",left:d+Math.max(0,(l-m)/2),top:Math.max(c.rect.top,u.rect.top),width:m,height:Math.min(c.rect.top+c.rect.height,u.rect.top+u.rect.height)-Math.max(c.rect.top,u.rect.top)})}else{let d=c.rect.top+c.rect.height+c.margin.marginBottom,l=u.rect.top-u.margin.marginTop-d,m=Math.min(n,l);i.push({kind:"gap",left:Math.max(c.rect.left,u.rect.left),top:d+Math.max(0,(l-m)/2),width:Math.min(c.rect.left+c.rect.width,u.rect.left+u.rect.width)-Math.max(c.rect.left,u.rect.left),height:m})}}}),i}function Jr(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(a=>Ns(a.rect,i.rect,t)>.5));o?o.push(i):r.push([i])}),r}function Ns(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 At=new WeakMap;function Pt(e,t){let n=At.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},At.set(e,n)}n.names.add(t),kr(e,n);let r=!1;return()=>{if(r)return;r=!0;let i=At.get(e);if(i){if(i.names.delete(t),i.names.size>0){kr(e,i);return}i.originalValue?e.style.setProperty("anchor-name",i.originalValue,i.originalPriority):e.style.removeProperty("anchor-name"),At.delete(e)}}}function kr(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"],ks=0;function Ds(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 Os(e,t,n,r){let i=++ks,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 a=e.document,c=a.head??a.documentElement,u=a.documentElement,d=()=>ye(a,t,n?.()??null),l=d();if(!l||!l.isConnected||typeof c?.appendChild!="function"||typeof u?.appendChild!="function")return null;let m="data-vcp-designer-resize-visual",p="data-vcp-designer-resize-handle",g=a.createElement("style");g.setAttribute("data-vcp-designer-resize-visual-style","true"),g.textContent=`
19
+ }`,i.appendChild(b);let T=r.createElement("div");T.setAttribute(p,"true"),T.setAttribute("aria-hidden","true"),r.documentElement.appendChild(T);for(let N of Array.from(r.documentElement.children))N.getAttribute(g)!==null&&(N.remove(),r.documentElement.appendChild(N));let _=r.createElement("div");_.setAttribute("data-vcp-designer-spacing-visual-layer","true"),_.setAttribute("aria-hidden","true"),_.style.setProperty("position","fixed","important"),_.style.setProperty("inset","0","important"),_.style.setProperty("overflow","hidden","important"),_.style.setProperty("pointer-events","none","important"),_.style.setProperty("z-index","2147483645","important"),r.documentElement.appendChild(_),l.setAttribute(m,"true");let P=Pt(l,s),$=!1,F=null,v=[],q=[],Q=()=>{F=null,q.forEach(N=>N()),q=Ts(_,v,l,s,a)},z=()=>{$||F!==null||(F=kt(e,Q))};Q();let G=e.ResizeObserver,W=typeof G=="function"?new G(z):null,X=[];function L(){X.forEach(N=>W?.unobserve(N)),X=l?.isConnected?[l,...Array.from(l.children)].filter(N=>typeof N.getBoundingClientRect=="function"):[],X.forEach(N=>W?.observe(N))}L();let w=N=>{N===l&&N?.isConnected||(l?.removeAttribute(m),P?.(),P=null,l=N,l?.isConnected?(l.setAttribute(m,"true"),P=Pt(l,s),T.style.removeProperty("display")):T.style.setProperty("display","none","important"),L(),z())},E=()=>{$||w(d())},x=e.MutationObserver,f=typeof x=="function"?new x(N=>{let K=l;E();let Z=K!==l,ee=N.some(I=>I.type!=="attributes"||I.attributeName!=="class"&&I.attributeName!=="style"?!1:I.target===l?!0:l?.contains?.(I.target)===!0&&I.target!==_&&I.target!==T);!Z&&!ee||(L(),z())}):null;return f?.observe(r.documentElement,{attributeFilter:["data-vcp-edit-key","class","style"],attributes:!0,childList:!0,subtree:!0}),e.addEventListener("resize",z),{setRef:N=>{if($)return!1;if(_s(u,N)&&l?.isConnected)return!0;let Z=d(N);return Z?.isConnected?(u=N,w(Z),!0):!1},cleanup:()=>{$||($=!0,F!==null&&(Dt(e,F),F=null),e.removeEventListener("resize",z),f?.disconnect(),W?.disconnect(),l?.removeAttribute(m),q.forEach(N=>N()),q=[],P?.(),P=null,l=null,T.remove(),_.remove(),b.remove())}}}function _s(e,t){return e.key===t.key&&(e.instanceIndex??null)===(t.instanceIndex??null)&&(e.instanceCount??null)===(t.instanceCount??null)}function Ts(e,t,n,r,i){if(n?.isConnected===!0&&r)return xs(e,t,n,r,i);let o=n?.isConnected===!0?As(n):[];return o.forEach((s,a)=>{let c=t[a]??e.ownerDocument.createElement("div");t[a]||(c.style.setProperty("position","fixed","important"),c.style.setProperty("pointer-events","none","important"),e.appendChild(c),t[a]=c),c.setAttribute("data-vcp-designer-spacing-kind",s.kind),c.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"),c.style.setProperty("display","block","important"),c.style.setProperty("left",`${s.left}px`,"important"),c.style.setProperty("top",`${s.top}px`,"important"),c.style.setProperty("width",`${s.width}px`,"important"),c.style.setProperty("height",`${s.height}px`,"important")}),t.slice(o.length).forEach(s=>{s.style.setProperty("display","none","important")}),[]}function xs(e,t,n,r,i){let o=Vt(n),s=[{kind:"margin",left:"anchor(left)",top:`calc(anchor(top) - ${o.marginTop}px)`,width:"anchor-size(width)",height:`${o.marginTop}px`},{kind:"margin",left:"anchor(right)",top:"anchor(top)",width:`${o.marginRight}px`,height:"anchor-size(height)"},{kind:"margin",left:"anchor(left)",top:"anchor(bottom)",width:"anchor-size(width)",height:`${o.marginBottom}px`},{kind:"margin",left:`calc(anchor(left) - ${o.marginLeft}px)`,top:"anchor(top)",width:`${o.marginLeft}px`,height:"anchor-size(height)"},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(top) + ${o.borderTopWidth}px)`,width:`calc(anchor-size(width) - ${o.borderLeftWidth+o.borderRightWidth}px)`,height:`${o.paddingTop}px`},{kind:"padding",left:`calc(anchor(right) - ${o.borderRightWidth+o.paddingRight}px)`,top:`calc(anchor(top) + ${o.borderTopWidth+o.paddingTop}px)`,width:`${o.paddingRight}px`,height:`calc(anchor-size(height) - ${o.borderTopWidth+o.borderBottomWidth+o.paddingTop+o.paddingBottom}px)`},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(bottom) - ${o.borderBottomWidth+o.paddingBottom}px)`,width:`calc(anchor-size(width) - ${o.borderLeftWidth+o.borderRightWidth}px)`,height:`${o.paddingBottom}px`},{kind:"padding",left:`calc(anchor(left) + ${o.borderLeftWidth}px)`,top:`calc(anchor(top) + ${o.borderTopWidth+o.paddingTop}px)`,width:`${o.paddingLeft}px`,height:`calc(anchor-size(height) - ${o.borderTopWidth+o.borderBottomWidth+o.paddingTop+o.paddingBottom}px)`}];s.forEach((u,d)=>{let l=wr(e,t,d);l.setAttribute("data-vcp-designer-spacing-kind",u.kind),l.style.setProperty("position-anchor",r,"important"),l.style.setProperty("left",u.left,"important"),l.style.setProperty("top",u.top,"important"),l.style.setProperty("width",u.width,"important"),l.style.setProperty("height",u.height,"important"),l.style.setProperty("background",u.kind==="margin"?"rgba(245, 158, 11, 0.24)":"rgba(56, 189, 248, 0.22)","important");let m=u.kind==="margin"?[o.marginTop,o.marginRight,o.marginBottom,o.marginLeft][d]:[o.paddingTop,o.paddingRight,o.paddingBottom,o.paddingLeft][d-4];l.style.setProperty("display",(m??0)>.5?"block":"none","important")});let a=Ns(n,o),c=a.map((u,d)=>{let l=wr(e,t,s.length+d),m=`${i}-${d}`,p=Pt(u.anchorElement,m);return l.setAttribute("data-vcp-designer-spacing-kind","gap"),l.style.setProperty("position-anchor",m,"important"),l.style.setProperty("background","rgba(34, 197, 94, 0.22)","important"),l.style.setProperty("display","block","important"),l.style.setProperty("left",`calc(anchor(left) + ${u.leftOffset}px)`,"important"),l.style.setProperty("top",`calc(anchor(top) + ${u.topOffset}px)`,"important"),l.style.setProperty("width",`${u.width}px`,"important"),l.style.setProperty("height",`${u.height}px`,"important"),p});return t.slice(s.length+a.length).forEach(u=>{u.style.setProperty("display","none","important")}),c}function wr(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=Vt(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,a=i+n.paddingTop,c=s-n.paddingTop-n.paddingBottom,u=[{kind:"margin",left:t.left,top:t.top-n.marginTop,width:t.width,height:n.marginTop},{kind:"margin",left:t.left+t.width,top:t.top,width:n.marginRight,height:t.height},{kind:"margin",left:t.left,top:t.top+t.height,width:t.width,height:n.marginBottom},{kind:"margin",left:t.left-n.marginLeft,top:t.top,width:n.marginLeft,height:t.height}];return o>0&&s>0&&u.push({kind:"padding",left:r,top:i,width:o,height:n.paddingTop},{kind:"padding",left:r+o-n.paddingRight,top:a,width:n.paddingRight,height:c},{kind:"padding",left:r,top:i+s-n.paddingBottom,width:o,height:n.paddingBottom},{kind:"padding",left:r,top:a,width:n.paddingLeft,height:c}),u.push(...ws(e,n)),u.filter(d=>d.width>.5&&d.height>.5)}function ws(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=vn(e);return[...Pr(r,"horizontal",t.columnGap),...Pr(r,"vertical",t.rowGap)]}function Ns(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:Cn(r?.getComputedStyle(o))})).filter(({rect:o})=>o.width>0&&o.height>0);return[...Nr(i,"horizontal",t.columnGap),...Nr(i,"vertical",t.rowGap)].filter(o=>o.width>.5&&o.height>.5)}function Nr(e,t,n){if(n<=0||e.length<2)return[];let r=Jr(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((a,c)=>t==="horizontal"?a.rect.left-c.rect.left:a.rect.top-c.rect.top);for(let a=0;a<s.length-1;a+=1){let c=s[a],u=s[a+1];if(t==="horizontal"){let d=c.rect.left+c.rect.width+c.margin.marginRight,l=u.rect.left-u.margin.marginLeft-d,m=Math.min(n,l);i.push({anchorElement:c.element,leftOffset:d+Math.max(0,(l-m)/2)-c.rect.left,topOffset:Math.max(c.rect.top,u.rect.top)-c.rect.top,width:m,height:Math.min(c.rect.top+c.rect.height,u.rect.top+u.rect.height)-Math.max(c.rect.top,u.rect.top)})}else{let d=c.rect.top+c.rect.height+c.margin.marginBottom,l=u.rect.top-u.margin.marginTop-d,m=Math.min(n,l);i.push({anchorElement:c.element,leftOffset:Math.max(c.rect.left,u.rect.left)-c.rect.left,topOffset:d+Math.max(0,(l-m)/2)-c.rect.top,width:Math.min(c.rect.left+c.rect.width,u.rect.left+u.rect.width)-Math.max(c.rect.left,u.rect.left),height:m})}}}),i}function Pr(e,t,n){if(n<=0||e.length<2)return[];let r=Jr(e,t==="horizontal"?"y":"x"),i=[];return r.forEach(o=>{let s=[...o].sort((a,c)=>t==="horizontal"?a.rect.left-c.rect.left:a.rect.top-c.rect.top);for(let a=0;a<s.length-1;a+=1){let c=s[a],u=s[a+1];if(t==="horizontal"){let d=c.rect.left+c.rect.width+c.margin.marginRight,l=u.rect.left-u.margin.marginLeft-d,m=Math.min(n,l);i.push({kind:"gap",left:d+Math.max(0,(l-m)/2),top:Math.max(c.rect.top,u.rect.top),width:m,height:Math.min(c.rect.top+c.rect.height,u.rect.top+u.rect.height)-Math.max(c.rect.top,u.rect.top)})}else{let d=c.rect.top+c.rect.height+c.margin.marginBottom,l=u.rect.top-u.margin.marginTop-d,m=Math.min(n,l);i.push({kind:"gap",left:Math.max(c.rect.left,u.rect.left),top:d+Math.max(0,(l-m)/2),width:Math.min(c.rect.left+c.rect.width,u.rect.left+u.rect.width)-Math.max(c.rect.left,u.rect.left),height:m})}}}),i}function Jr(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(a=>Ps(a.rect,i.rect,t)>.5));o?o.push(i):r.push([i])}),r}function Ps(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 At=new WeakMap;function Pt(e,t){let n=At.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},At.set(e,n)}n.names.add(t),kr(e,n);let r=!1;return()=>{if(r)return;r=!0;let i=At.get(e);if(i){if(i.names.delete(t),i.names.size>0){kr(e,i);return}i.originalValue?e.style.setProperty("anchor-name",i.originalValue,i.originalPriority):e.style.removeProperty("anchor-name"),At.delete(e)}}}function kr(e,t){let n=t.originalValue.trim()||t.computedValue;e.style.setProperty("anchor-name",[...n?[n]:[],...t.names].join(", "),"important")}var ks=["e","se","s"],Ds=0;function Os(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=++Ds,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 a=e.document,c=a.head??a.documentElement,u=a.documentElement,d=()=>ye(a,t,n?.()??null),l=d();if(!l||!l.isConnected||typeof c?.appendChild!="function"||typeof u?.appendChild!="function")return null;let m="data-vcp-designer-resize-visual",p="data-vcp-designer-resize-handle",g=a.createElement("style");g.setAttribute("data-vcp-designer-resize-visual-style","true"),g.textContent=`
20
20
  [${p}] {
21
21
  position: fixed !important;
22
22
  position-anchor: ${o};
@@ -38,10 +38,10 @@ function Qn(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
- `,c.appendChild(g);let b=Ps.map(w=>{let E=a.createElement("div");return E.setAttribute(p,w),E.setAttribute("aria-hidden","true"),u.appendChild(E),E}),T=null,_=null,P=()=>{T?.removeAttribute(m),_?.(),_=null,T=null},$=w=>{P(),T=w,_=Pt(w,o),w.setAttribute(m,"true"),b.forEach(E=>E.style.removeProperty("display"))};$(l);let F=!1,v=null,q=()=>{if(!v||!l)return;let w=(E,x,f)=>{x?l.style.setProperty(E,x,f):l.style.removeProperty(E)};w("width",v.widthValue,v.widthPriority),w("height",v.heightValue,v.heightPriority)},Q=(w,E,x)=>v?{version:1,phase:w,sessionId:v.sessionId,pointerId:v.pointerId,edge:v.edge,ref:t,startWidth:v.startWidth,startHeight:v.startHeight,width:E,height:x,baselineStyleDeclarations:[{property:"width",value:v.widthValue||null,...v.widthPriority==="important"?{priority:"important"}:{}},{property:"height",value:v.heightValue||null,...v.heightPriority==="important"?{priority:"important"}:{}}]}:null,z=()=>{if(!v)return null;let w=Q("cancel",v.startWidth,v.startHeight),E=v.captureTarget,x=v.pointerId,f=v.currentX,C=v.currentY;return q(),v=null,E?.releasePointerCapture?.(x),w&&r?.({clientX:f,clientY:C,session:w}),w},G=w=>{if(!v||!l?.isConnected||w.pointerId!==v.pointerId)return!1;v.currentX=Number(w.clientX),v.currentY=Number(w.clientY);let E=v.currentX-v.startX,x=v.currentY-v.startY,f=Math.max(1,Math.round(v.startWidth+E)),C=Math.max(1,Math.round(v.startHeight+x));return(v.edge==="e"||v.edge==="se")&&l.style.setProperty("width",`${f}px`,"important"),(v.edge==="s"||v.edge==="se")&&l.style.setProperty("height",`${C}px`,"important"),!0},W=()=>{if(F)return;let w=d();w===l&&w?.isConnected||(z(),P(),l=w,l?.isConnected?$(l):b.forEach(E=>E.style.setProperty("display","none","important")))},X=e.MutationObserver,L=typeof X=="function"?new X(W):null;return L?.observe(a.documentElement,{attributeFilter:["data-vcp-edit-key"],attributes:!0,childList:!0,subtree:!0}),{begin(w,E){if(F||v||!l?.isConnected)return null;let x=l.getBoundingClientRect();return v={sessionId:`resize-${i}-${w.pointerId}`,pointerId:w.pointerId,edge:E,startX:Number(w.clientX),startY:Number(w.clientY),currentX:Number(w.clientX),currentY:Number(w.clientY),startWidth:x.width,startHeight:x.height,widthValue:l.style.getPropertyValue("width"),widthPriority:l.style.getPropertyPriority("width"),heightValue:l.style.getPropertyValue("height"),heightPriority:l.style.getPropertyPriority("height"),captureTarget:w.target},Q("start",x.width,x.height)},update:G,finish(w,E){if(!v||w.pointerId!==v.pointerId)return null;E==="commit"&&G(w);let x=Math.max(1,Math.round(v.startWidth+Number(w.clientX)-v.startX)),f=Math.max(1,Math.round(v.startHeight+Number(w.clientY)-v.startY)),C=Q(E,E==="commit"?x:v.startWidth,E==="commit"?f:v.startHeight),k=v.captureTarget,N=v.pointerId;return E==="cancel"&&q(),v=null,k?.releasePointerCapture?.(N),C},cleanup(){F||(F=!0,L?.disconnect(),z(),P(),l=null,b.forEach(w=>w.remove()),g.remove())}}}function Dr(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-get-operation-result"||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 Bs({message:e,sendEvent:t,sendResponse:n,subscriptions:r,getCurrentDocument:i,setCurrentDocument:o,onBridgeRequestError:s,nextRouteReadySequence:a,windowLike:c}){let u=c.__VCP_SITE_EDIT__;if(!u){n({type:"response",ok:!1,error:"Site edit bridge is not ready in preview frame"});return}let d=()=>{if(c.__VCP_SITE_EDIT__!==u)throw new Error("SITE_EDIT_COMPOSITION_SESSION_MISMATCH: navigation changed while reading the document")};try{switch(e.kind){case"bridge-initialize-session":{let l=c.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(l?.compositionKey&&Ye(e.payload.composition)!==l.compositionKey&&(!l.composition||Ye(e.payload.composition)!==ae(l.composition)))throw new Error("SITE_EDIT_COMPOSITION_SESSION_MISMATCH: navigation changed");let m,p=!1;if(l?.composition)try{let g=await u.getDocument(e.payload.composition),b=await u.getHistoryStatus(e.payload.composition);m={...g,composition:g.data.composition,data:{document:g.data,historyStatus:b.data}},p=!0}catch(g){if(!ke(g,"").includes("SITE_EDIT_COMPOSITION_SESSION_REQUIRED"))throw g}m??=await u.initializeSession({composition:e.payload.composition}),d(),o?.(m.data.document),p||Qr(c,{composition:m.data.document.composition,editEngineVersion:"unknown",sequence:a(),version:m.data.document.version}),n({type:"response",ok:!0,result:m});return}case"bridge-get-document":{let l=await u.getDocument(e.payload.composition);d(),o?.(l.data),n({type:"response",ok:!0,result:l});return}case"bridge-get-history-status":n({type:"response",ok:!0,result:await u.getHistoryStatus(e.payload.composition)});return;case"bridge-get-style-context":n({type:"response",ok:!0,result:await u.getStyleContext(e.payload.composition)});return;case"bridge-ensure-document-version":{if(!Number.isFinite(Number(e.payload.minVersion))){n({type:"response",ok:!1,error:"Invalid document version"});return}let l=u.ensureDocumentVersion?await u.ensureDocumentVersion(e.payload.composition,Number(e.payload.minVersion)):await u.getDocument(e.payload.composition);d(),o?.(l.data),n({type:"response",ok:!0,result:l});return}case"bridge-acknowledge-document-version":{if(!Number.isFinite(Number(e.payload.version))){n({type:"response",ok:!1,error:"Invalid document version"});return}let l=u.acknowledgeDocumentVersion?await u.acknowledgeDocumentVersion(e.payload.composition,Number(e.payload.version)):await u.getDocument(e.payload.composition);d(),o?.(l.data),n({type:"response",ok:!0,result:l});return}case"bridge-get-object-edit-context":n({type:"response",ok:!0,result:await u.getObjectEditContext(e.payload.key,e.payload.composition,e.payload.selectionRef)});return;case"bridge-get-class-name-source":{let l=await u.getClassNameSource(e.payload.key,e.payload.composition);n({type:"response",ok:!0,result:Fs(l,e.payload.key,c.document,i?.()??null)});return}case"bridge-get-source-tree":n({type:"response",ok:!0,result:await u.getSourceTree(e.payload.composition)});return;case"bridge-get-source-file":n({type:"response",ok:!0,result:await u.getSourceFile({path:e.payload.path,composition:e.payload.composition})});return;case"bridge-resolve-source-location":n({type:"response",ok:!0,result:await u.resolveSourceLocation({key:e.payload.key,composition:e.payload.composition})});return;case"bridge-get-operation-result":{n({type:"response",ok:!0,result:await u.getOperationResult?.(e.payload.request)??null});return}case"bridge-execute":{let l=await u.execute(e.payload.request);if(n({type:"response",ok:!0,result:l}),l.ok&&u.acknowledgeDocumentVersion&&Ms(e.payload.request))try{let m=await u.acknowledgeDocumentVersion(e.payload.composition,l.data.resultVersion);d(),o?.(m.data)}catch(m){c.__VCP_SITE_EDIT__===u&&s?.(m,e)}return}case"bridge-undo":n({type:"response",ok:!0,result:await u.undo(e.payload.composition)});return;case"bridge-redo":n({type:"response",ok:!0,result:await u.redo(e.payload.composition)});return;case"bridge-subscribe":{let l=e.payload.subscriptionId;r.get(l)?.();let m=u.subscribe(p=>{t({kind:"bridge-event",payload:{composition:p.composition,event:p,subscriptionId:l}})});r.set(l,m),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){c.__VCP_SITE_EDIT__===u&&s?.(l,e),n({type:"response",ok:!1,error:Gs(l)})}}function Fs(e,t,n,r){if(!e.ok)return e;let i=ye(n,{key:t},r),o=i?Vs(i):null;return o?{...e,data:{...e.data,computedStyle:{...e.data.computedStyle??{},...o}}}:e}function Vs(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 Hs(e,t,n=()=>e.location.pathname){let r=e.history.pushState,i=e.history.replaceState,o=n(),s=()=>{let u=n();u!==o&&(o=u,t())},a=()=>s(),c=()=>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",a),e.addEventListener("hashchange",c),()=>{e.history.pushState=r,e.history.replaceState=i,e.removeEventListener("popstate",a),e.removeEventListener("hashchange",c)}}var Or=5e3,Mr="SITE_EDIT_BRIDGE_HEALTH_TIMEOUT";async function $s(e,t){let n=typeof AbortController=="function"?new AbortController:null,r,i=new Promise((o,s)=>{r=e.setTimeout(()=>{n?.abort();let a=new Error(`${Mr}: preview health check did not respond within ${Or}ms`);a.code=Mr,s(a)},Or)});try{return await Promise.race([(async()=>{let o=await e.fetch(t,{cache:"no-store",...n?{signal:n.signal}:{}}),s=await o.json();return{response:o,health:s}})(),i])}finally{e.clearTimeout(r)}}var qs=/^[A-Z][A-Z0-9_]{2,63}$/;function un(e){let t=e&&typeof e=="object"&&"code"in e?String(e.code??""):"";if(qs.test(t))return{failureCode:t};let n=e instanceof Error?e.message:"",r=/^([A-Z][A-Z0-9_]{2,63}):/.exec(n)?.[1];return r?{failureCode:r}:{}}function Ks(e){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>requestAnimationFrame(e));return}setTimeout(e,0)}function kt(e,t){return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(t):e.setTimeout(t,0)}function Dt(e,t){if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(t);return}e.clearTimeout(t)}function Qr(e,t){e.dispatchEvent(new CustomEvent(hn,{detail:t}))}function Us(e,t){e.dispatchEvent(new CustomEvent(fn,{detail:t}))}function Ws(e){return e?e.getConnectionState?e.getConnectionState()==="open":!0:!1}function zs(e,t){return ae(e.composition)===t}function js(e){return ke(e,"").includes(Gr)}function ke(e,t){return e instanceof Error&&e.message?e.message:typeof e=="string"&&e?e:t}function Zr(e){let t=ke(e,"");return/websocket|readyState|not open|disconnected|bridge request timed out|network|econnreset|broken pipe|socket closed/i.test(t)}function Gs(e){let t=ke(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 eo(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 Ys(e){let t=eo(e);if(t)return t===Ue||t===Qe;let n=ke(e,"");return n.includes(Ue)||n.includes(Qe)}function je(e){if(ke(e,"").includes("SITE_EDIT_RUNTIME_RELOAD_REQUIRED"))return!0;if(eo(e))return!1;let t=ke(e,"");return/\b(?:bridge(?: session)?|websocket)\s+authentication\b|\bbridge\s+(?:session\s+)?key\b/i.test(t)}function to(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function Sn(e){return cs.has(ro(e))}function Xs(e){return us.has(ro(e))}function no(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:Xs(e.tagName),canInsertChild:Sn(e.tagName),canMove:!1,canRemove:!1}}function ro(e){return e?.trim().toLowerCase()??""}function Br(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 Ls(e,t,n){let r=ye(e,t.ref,n);if(!r)return!1;if(typeof t.ref.textSegmentIndex=="number"){let i=Js(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 Js(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!Ot(r)||(r.textContent??"").trim().length===0)){if(n===t)return r;n+=1}return null}function Qs(e,t,n,r,i){let o=ut(e,t,n,r),s=Ft(o);if(!s)return null;let a=s.getAttribute("data-vcp-edit-key")??"",c=ge(e,s,r),u=i?.(c.key)??i?.(a);if(!no({operationSummary:u?.operationSummary,tagName:s.tagName,fallbackMode:"preview"}).canUpdateText)return null;let l=Zs(e,t,n,s);if(l){let m=ta(s,l);if(m!==null)return{element:s,textNode:l,textSegmentIndex:m}}return Ht(s)?null:{element:s}}function Zs(e,t,n,r){let i=ea(e,t,n);return!i||i.parentElement!==r?null:i}function ea(e,t,n){let r=e,o=r.caretPositionFromPoint?.(t,n)?.offsetNode??null;if(Ot(o))return o;let a=r.caretRangeFromPoint?.(t,n)?.startContainer??null;return Ot(a)?a:null}function ta(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!Ot(r)||(r.textContent??"").trim().length===0)){if(r===t)return n;n+=1}return null}function Ot(e){return e?.nodeType===3}function na(e,t,n){return(typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean))[0]??null}function ra(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:oa(e,r),ref:Mt(e,r,n),rect:Ve(r.getBoundingClientRect()),targetIsSectionRoot:t===r}}function oa(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,oo(e,null).findIndex(i=>i.element===t))}function oo(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:Mt(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 ia(e,t,n,r){if(n?.pageComposition.status!=="supported")return null;let i=oo(e,n),o=i[0],s=i.at(-1);if(!o||!s)return null;let a=new Set(n.pageComposition.placements.map(p=>`${p.placementUnitKey}\0${p.relation}`)),c=p=>r?.(p)??n.entries.find(g=>g.key===p)??null,u=(p,g,b)=>{let T=c(p.ref.key)?.pageCompositionUnitKey;return!T||!a.has(`${T}\0${g}`)?null:{anchorBlockId:p.blockId,positionIndex:b,anchorRef:p.ref,placement:g,boundary:{top:g==="before"?p.rect.top:p.rect.top+p.rect.height,left:p.rect.left,width:p.rect.width}}},d=[],l=u(o,"before",0);l&&d.push(l),i.slice(1).forEach((p,g)=>{let b=g+1,T=u(p,"before",b);if(T){d.push(T);return}let _=i[g],P=_?u(_,"after",b):null;P&&d.push(P)});let m=u(s,"after",i.length);return m&&d.push(m),d.find(({boundary:p})=>t.clientX>=p.left&&t.clientX<=p.left+p.width&&Math.abs(t.clientY-p.top)<=Er)??null}function ut(e,t,n,r=null){let i=typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean);for(let o of i){let s=Ft(o),a=s?.getAttribute("data-vcp-edit-key")??"";if(s&&In(s,r,a))return s}return null}function Ft(e){let t=e,n=null;for(;t;){let r=t.getAttribute("data-vcp-edit-key")??"";if(r){if(En(t))return n??t;!sa(r)&&!n&&(n=t)}t=t.parentElement}return n}function En(e){return e.getAttribute(as)!==null}function sa(e){return aa(e.split("::")[0]??"")}function aa(e){if(!e)return!1;let t=ca(e);return t===xt||t.startsWith(`${xt}/`)||t.includes(`/${xt}/`)||t.endsWith(`/${xt}`)}function ca(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=so(co(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${fo(r)}"]`))),n,r);if(i.length<=1)return{key:Fr(n,r,0)};let o=i.indexOf(t);return o>=0?{key:Fr(n,r,o),instanceIndex:o,instanceCount:i.length}:{key:r}}function Mt(e,t,n){return ge(e,t,n)}function ye(e,t,n){let r=lt(t.key)??t.key,i=so(co(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${fo(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=(lt(t.key)??t.key)!==t.key;if(o!==null&&!s)return i[o]??null;let a=ua(n,t.key);return a!==null&&a>=0&&a<i.length?i[a]??null:o!==null?i[o]??null:i[0]??null}function Fr(e,t,n){return io(e,t)[n]?.key??t}function ua(e,t){let n=lt(t);if(!n)return null;let i=io(e,n).findIndex(o=>o.key===t);return i>=0?i:null}function io(e,t){return(e?.entries??[]).filter(n=>(lt(n.key)??n.key)===t)}function so(e,t,n){let r=ao(t,n);return r?e.filter(i=>i.tagName.toLowerCase()===r):e}function In(e,t,n){let r=ao(t,n);return!r||e.tagName.toLowerCase()===r}function ao(e,t){return null}var la=2,da=4;function co(e){return[...e].sort((t,n)=>{if(t===n)return 0;let r=typeof t.compareDocumentPosition=="function"?t.compareDocumentPosition(n):0;return(r&da)!==0?-1:(r&la)!==0?1:0})}function lt(e){if(typeof e!="string"||e.length===0)return e??null;let t=e;for(;;){let n=t.lastIndexOf(Ar);if(n<0)break;let r=Number(t.slice(n+Ar.length));if(!Number.isInteger(r)||r<0)return e;t=t.slice(0,n)}return t}function Vt(e){let n=e.ownerDocument?.defaultView?.getComputedStyle(e);return{...Cn(n),paddingTop:he(n?.paddingTop),paddingRight:he(n?.paddingRight),paddingBottom:he(n?.paddingBottom),paddingLeft:he(n?.paddingLeft),borderTopWidth:he(n?.borderTopWidth),borderRightWidth:he(n?.borderRightWidth),borderBottomWidth:he(n?.borderBottomWidth),borderLeftWidth:he(n?.borderLeftWidth),columnGap:he(n?.columnGap),rowGap:he(n?.rowGap)}}function Cn(e){return{marginTop:he(e?.marginTop,!0),marginRight:he(e?.marginRight,!0),marginBottom:he(e?.marginBottom,!0),marginLeft:he(e?.marginLeft,!0)}}function he(e,t=!1){let n=Number.parseFloat(e??"");return Number.isFinite(n)?t?n:Math.max(0,n):0}function vn(e){let t=e.ownerDocument?.defaultView;return Array.from(e.children).filter(n=>typeof n.getBoundingClientRect=="function").map(n=>({rect:Ve(n.getBoundingClientRect()),margin:Cn(t?.getComputedStyle(n))})).filter(({rect:n})=>n.width>0&&n.height>0)}function pa(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 Vr=new WeakMap,Hr=0;function at(e){let t=Vr.get(e);if(t)return t;Hr+=1;let n=`runtime-node-${Hr}`;return Vr.set(e,n),n}function uo(e,t,n){let r=n??e.ownerDocument?.defaultView,i=e.ownerDocument?.defaultView?.getComputedStyle(e),o=Ve(t),s=oe(r?.scrollX),a=oe(r?.scrollY),c=i?.position||"static";return{version:sn,runtimeNodeId:at(e),rect:{viewport:o,document:{top:o.top+a,left:o.left+s,width:o.width,height:o.height}},layout:{position:c,transform:i?.transform||"none",containingBlock:fa(e,c)},scrollContext:{scrollX:s,scrollY:a,viewportWidth:oe(r?.innerWidth),viewportHeight:oe(r?.innerHeight),scrollContainers:ha(e)}}}function ha(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",a=o?.overflowY||o?.overflow||"visible",c=oe(i.scrollLeft),u=oe(i.scrollTop),d=c!==0||$r(s)&&oe(i.scrollWidth)>oe(i.clientWidth),l=u!==0||$r(a)&&oe(i.scrollHeight)>oe(i.clientHeight);(d||l)&&r.push({runtimeNodeId:at(i),scrollLeft:c,scrollTop:u})}i=i.parentElement}return r}function $r(e){return["auto","scroll","overlay","hidden"].includes(e)}function fa(e,t){if(t==="fixed"){let r=qr(e.parentElement,!0);return r?{kind:"element",runtimeNodeId:at(r)}:{kind:"viewport"}}if(t==="absolute"){let r=e.offsetParent,i=ma(r)??qr(e.parentElement,!1);return i?{kind:"element",runtimeNodeId:at(i)}:{kind:"document"}}let n=e.parentElement;return n?{kind:"element",runtimeNodeId:at(n)}:{kind:"document"}}function qr(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 ma(e){return e&&typeof e.getBoundingClientRect=="function"?e:null}function Re(e,t,n,r="full",i,o="full",s=null){let a=e.getBoundingClientRect(),c=n?.(t.key)??null,u=e.tagName.toLowerCase(),d=o==="full",l=d?dt(e):void 0,m=r==="full"?{textPreview:e.textContent?.trim().slice(0,80),dataset:ya(e),attributes:Object.fromEntries(e.getAttributeNames().map(v=>[v,e.getAttribute(v)??""]))}:{},p=no({operationSummary:c?.operationSummary,tagName:u,fallbackMode:"preview"}),g=En(e),b=!0,T=c!==null&&yn(c),_=T?null:wa(e),P=T?c.parentKey:_?s&&lt(t.key)?ge(e.ownerDocument,_,s).key:_.getAttribute("data-vcp-edit-key"):null,$=d?vn(e):void 0,F=d?uo(e,a,i):void 0;return{ref:t,key:t.key,detailLevel:r,tagName:u,...c?{sourceKind:"jsx"}:{},...P?{parentKey:P}:{},...c?.pageCompositionUnitKey?{pageCompositionUnitKey:c.pageCompositionUnitKey}:{},...m,runtimeFlags:{selectable:!0,movable:p.canMove,removable:p.canRemove,textEditable:p.canUpdateText,container:g?!1:p.canInsertChild||b&&Sn(u)||!!Ht(e)},...F?{layoutSnapshot:F}:{},...l?{layout:l}:{},rect:{top:a.top,left:a.left,width:a.width,height:a.height},...$?{childBoxes:$,childRects:$.map(({rect:v})=>v)}:{},...d?{spacing:Vt(e)}:{}}}function ga(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 ya(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=uo(e,i,n);if(r==="light")return{ref:t,layoutSnapshot:o};if(r==="child-rects")return{ref:t,layoutSnapshot:o,childRects:pa(e)};let s=vn(e);return{ref:t,layoutSnapshot:o,childBoxes:s,childRects:s.map(({rect:a})=>a),layout:dt(e),spacing:Vt(e)}}function Ur(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 ba(e,t,n,r,i){let o=t,s=Kr(o,n,e,"detailed"),a=Ur(s),c=null,u=null,d="mutation",l=Ge(e),m=l,p=!1,g=!1,b=({reason:W,sourceEventAt:X,forceEmit:L=!1,includeDetailedGeometry:w=!1})=>{(c===null||(W==="scroll"?0:1)>=(d==="scroll"?0:1))&&(d=W,l=X),p=p||L,g=g||w,c===null&&(c=kt(e,T))},T=()=>{let W=Ge(e);c=null;let X=d,L=l,w=p,E=g;p=!1,g=!1;let x=ye(e.document,n,r?.()??null);if(!x)return;x!==o&&(q?.unobserve(o),o=x,q?.observe(o),E=!0);let f=E?"detailed":a?"child-rects":"light",C=Kr(o,n,e,f),k=C.layoutSnapshot.rect.viewport;k.width<=0||k.height<=0||!w&&!Sa(s,C)||(s=C,f==="detailed"&&(a=Ur(C)),i(X,C,{sourceEventAt:L,captureStartedAt:W,capturedAt:Ge(e)}))},_=()=>{u!==null&&(e.clearTimeout(u),u=null)},P=()=>{_(),b({reason:"resize",sourceEventAt:Ge(e),includeDetailedGeometry:!0})},$=()=>{_(),b({reason:"mutation",sourceEventAt:Ge(e),includeDetailedGeometry:!0})},F=()=>{m=Ge(e),b({reason:"scroll",sourceEventAt:m}),_(),u=e.setTimeout(()=>{u=null,b({reason:"scroll",sourceEventAt:m,forceEmit:!0,includeDetailedGeometry:!0})},ns)},v=e.ResizeObserver,q=typeof v=="function"?new v(P):null;q?.observe(o);let Q=e.MutationObserver,z=typeof Q=="function"?new Q($):null;z?.observe(e.document.documentElement,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),e.addEventListener("resize",P,{passive:!0}),e.addEventListener("scroll",F,{passive:!0});let G=e.visualViewport;return G?.addEventListener?.("resize",P,{passive:!0}),G?.addEventListener?.("scroll",F,{passive:!0}),e.document.addEventListener("scroll",F,{capture:!0,passive:!0}),e.document.addEventListener("load",$,!0),{initialSnapshot:s,cleanup:()=>{c!==null&&(Dt(e,c),c=null),_(),q?.disconnect(),z?.disconnect(),e.removeEventListener("resize",P),e.removeEventListener("scroll",F),G?.removeEventListener?.("resize",P),G?.removeEventListener?.("scroll",F),e.document.removeEventListener("scroll",F,!0),e.document.removeEventListener("load",$,!0)}}}function Ge(e){let t=e.performance;return t&&Number.isFinite(t.timeOrigin)&&typeof t.now=="function"?t.timeOrigin+t.now():Date.now()}function Sa(e,t){return Ea(e.layoutSnapshot,t.layoutSnapshot)||t.childBoxes!==void 0&&Ca(e.childBoxes,t.childBoxes)||t.childRects!==void 0&&va(e.childRects,t.childRects)||t.layout!==void 0&&mn(e.layout,t.layout)||t.spacing!==void 0&&mn(e.spacing,t.spacing)}function Ea(e,t){return!e||!t?e!==t:e.version!==t.version||e.runtimeNodeId!==t.runtimeNodeId||Bt(e.rect.viewport,t.rect.viewport)||Bt(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||Ia(e.scrollContext.scrollContainers,t.scrollContext.scrollContainers)}function Ia(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 Ca(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>{let s=r[o];return!s||Bt(i.rect,s.rect)||mn(i.margin,s.margin)})}function va(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>Bt(i,r[o]??i))}function mn(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 Bt(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 Ra(e,t,n,r,i,o,s){let a=e.document,c=ut(a,t,n,o);if(!c)return{anchorHit:null,targetParentHit:null,relation:"none",rejectionReason:"no-editable-hit"};let u=i?ye(a,i,o):null;if(u&&gn(c,u))return Fe(a,c,"self-or-descendant",o,s);if(r==="move"){if(!u)return Fe(a,c,"no-accepting-parent",o,s);let b=xa(a,c,u,o,s);if(!b)return Fe(a,c,"no-accepting-parent",o,s);let T=b.kind==="parent"?zr(b.targetParent,t,n):ln(b.child,b.targetParent,t,n,"nearest");return T?wt(a,b.child,b.targetParent,T,o,s):Fe(a,c,"no-accepting-parent",o,s)}let d=null,l=!1,m=c,p=c.parentElement;for(;p;){if(p.getAttribute("data-vcp-edit-key")){if(u&&gn(p,u))return Fe(a,c,"self-or-descendant",o,s);let b=Wr(p,r,s);if(b==="accept"){d={child:m,targetParent:p};break}b==="blocked"&&(l=!0),m=p}p=p.parentElement}let g=Wr(c,r,s);if(g==="accept"){if(d){let b=ln(d.child,d.targetParent,t,n,"edge");if(b)return wt(a,d.child,d.targetParent,b,o,s)}return wt(a,c,c,zr(c,t,n),o,s)}if(d){let b=ln(d.child,d.targetParent,t,n,"nearest");return wt(a,d.child,d.targetParent,b??"after",o,s)}return g==="blocked"||l?Fe(a,c,"operation-boundary-blocked",o,s):Fe(a,c,"no-accepting-parent",o,s)}function Fe(e,t,n,r,i){return{anchorHit:Re(t,ge(e,t,r),i,"summary",void 0,"full",r),targetParentHit:null,relation:"none",rejectionReason:n}}function wt(e,t,n,r,i,o){let s=Re(t,ge(e,t,i),o,"summary",void 0,"full",i),a=Re(n,ge(e,n,i),o,"summary",void 0,"full",i),c=dt(n).indicatorOrientation,u=r==="append"||r==="prepend"?_a(n.getBoundingClientRect(),c,r):Ta(t.getBoundingClientRect(),c,r);return{anchorHit:s,targetParentHit:a,relation:r,indicatorOrientation:c,indicatorBounds:u}}function Wr(e,t,n){if(En(e))return"not-container";let r=e.getAttribute("data-vcp-edit-key")??"",i=n?.(r)??null;if(i)return i.operationSummary.canInsertChild===!0?"accept":Ht(e)?"blocked":"not-container";let o=e.tagName.toLowerCase();return Sn(o)?"accept":"not-container"}function ln(e,t,n,r,i){let o=dt(t).indicatorOrientation,s=e.getBoundingClientRect(),a=o==="vertical"?s.width>0?(n-s.left)/s.width:.5:s.height>0?(r-s.top)/s.height:.5;return i==="edge"&&a>=.25&&a<=.75?null:a<.5?"before":"after"}function zr(e,t,n){let r=dt(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 dt(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 _a(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 Ta(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 gn(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentElement}return!1}function xa(e,t,n,r,i){return Aa(e,t,n,r,i)}function Aa(e,t,n,r,i){if(!r)return null;let o=T=>i?.(T)??r.entries.find(_=>_.key===T)??null,s=ge(e,n,r),a=o(s.key);if(!a||!yn(a)||!a.parentKey)return null;let c=a.parentKey;if(!o(c)?.operationSummary.canInsertChild)return null;let d=ye(e,{key:c},r);if(!d)return null;let l=t,m=null;for(;l;){if(l.getAttribute("data-vcp-edit-key")){let T=ge(e,l,r),_=o(T.key);if(_){m=_;break}}l=l.parentElement}if(!m)return null;if(m.key===c)return{kind:"parent",child:d,targetParent:d};let p=m,g=new Set;for(;;){if(!yn(p)||!p.parentKey)return null;if(p.parentKey===c)break;if(g.has(p.key))return null;g.add(p.key);let T=o(p.parentKey);if(!T)return null;p=T}if(p.key===a.key)return null;let b=ye(e,{key:p.key},r);return!b||b===n||gn(b,n)?null:{kind:"sibling",child:b,targetParent:d}}function yn(e){return Object.prototype.hasOwnProperty.call(e,"parentKey")}function wa(e){let t=e.parentElement;for(;t;){if(t.getAttribute("data-vcp-edit-key"))return t;t=t.parentElement}return null}function Ht(e){for(let t of Array.from(e.childNodes)){if(typeof t.getAttribute!="function")continue;let n=t;if(n.getAttribute("data-vcp-edit-key"))return n;let r=Ht(n);if(r)return r}return null}function Nt(e){let t=e.document.documentElement,n=e.document.body;return{scrollX:oe(e.scrollX),scrollY:oe(e.scrollY),scrollWidth:Math.max(oe(t?.scrollWidth),oe(n?.scrollWidth),oe(e.innerWidth)),scrollHeight:Math.max(oe(t?.scrollHeight),oe(n?.scrollHeight),oe(e.innerHeight)),viewportWidth:oe(e.innerWidth),viewportHeight:oe(e.innerHeight)}}function Na(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,a=>`-${a.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,a=>`-${a.toLowerCase()}`),s=r.value;if(s==null||s===""){i.removeProperty(o);return}i.setProperty(o,String(s),r.priority)})}var Pa=500,st=new Map;function ka(e,t){return`${e}:${t.key}:${t.instanceIndex??""}`}function Da(e,t){if(st.size>=Pa){let n=st.keys().next().value;n&&st.delete(n)}st.set(e,t)}var ct=new Set;function Oa(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);Ha(e,t.stylesheets??[])}function Ma(e){let t=e.documentElement?.style;for(let n of ct)t?.removeProperty(n);ct.clear();for(let n of ho(e))n.remove()}function Ba(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 a=lo(i,s);a&&(o[s]=a)}return o}function lo(e,t,n=new Set){if(!e||n.has(t))return null;n.add(t);let r=e.getPropertyValue(t).trim();return po(e,r,n)}function po(e,t,n){if(!t)return null;let r=Fa(t);if(!r)return t;let i=lo(e,r.name,n);return i||(r.fallback?po(e,r.fallback,n)??r.fallback:null)}function Fa(e){let t=e.trim();if(!t.startsWith("var(")||!t.endsWith(")"))return null;let n=t.slice(4,-1).trim(),r=Va(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 Va(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 Ha(e,t){let n=new Set(t.filter(o=>typeof o=="string"&&o.length>0)),r=new Map;for(let o of ho(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(Xr,"true"),s.setAttribute("href",o),i.appendChild(s)}}function ho(e){return Array.from(e.querySelectorAll(`link[${Xr}]`))}function $a(e,t,n,r,i={}){let o=i.textNode?qa(e.document,i.textNode):null;if(i.textNode&&!o)throw new Error("Failed to prepare text segment editor");let s=o?.element??t,a=s.textContent??"",c=o?void 0:t.innerHTML,u=Ka(s),d=!1,l=()=>{d=!0,e.document.removeEventListener("pointerdown",p,!0),s.removeEventListener("keydown",g),s.removeEventListener("blur",b),s.removeEventListener("input",T),Wa(s,u)},m=_=>{if(d)return;d=!0;let P=s.textContent??"";if(l(),_==="cancel"){o?.restore(a),o||(t.textContent=a),r({kind:"text-edit-cancel",payload:{ref:n}});return}if(o?.restore(P),_==="commit"&&P!==a){i.onCommitSnapshot?.({ref:n,initialText:a,...c!==void 0?{initialHtml:c}:{}}),r({kind:"text-edit-commit",payload:{ref:n,value:P}});return}r({kind:"text-edit-exit",payload:{ref:n}})};function p(_){let P=_.target;if(!(P&&s.contains(P))){if(o&&P===t){_.preventDefault(),pn(s),jr(s,e.document,!0);return}m("commit")}}function g(_){if(_.key==="Escape"){_.preventDefault(),m("cancel");return}_.key==="Enter"&&(_.metaKey||_.ctrlKey)&&(_.preventDefault(),m("commit"))}function b(_){if(o&&_.relatedTarget===t){e.queueMicrotask(()=>{if(d)return;let P=e.document.activeElement;P===t?pn(s):P!==s&&m("commit")});return}m("commit")}function T(){r({kind:"text-edit-input",payload:{ref:n,hit:Re(t,n,void 0,"full")}})}return Ua(s),e.document.addEventListener("pointerdown",p,!0),s.addEventListener("keydown",g),s.addEventListener("blur",b),s.addEventListener("input",T),pn(s),jr(s,e.document),l}function qa(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 Ka(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 Ua(e){za(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 Wa(e,t){dn(e,"contenteditable",t.contentEditable),dn(e,"spellcheck",t.spellcheck),dn(e,"data-vcp-edit-text-editing",t.marker),e.style.cursor=t.cursor,e.style.userSelect=t.userSelect}function za(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 dn(e,t,n){if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)}function ja(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 pn(e){try{e.focus({preventScroll:!0})}catch{e.focus()}}function jr(e,t,n=!1){let r=t.createRange();r.selectNodeContents(e),n&&r.collapse(!1);let i=t.getSelection?.();i?.removeAllRanges(),i?.addRange(r)}function fo(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function oe(e){let t=Number(e);return Number.isFinite(t)?t:0}import So from"node:http";import pt from"node:fs";import{createHash as Nn,randomBytes as Ga,timingSafeEqual as Ya}from"node:crypto";import _e from"node:path";import{WebSocket as Eo,WebSocketServer as Xa}from"ws";import{createPreviewSiteEditEngineRuntime as La,openFileHistoryStore as Ja,resolveManagedPageTemplateComposition as Qa,scanSiteEditCompositionsFromFiles as Za}from"@vcp-dev/site-edit-engine";import{resolveNextAppRouteId as ec,scanNextAppRouterRoutesFromFiles as tc}from"@vcp-dev/site-edit-engine/next-app-router";import{SiteEditSourceWatcher as nc}from"@vcp-dev/site-edit-engine/source-watcher";var $t=class{constructor(){this.tail=Promise.resolve()}run(t){let n=this.tail.then(t,t);return this.tail=n.then(()=>{},()=>{}),n}};import{SiteEditOperationRequestSchema as rc,computeSiteEditCompositionKey as He}from"@vcp-dev/contracts";var oc="127.0.0.1",ic=30218,sc="/__vcp/site-edit/bridge",Io=6*1024*1024,ac=Io*2,cc=3e3,mo=50,Tn=".vcp/current-snapshot.json",go="__VCP_SITE_EDIT_BRIDGE_SERVERS__";function ul(e){let t=qt(e),n=_o(t),r=Ro(),i=r.get(n);if(i)return i;let o=new ht(t);r.set(n,o);try{o.start()}catch(s){throw r.delete(n),o.stop(),s}return o}function Co(e,t,n={}){let r=new ht(qt(t),e,!1,n);return r.start({listen:!1}),r}var ht=class{constructor(t,n=So.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 $t,this.operationReceipts=new Map,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(),this.versionCheckpoints=new WeakMap,this.bridgeEngine=null,this.lastNotifiedHealth=null}start(t={}){if(!this.isStarted){this.stopping=!1;try{pt.mkdirSync(_e.join(this.options.projectRoot,".vcp"),{recursive:!0})}catch(n){console.warn(`[vcp-site-edit] failed to ensure .vcp directory: ${n instanceof Error?n.message:String(n)}`)}if(this.refreshCompositions(!0),this.isStarted=!0,this.createRuntime(),this.bridgeEngine=this.createBridgeEngine(),t.webSocket!==!1){let n=Pn({server:this.server,path:this.options.path,sessionKey:this.options.sessionKey,host:this.options.host,allowedOrigins:this.options.allowedOrigins,engine:this.bridgeEngine});this.stopWebSocketServer=n.stop}this.stopWatching=new nc({projectRoot:this.options.projectRoot,watch_dirs:uc(this.options.runtime.watch_dirs),interval_ms:this.options.runtime.watch_interval_ms,debounce_ms:this.options.runtime.watch_debounce_ms??mo,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:n=>this.handleFileChanged(n),on_batch_change:n=>this.handleFilesChanged(n)}).start(),t.listen!==!1&&this.server.listen(this.options.port,this.options.host),this.notifyHealthChanged()}}getEngine(){if(!this.bridgeEngine)throw new Error("VCP site edit preview bridge runtime is not ready");return this.bridgeEngine}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=Ro(),n=_o(this.options);t.get(n)===this&&t.delete(n),this.isStarted=!1,this.notifyHealthChanged()}notifyHealthChanged(){let t=this.options.onHealthChanged;if(!t)return;let n=this.getHealth(),r=JSON.stringify(n);if(r!==this.lastNotifiedHealth){this.lastNotifiedHealth=r;try{t(n)}catch(i){console.warn(`[vcp-site-edit] onHealthChanged callback failed: ${i instanceof Error?i.message:String(i)}`)}}}createRuntime(t,n=null){let r=this.runtime;this.activeHistoryStore=t??null;let i=(this.dependencies.createRuntime??La)({...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(),this.notifyHealthChanged()}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=dc(t.composition),i=this.getRuntime(),o=we(r);await i.initializeComposition(o);let a=i.getDocument(o).data;await this.recordRuntimeVersion(a.version,r);let c=(await i.getHistoryStatus()).data;return{ok:!0,composition:r,data:{document:a,historyStatus:c}}}),getDocument:async t=>{let n=this.getRuntime(),r=we(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(we(t)),getObjectEditContext:async(t,n,r)=>this.getRuntime().getObjectEditContext(t,we(n),r),getClassNameSource:async(t,n)=>this.getRuntime().getClassNameSource(t,we(n)),getSourceTree:async t=>this.getRuntime().getSourceTree(we(t)),getSourceFile:async t=>this.getRuntime().getSourceFile({path:t.path,composition:we(t.composition)}),resolveSourceLocation:async t=>this.getRuntime().resolveSourceLocation({key:t.key,composition:we(t.composition)}),execute:(t,n)=>this.executeWithReceipt(t,()=>this.mutationQueue.run(async()=>{let r=await this.bindHistorySession(this.options.snapshotId);if(!r.ok)return Rn(r,t);let i=await this.getRuntime().executeOperation(t);return i.data?.resultVersion!==void 0&&await this.recordRuntimeVersion(i.data.resultVersion,i.composition),i})),getOperationResult:t=>{if(t.siteId!==this.options.siteId||t.baseSnapshotId!==this.options.snapshotId)return null;let n=this.operationReceipts.get(this.operationReceiptKey(t));return n?.fingerprint===this.operationFingerprint(t)?n.result:null},undo:t=>this.mutationQueue.run(async()=>{let n=await this.bindHistorySession(this.options.snapshotId);if(!n.ok)return Rn(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 Rn(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))}}operationReceiptKey(t){return JSON.stringify([t.siteId,t.baseSnapshotId,t.id])}operationFingerprint(t){return Nn("sha256").update(JSON.stringify(t)).digest("hex")}executeWithReceipt(t,n){if(t.siteId!==this.options.siteId||t.baseSnapshotId!==this.options.snapshotId)return n();let r=this.operationReceiptKey(t),i=this.operationFingerprint(t),o=this.operationReceipts.get(r);if(o)return o.fingerprint!==i?Promise.reject(new Error("Operation ID was reused with a different request.")):o.result;let s={fingerprint:i,result:n(),settled:!1};return this.operationReceipts.set(r,s),s.result.then(()=>{s.settled=!0;for(let[a,c]of this.operationReceipts){if(this.operationReceipts.size<=256)break;c.settled&&this.operationReceipts.delete(a)}},()=>{this.operationReceipts.delete(r)}),s.result}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??Ja)(pc({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.versionCheckpoints.get(r);o?o.durableVersion=Math.max(o.durableVersion,i):this.versionCheckpoints.set(r,{durableVersion:i,requestedVersion:i,pending:null});let s=this.compositions[0]?.context;if(s){let a=He(s);this.runtimeVersionFloors.set(a,Math.max(this.runtimeVersionFloors.get(a)??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?He(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,s=this.versionCheckpoints.get(i);if(s||(s={durableVersion:0,requestedVersion:0,pending:null},this.versionCheckpoints.set(i,s)),o<=s.durableVersion)return Promise.resolve();if(s.requestedVersion=Math.max(s.requestedVersion,o),s.pending)return s.pending;let a=s,c=this.versionPersistence.then(async()=>{try{for(;a.requestedVersion>a.durableVersion;){let u=a.requestedVersion;await i.writeDocumentVersion(u),a.durableVersion=Math.max(a.durableVersion,u)}}catch{console.warn("[vcp-site-edit] document version checkpoint persistence failed")}finally{a.pending=null}});return a.pending=c,this.versionPersistence=c,c}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??mo;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(Ec)&&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=pt.readFileSync(_e.join(this.options.projectRoot,Tn),"utf8"),n=JSON.parse(t),r=typeof n.snapshot_id=="string"?n.snapshot_id:"";return!r||xn(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(a){console.warn(`[vcp-site-edit] snapshot.changed listener failed: ${a instanceof Error?a.message:String(a)}`)}}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=lc(this.options.projectRoot),r=tc(n),i=r.length>0?r:(this.options.runtime.routes??[]).map(u=>({...u})),o=Za({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(u=>u.context.effectiveTemplateId!==void 0).map(u=>u.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 a=new Map(this.compositions.map(u=>[He(u.context),u])),c=new Map(o.map(u=>[He(u.context),u]));if(this.runtime){for(let[u,d]of a){let l=c.get(u);(!l||l.entryFile!==d.entryFile)&&this.runtime.unregisterComposition(we(d.context))}for(let[u,d]of c){let l=a.get(u);(!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,this.notifyHealthChanged(),!0}catch(n){let r=n instanceof Error?n:new Error(String(n));if(this.compositionResolutionError=r,t)throw r;return this.notifyHealthChanged(),!1}}resolveComposition(t){if(this.compositionResolutionError)throw this.compositionResolutionError;let n=ec(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=Qa({selector:{routeId:n,...t.templateId!==void 0?{templateId:t.templateId}:{}},files:this.compositionFiles,canonicalEntryFile:r.entryFile}),o=He(i.context);if(!this.compositions.some(s=>He(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(He(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 ll(e){let t=new ht(qt(e),So.createServer(),!1);return t.start({listen:!1,webSocket:!1}),{engine:t.getEngine(),getHealth:()=>t.getHealth(),stop:()=>t.stop()}}function vo(e){return qt(e)}function qt(e){return{tenantId:e.tenantId,siteId:e.siteId,snapshotId:e.snapshotId,projectRoot:_e.resolve(e.projectRoot??process.cwd()),basePath:e.basePath??"",host:e.host??oc,port:e.port??ic,path:e.path??sc,sessionKey:e.sessionKey??Sc(),historyRoot:e.historyRoot,allowedOrigins:e.allowedOrigins??[],runtime:e.runtime??{},onSnapshotIdChanged:e.onSnapshotIdChanged,onHealthChanged:e.onHealthChanged}}function uc(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 lc(e){let t=[],n=["app","src/app",".vcp"],r=new Set([".git",".next",".turbo","coverage","dist","node_modules","output","snapshot-store"]),i=o=>{if(!pt.existsSync(o))return;let s;try{s=pt.readdirSync(o,{withFileTypes:!0})}catch{return}for(let a of s){if(a.name.startsWith(".")&&a.name!==".vcp")continue;if(a.isDirectory()){if(r.has(a.name))continue;i(_e.join(o,a.name));continue}if(!a.isFile())continue;let c=_e.join(o,a.name),u="";try{u=pt.readFileSync(c,"utf8")}catch{}t.push({path:_e.relative(e,c).replaceAll(_e.sep,"/"),content:u})}};for(let o of n)i(_e.join(e,o));return t.sort((o,s)=>o.path.localeCompare(s.path))}function dc(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 we(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function pc(e){return _e.join(_e.resolve(e.root),xn(e.siteId),xn(e.snapshotId),Nn("sha256").update(e.editingSessionId).digest("hex").slice(0,32))}function xn(e){return/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(e)&&e!=="."&&e!==".."?e:Nn("sha256").update(e).digest("hex").slice(0,32)}function Ro(){let e=globalThis;return e[go]??=new Map,e[go]}function _o(e){return`${e.projectRoot}:${e.host}:${e.port}:${e.path}:${e.historyRoot??""}`}function Rn(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 Pn(e){let t=new Xa({maxPayload:Io,noServer:!0}),n=new WeakSet,r=o=>{new Et({socket:new An(o),engine:e.engine,validateOperationRequest:s=>rc.safeParse(s).success})},i=(o,s,a)=>{if(!hc(o,e))return;let c=fc(o,e);if(!c){s.write(`HTTP/1.1 401 Unauthorized\r
41
+ `,c.appendChild(g);let b=ks.map(w=>{let E=a.createElement("div");return E.setAttribute(p,w),E.setAttribute("aria-hidden","true"),u.appendChild(E),E}),T=null,_=null,P=()=>{T?.removeAttribute(m),_?.(),_=null,T=null},$=w=>{P(),T=w,_=Pt(w,o),w.setAttribute(m,"true"),b.forEach(E=>E.style.removeProperty("display"))};$(l);let F=!1,v=null,q=()=>{if(!v||!l)return;let w=(E,x,f)=>{x?l.style.setProperty(E,x,f):l.style.removeProperty(E)};w("width",v.widthValue,v.widthPriority),w("height",v.heightValue,v.heightPriority)},Q=(w,E,x)=>v?{version:1,phase:w,sessionId:v.sessionId,pointerId:v.pointerId,edge:v.edge,ref:t,startWidth:v.startWidth,startHeight:v.startHeight,width:E,height:x,baselineStyleDeclarations:[{property:"width",value:v.widthValue||null,...v.widthPriority==="important"?{priority:"important"}:{}},{property:"height",value:v.heightValue||null,...v.heightPriority==="important"?{priority:"important"}:{}}]}:null,z=()=>{if(!v)return null;let w=Q("cancel",v.startWidth,v.startHeight),E=v.captureTarget,x=v.pointerId,f=v.currentX,C=v.currentY;return q(),v=null,E?.releasePointerCapture?.(x),w&&r?.({clientX:f,clientY:C,session:w}),w},G=w=>{if(!v||!l?.isConnected||w.pointerId!==v.pointerId)return!1;v.currentX=Number(w.clientX),v.currentY=Number(w.clientY);let E=v.currentX-v.startX,x=v.currentY-v.startY,f=Math.max(1,Math.round(v.startWidth+E)),C=Math.max(1,Math.round(v.startHeight+x));return(v.edge==="e"||v.edge==="se")&&l.style.setProperty("width",`${f}px`,"important"),(v.edge==="s"||v.edge==="se")&&l.style.setProperty("height",`${C}px`,"important"),!0},W=()=>{if(F)return;let w=d();w===l&&w?.isConnected||(z(),P(),l=w,l?.isConnected?$(l):b.forEach(E=>E.style.setProperty("display","none","important")))},X=e.MutationObserver,L=typeof X=="function"?new X(W):null;return L?.observe(a.documentElement,{attributeFilter:["data-vcp-edit-key"],attributes:!0,childList:!0,subtree:!0}),{begin(w,E){if(F||v||!l?.isConnected)return null;let x=l.getBoundingClientRect();return v={sessionId:`resize-${i}-${w.pointerId}`,pointerId:w.pointerId,edge:E,startX:Number(w.clientX),startY:Number(w.clientY),currentX:Number(w.clientX),currentY:Number(w.clientY),startWidth:x.width,startHeight:x.height,widthValue:l.style.getPropertyValue("width"),widthPriority:l.style.getPropertyPriority("width"),heightValue:l.style.getPropertyValue("height"),heightPriority:l.style.getPropertyPriority("height"),captureTarget:w.target},Q("start",x.width,x.height)},update:G,finish(w,E){if(!v||w.pointerId!==v.pointerId)return null;E==="commit"&&G(w);let x=Math.max(1,Math.round(v.startWidth+Number(w.clientX)-v.startX)),f=Math.max(1,Math.round(v.startHeight+Number(w.clientY)-v.startY)),C=Q(E,E==="commit"?x:v.startWidth,E==="commit"?f:v.startHeight),k=v.captureTarget,N=v.pointerId;return E==="cancel"&&q(),v=null,k?.releasePointerCapture?.(N),C},cleanup(){F||(F=!0,L?.disconnect(),z(),P(),l=null,b.forEach(w=>w.remove()),g.remove())}}}function Dr(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-get-operation-result"||t==="bridge-undo"||t==="bridge-redo"||t==="bridge-subscribe"||t==="bridge-unsubscribe"}function Bs(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 Fs({message:e,sendEvent:t,sendResponse:n,subscriptions:r,getCurrentDocument:i,setCurrentDocument:o,onBridgeRequestError:s,nextRouteReadySequence:a,windowLike:c}){let u=c.__VCP_SITE_EDIT__;if(!u){n({type:"response",ok:!1,error:"Site edit bridge is not ready in preview frame"});return}let d=()=>{if(c.__VCP_SITE_EDIT__!==u)throw new Error("SITE_EDIT_COMPOSITION_SESSION_MISMATCH: navigation changed while reading the document")};try{switch(e.kind){case"bridge-initialize-session":{let l=c.__VCP_SITE_EDIT_AUTO_BOOTSTRAP__;if(l?.compositionKey&&Ye(e.payload.composition)!==l.compositionKey&&(!l.composition||Ye(e.payload.composition)!==ae(l.composition)))throw new Error("SITE_EDIT_COMPOSITION_SESSION_MISMATCH: navigation changed");let m,p=!1;if(l?.composition)try{let g=await u.getDocument(e.payload.composition),b=await u.getHistoryStatus(e.payload.composition);m={...g,composition:g.data.composition,data:{document:g.data,historyStatus:b.data}},p=!0}catch(g){if(!ke(g,"").includes("SITE_EDIT_COMPOSITION_SESSION_REQUIRED"))throw g}m??=await u.initializeSession({composition:e.payload.composition}),d(),o?.(m.data.document),p||Qr(c,{composition:m.data.document.composition,editEngineVersion:"unknown",sequence:a(),version:m.data.document.version}),n({type:"response",ok:!0,result:m});return}case"bridge-get-document":{let l=await u.getDocument(e.payload.composition);d(),o?.(l.data),n({type:"response",ok:!0,result:l});return}case"bridge-get-history-status":n({type:"response",ok:!0,result:await u.getHistoryStatus(e.payload.composition)});return;case"bridge-get-style-context":n({type:"response",ok:!0,result:await u.getStyleContext(e.payload.composition)});return;case"bridge-ensure-document-version":{if(!Number.isFinite(Number(e.payload.minVersion))){n({type:"response",ok:!1,error:"Invalid document version"});return}let l=u.ensureDocumentVersion?await u.ensureDocumentVersion(e.payload.composition,Number(e.payload.minVersion)):await u.getDocument(e.payload.composition);d(),o?.(l.data),n({type:"response",ok:!0,result:l});return}case"bridge-acknowledge-document-version":{if(!Number.isFinite(Number(e.payload.version))){n({type:"response",ok:!1,error:"Invalid document version"});return}let l=u.acknowledgeDocumentVersion?await u.acknowledgeDocumentVersion(e.payload.composition,Number(e.payload.version)):await u.getDocument(e.payload.composition);d(),o?.(l.data),n({type:"response",ok:!0,result:l});return}case"bridge-get-object-edit-context":n({type:"response",ok:!0,result:await u.getObjectEditContext(e.payload.key,e.payload.composition,e.payload.selectionRef)});return;case"bridge-get-class-name-source":{let l=await u.getClassNameSource(e.payload.key,e.payload.composition);n({type:"response",ok:!0,result:Vs(l,e.payload.key,c.document,i?.()??null)});return}case"bridge-get-source-tree":n({type:"response",ok:!0,result:await u.getSourceTree(e.payload.composition)});return;case"bridge-get-source-file":n({type:"response",ok:!0,result:await u.getSourceFile({path:e.payload.path,composition:e.payload.composition})});return;case"bridge-resolve-source-location":n({type:"response",ok:!0,result:await u.resolveSourceLocation({key:e.payload.key,composition:e.payload.composition})});return;case"bridge-get-operation-result":{n({type:"response",ok:!0,result:await u.getOperationResult?.(e.payload.request)??null});return}case"bridge-execute":{let l=await u.execute(e.payload.request);if(n({type:"response",ok:!0,result:l}),l.ok&&u.acknowledgeDocumentVersion&&Bs(e.payload.request))try{let m=await u.acknowledgeDocumentVersion(e.payload.composition,l.data.resultVersion);d(),o?.(m.data)}catch(m){c.__VCP_SITE_EDIT__===u&&s?.(m,e)}return}case"bridge-undo":n({type:"response",ok:!0,result:await u.undo(e.payload.composition)});return;case"bridge-redo":n({type:"response",ok:!0,result:await u.redo(e.payload.composition)});return;case"bridge-subscribe":{let l=e.payload.subscriptionId;r.get(l)?.();let m=u.subscribe(p=>{t({kind:"bridge-event",payload:{composition:p.composition,event:p,subscriptionId:l}})});r.set(l,m),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){c.__VCP_SITE_EDIT__===u&&s?.(l,e),n({type:"response",ok:!1,error:Ys(l)})}}function Vs(e,t,n,r){if(!e.ok)return e;let i=ye(n,{key:t},r),o=i?Hs(i):null;return o?{...e,data:{...e.data,computedStyle:{...e.data.computedStyle??{},...o}}}:e}function Hs(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 $s(e,t,n=()=>e.location.pathname){let r=e.history.pushState,i=e.history.replaceState,o=n(),s=()=>{let u=n();u!==o&&(o=u,t())},a=()=>s(),c=()=>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",a),e.addEventListener("hashchange",c),()=>{e.history.pushState=r,e.history.replaceState=i,e.removeEventListener("popstate",a),e.removeEventListener("hashchange",c)}}var Or=5e3,Mr="SITE_EDIT_BRIDGE_HEALTH_TIMEOUT";async function qs(e,t){let n=typeof AbortController=="function"?new AbortController:null,r,i=new Promise((o,s)=>{r=e.setTimeout(()=>{n?.abort();let a=new Error(`${Mr}: preview health check did not respond within ${Or}ms`);a.code=Mr,s(a)},Or)});try{return await Promise.race([(async()=>{let o=await e.fetch(t,{cache:"no-store",...n?{signal:n.signal}:{}}),s=await o.json();return{response:o,health:s}})(),i])}finally{e.clearTimeout(r)}}var Ks=/^[A-Z][A-Z0-9_]{2,63}$/;function un(e){let t=e&&typeof e=="object"&&"code"in e?String(e.code??""):"";if(Ks.test(t))return{failureCode:t};let n=e instanceof Error?e.message:"",r=/^([A-Z][A-Z0-9_]{2,63}):/.exec(n)?.[1];return r?{failureCode:r}:{}}function Us(e){if(typeof requestAnimationFrame=="function"){requestAnimationFrame(()=>requestAnimationFrame(e));return}setTimeout(e,0)}function kt(e,t){return typeof e.requestAnimationFrame=="function"?e.requestAnimationFrame(t):e.setTimeout(t,0)}function Dt(e,t){if(typeof e.cancelAnimationFrame=="function"){e.cancelAnimationFrame(t);return}e.clearTimeout(t)}function Qr(e,t){e.dispatchEvent(new CustomEvent(hn,{detail:t}))}function Ws(e,t){e.dispatchEvent(new CustomEvent(fn,{detail:t}))}function zs(e){return e?e.getConnectionState?e.getConnectionState()==="open":!0:!1}function js(e,t){return ae(e.composition)===t}function Gs(e){return ke(e,"").includes(Gr)}function ke(e,t){return e instanceof Error&&e.message?e.message:typeof e=="string"&&e?e:t}function Zr(e){let t=ke(e,"");return/websocket|readyState|not open|disconnected|bridge request timed out|network|econnreset|broken pipe|socket closed/i.test(t)}function Ys(e){let t=ke(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 eo(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 Xs(e){let t=eo(e);if(t)return t===Ue||t===Qe;let n=ke(e,"");return n.includes(Ue)||n.includes(Qe)}function je(e){if(ke(e,"").includes("SITE_EDIT_RUNTIME_RELOAD_REQUIRED"))return!0;if(eo(e))return!1;let t=ke(e,"");return/\b(?:bridge(?: session)?|websocket)\s+authentication\b|\bbridge\s+(?:session\s+)?key\b/i.test(t)}function to(e){let t=e.trim();return!t||t==="/"?"":(t.startsWith("/")?t:`/${t}`).replace(/\/+$/,"")}function Sn(e){return us.has(ro(e))}function Ls(e){return ls.has(ro(e))}function no(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:Ls(e.tagName),canInsertChild:Sn(e.tagName),canMove:!1,canRemove:!1}}function ro(e){return e?.trim().toLowerCase()??""}function Br(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 Js(e,t,n){let r=ye(e,t.ref,n);if(!r)return!1;if(typeof t.ref.textSegmentIndex=="number"){let i=Qs(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 Qs(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!Ot(r)||(r.textContent??"").trim().length===0)){if(n===t)return r;n+=1}return null}function Zs(e,t,n,r,i){let o=ut(e,t,n,r),s=Ft(o);if(!s)return null;let a=s.getAttribute("data-vcp-edit-key")??"",c=ge(e,s,r),u=i?.(c.key)??i?.(a);if(!no({operationSummary:u?.operationSummary,tagName:s.tagName,fallbackMode:"preview"}).canUpdateText)return null;let l=ea(e,t,n,s);if(l){let m=na(s,l);if(m!==null)return{element:s,textNode:l,textSegmentIndex:m}}return Ht(s)?null:{element:s}}function ea(e,t,n,r){let i=ta(e,t,n);return!i||i.parentElement!==r?null:i}function ta(e,t,n){let r=e,o=r.caretPositionFromPoint?.(t,n)?.offsetNode??null;if(Ot(o))return o;let a=r.caretRangeFromPoint?.(t,n)?.startContainer??null;return Ot(a)?a:null}function na(e,t){let n=0;for(let r of Array.from(e.childNodes))if(!(!Ot(r)||(r.textContent??"").trim().length===0)){if(r===t)return n;n+=1}return null}function Ot(e){return e?.nodeType===3}function ra(e,t,n){return(typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean))[0]??null}function oa(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:ia(e,r),ref:Mt(e,r,n),rect:Ve(r.getBoundingClientRect()),targetIsSectionRoot:t===r}}function ia(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,oo(e,null).findIndex(i=>i.element===t))}function oo(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:Mt(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 sa(e,t,n,r){if(n?.pageComposition.status!=="supported")return null;let i=oo(e,n),o=i[0],s=i.at(-1);if(!o||!s)return null;let a=new Set(n.pageComposition.placements.map(p=>`${p.placementUnitKey}\0${p.relation}`)),c=p=>r?.(p)??n.entries.find(g=>g.key===p)??null,u=(p,g,b)=>{let T=c(p.ref.key)?.pageCompositionUnitKey;return!T||!a.has(`${T}\0${g}`)?null:{anchorBlockId:p.blockId,positionIndex:b,anchorRef:p.ref,placement:g,boundary:{top:g==="before"?p.rect.top:p.rect.top+p.rect.height,left:p.rect.left,width:p.rect.width}}},d=[],l=u(o,"before",0);l&&d.push(l),i.slice(1).forEach((p,g)=>{let b=g+1,T=u(p,"before",b);if(T){d.push(T);return}let _=i[g],P=_?u(_,"after",b):null;P&&d.push(P)});let m=u(s,"after",i.length);return m&&d.push(m),d.find(({boundary:p})=>t.clientX>=p.left&&t.clientX<=p.left+p.width&&Math.abs(t.clientY-p.top)<=Er)??null}function ut(e,t,n,r=null){let i=typeof e.elementsFromPoint=="function"?e.elementsFromPoint(t,n):[e.elementFromPoint(t,n)].filter(Boolean);for(let o of i){let s=Ft(o),a=s?.getAttribute("data-vcp-edit-key")??"";if(s&&In(s,r,a))return s}return null}function Ft(e){let t=e,n=null;for(;t;){let r=t.getAttribute("data-vcp-edit-key")??"";if(r){if(En(t))return n??t;!aa(r)&&!n&&(n=t)}t=t.parentElement}return n}function En(e){return e.getAttribute(cs)!==null}function aa(e){return ca(e.split("::")[0]??"")}function ca(e){if(!e)return!1;let t=ua(e);return t===xt||t.startsWith(`${xt}/`)||t.includes(`/${xt}/`)||t.endsWith(`/${xt}`)}function ua(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=so(co(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${fo(r)}"]`))),n,r);if(i.length<=1)return{key:Fr(n,r,0)};let o=i.indexOf(t);return o>=0?{key:Fr(n,r,o),instanceIndex:o,instanceCount:i.length}:{key:r}}function Mt(e,t,n){return ge(e,t,n)}function ye(e,t,n){let r=lt(t.key)??t.key,i=so(co(Array.from(e.querySelectorAll(`[data-vcp-edit-key="${fo(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=(lt(t.key)??t.key)!==t.key;if(o!==null&&!s)return i[o]??null;let a=la(n,t.key);return a!==null&&a>=0&&a<i.length?i[a]??null:o!==null?i[o]??null:i[0]??null}function Fr(e,t,n){return io(e,t)[n]?.key??t}function la(e,t){let n=lt(t);if(!n)return null;let i=io(e,n).findIndex(o=>o.key===t);return i>=0?i:null}function io(e,t){return(e?.entries??[]).filter(n=>(lt(n.key)??n.key)===t)}function so(e,t,n){let r=ao(t,n);return r?e.filter(i=>i.tagName.toLowerCase()===r):e}function In(e,t,n){let r=ao(t,n);return!r||e.tagName.toLowerCase()===r}function ao(e,t){return null}var da=2,pa=4;function co(e){return[...e].sort((t,n)=>{if(t===n)return 0;let r=typeof t.compareDocumentPosition=="function"?t.compareDocumentPosition(n):0;return(r&pa)!==0?-1:(r&da)!==0?1:0})}function lt(e){if(typeof e!="string"||e.length===0)return e??null;let t=e;for(;;){let n=t.lastIndexOf(Ar);if(n<0)break;let r=Number(t.slice(n+Ar.length));if(!Number.isInteger(r)||r<0)return e;t=t.slice(0,n)}return t}function Vt(e){let n=e.ownerDocument?.defaultView?.getComputedStyle(e);return{...Cn(n),paddingTop:he(n?.paddingTop),paddingRight:he(n?.paddingRight),paddingBottom:he(n?.paddingBottom),paddingLeft:he(n?.paddingLeft),borderTopWidth:he(n?.borderTopWidth),borderRightWidth:he(n?.borderRightWidth),borderBottomWidth:he(n?.borderBottomWidth),borderLeftWidth:he(n?.borderLeftWidth),columnGap:he(n?.columnGap),rowGap:he(n?.rowGap)}}function Cn(e){return{marginTop:he(e?.marginTop,!0),marginRight:he(e?.marginRight,!0),marginBottom:he(e?.marginBottom,!0),marginLeft:he(e?.marginLeft,!0)}}function he(e,t=!1){let n=Number.parseFloat(e??"");return Number.isFinite(n)?t?n:Math.max(0,n):0}function vn(e){let t=e.ownerDocument?.defaultView;return Array.from(e.children).filter(n=>typeof n.getBoundingClientRect=="function").map(n=>({rect:Ve(n.getBoundingClientRect()),margin:Cn(t?.getComputedStyle(n))})).filter(({rect:n})=>n.width>0&&n.height>0)}function ha(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 Vr=new WeakMap,Hr=0;function at(e){let t=Vr.get(e);if(t)return t;Hr+=1;let n=`runtime-node-${Hr}`;return Vr.set(e,n),n}function uo(e,t,n){let r=n??e.ownerDocument?.defaultView,i=e.ownerDocument?.defaultView?.getComputedStyle(e),o=Ve(t),s=oe(r?.scrollX),a=oe(r?.scrollY),c=i?.position||"static";return{version:sn,runtimeNodeId:at(e),rect:{viewport:o,document:{top:o.top+a,left:o.left+s,width:o.width,height:o.height}},layout:{position:c,transform:i?.transform||"none",containingBlock:ma(e,c)},scrollContext:{scrollX:s,scrollY:a,viewportWidth:oe(r?.innerWidth),viewportHeight:oe(r?.innerHeight),scrollContainers:fa(e)}}}function fa(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",a=o?.overflowY||o?.overflow||"visible",c=oe(i.scrollLeft),u=oe(i.scrollTop),d=c!==0||$r(s)&&oe(i.scrollWidth)>oe(i.clientWidth),l=u!==0||$r(a)&&oe(i.scrollHeight)>oe(i.clientHeight);(d||l)&&r.push({runtimeNodeId:at(i),scrollLeft:c,scrollTop:u})}i=i.parentElement}return r}function $r(e){return["auto","scroll","overlay","hidden"].includes(e)}function ma(e,t){if(t==="fixed"){let r=qr(e.parentElement,!0);return r?{kind:"element",runtimeNodeId:at(r)}:{kind:"viewport"}}if(t==="absolute"){let r=e.offsetParent,i=ga(r)??qr(e.parentElement,!1);return i?{kind:"element",runtimeNodeId:at(i)}:{kind:"document"}}let n=e.parentElement;return n?{kind:"element",runtimeNodeId:at(n)}:{kind:"document"}}function qr(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 ga(e){return e&&typeof e.getBoundingClientRect=="function"?e:null}function Re(e,t,n,r="full",i,o="full",s=null){let a=e.getBoundingClientRect(),c=n?.(t.key)??null,u=e.tagName.toLowerCase(),d=o==="full",l=d?dt(e):void 0,m=r==="full"?{textPreview:e.textContent?.trim().slice(0,80),dataset:ba(e),attributes:Object.fromEntries(e.getAttributeNames().map(v=>[v,e.getAttribute(v)??""]))}:{},p=no({operationSummary:c?.operationSummary,tagName:u,fallbackMode:"preview"}),g=En(e),b=!0,T=c!==null&&yn(c),_=T?null:Na(e),P=T?c.parentKey:_?s&&lt(t.key)?ge(e.ownerDocument,_,s).key:_.getAttribute("data-vcp-edit-key"):null,$=d?vn(e):void 0,F=d?uo(e,a,i):void 0;return{ref:t,key:t.key,detailLevel:r,tagName:u,...c?{sourceKind:"jsx"}:{},...P?{parentKey:P}:{},...c?.pageCompositionUnitKey?{pageCompositionUnitKey:c.pageCompositionUnitKey}:{},...m,runtimeFlags:{selectable:!0,movable:p.canMove,removable:p.canRemove,textEditable:p.canUpdateText,container:g?!1:p.canInsertChild||b&&Sn(u)||!!Ht(e)},...F?{layoutSnapshot:F}:{},...l?{layout:l}:{},rect:{top:a.top,left:a.left,width:a.width,height:a.height},...$?{childBoxes:$,childRects:$.map(({rect:v})=>v)}:{},...d?{spacing:Vt(e)}:{}}}function ya(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 ba(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=uo(e,i,n);if(r==="light")return{ref:t,layoutSnapshot:o};if(r==="child-rects")return{ref:t,layoutSnapshot:o,childRects:ha(e)};let s=vn(e);return{ref:t,layoutSnapshot:o,childBoxes:s,childRects:s.map(({rect:a})=>a),layout:dt(e),spacing:Vt(e)}}function Ur(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 Sa(e,t,n,r,i){let o=t,s=Kr(o,n,e,"detailed"),a=Ur(s),c=null,u=null,d="mutation",l=Ge(e),m=l,p=!1,g=!1,b=({reason:W,sourceEventAt:X,forceEmit:L=!1,includeDetailedGeometry:w=!1})=>{(c===null||(W==="scroll"?0:1)>=(d==="scroll"?0:1))&&(d=W,l=X),p=p||L,g=g||w,c===null&&(c=kt(e,T))},T=()=>{let W=Ge(e);c=null;let X=d,L=l,w=p,E=g;p=!1,g=!1;let x=ye(e.document,n,r?.()??null);if(!x)return;x!==o&&(q?.unobserve(o),o=x,q?.observe(o),E=!0);let f=E?"detailed":a?"child-rects":"light",C=Kr(o,n,e,f),k=C.layoutSnapshot.rect.viewport;k.width<=0||k.height<=0||!w&&!Ea(s,C)||(s=C,f==="detailed"&&(a=Ur(C)),i(X,C,{sourceEventAt:L,captureStartedAt:W,capturedAt:Ge(e)}))},_=()=>{u!==null&&(e.clearTimeout(u),u=null)},P=()=>{_(),b({reason:"resize",sourceEventAt:Ge(e),includeDetailedGeometry:!0})},$=()=>{_(),b({reason:"mutation",sourceEventAt:Ge(e),includeDetailedGeometry:!0})},F=()=>{m=Ge(e),b({reason:"scroll",sourceEventAt:m}),_(),u=e.setTimeout(()=>{u=null,b({reason:"scroll",sourceEventAt:m,forceEmit:!0,includeDetailedGeometry:!0})},rs)},v=e.ResizeObserver,q=typeof v=="function"?new v(P):null;q?.observe(o);let Q=e.MutationObserver,z=typeof Q=="function"?new Q($):null;z?.observe(e.document.documentElement,{attributes:!0,childList:!0,characterData:!0,subtree:!0}),e.addEventListener("resize",P,{passive:!0}),e.addEventListener("scroll",F,{passive:!0});let G=e.visualViewport;return G?.addEventListener?.("resize",P,{passive:!0}),G?.addEventListener?.("scroll",F,{passive:!0}),e.document.addEventListener("scroll",F,{capture:!0,passive:!0}),e.document.addEventListener("load",$,!0),{initialSnapshot:s,cleanup:()=>{c!==null&&(Dt(e,c),c=null),_(),q?.disconnect(),z?.disconnect(),e.removeEventListener("resize",P),e.removeEventListener("scroll",F),G?.removeEventListener?.("resize",P),G?.removeEventListener?.("scroll",F),e.document.removeEventListener("scroll",F,!0),e.document.removeEventListener("load",$,!0)}}}function Ge(e){let t=e.performance;return t&&Number.isFinite(t.timeOrigin)&&typeof t.now=="function"?t.timeOrigin+t.now():Date.now()}function Ea(e,t){return Ia(e.layoutSnapshot,t.layoutSnapshot)||t.childBoxes!==void 0&&va(e.childBoxes,t.childBoxes)||t.childRects!==void 0&&Ra(e.childRects,t.childRects)||t.layout!==void 0&&mn(e.layout,t.layout)||t.spacing!==void 0&&mn(e.spacing,t.spacing)}function Ia(e,t){return!e||!t?e!==t:e.version!==t.version||e.runtimeNodeId!==t.runtimeNodeId||Bt(e.rect.viewport,t.rect.viewport)||Bt(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||Ca(e.scrollContext.scrollContainers,t.scrollContext.scrollContainers)}function Ca(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 va(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>{let s=r[o];return!s||Bt(i.rect,s.rect)||mn(i.margin,s.margin)})}function Ra(e,t){let n=e??[],r=t??[];return n.length!==r.length||n.some((i,o)=>Bt(i,r[o]??i))}function mn(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 Bt(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 _a(e,t,n,r,i,o,s){let a=e.document,c=ut(a,t,n,o);if(!c)return{anchorHit:null,targetParentHit:null,relation:"none",rejectionReason:"no-editable-hit"};let u=i?ye(a,i,o):null;if(u&&gn(c,u))return Fe(a,c,"self-or-descendant",o,s);if(r==="move"){if(!u)return Fe(a,c,"no-accepting-parent",o,s);let b=Aa(a,c,u,o,s);if(!b)return Fe(a,c,"no-accepting-parent",o,s);let T=b.kind==="parent"?zr(b.targetParent,t,n):ln(b.child,b.targetParent,t,n,"nearest");return T?wt(a,b.child,b.targetParent,T,o,s):Fe(a,c,"no-accepting-parent",o,s)}let d=null,l=!1,m=c,p=c.parentElement;for(;p;){if(p.getAttribute("data-vcp-edit-key")){if(u&&gn(p,u))return Fe(a,c,"self-or-descendant",o,s);let b=Wr(p,r,s);if(b==="accept"){d={child:m,targetParent:p};break}b==="blocked"&&(l=!0),m=p}p=p.parentElement}let g=Wr(c,r,s);if(g==="accept"){if(d){let b=ln(d.child,d.targetParent,t,n,"edge");if(b)return wt(a,d.child,d.targetParent,b,o,s)}return wt(a,c,c,zr(c,t,n),o,s)}if(d){let b=ln(d.child,d.targetParent,t,n,"nearest");return wt(a,d.child,d.targetParent,b??"after",o,s)}return g==="blocked"||l?Fe(a,c,"operation-boundary-blocked",o,s):Fe(a,c,"no-accepting-parent",o,s)}function Fe(e,t,n,r,i){return{anchorHit:Re(t,ge(e,t,r),i,"summary",void 0,"full",r),targetParentHit:null,relation:"none",rejectionReason:n}}function wt(e,t,n,r,i,o){let s=Re(t,ge(e,t,i),o,"summary",void 0,"full",i),a=Re(n,ge(e,n,i),o,"summary",void 0,"full",i),c=dt(n).indicatorOrientation,u=r==="append"||r==="prepend"?Ta(n.getBoundingClientRect(),c,r):xa(t.getBoundingClientRect(),c,r);return{anchorHit:s,targetParentHit:a,relation:r,indicatorOrientation:c,indicatorBounds:u}}function Wr(e,t,n){if(En(e))return"not-container";let r=e.getAttribute("data-vcp-edit-key")??"",i=n?.(r)??null;if(i)return i.operationSummary.canInsertChild===!0?"accept":Ht(e)?"blocked":"not-container";let o=e.tagName.toLowerCase();return Sn(o)?"accept":"not-container"}function ln(e,t,n,r,i){let o=dt(t).indicatorOrientation,s=e.getBoundingClientRect(),a=o==="vertical"?s.width>0?(n-s.left)/s.width:.5:s.height>0?(r-s.top)/s.height:.5;return i==="edge"&&a>=.25&&a<=.75?null:a<.5?"before":"after"}function zr(e,t,n){let r=dt(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 dt(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 Ta(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 xa(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 gn(e,t){let n=e;for(;n;){if(n===t)return!0;n=n.parentElement}return!1}function Aa(e,t,n,r,i){return wa(e,t,n,r,i)}function wa(e,t,n,r,i){if(!r)return null;let o=T=>i?.(T)??r.entries.find(_=>_.key===T)??null,s=ge(e,n,r),a=o(s.key);if(!a||!yn(a)||!a.parentKey)return null;let c=a.parentKey;if(!o(c)?.operationSummary.canInsertChild)return null;let d=ye(e,{key:c},r);if(!d)return null;let l=t,m=null;for(;l;){if(l.getAttribute("data-vcp-edit-key")){let T=ge(e,l,r),_=o(T.key);if(_){m=_;break}}l=l.parentElement}if(!m)return null;if(m.key===c)return{kind:"parent",child:d,targetParent:d};let p=m,g=new Set;for(;;){if(!yn(p)||!p.parentKey)return null;if(p.parentKey===c)break;if(g.has(p.key))return null;g.add(p.key);let T=o(p.parentKey);if(!T)return null;p=T}if(p.key===a.key)return null;let b=ye(e,{key:p.key},r);return!b||b===n||gn(b,n)?null:{kind:"sibling",child:b,targetParent:d}}function yn(e){return Object.prototype.hasOwnProperty.call(e,"parentKey")}function Na(e){let t=e.parentElement;for(;t;){if(t.getAttribute("data-vcp-edit-key"))return t;t=t.parentElement}return null}function Ht(e){for(let t of Array.from(e.childNodes)){if(typeof t.getAttribute!="function")continue;let n=t;if(n.getAttribute("data-vcp-edit-key"))return n;let r=Ht(n);if(r)return r}return null}function Nt(e){let t=e.document.documentElement,n=e.document.body;return{scrollX:oe(e.scrollX),scrollY:oe(e.scrollY),scrollWidth:Math.max(oe(t?.scrollWidth),oe(n?.scrollWidth),oe(e.innerWidth)),scrollHeight:Math.max(oe(t?.scrollHeight),oe(n?.scrollHeight),oe(e.innerHeight)),viewportWidth:oe(e.innerWidth),viewportHeight:oe(e.innerHeight)}}function Pa(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,a=>`-${a.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,a=>`-${a.toLowerCase()}`),s=r.value;if(s==null||s===""){i.removeProperty(o);return}i.setProperty(o,String(s),r.priority)})}var ka=500,st=new Map;function Da(e,t){return`${e}:${t.key}:${t.instanceIndex??""}`}function Oa(e,t){if(st.size>=ka){let n=st.keys().next().value;n&&st.delete(n)}st.set(e,t)}var ct=new Set;function Ma(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);$a(e,t.stylesheets??[])}function Ba(e){let t=e.documentElement?.style;for(let n of ct)t?.removeProperty(n);ct.clear();for(let n of ho(e))n.remove()}function Fa(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 a=lo(i,s);a&&(o[s]=a)}return o}function lo(e,t,n=new Set){if(!e||n.has(t))return null;n.add(t);let r=e.getPropertyValue(t).trim();return po(e,r,n)}function po(e,t,n){if(!t)return null;let r=Va(t);if(!r)return t;let i=lo(e,r.name,n);return i||(r.fallback?po(e,r.fallback,n)??r.fallback:null)}function Va(e){let t=e.trim();if(!t.startsWith("var(")||!t.endsWith(")"))return null;let n=t.slice(4,-1).trim(),r=Ha(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 Ha(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 $a(e,t){let n=new Set(t.filter(o=>typeof o=="string"&&o.length>0)),r=new Map;for(let o of ho(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(Xr,"true"),s.setAttribute("href",o),i.appendChild(s)}}function ho(e){return Array.from(e.querySelectorAll(`link[${Xr}]`))}function qa(e,t,n,r,i={}){let o=i.textNode?Ka(e.document,i.textNode):null;if(i.textNode&&!o)throw new Error("Failed to prepare text segment editor");let s=o?.element??t,a=s.textContent??"",c=o?void 0:t.innerHTML,u=Ua(s),d=!1,l=()=>{d=!0,e.document.removeEventListener("pointerdown",p,!0),s.removeEventListener("keydown",g),s.removeEventListener("blur",b),s.removeEventListener("input",T),za(s,u)},m=_=>{if(d)return;d=!0;let P=s.textContent??"";if(l(),_==="cancel"){o?.restore(a),o||(t.textContent=a),r({kind:"text-edit-cancel",payload:{ref:n}});return}if(o?.restore(P),_==="commit"&&P!==a){i.onCommitSnapshot?.({ref:n,initialText:a,...c!==void 0?{initialHtml:c}:{}}),r({kind:"text-edit-commit",payload:{ref:n,value:P}});return}r({kind:"text-edit-exit",payload:{ref:n}})};function p(_){let P=_.target;if(!(P&&s.contains(P))){if(o&&P===t){_.preventDefault(),pn(s),jr(s,e.document,!0);return}m("commit")}}function g(_){if(_.key==="Escape"){_.preventDefault(),m("cancel");return}_.key==="Enter"&&(_.metaKey||_.ctrlKey)&&(_.preventDefault(),m("commit"))}function b(_){if(o&&_.relatedTarget===t){e.queueMicrotask(()=>{if(d)return;let P=e.document.activeElement;P===t?pn(s):P!==s&&m("commit")});return}m("commit")}function T(){r({kind:"text-edit-input",payload:{ref:n,hit:Re(t,n,void 0,"full")}})}return Wa(s),e.document.addEventListener("pointerdown",p,!0),s.addEventListener("keydown",g),s.addEventListener("blur",b),s.addEventListener("input",T),pn(s),jr(s,e.document),l}function Ka(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 Ua(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 Wa(e){ja(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 za(e,t){dn(e,"contenteditable",t.contentEditable),dn(e,"spellcheck",t.spellcheck),dn(e,"data-vcp-edit-text-editing",t.marker),e.style.cursor=t.cursor,e.style.userSelect=t.userSelect}function ja(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 dn(e,t,n){if(n===null){e.removeAttribute(t);return}e.setAttribute(t,n)}function Ga(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 pn(e){try{e.focus({preventScroll:!0})}catch{e.focus()}}function jr(e,t,n=!1){let r=t.createRange();r.selectNodeContents(e),n&&r.collapse(!1);let i=t.getSelection?.();i?.removeAllRanges(),i?.addRange(r)}function fo(e){return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"')}function oe(e){let t=Number(e);return Number.isFinite(t)?t:0}import So from"node:http";import pt from"node:fs";import{createHash as Nn,randomBytes as Ya,timingSafeEqual as Xa}from"node:crypto";import _e from"node:path";import{WebSocket as Eo,WebSocketServer as La}from"ws";import{createPreviewSiteEditEngineRuntime as Ja,openFileHistoryStore as Qa,resolveManagedPageTemplateComposition as Za,scanSiteEditCompositionsFromFiles as ec}from"@vcp-dev/site-edit-engine";import{resolveNextAppRouteId as tc,scanNextAppRouterRoutesFromFiles as nc}from"@vcp-dev/site-edit-engine/next-app-router";import{SiteEditSourceWatcher as rc}from"@vcp-dev/site-edit-engine/source-watcher";var $t=class{constructor(){this.tail=Promise.resolve()}run(t){let n=this.tail.then(t,t);return this.tail=n.then(()=>{},()=>{}),n}};import{SiteEditOperationRequestSchema as oc,computeSiteEditCompositionKey as He}from"@vcp-dev/contracts";var ic="127.0.0.1",sc=30218,ac="/__vcp/site-edit/bridge",Io=6*1024*1024,cc=Io*2,uc=3e3,mo=50,Tn=".vcp/current-snapshot.json",go="__VCP_SITE_EDIT_BRIDGE_SERVERS__";function ll(e){let t=qt(e),n=_o(t),r=Ro(),i=r.get(n);if(i)return i;let o=new ht(t);r.set(n,o);try{o.start()}catch(s){throw r.delete(n),o.stop(),s}return o}function Co(e,t,n={}){let r=new ht(qt(t),e,!1,n);return r.start({listen:!1}),r}var ht=class{constructor(t,n=So.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 $t,this.operationReceipts=new Map,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(),this.versionCheckpoints=new WeakMap,this.bridgeEngine=null,this.lastNotifiedHealth=null}start(t={}){if(!this.isStarted){this.stopping=!1;try{pt.mkdirSync(_e.join(this.options.projectRoot,".vcp"),{recursive:!0})}catch(n){console.warn(`[vcp-site-edit] failed to ensure .vcp directory: ${n instanceof Error?n.message:String(n)}`)}if(this.refreshCompositions(!0),this.isStarted=!0,this.createRuntime(),this.bridgeEngine=this.createBridgeEngine(),t.webSocket!==!1){let n=Pn({server:this.server,path:this.options.path,sessionKey:this.options.sessionKey,host:this.options.host,allowedOrigins:this.options.allowedOrigins,engine:this.bridgeEngine});this.stopWebSocketServer=n.stop}this.stopWatching=new rc({projectRoot:this.options.projectRoot,watch_dirs:lc(this.options.runtime.watch_dirs),interval_ms:this.options.runtime.watch_interval_ms,debounce_ms:this.options.runtime.watch_debounce_ms??mo,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:n=>this.handleFileChanged(n),on_batch_change:n=>this.handleFilesChanged(n)}).start(),t.listen!==!1&&this.server.listen(this.options.port,this.options.host),this.notifyHealthChanged()}}getEngine(){if(!this.bridgeEngine)throw new Error("VCP site edit preview bridge runtime is not ready");return this.bridgeEngine}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=Ro(),n=_o(this.options);t.get(n)===this&&t.delete(n),this.isStarted=!1,this.notifyHealthChanged()}notifyHealthChanged(){let t=this.options.onHealthChanged;if(!t)return;let n=this.getHealth(),r=JSON.stringify(n);if(r!==this.lastNotifiedHealth){this.lastNotifiedHealth=r;try{t(n)}catch(i){console.warn(`[vcp-site-edit] onHealthChanged callback failed: ${i instanceof Error?i.message:String(i)}`)}}}createRuntime(t,n=null){let r=this.runtime;this.activeHistoryStore=t??null;let i=(this.dependencies.createRuntime??Ja)({...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(),this.notifyHealthChanged()}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=pc(t.composition),i=this.getRuntime(),o=we(r);await i.initializeComposition(o);let a=i.getDocument(o).data;await this.recordRuntimeVersion(a.version,r);let c=(await i.getHistoryStatus()).data;return{ok:!0,composition:r,data:{document:a,historyStatus:c}}}),getDocument:async t=>{let n=this.getRuntime(),r=we(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(we(t)),getObjectEditContext:async(t,n,r)=>this.getRuntime().getObjectEditContext(t,we(n),r),getClassNameSource:async(t,n)=>this.getRuntime().getClassNameSource(t,we(n)),getSourceTree:async t=>this.getRuntime().getSourceTree(we(t)),getSourceFile:async t=>this.getRuntime().getSourceFile({path:t.path,composition:we(t.composition)}),resolveSourceLocation:async t=>this.getRuntime().resolveSourceLocation({key:t.key,composition:we(t.composition)}),execute:(t,n)=>this.executeWithReceipt(t,()=>this.mutationQueue.run(async()=>{let r=await this.bindHistorySession(this.options.snapshotId);if(!r.ok)return Rn(r,t);let i=await this.getRuntime().executeOperation(t);return i.data?.resultVersion!==void 0&&await this.recordRuntimeVersion(i.data.resultVersion,i.composition),i})),getOperationResult:t=>{if(t.siteId!==this.options.siteId||t.baseSnapshotId!==this.options.snapshotId)return null;let n=this.operationReceipts.get(this.operationReceiptKey(t));return n?.fingerprint===this.operationFingerprint(t)?n.result:null},undo:t=>this.mutationQueue.run(async()=>{let n=await this.bindHistorySession(this.options.snapshotId);if(!n.ok)return Rn(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 Rn(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))}}operationReceiptKey(t){return JSON.stringify([t.siteId,t.baseSnapshotId,t.id])}operationFingerprint(t){return Nn("sha256").update(JSON.stringify(t)).digest("hex")}executeWithReceipt(t,n){if(t.siteId!==this.options.siteId||t.baseSnapshotId!==this.options.snapshotId)return n();let r=this.operationReceiptKey(t),i=this.operationFingerprint(t),o=this.operationReceipts.get(r);if(o)return o.fingerprint!==i?Promise.reject(new Error("Operation ID was reused with a different request.")):o.result;let s={fingerprint:i,result:n(),settled:!1};return this.operationReceipts.set(r,s),s.result.then(()=>{s.settled=!0;for(let[a,c]of this.operationReceipts){if(this.operationReceipts.size<=256)break;c.settled&&this.operationReceipts.delete(a)}},()=>{this.operationReceipts.delete(r)}),s.result}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??Qa)(hc({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.versionCheckpoints.get(r);o?o.durableVersion=Math.max(o.durableVersion,i):this.versionCheckpoints.set(r,{durableVersion:i,requestedVersion:i,pending:null});let s=this.compositions[0]?.context;if(s){let a=He(s);this.runtimeVersionFloors.set(a,Math.max(this.runtimeVersionFloors.get(a)??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?He(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,s=this.versionCheckpoints.get(i);if(s||(s={durableVersion:0,requestedVersion:0,pending:null},this.versionCheckpoints.set(i,s)),o<=s.durableVersion)return Promise.resolve();if(s.requestedVersion=Math.max(s.requestedVersion,o),s.pending)return s.pending;let a=s,c=this.versionPersistence.then(async()=>{try{for(;a.requestedVersion>a.durableVersion;){let u=a.requestedVersion;await i.writeDocumentVersion(u),a.durableVersion=Math.max(a.durableVersion,u)}}catch{console.warn("[vcp-site-edit] document version checkpoint persistence failed")}finally{a.pending=null}});return a.pending=c,this.versionPersistence=c,c}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??mo;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((i,o)=>i.localeCompare(o));this.pendingChangedFiles.clear();let n=t.some(Ao)?this.scheduleSnapshotIdentityAdvance():!1,r=t.filter(i=>!Ic(i));if(!(r.length===0&&!n)&&this.refreshCompositions(!1))for(let i of r)this.runtime?.notifyFileChanged(i)}scheduleSnapshotIdentityAdvance(){if(this.stopping||!this.isStarted)return!1;let t=this.readCurrentSnapshotMarker();return!t||t===this.options.snapshotId?!1:(this.mutationQueue.run(()=>this.advanceSnapshotId(t)).catch(n=>{console.warn(`[vcp-site-edit] snapshot identity advance failed: ${n instanceof Error?n.message:String(n)}`)}),!0)}readCurrentSnapshotMarker(){try{let t=pt.readFileSync(_e.join(this.options.projectRoot,Tn),"utf8"),n=JSON.parse(t),r=typeof n.snapshot_id=="string"?n.snapshot_id:"";return!r||xn(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(a){console.warn(`[vcp-site-edit] snapshot.changed listener failed: ${a instanceof Error?a.message:String(a)}`)}}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=dc(this.options.projectRoot),r=nc(n),i=r.length>0?r:(this.options.runtime.routes??[]).map(u=>({...u})),o=ec({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(u=>u.context.effectiveTemplateId!==void 0).map(u=>u.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 a=new Map(this.compositions.map(u=>[He(u.context),u])),c=new Map(o.map(u=>[He(u.context),u]));if(this.runtime){for(let[u,d]of a){let l=c.get(u);(!l||l.entryFile!==d.entryFile)&&this.runtime.unregisterComposition(we(d.context))}for(let[u,d]of c){let l=a.get(u);(!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,this.notifyHealthChanged(),!0}catch(n){let r=n instanceof Error?n:new Error(String(n));if(this.compositionResolutionError=r,t)throw r;return this.notifyHealthChanged(),!1}}resolveComposition(t){if(this.compositionResolutionError)throw this.compositionResolutionError;let n=tc(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=Za({selector:{routeId:n,...t.templateId!==void 0?{templateId:t.templateId}:{}},files:this.compositionFiles,canonicalEntryFile:r.entryFile}),o=He(i.context);if(!this.compositions.some(s=>He(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(He(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 dl(e){let t=new ht(qt(e),So.createServer(),!1);return t.start({listen:!1,webSocket:!1}),{engine:t.getEngine(),getHealth:()=>t.getHealth(),stop:()=>t.stop()}}function vo(e){return qt(e)}function qt(e){return{tenantId:e.tenantId,siteId:e.siteId,snapshotId:e.snapshotId,projectRoot:_e.resolve(e.projectRoot??process.cwd()),basePath:e.basePath??"",host:e.host??ic,port:e.port??sc,path:e.path??ac,sessionKey:e.sessionKey??Ec(),historyRoot:e.historyRoot,allowedOrigins:e.allowedOrigins??[],runtime:e.runtime??{},onSnapshotIdChanged:e.onSnapshotIdChanged,onHealthChanged:e.onHealthChanged}}function lc(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 dc(e){let t=[],n=["app","src/app",".vcp"],r=new Set([".git",".next",".turbo","coverage","dist","node_modules","output","snapshot-store"]),i=o=>{if(!pt.existsSync(o))return;let s;try{s=pt.readdirSync(o,{withFileTypes:!0})}catch{return}for(let a of s){if(a.name.startsWith(".")&&a.name!==".vcp")continue;if(a.isDirectory()){if(r.has(a.name))continue;i(_e.join(o,a.name));continue}if(!a.isFile())continue;let c=_e.join(o,a.name),u="";try{u=pt.readFileSync(c,"utf8")}catch{}t.push({path:_e.relative(e,c).replaceAll(_e.sep,"/"),content:u})}};for(let o of n)i(_e.join(e,o));return t.sort((o,s)=>o.path.localeCompare(s.path))}function pc(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 we(e){return{routeId:e.routeId,...e.effectiveTemplateId?{templateId:e.effectiveTemplateId}:{}}}function hc(e){return _e.join(_e.resolve(e.root),xn(e.siteId),xn(e.snapshotId),Nn("sha256").update(e.editingSessionId).digest("hex").slice(0,32))}function xn(e){return/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(e)&&e!=="."&&e!==".."?e:Nn("sha256").update(e).digest("hex").slice(0,32)}function Ro(){let e=globalThis;return e[go]??=new Map,e[go]}function _o(e){return`${e.projectRoot}:${e.host}:${e.port}:${e.path}:${e.historyRoot??""}`}function Rn(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 Pn(e){let t=new La({maxPayload:Io,noServer:!0}),n=new WeakSet,r=o=>{new Et({socket:new An(o),engine:e.engine,validateOperationRequest:s=>oc.safeParse(s).success})},i=(o,s,a)=>{if(!fc(o,e))return;let c=mc(o,e);if(!c){s.write(`HTTP/1.1 401 Unauthorized\r
42
42
  Connection: close\r
43
43
  \r
44
- `),s.destroy();return}c.authenticatedByHeader&&n.add(o),t.handleUpgrade(o,s,a,u=>{t.emit("connection",u,o)})};return e.server.on("upgrade",i),t.on("connection",(o,s)=>{if(n.has(s)){r(o);return}mc(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 An=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===Eo.OPEN){if(this.socket.bufferedAmount+Buffer.byteLength(t,"utf8")>ac){this.socket.close(1013,"bridge backpressure");return}this.socket.send(t)}}close(t,n){this.socket.close(t,n)}};function hc(e,t){return new URL(e.url??"/","http://localhost").pathname===t.path}function fc(e,t){if(new URL(e.url??"/","http://localhost").searchParams.has("vcp_bridge_key"))return null;let r=_n(e.headers["x-vcp-site-edit-key"]),i=To(r,t.sessionKey),o=_n(e.headers.host),s=_n(e.headers.origin);return o&&!gc(o,t.host,s)?null:s?bc(s,o,t.allowedOrigins)?{authenticatedByHeader:i}:null:i?{authenticatedByHeader:!0}:null}function mc(e,t,n){let r=setTimeout(()=>{e.close(1008,"bridge authentication timeout")},cc),i,o=()=>{clearTimeout(r),e.off("message",i),e.off("close",o)},s=()=>{o(),e.close(1008,"bridge authentication failed")};i=a=>{try{let c=se.parseMessage(a.toString());if(c.type!=="auth"||!To(c.payload.key,t)){s();return}o(),e.readyState===Eo.OPEN&&e.send(se.stringifyMessage({type:"auth-ok",payload:{ok:!0}})),n()}catch{s()}},e.on("message",i),e.on("close",o)}function To(e,t){if(!e)return!1;let n=Buffer.from(e),r=Buffer.from(t);return n.length===r.length&&Ya(n,r)}function gc(e,t,n){let r=bo(e),i=bo(t);return r===i||yo(i)&&yo(r)&&(!n||wn(n,e))||yc(i)&&(!n||wn(n,e))}function yc(e){return e==="0.0.0.0"||e==="::"}function yo(e){return e==="localhost"||e==="127.0.0.1"||e==="::1"}function bc(e,t,n){return n.includes(e)||(t?wn(e,t):!1)}function wn(e,t){try{return new URL(e).host===xo(t)}catch{return!1}}function bo(e){let t=xo(e);return t.startsWith("[")?t.slice(1,t.indexOf("]")):t.split(":").length-1===1?t.split(":",1)[0]??"":t}function xo(e){return e.trim().toLowerCase()}function _n(e){return Array.isArray(e)?e[0]:e}function Sc(){return Ga(32).toString("base64url")}function Ec(e){let t=e.replaceAll("\\","/");return t===Tn||t.endsWith(`/${Tn}`)}import Fn from"node:http";import{existsSync as Le,readFileSync as Xe}from"node:fs";import{randomUUID as Dc}from"node:crypto";import{createRequire as ko}from"node:module";import{Socket as wo}from"node:net";import ft from"node:path";import{basename as Do,dirname as mt,join as gt}from"node:path";import{fileURLToPath as Oo}from"node:url";import{createRequire as Ic}from"node:module";import{pathToFileURL as Cc}from"node:url";import{Worker as vc}from"node:worker_threads";var Ao=["resolveComposition","initializeSession","getDocument","getHistoryStatus","getStyleContext","getObjectEditContext","getClassNameSource","getSourceTree","getSourceFile","resolveSourceLocation","execute","getOperationResult","undo","redo"];function kn(e){let t=new Error(e.message);return t.name=e.name,e.code!==void 0&&(t.code=e.code),t}var Rc="SITE_EDIT_ENGINE_UNAVAILABLE",_c=5e3,Tc=1024,xc="VCP_SITE_EDIT_ENGINE_MAX_HEAP_MB",Ac=3,wc=10*6e4,Nc=1012;function Dn(e,t,n={}){let r=vo(t),{onSnapshotIdChanged:i,onHealthChanged:o,...s}=r,a={options:s},c=n.maxHeapMb??kc(process.env[xc])??Tc,u=n.maxRestarts??Ac,d=n.restartWindowMs??wc,l="starting",m,p=0,g=[],b=null,T=0,_=new Map,P=new Set,$,F,v=new Promise((E,x)=>{$=E,F=x});v.catch(()=>{});let q=E=>{let x=new Error(`VCP site edit preview bridge runtime is not ready: ${E}`);return x.code=Rc,x},Q=E=>{for(let x of _.values())x.reject(E);_.clear()},z=E=>{switch(E.type){case"ready":b=E.health,l==="starting"?(l="ready",$()):l==="restarting"&&(l="ready",console.warn("[vcp-site-edit] engine worker restarted"));return;case"start-failed":l==="starting"&&W(kn(E.error));return;case"result":{let x=_.get(E.id);if(!x)return;_.delete(E.id),E.ok?x.resolve(E.value):x.reject(kn(E.error));return}case"event":for(let x of P)try{x(E.event)}catch(f){console.warn(`[vcp-site-edit] engine event listener failed: ${f instanceof Error?f.message:String(f)}`)}return;case"health":b=E.health;return;case"snapshot-id-changed":a.options.snapshotId=E.next;try{i?.(E.next,E.previous)}catch(x){console.warn(`[vcp-site-edit] onSnapshotIdChanged callback failed: ${x instanceof Error?x.message:String(x)}`)}return}},G=()=>{let E=p+=1,x=n.workerUrl??new URL("./engine-worker.js",import.meta.url),f=new vc(Pc(x),{workerData:a,resourceLimits:{maxOldGenerationSizeMb:c},...n.execArgv?{execArgv:n.execArgv}:{}});f.unref();let C=()=>E===p;f.on("message",k=>{C()&&z(k)}),f.on("error",k=>{C()&&W(k instanceof Error?k:new Error(String(k)))}),f.on("exit",k=>{C()&&W(new Error(`engine worker exited with code ${k}`))}),m=f,n.onWorker?.(f)},W=E=>{if(l==="stopped"||l==="failed")return;if(Q(q(E.message)),b=null,l==="starting"){l="failed",console.error(`[vcp-site-edit] engine worker failed to start: ${E.message}`),F(E);return}let x=Date.now();for(;g.length>0&&x-g[0]>d;)g.shift();if(g.length>=u){l="failed",console.error(`[vcp-site-edit] engine worker stopped unexpectedly and exhausted ${u} restarts: ${E.message}`);return}g.push(x),l="restarting";for(let f of w.clients)f.close(Nc,"site edit engine restarting");console.error(`[vcp-site-edit] engine worker stopped unexpectedly, restarting (${g.length}/${u}): ${E.message}`),G()},X=(E,x)=>{if(l==="failed"||l==="stopped"||l==="restarting")return Promise.reject(q(l));let f=T+=1;return new Promise((C,k)=>{_.set(f,{resolve:C,reject:k});let N={type:"call",id:f,method:E,args:x};m.postMessage(N)})},L=Object.fromEntries(Ao.map(E=>[E,(...x)=>X(E,x)])),w=Pn({server:e,path:r.path,sessionKey:r.sessionKey,host:r.host,allowedOrigins:r.allowedOrigins,engine:{...L,subscribe(E){return P.add(E),()=>P.delete(E)}}});return G(),{getHealth(){return l==="ready"&&b?b:{ok:!1,bridgePath:r.path,runtimeReady:!1,routesIndexed:b?.routesIndexed??0,sessionRequired:!!r.sessionKey}},stop(){if(l==="stopped")return;let E=l==="starting";l="stopped",w.stop(),E&&F(q("bridge stopped")),Q(q("bridge stopped")),P.clear();let x=m,f={type:"stop"};x.postMessage(f);let C=setTimeout(()=>{x.terminate()},_c);C.unref(),x.once("exit",()=>clearTimeout(C))},whenReady(){return v},eventListeners:P}}function Pc(e){if(!e.pathname.endsWith(".ts"))return e;let t=Cc(Ic(import.meta.url).resolve("tsx/esm/api")).href,n=[`import { tsImport } from ${JSON.stringify(t)};`,`await tsImport(${JSON.stringify(e.href)}, ${JSON.stringify(e.href)});`].join(`
45
- `);return new URL(`data:text/javascript,${encodeURIComponent(n)}`)}function kc(e){if(!e||!/^\d+$/.test(e.trim()))return;let t=Number(e.trim());return Number.isSafeInteger(t)&&t>0?t:void 0}var Oc="next",Mc="VCP_SITE_EDIT_ENGINE_IN_PROCESS",Mo="127.0.0.1",Bc=3e3,Wt="/__vcp/site-edit/bridge",Bo="/__vcp/site-edit/health",Fc="probe",Vc="render",No="/_error",zt="/__vcp/site-edit/client/",Hc=`${zt}auto-bootstrap.js`,Fo='data-vcp-site-edit-bootstrap="true"',$c=["next.config.ts","next.config.mts","next.config.cts","next.config.js","next.config.mjs","next.config.cjs"],qc="@vcp-dev/site-edit-engine/webpack-loader",Kc=/@vcp\/site-edit-engine\/(?:webpack-loader|site-edit-instrumentation-loader)/,Uc=[/\bconfig\.webpack\s*=/,/\bwebpack\s*\([^)]*\)\s*\{/,/\bwebpack\s*:\s*(?:async\s*)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)?\s*=>/,/\bwebpack\s*:\s*(?:async\s+)?function\b/],Wc=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 wl(e={},t={}){let n=t.process??process,r=t.createServer??Fn.createServer,i=t.attachBridgeServer??(n.env[Mc]==="1"?Co:Dn),o=t.loadNext??Iu,s=ft.resolve(e.projectRoot??process.cwd()),a=e.host??Mo,c=e.port??_u(n.env.PORT)??Bc,u=e.bridgePath??Wt,d=Jc(u),l=gu(),m=e.basePath??n.env.VCP_SITE_PREVIEW_BASE_PATH??"/",p=(e.tenantId??n.env.VCP_TENANT_ID)?.trim()||void 0,g=await o(s),b=zc(s),T=g({dev:!0,dir:s,hostname:a,port:c,...jc(b)}),_=T.getRequestHandler(),P=e.siteId??n.env.VCP_SITE_ID??"018f6f4d-a9b8-7120-8000-000000000120",$=e.snapshotId??n.env.VCP_SNAPSHOT_ID??Ru(s),F=e.historyRoot??n.env.VCP_SITE_EDIT_HISTORY_ROOT,v=F?.trim()?ft.resolve(F):void 0,q=null,Q={launchId:Dc(),pid:process.pid,snapshotId:$},z=r((w,E)=>{ou({basePath:m,bridgePath:u,bridgeHealthPath:d,bridgeSessionKey:l,getBridgeHealth:()=>q?.getHealth()??lu(u),launch:Q,runRenderProbe:()=>au(T),handle:_,request:w,response:E}).catch(x=>{console.error(x),E.headersSent||(E.statusCode=500),E.end("site edit preview request failed")})}),G=null,W=null,X=()=>W||(Ut(()=>n.off("SIGINT",L)),Ut(()=>n.off("SIGTERM",L)),Ut(()=>G?.()),G=null,Ut(()=>q?.stop()),q=null,W=Promise.allSettled([xu(z),Au(()=>T.close())]).then(()=>{}),W),L=()=>{X()};try{return await T.prepare(),q=i(z,{...p?{tenantId:p}:{},siteId:P,snapshotId:$,projectRoot:s,basePath:m,host:a,port:c,path:u,sessionKey:l,...v?{historyRoot:v}:{},onSnapshotIdChanged:w=>{Q.snapshotId=w}}),G=Xc({server:z,bridgePath:u,handleUpgrade:T.getUpgradeHandler()}),n.on("SIGINT",L),n.on("SIGTERM",L),await q.whenReady?.(),await Tu(z,c,a),{bundler:b,close:X,host:a,port:wu(z,c),server:z}}catch(w){throw await X(),w}}function zc(e){let t=Gc(e);return t&&Yc(t)?"webpack":"turbopack"}function jc(e){return e==="webpack"?{webpack:!0}:{turbopack:!0}}function Gc(e){for(let t of $c){let n=gt(e,t);if(Le(n))return Xe(n,"utf8")}return null}function Yc(e){return e.includes(qc)?!0:Kc.test(e)&&Uc.some(t=>t.test(e))}function Xc(e){let t=(n,r,i)=>{Lc(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 Lc(e,t){return new URL(e??"/","http://localhost").pathname===t}function Jc(e=Wt){if(e===Wt)return Bo;let t=(e.startsWith("/")?e:`/${e}`).replace(/\/+$/,"");return t.endsWith("/bridge")?`${t.slice(0,-7)}/health`:t?`${t}/health`:"/health"}function Qc(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??Zc()});return`<script type="module" ${Fo}>import { startSiteEditAutoBootstrap } from ${JSON.stringify(Hc)};void startSiteEditAutoBootstrap(window, ${t}).catch(() => undefined);</script>`}function Zc(){return{bridge:On("@vcp-dev/site-edit-bridge"),contracts:On("@vcp-dev/contracts"),engine:On("@vcp-dev/site-edit-engine")}}function On(e){let t=ko(import.meta.url);try{let n=t.resolve(e),r=eu(n,e);if(!r)return;let i=JSON.parse(Xe(r,"utf8"));return typeof i.version=="string"?i.version:void 0}catch{return}}function eu(e,t){let n=ft.parse(e).root,r=mt(e);for(;r&&r!==n;){let i=gt(r,"package.json");if(Le(i))try{if(JSON.parse(Xe(i,"utf8")).name===t)return i}catch{return}r=mt(r)}}function tu(e,t){if(e.includes(Fo))return e;let n=Qc(t),r=/<\/body\s*>/i.exec(e);return r?`${e.slice(0,r.index)}${n}${e.slice(r.index)}`:`${e}${n}`}function Nl(e,t=mt(Oo(import.meta.url)),n=Le){return Vo(e,t,n)?.path??null}function Vo(e,t=mt(Oo(import.meta.url)),n=Le){let r=new URL(e??"/","http://localhost").pathname;if(!r.startsWith(zt))return null;let i=r.slice(zt.length);if(!Wc.has(i))return null;let o=Vn(Cu(t),i);if(Do(t)!=="src")return{path:o,requiresTranspile:!1};let s=Vn(t,i.replace(/\.js$/,".ts"));return n(s)?{path:s,requiresTranspile:!0}:{path:o,requiresTranspile:!1}}async function nu(e,t){let n=Vo(e.url);if(!n)return!1;if(!Le(n.path))return t.writeHead(404),t.end("site edit client asset not found"),!0;let r=n.requiresTranspile?await ru(Xe(n.path,"utf8")):Xe(n.path);return t.writeHead(200,{"cache-control":"no-store","content-type":"text/javascript; charset=utf-8"}),t.end(r),!0}async function ru(e){let t=await import("typescript");return t.transpileModule(e,{compilerOptions:{module:t.ModuleKind.ES2022,target:t.ScriptTarget.ES2022}}).outputText}async function ou({basePath:e,bridgePath:t,bridgeHealthPath:n,bridgeSessionKey:r,getBridgeHealth:i,launch:o,runRenderProbe:s,handle:a,request:c,response:u}){if(iu(c.url,e)){u.statusCode=404,u.end();return}if(await uu(c,u,n,i,o,s)||await nu(c,u))return;let d=du(c),l=pu(c),m=d||l?mu(u,{basePath:e,bridgePath:t,bridgeSessionKey:r,patchNextDevChunk:l,launch:{...o}}):()=>{};try{await a(c,u)}catch(p){throw m(),p}}function iu(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 su(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 au(e){let t=new Fn.IncomingMessage(new wo);t.method="GET",t.url=No,t.headers={host:Mo};let n=new Fn.ServerResponse(t);n.assignSocket(new wo);try{return await e.renderToHTML(t,n,No,{}),{verdict:"ok"}}catch(r){return su(r)}finally{try{let r=n.socket;r&&(n.detachSocket(r),r.destroy())}catch{}}}function cu(e){return new URL(e??"/","http://localhost").searchParams.get(Fc)===Vc}async function uu(e,t,n,r,i,o){if(e.method!=="GET"||new URL(e.url??"/","http://localhost").pathname!==n)return!1;let a=r(),c=cu(e.url)?await o():void 0,u={...a,launch:i,...c?{render:c}:{}};return t.writeHead(a.ok?200:503,{"cache-control":"no-store","content-type":"application/json; charset=utf-8"}),t.end(JSON.stringify(u)),!0}function lu(e){return{ok:!1,bridgePath:e,runtimeReady:!1,routesIndexed:0,sessionRequired:!0}}function du(e){return hu(e)?(e.headers["accept-encoding"]="identity",!0):!1}function pu(e){return fu(e)?(e.headers["accept-encoding"]="identity",!0):!1}function hu(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(zt)||n===Wt||n===Bo)return!1;let r=e.headers.accept??"";return r===""||r.includes("text/html")}function fu(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 mu(e,t){let n=[],r=e,i=r.flushHeaders.bind(e),o=r.write.bind(e),s=r.end.bind(e),a=!1;r.flushHeaders=()=>{};let c=()=>{if(t.patchNextDevChunk||a)return!1;let u=Buffer.concat(n);if(!/<body\b[^>]*>/iu.test(u.toString("utf8")))return!1;let d=Po(e,u,t);return d!==u&&!e.headersSent&&e.removeHeader("content-length"),o(d),n.length=0,a=!0,!0};return r.write=(u,d,l)=>a?(u!==void 0&&o(Mn(u,Bn(d))),Kt(d),Kt(l),!0):(u!==void 0&&(n.push(Mn(u,Bn(d))),c()),Kt(d),Kt(l),!0),r.end=(u,d,l)=>{let m=typeof u=="function"?void 0:u;if(a)return r.write=o,r.end=s,r.flushHeaders=i,m===void 0?typeof u=="function"?s(u):typeof d=="function"?s(d):typeof l=="function"?s(l):s():typeof d=="function"?s(m,d):typeof l=="function"?s(m,d,l):s(m,d);m!==void 0&&n.push(Mn(m,Bn(d))),r.write=o,r.end=s,r.flushHeaders=i;let p=Buffer.concat(n),g=Po(e,p,t);g!==p&&!e.headersSent&&e.removeHeader("content-length");let b=typeof u=="function"?u:typeof d=="function"?d:typeof l=="function"?l:void 0;return b?s(g,b):s(g)},()=>{r.write=o,r.end=s,r.flushHeaders=i}}function Po(e,t,n){if(yu(e,t))return Buffer.from(tu(t.toString("utf8"),n));if(n.patchNextDevChunk&&bu(e)){let r=t.toString("utf8"),i=Su(r);if(i!==r)return Buffer.from(i)}return t}function gu(){let e=new Uint8Array(32);return globalThis.crypto.getRandomValues(e),Buffer.from(e).toString("base64url")}function yu(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 bu(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 Su(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}c.authenticatedByHeader&&n.add(o),t.handleUpgrade(o,s,a,u=>{t.emit("connection",u,o)})};return e.server.on("upgrade",i),t.on("connection",(o,s)=>{if(n.has(s)){r(o);return}gc(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 An=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===Eo.OPEN){if(this.socket.bufferedAmount+Buffer.byteLength(t,"utf8")>cc){this.socket.close(1013,"bridge backpressure");return}this.socket.send(t)}}close(t,n){this.socket.close(t,n)}};function fc(e,t){return new URL(e.url??"/","http://localhost").pathname===t.path}function mc(e,t){if(new URL(e.url??"/","http://localhost").searchParams.has("vcp_bridge_key"))return null;let r=_n(e.headers["x-vcp-site-edit-key"]),i=To(r,t.sessionKey),o=_n(e.headers.host),s=_n(e.headers.origin);return o&&!yc(o,t.host,s)?null:s?Sc(s,o,t.allowedOrigins)?{authenticatedByHeader:i}:null:i?{authenticatedByHeader:!0}:null}function gc(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=a=>{try{let c=se.parseMessage(a.toString());if(c.type!=="auth"||!To(c.payload.key,t)){s();return}o(),e.readyState===Eo.OPEN&&e.send(se.stringifyMessage({type:"auth-ok",payload:{ok:!0}})),n()}catch{s()}},e.on("message",i),e.on("close",o)}function To(e,t){if(!e)return!1;let n=Buffer.from(e),r=Buffer.from(t);return n.length===r.length&&Xa(n,r)}function yc(e,t,n){let r=bo(e),i=bo(t);return r===i||yo(i)&&yo(r)&&(!n||wn(n,e))||bc(i)&&(!n||wn(n,e))}function bc(e){return e==="0.0.0.0"||e==="::"}function yo(e){return e==="localhost"||e==="127.0.0.1"||e==="::1"}function Sc(e,t,n){return n.includes(e)||(t?wn(e,t):!1)}function wn(e,t){try{return new URL(e).host===xo(t)}catch{return!1}}function bo(e){let t=xo(e);return t.startsWith("[")?t.slice(1,t.indexOf("]")):t.split(":").length-1===1?t.split(":",1)[0]??"":t}function xo(e){return e.trim().toLowerCase()}function _n(e){return Array.isArray(e)?e[0]:e}function Ec(){return Ya(32).toString("base64url")}function Ao(e){let t=e.replaceAll("\\","/");return t===Tn||t.endsWith(`/${Tn}`)}function Ic(e){let t=e.replaceAll("\\","/");return Ao(e)||t===".vcp/workspace-state.json"||t.startsWith(".vcp/snapshot-store/")}import Fn from"node:http";import{existsSync as Le,readFileSync as Xe}from"node:fs";import{randomUUID as Oc}from"node:crypto";import{createRequire as Do}from"node:module";import{Socket as No}from"node:net";import ft from"node:path";import{basename as Oo,dirname as mt,join as gt}from"node:path";import{fileURLToPath as Mo}from"node:url";import{createRequire as Cc}from"node:module";import{pathToFileURL as vc}from"node:url";import{Worker as Rc}from"node:worker_threads";var wo=["resolveComposition","initializeSession","getDocument","getHistoryStatus","getStyleContext","getObjectEditContext","getClassNameSource","getSourceTree","getSourceFile","resolveSourceLocation","execute","getOperationResult","undo","redo"];function kn(e){let t=new Error(e.message);return t.name=e.name,e.code!==void 0&&(t.code=e.code),t}var _c="SITE_EDIT_ENGINE_UNAVAILABLE",Tc=5e3,xc=1024,Ac="VCP_SITE_EDIT_ENGINE_MAX_HEAP_MB",wc=3,Nc=10*6e4,Pc=1012;function Dn(e,t,n={}){let r=vo(t),{onSnapshotIdChanged:i,onHealthChanged:o,...s}=r,a={options:s},c=n.maxHeapMb??Dc(process.env[Ac])??xc,u=n.maxRestarts??wc,d=n.restartWindowMs??Nc,l="starting",m,p=0,g=[],b=null,T=0,_=new Map,P=new Set,$,F,v=new Promise((E,x)=>{$=E,F=x});v.catch(()=>{});let q=E=>{let x=new Error(`VCP site edit preview bridge runtime is not ready: ${E}`);return x.code=_c,x},Q=E=>{for(let x of _.values())x.reject(E);_.clear()},z=E=>{switch(E.type){case"ready":b=E.health,l==="starting"?(l="ready",$()):l==="restarting"&&(l="ready",console.warn("[vcp-site-edit] engine worker restarted"));return;case"start-failed":l==="starting"&&W(kn(E.error));return;case"result":{let x=_.get(E.id);if(!x)return;_.delete(E.id),E.ok?x.resolve(E.value):x.reject(kn(E.error));return}case"event":for(let x of P)try{x(E.event)}catch(f){console.warn(`[vcp-site-edit] engine event listener failed: ${f instanceof Error?f.message:String(f)}`)}return;case"health":b=E.health;return;case"snapshot-id-changed":a.options.snapshotId=E.next;try{i?.(E.next,E.previous)}catch(x){console.warn(`[vcp-site-edit] onSnapshotIdChanged callback failed: ${x instanceof Error?x.message:String(x)}`)}return}},G=()=>{let E=p+=1,x=n.workerUrl??new URL("./engine-worker.js",import.meta.url),f=new Rc(kc(x),{workerData:a,resourceLimits:{maxOldGenerationSizeMb:c},...n.execArgv?{execArgv:n.execArgv}:{}});f.unref();let C=()=>E===p;f.on("message",k=>{C()&&z(k)}),f.on("error",k=>{C()&&W(k instanceof Error?k:new Error(String(k)))}),f.on("exit",k=>{C()&&W(new Error(`engine worker exited with code ${k}`))}),m=f,n.onWorker?.(f)},W=E=>{if(l==="stopped"||l==="failed")return;if(Q(q(E.message)),b=null,l==="starting"){l="failed",console.error(`[vcp-site-edit] engine worker failed to start: ${E.message}`),F(E);return}let x=Date.now();for(;g.length>0&&x-g[0]>d;)g.shift();if(g.length>=u){l="failed",console.error(`[vcp-site-edit] engine worker stopped unexpectedly and exhausted ${u} restarts: ${E.message}`);return}g.push(x),l="restarting";for(let f of w.clients)f.close(Pc,"site edit engine restarting");console.error(`[vcp-site-edit] engine worker stopped unexpectedly, restarting (${g.length}/${u}): ${E.message}`),G()},X=(E,x)=>{if(l==="failed"||l==="stopped"||l==="restarting")return Promise.reject(q(l));let f=T+=1;return new Promise((C,k)=>{_.set(f,{resolve:C,reject:k});let N={type:"call",id:f,method:E,args:x};m.postMessage(N)})},L=Object.fromEntries(wo.map(E=>[E,(...x)=>X(E,x)])),w=Pn({server:e,path:r.path,sessionKey:r.sessionKey,host:r.host,allowedOrigins:r.allowedOrigins,engine:{...L,subscribe(E){return P.add(E),()=>P.delete(E)}}});return G(),{getHealth(){return l==="ready"&&b?b:{ok:!1,bridgePath:r.path,runtimeReady:!1,routesIndexed:b?.routesIndexed??0,sessionRequired:!!r.sessionKey}},stop(){if(l==="stopped")return;let E=l==="starting";l="stopped",w.stop(),E&&F(q("bridge stopped")),Q(q("bridge stopped")),P.clear();let x=m,f={type:"stop"};x.postMessage(f);let C=setTimeout(()=>{x.terminate()},Tc);C.unref(),x.once("exit",()=>clearTimeout(C))},whenReady(){return v},eventListeners:P}}function kc(e){if(!e.pathname.endsWith(".ts"))return e;let t=vc(Cc(import.meta.url).resolve("tsx/esm/api")).href,n=[`import { tsImport } from ${JSON.stringify(t)};`,`await tsImport(${JSON.stringify(e.href)}, ${JSON.stringify(e.href)});`].join(`
45
+ `);return new URL(`data:text/javascript,${encodeURIComponent(n)}`)}function Dc(e){if(!e||!/^\d+$/.test(e.trim()))return;let t=Number(e.trim());return Number.isSafeInteger(t)&&t>0?t:void 0}var Mc="next",Bc="VCP_SITE_EDIT_ENGINE_IN_PROCESS",Bo="127.0.0.1",Fc=3e3,Wt="/__vcp/site-edit/bridge",Fo="/__vcp/site-edit/health",Vc="probe",Hc="render",Po="/_error",zt="/__vcp/site-edit/client/",$c=`${zt}auto-bootstrap.js`,Vo='data-vcp-site-edit-bootstrap="true"',qc=["next.config.ts","next.config.mts","next.config.cts","next.config.js","next.config.mjs","next.config.cjs"],Kc="@vcp-dev/site-edit-engine/webpack-loader",Uc=/@vcp\/site-edit-engine\/(?:webpack-loader|site-edit-instrumentation-loader)/,Wc=[/\bconfig\.webpack\s*=/,/\bwebpack\s*\([^)]*\)\s*\{/,/\bwebpack\s*:\s*(?:async\s*)?(?:\([^)]*\)|[A-Za-z_$][\w$]*)?\s*=>/,/\bwebpack\s*:\s*(?:async\s+)?function\b/],zc=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 Nl(e={},t={}){let n=t.process??process,r=t.createServer??Fn.createServer,i=t.attachBridgeServer??(n.env[Bc]==="1"?Co:Dn),o=t.loadNext??Cu,s=ft.resolve(e.projectRoot??process.cwd()),a=e.host??Bo,c=e.port??Tu(n.env.PORT)??Fc,u=e.bridgePath??Wt,d=Qc(u),l=yu(),m=e.basePath??n.env.VCP_SITE_PREVIEW_BASE_PATH??"/",p=(e.tenantId??n.env.VCP_TENANT_ID)?.trim()||void 0,g=await o(s),b=jc(s),T=g({dev:!0,dir:s,hostname:a,port:c,...Gc(b)}),_=T.getRequestHandler(),P=e.siteId??n.env.VCP_SITE_ID??"018f6f4d-a9b8-7120-8000-000000000120",$=e.snapshotId??n.env.VCP_SNAPSHOT_ID??_u(s),F=e.historyRoot??n.env.VCP_SITE_EDIT_HISTORY_ROOT,v=F?.trim()?ft.resolve(F):void 0,q=null,Q={launchId:Oc(),pid:process.pid,snapshotId:$},z=r((w,E)=>{iu({basePath:m,bridgePath:u,bridgeHealthPath:d,bridgeSessionKey:l,getBridgeHealth:()=>q?.getHealth()??du(u),launch:Q,runRenderProbe:()=>cu(T),handle:_,request:w,response:E}).catch(x=>{console.error(x),E.headersSent||(E.statusCode=500),E.end("site edit preview request failed")})}),G=null,W=null,X=()=>W||(Ut(()=>n.off("SIGINT",L)),Ut(()=>n.off("SIGTERM",L)),Ut(()=>G?.()),G=null,Ut(()=>q?.stop()),q=null,W=Promise.allSettled([Au(z),wu(()=>T.close())]).then(()=>{}),W),L=()=>{X()};try{return await T.prepare(),q=i(z,{...p?{tenantId:p}:{},siteId:P,snapshotId:$,projectRoot:s,basePath:m,host:a,port:c,path:u,sessionKey:l,...v?{historyRoot:v}:{},onSnapshotIdChanged:w=>{Q.snapshotId=w}}),G=Lc({server:z,bridgePath:u,handleUpgrade:T.getUpgradeHandler()}),n.on("SIGINT",L),n.on("SIGTERM",L),await q.whenReady?.(),await xu(z,c,a),{bundler:b,close:X,host:a,port:Nu(z,c),server:z}}catch(w){throw await X(),w}}function jc(e){let t=Yc(e);return t&&Xc(t)?"webpack":"turbopack"}function Gc(e){return e==="webpack"?{webpack:!0}:{turbopack:!0}}function Yc(e){for(let t of qc){let n=gt(e,t);if(Le(n))return Xe(n,"utf8")}return null}function Xc(e){return e.includes(Kc)?!0:Uc.test(e)&&Wc.some(t=>t.test(e))}function Lc(e){let t=(n,r,i)=>{Jc(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 Jc(e,t){return new URL(e??"/","http://localhost").pathname===t}function Qc(e=Wt){if(e===Wt)return Fo;let t=(e.startsWith("/")?e:`/${e}`).replace(/\/+$/,"");return t.endsWith("/bridge")?`${t.slice(0,-7)}/health`:t?`${t}/health`:"/health"}function Zc(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??eu()});return`<script type="module" ${Vo}>import { startSiteEditAutoBootstrap } from ${JSON.stringify($c)};void startSiteEditAutoBootstrap(window, ${t}).catch(() => undefined);</script>`}function eu(){return{bridge:On("@vcp-dev/site-edit-bridge"),contracts:On("@vcp-dev/contracts"),engine:On("@vcp-dev/site-edit-engine")}}function On(e){let t=Do(import.meta.url);try{let n=t.resolve(e),r=tu(n,e);if(!r)return;let i=JSON.parse(Xe(r,"utf8"));return typeof i.version=="string"?i.version:void 0}catch{return}}function tu(e,t){let n=ft.parse(e).root,r=mt(e);for(;r&&r!==n;){let i=gt(r,"package.json");if(Le(i))try{if(JSON.parse(Xe(i,"utf8")).name===t)return i}catch{return}r=mt(r)}}function nu(e,t){if(e.includes(Vo))return e;let n=Zc(t),r=/<\/body\s*>/i.exec(e);return r?`${e.slice(0,r.index)}${n}${e.slice(r.index)}`:`${e}${n}`}function Pl(e,t=mt(Mo(import.meta.url)),n=Le){return Ho(e,t,n)?.path??null}function Ho(e,t=mt(Mo(import.meta.url)),n=Le){let r=new URL(e??"/","http://localhost").pathname;if(!r.startsWith(zt))return null;let i=r.slice(zt.length);if(!zc.has(i))return null;let o=Vn(vu(t),i);if(Oo(t)!=="src")return{path:o,requiresTranspile:!1};let s=Vn(t,i.replace(/\.js$/,".ts"));return n(s)?{path:s,requiresTranspile:!0}:{path:o,requiresTranspile:!1}}async function ru(e,t){let n=Ho(e.url);if(!n)return!1;if(!Le(n.path))return t.writeHead(404),t.end("site edit client asset not found"),!0;let r=n.requiresTranspile?await ou(Xe(n.path,"utf8")):Xe(n.path);return t.writeHead(200,{"cache-control":"no-store","content-type":"text/javascript; charset=utf-8"}),t.end(r),!0}async function ou(e){let t=await import("typescript");return t.transpileModule(e,{compilerOptions:{module:t.ModuleKind.ES2022,target:t.ScriptTarget.ES2022}}).outputText}async function iu({basePath:e,bridgePath:t,bridgeHealthPath:n,bridgeSessionKey:r,getBridgeHealth:i,launch:o,runRenderProbe:s,handle:a,request:c,response:u}){if(su(c.url,e)){u.statusCode=404,u.end();return}if(await lu(c,u,n,i,o,s)||await ru(c,u))return;let d=pu(c),l=hu(c),m=d||l?gu(u,{basePath:e,bridgePath:t,bridgeSessionKey:r,patchNextDevChunk:l,launch:{...o}}):()=>{};try{await a(c,u)}catch(p){throw m(),p}}function su(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 au(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 cu(e){let t=new Fn.IncomingMessage(new No);t.method="GET",t.url=Po,t.headers={host:Bo};let n=new Fn.ServerResponse(t);n.assignSocket(new No);try{return await e.renderToHTML(t,n,Po,{}),{verdict:"ok"}}catch(r){return au(r)}finally{try{let r=n.socket;r&&(n.detachSocket(r),r.destroy())}catch{}}}function uu(e){return new URL(e??"/","http://localhost").searchParams.get(Vc)===Hc}async function lu(e,t,n,r,i,o){if(e.method!=="GET"||new URL(e.url??"/","http://localhost").pathname!==n)return!1;let a=r(),c=uu(e.url)?await o():void 0,u={...a,launch:i,...c?{render:c}:{}};return t.writeHead(a.ok?200:503,{"cache-control":"no-store","content-type":"application/json; charset=utf-8"}),t.end(JSON.stringify(u)),!0}function du(e){return{ok:!1,bridgePath:e,runtimeReady:!1,routesIndexed:0,sessionRequired:!0}}function pu(e){return fu(e)?(e.headers["accept-encoding"]="identity",!0):!1}function hu(e){return mu(e)?(e.headers["accept-encoding"]="identity",!0):!1}function fu(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(zt)||n===Wt||n===Fo)return!1;let r=e.headers.accept??"";return r===""||r.includes("text/html")}function mu(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 gu(e,t){let n=[],r=e,i=r.flushHeaders.bind(e),o=r.write.bind(e),s=r.end.bind(e),a=!1;r.flushHeaders=()=>{};let c=()=>{if(t.patchNextDevChunk||a)return!1;let u=Buffer.concat(n);if(!/<body\b[^>]*>/iu.test(u.toString("utf8")))return!1;let d=ko(e,u,t);return d!==u&&!e.headersSent&&e.removeHeader("content-length"),o(d),n.length=0,a=!0,!0};return r.write=(u,d,l)=>a?(u!==void 0&&o(Mn(u,Bn(d))),Kt(d),Kt(l),!0):(u!==void 0&&(n.push(Mn(u,Bn(d))),c()),Kt(d),Kt(l),!0),r.end=(u,d,l)=>{let m=typeof u=="function"?void 0:u;if(a)return r.write=o,r.end=s,r.flushHeaders=i,m===void 0?typeof u=="function"?s(u):typeof d=="function"?s(d):typeof l=="function"?s(l):s():typeof d=="function"?s(m,d):typeof l=="function"?s(m,d,l):s(m,d);m!==void 0&&n.push(Mn(m,Bn(d))),r.write=o,r.end=s,r.flushHeaders=i;let p=Buffer.concat(n),g=ko(e,p,t);g!==p&&!e.headersSent&&e.removeHeader("content-length");let b=typeof u=="function"?u:typeof d=="function"?d:typeof l=="function"?l:void 0;return b?s(g,b):s(g)},()=>{r.write=o,r.end=s,r.flushHeaders=i}}function ko(e,t,n){if(bu(e,t))return Buffer.from(nu(t.toString("utf8"),n));if(n.patchNextDevChunk&&Su(e)){let r=t.toString("utf8"),i=Eu(r);if(i!==r)return Buffer.from(i)}return t}function yu(){let e=new Uint8Array(32);return globalThis.crypto.getRandomValues(e),Buffer.from(e).toString("base64url")}function bu(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 Su(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 Eu(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(`
46
46
  `),["unstable_allowPartialStream: true,"," debugChannel,"," startTime: 0"].join(`
47
- `)],[["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])=>Eu(n,r,i),e)}function Eu(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 Mn(e,t){return Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e):Buffer.from(String(e),t)}function Bn(e){return typeof e=="string"?e:void 0}function Kt(e){typeof e=="function"&&e()}async function Iu(e){let n=ko(gt(e,"package.json"))(Oc);return n.default??n}function Cu(e){return Do(e)!=="src"?e:Vn(vu(e),"dist")}function vu(e){return Ho(e)?ft.posix.dirname(e):mt(e)}function Vn(e,t){return Ho(e)?ft.posix.join(e,t):gt(e,t)}function Ho(e){return e.includes("/")&&!e.includes("\\")}function Ru(e){let t=gt(e,".vcp/current-snapshot.json");if(!Le(t))return"sandbox_worktree";try{let n=JSON.parse(Xe(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 _u(e){if(!e)return null;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0&&t<=65535?t:null}function Tu(e,t,n){return new Promise((r,i)=>{e.once("error",i),e.listen(t,n,()=>{e.off("error",i),r()})})}function xu(e){return new Promise(t=>{e.close(()=>t())})}function Ut(e){try{e()}catch{}}function Au(e){try{return e()}catch(t){return Promise.reject(t)}}function wu(e,t){let n=e.address();return typeof n=="object"&&n?n.port:t}export{di as SITE_EDIT_BRIDGE_CONNECT_TIMEOUT,Mr as SITE_EDIT_BRIDGE_HEALTH_TIMEOUT,pi as SITE_EDIT_BRIDGE_HEARTBEAT_TIMEOUT,ac as SITE_EDIT_BRIDGE_MAX_BUFFERED_BYTES,Io as SITE_EDIT_BRIDGE_MAX_PAYLOAD_BYTES,ku as SITE_EDIT_COMPOSITION_REINITIALIZE_REQUIRED,Gr as SITE_EDIT_COMPOSITION_RENDER_MISMATCH,Qe as SITE_EDIT_COMPOSITION_SESSION_MISMATCH,Ue as SITE_EDIT_COMPOSITION_SESSION_REQUIRED,Sr as SITE_EDIT_FRAME_ANNOUNCE_CHANNEL,br as SITE_EDIT_FRAME_RUNTIME_CHANNEL,sn as SITE_EDIT_FRAME_RUNTIME_LAYOUT_SNAPSHOT_VERSION,rt as SITE_EDIT_FRAME_RUNTIME_RESIZE_VISUAL_VERSION,nt as SITE_EDIT_FRAME_RUNTIME_SELECTION_VISUAL_VERSION,Er as SITE_EDIT_FRAME_SECTION_GAP_RADIUS_PX,_t as SITE_EDIT_WINDOW_MESSAGE_NAMESPACE,ht as SiteEditBridgeServer,Et as SiteEditBridgeSocketServer,se as SiteEditBridgeTransport,Ct as SiteEditWebSocketClient,fn as VCP_SITE_EDIT_BRIDGE_STATUS_EVENT,hn as VCP_SITE_EDIT_ROUTE_READY_EVENT,fr as VCP_WINDOW_MESSAGE_SOURCE,mr as VCP_WINDOW_MESSAGE_VERSION,Xc as attachNextDevUpgradeHandler,Co as attachSiteEditBridgeServer,Dn as attachSiteEditBridgeServerInWorker,Pn as attachSiteEditWebSocketServer,su as classifySiteEditRenderProbeError,Qc as createSiteEditAutoBootstrapHtmlSnippet,ar as createSiteEditBridge,ll as createSiteEditBridgeEngineHost,Ir as createSiteEditFrameAnnounceMessage,it as createSiteEditFrameRuntimeMessage,gr as createVcpWindowMessageEnvelope,Zn as decodeRenderDocument,Qn as encodeRenderDocument,ul as ensureSiteEditBridgeServerStarted,pr as getPropertyPreviewDomAttributeName,tu as injectSiteEditAutoBootstrap,Wo as isCompactRenderDocument,si as isDesignerTraceEnabled,Ku as isSiteEditFrameAnnounceMessage,Rr as isSiteEditFrameRuntimeLayoutSnapshot,Cr as isSiteEditFrameRuntimeMessage,cu as isSiteEditRenderProbeRequested,yr as isVcpWindowMessageEnvelope,vo as normalizeSiteEditBridgeServerOptions,Su as patchNextFirefoxDevChunk,_i as planPropertyPreview,pu as prepareFirefoxNextDevChunkPatchRequest,du as prepareSiteEditHtmlInjectionRequest,ds as resolveBrowserCompositionSelector,Jc as resolveSiteEditBridgeHealthPath,Vo as resolveSiteEditClientAsset,Nl as resolveSiteEditClientAssetPath,zc as resolveSiteEditNextDevBundler,Lr as resolveSiteEditRouteId,hs as resolveSiteEditWebSocketUrl,au as runSiteEditRenderProbe,ai as sanitizeTracePayload,Xu as startSiteEditAutoBootstrap,Es as startSiteEditFrameRuntime,wl as startSiteEditNextDevServer,ls as syncRuntimeSiteBlockIds,Ce as traceDesignerEvent,ru as transpileSiteEditClientSource};
47
+ `)],[["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])=>Iu(n,r,i),e)}function Iu(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 Mn(e,t){return Buffer.isBuffer(e)?e:e instanceof Uint8Array?Buffer.from(e):Buffer.from(String(e),t)}function Bn(e){return typeof e=="string"?e:void 0}function Kt(e){typeof e=="function"&&e()}async function Cu(e){let n=Do(gt(e,"package.json"))(Mc);return n.default??n}function vu(e){return Oo(e)!=="src"?e:Vn(Ru(e),"dist")}function Ru(e){return $o(e)?ft.posix.dirname(e):mt(e)}function Vn(e,t){return $o(e)?ft.posix.join(e,t):gt(e,t)}function $o(e){return e.includes("/")&&!e.includes("\\")}function _u(e){let t=gt(e,".vcp/current-snapshot.json");if(!Le(t))return"sandbox_worktree";try{let n=JSON.parse(Xe(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 Tu(e){if(!e)return null;let t=Number.parseInt(e,10);return Number.isInteger(t)&&t>0&&t<=65535?t:null}function xu(e,t,n){return new Promise((r,i)=>{e.once("error",i),e.listen(t,n,()=>{e.off("error",i),r()})})}function Au(e){return new Promise(t=>{e.close(()=>t())})}function Ut(e){try{e()}catch{}}function wu(e){try{return e()}catch(t){return Promise.reject(t)}}function Nu(e,t){let n=e.address();return typeof n=="object"&&n?n.port:t}export{pi as SITE_EDIT_BRIDGE_CONNECT_TIMEOUT,Mr as SITE_EDIT_BRIDGE_HEALTH_TIMEOUT,hi as SITE_EDIT_BRIDGE_HEARTBEAT_TIMEOUT,cc as SITE_EDIT_BRIDGE_MAX_BUFFERED_BYTES,Io as SITE_EDIT_BRIDGE_MAX_PAYLOAD_BYTES,Du as SITE_EDIT_COMPOSITION_REINITIALIZE_REQUIRED,Gr as SITE_EDIT_COMPOSITION_RENDER_MISMATCH,Qe as SITE_EDIT_COMPOSITION_SESSION_MISMATCH,Ue as SITE_EDIT_COMPOSITION_SESSION_REQUIRED,Sr as SITE_EDIT_FRAME_ANNOUNCE_CHANNEL,br as SITE_EDIT_FRAME_RUNTIME_CHANNEL,sn as SITE_EDIT_FRAME_RUNTIME_LAYOUT_SNAPSHOT_VERSION,rt as SITE_EDIT_FRAME_RUNTIME_RESIZE_VISUAL_VERSION,nt as SITE_EDIT_FRAME_RUNTIME_SELECTION_VISUAL_VERSION,Er as SITE_EDIT_FRAME_SECTION_GAP_RADIUS_PX,_t as SITE_EDIT_WINDOW_MESSAGE_NAMESPACE,ht as SiteEditBridgeServer,Et as SiteEditBridgeSocketServer,se as SiteEditBridgeTransport,Ct as SiteEditWebSocketClient,fn as VCP_SITE_EDIT_BRIDGE_STATUS_EVENT,hn as VCP_SITE_EDIT_ROUTE_READY_EVENT,fr as VCP_WINDOW_MESSAGE_SOURCE,mr as VCP_WINDOW_MESSAGE_VERSION,Lc as attachNextDevUpgradeHandler,Co as attachSiteEditBridgeServer,Dn as attachSiteEditBridgeServerInWorker,Pn as attachSiteEditWebSocketServer,au as classifySiteEditRenderProbeError,Zc as createSiteEditAutoBootstrapHtmlSnippet,ar as createSiteEditBridge,dl as createSiteEditBridgeEngineHost,Ir as createSiteEditFrameAnnounceMessage,it as createSiteEditFrameRuntimeMessage,gr as createVcpWindowMessageEnvelope,Zn as decodeRenderDocument,Qn as encodeRenderDocument,ll as ensureSiteEditBridgeServerStarted,pr as getPropertyPreviewDomAttributeName,nu as injectSiteEditAutoBootstrap,zo as isCompactRenderDocument,ai as isDesignerTraceEnabled,Uu as isSiteEditFrameAnnounceMessage,Rr as isSiteEditFrameRuntimeLayoutSnapshot,Cr as isSiteEditFrameRuntimeMessage,uu as isSiteEditRenderProbeRequested,yr as isVcpWindowMessageEnvelope,vo as normalizeSiteEditBridgeServerOptions,Eu as patchNextFirefoxDevChunk,Ti as planPropertyPreview,hu as prepareFirefoxNextDevChunkPatchRequest,pu as prepareSiteEditHtmlInjectionRequest,ps as resolveBrowserCompositionSelector,Qc as resolveSiteEditBridgeHealthPath,Ho as resolveSiteEditClientAsset,Pl as resolveSiteEditClientAssetPath,jc as resolveSiteEditNextDevBundler,Lr as resolveSiteEditRouteId,fs as resolveSiteEditWebSocketUrl,cu as runSiteEditRenderProbe,ci as sanitizeTracePayload,Lu as startSiteEditAutoBootstrap,Is as startSiteEditFrameRuntime,Nl as startSiteEditNextDevServer,ds as syncRuntimeSiteBlockIds,Ce as traceDesignerEvent,ou as transpileSiteEditClientSource};