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