payload-live-preview 1.0.2 → 1.0.4
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/README.md +150 -84
- package/dist/adapters/astro/RichText.astro +8 -4
- package/dist/adapters/astro/index.d.ts +84 -9
- package/dist/adapters/astro/index.js +1 -363
- package/dist/adapters/astro/index.js.map +1 -1
- package/dist/adapters/astro/middleware-entry.d.ts +1 -1
- package/dist/adapters/astro/middleware-entry.js +1 -296
- package/dist/adapters/astro/middleware-entry.js.map +1 -1
- package/dist/adapters/nextjs/index.d.ts +24 -10
- package/dist/adapters/nextjs/index.js +1 -305
- package/dist/adapters/nextjs/index.js.map +1 -1
- package/dist/adapters/nuxt/index.d.ts +20 -10
- package/dist/adapters/nuxt/index.js +1 -293
- package/dist/adapters/nuxt/index.js.map +1 -1
- package/dist/adapters/sveltekit/index.d.ts +22 -6
- package/dist/adapters/sveltekit/index.js +1 -272
- package/dist/adapters/sveltekit/index.js.map +1 -1
- package/dist/codegen-astro.js +1 -609
- package/dist/codegen-astro.js.map +1 -1
- package/dist/codegen-cli.js +1 -665
- package/dist/codegen-cli.js.map +1 -1
- package/dist/codegen.cjs +1 -550
- package/dist/codegen.cjs.map +1 -1
- package/dist/codegen.js +1 -546
- package/dist/codegen.js.map +1 -1
- package/dist/core.cjs +1 -3719
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +1210 -7
- package/dist/core.d.ts +1210 -7
- package/dist/core.js +1 -3692
- package/dist/core.js.map +1 -1
- package/dist/index.cjs +1 -4118
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +1359 -34
- package/dist/index.d.ts +1359 -34
- package/dist/index.js +1 -4075
- package/dist/index.js.map +1 -1
- package/dist/{middleware-BwIlf0jW.d.cts → middleware-CkSeLZ-9.d.ts} +35 -19
- package/dist/payload.cjs +1 -30
- package/dist/payload.cjs.map +1 -1
- package/dist/payload.d.cts +4 -3
- package/dist/payload.d.ts +4 -3
- package/dist/payload.js +1 -28
- package/dist/payload.js.map +1 -1
- package/package.json +55 -16
- package/dist/adapters/astro/index.cjs +0 -370
- package/dist/adapters/astro/index.cjs.map +0 -1
- package/dist/adapters/astro/index.d.cts +0 -105
- package/dist/adapters/astro/middleware-entry.cjs +0 -303
- package/dist/adapters/astro/middleware-entry.cjs.map +0 -1
- package/dist/adapters/astro/middleware-entry.d.cts +0 -15
- package/dist/adapters/nextjs/index.cjs +0 -309
- package/dist/adapters/nextjs/index.cjs.map +0 -1
- package/dist/adapters/nextjs/index.d.cts +0 -75
- package/dist/adapters/nuxt/index.cjs +0 -299
- package/dist/adapters/nuxt/index.cjs.map +0 -1
- package/dist/adapters/nuxt/index.d.cts +0 -126
- package/dist/adapters/sveltekit/index.cjs +0 -275
- package/dist/adapters/sveltekit/index.cjs.map +0 -1
- package/dist/adapters/sveltekit/index.d.cts +0 -80
- package/dist/bind-BSgxoQhN.d.cts +0 -1137
- package/dist/bind-BSgxoQhN.d.ts +0 -1137
- package/dist/codegen-astro.cjs +0 -612
- package/dist/codegen-astro.cjs.map +0 -1
- package/dist/codegen-astro.d.cts +0 -54
- package/dist/codegen-cli.cjs +0 -669
- package/dist/codegen-cli.cjs.map +0 -1
- package/dist/codegen-cli.d.cts +0 -19
- package/dist/middleware-BwIlf0jW.d.ts +0 -168
- package/dist/preview-request-DAvxm18T.d.cts +0 -68
- package/dist/preview-request-DAvxm18T.d.ts +0 -68
|
@@ -1,370 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
// src/inline/runtime.generated.ts
|
|
4
|
-
var RUNTIME_SOURCE = '"use strict";(()=>{var Xr=Object.defineProperty;var Dn=t=>{throw TypeError(t)};var Zr=(t,e,n)=>e in t?Xr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:n}):t[e]=n;var $n=(t,e,n)=>Zr(t,typeof e!="symbol"?e+"":e,n),Ft=(t,e,n)=>e.has(t)||Dn("Cannot "+n);var i=(t,e,n)=>(Ft(t,e,"read from private field"),n?n.call(t):e.get(t)),l=(t,e,n)=>e.has(t)?Dn("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(t):e.set(t,n),d=(t,e,n,r)=>(Ft(t,e,"write to private field"),r?r.call(t,n):e.set(t,n),n),f=(t,e,n)=>(Ft(t,e,"access private method"),n);var F,_,ne,Dt,$t,Tt=class{constructor(){l(this,ne);l(this,F,new Map);l(this,_,new Map)}on(e,n){return f(this,ne,Dt).call(this,i(this,F),e,n)}once(e,n){return f(this,ne,Dt).call(this,i(this,_),e,n)}off(e,n){i(this,F).get(e)?.delete(n),i(this,_).get(e)?.delete(n)}async emit(e,n){let r=i(this,F).get(e);if(r)for(let s of[...r])await f(this,ne,$t).call(this,s,n,e);let o=i(this,_).get(e);if(o&&o.size>0){let s=[...o];i(this,_).delete(e);for(let a of s)await f(this,ne,$t).call(this,a,n,e)}}listenerCount(e){return(i(this,F).get(e)?.size??0)+(i(this,_).get(e)?.size??0)}removeAllListeners(e){if(e===void 0){i(this,F).clear(),i(this,_).clear();return}i(this,F).delete(e),i(this,_).delete(e)}eventNames(){let e=new Set;for(let n of i(this,F).keys())e.add(n);for(let n of i(this,_).keys())e.add(n);return[...e]}};F=new WeakMap,_=new WeakMap,ne=new WeakSet,Dt=function(e,n,r){let o=e.get(n);return o||(o=new Set,e.set(n,o)),o.add(r),()=>{e.get(n)?.delete(r)}},$t=async function(e,n,r){try{await e(n)}catch(o){let s=typeof r=="string"||typeof r=="number"?String(r):"<event>";console.error(`[live-preview] handler for "${s}" threw:`,o)}};var ue="data-payload-field",Un="data-payload-type",Qr="data-payload-attribute",ei="data-payload-href",ti="data-payload-src",ni="data-payload-alt",ri="data-payload-array-template",ii="data-payload-array-separator",oi="data-payload-locale",si=`[${ue}]`,Hn=new Set(["text","textarea","richText","email","number","checkbox","date","select","radio","array","blocks","group","tabs","row","collapsible","relationship","upload","point","json","code","ui","html","url","image","structural-array"]),E,Y,we,re,Ut,Ht,wt=class{constructor(e={}){l(this,re);l(this,E,new Map);l(this,Y,new WeakMap);l(this,we);d(this,we,e.filter??di)}buildFromRoot(e){let n=performance.now();i(this,E).clear();let r=e.querySelectorAll(si),o=0;for(let s of r){if(!i(this,we).call(this,s))continue;let a=f(this,re,Ht).call(this,s);a&&(f(this,re,Ut).call(this,a),i(this,Y).set(s,a),o+=1)}return{elementCount:o,fieldCount:i(this,E).size,durationMs:performance.now()-n}}add(e){if(!i(this,we).call(this,e))return;let n=f(this,re,Ht).call(this,e);if(n)return f(this,re,Ut).call(this,n),i(this,Y).set(e,n),n}remove(e){let n=i(this,Y).get(e);if(!n)return!1;i(this,Y).delete(e);let r=i(this,E).get(n.fieldName);if(!r)return!1;let o=r.indexOf(n);return o<0?!1:(r.splice(o,1),r.length===0&&i(this,E).delete(n.fieldName),!0)}get(e){return i(this,E).get(e)}getByElement(e){return i(this,Y).get(e)}get fieldCount(){return i(this,E).size}get elementCount(){let e=0;for(let n of i(this,E).values())e+=n.length;return e}entries(){return i(this,E).entries()}*values(){for(let e of i(this,E).values())yield*e}has(e){return i(this,Y).has(e)}clear(){i(this,E).clear()}};E=new WeakMap,Y=new WeakMap,we=new WeakMap,re=new WeakSet,Ut=function(e){let n=i(this,E).get(e.fieldName);if(n){n.push(e);return}i(this,E).set(e.fieldName,[e])},Ht=function(e){let n=e.getAttribute(ue);if(n===null||n.length===0)return;let r=e.getAttribute(Un),o=ai(e),s=e.getAttribute(Qr),a=e.getAttribute(ei),u=e.getAttribute(ti),m=e.getAttribute(ni),T=e.getAttribute(ri),W=e.getAttribute(ii),c=e.getAttribute(oi);return{element:e,fieldName:n,fieldType:o,explicitFieldType:r!==null&&Hn.has(r),...s!==null&&s.length>0?{targetAttribute:s}:{},...a!==null?{hrefField:a}:{},...u!==null?{srcField:u}:{},...m!==null?{altField:m}:{},...T!==null?{arrayTemplate:T}:{},...W!==null?{arraySeparator:W}:{},...c!==null?{locale:c}:{}}};function ai(t){let e=t.getAttribute(Un);if(e!==null&&Hn.has(e))return e;if(t.hasAttribute("data-payload-richtext"))return"richText";if(t.hasAttribute("data-payload-html"))return"html";if(t.hasAttribute("data-payload-structural"))return"structural-array";if(t.hasAttribute("data-payload-array"))return"array";if(t.tagName==="IMG")return"image";if(t.tagName==="A")return"url";if(t.tagName==="TIME")return"date";if(t.tagName==="INPUT"){let n=t.type;if(n==="checkbox")return"checkbox";if(n==="number")return"number";if(n==="date"||n==="datetime-local")return"date"}return"text"}function di(){return!0}var li=100,ui="200px",ce,$e,Ue,M,fe,ie,D,xe,jn,Vn,xt=class{constructor(e,n={}){l(this,xe);l(this,ce);l(this,$e);l(this,Ue);l(this,M,new Set);l(this,fe,null);l(this,ie,null);l(this,D,null);d(this,ce,e),d(this,$e,n.mutationDebounceMs??li),d(this,Ue,n.intersectionRootMargin??ui)}start(e){d(this,fe,new MutationObserver(n=>{f(this,xe,jn).call(this,n)})),i(this,fe).observe(e,{childList:!0,subtree:!0,attributes:!0,attributeFilter:[ue]}),d(this,ie,new IntersectionObserver(n=>{f(this,xe,Vn).call(this,n)},{rootMargin:i(this,Ue),threshold:0}))}observeElement(e){i(this,ie)?.observe(e)}unobserveElement(e){i(this,ie)?.unobserve(e),i(this,M).delete(e)}markVisible(e,n){n?i(this,M).add(e):i(this,M).delete(e)}isVisible(e){return i(this,M).has(e)}stop(){i(this,D)!==null&&(clearTimeout(i(this,D)),d(this,D,null)),i(this,fe)?.disconnect(),i(this,ie)?.disconnect(),d(this,fe,null),d(this,ie,null),i(this,M).clear()}};ce=new WeakMap,$e=new WeakMap,Ue=new WeakMap,M=new WeakMap,fe=new WeakMap,ie=new WeakMap,D=new WeakMap,xe=new WeakSet,jn=function(e){ci(e)&&(i(this,D)!==null&&clearTimeout(i(this,D)),d(this,D,setTimeout(()=>{d(this,D,null),i(this,ce).onStructuralChange()},i(this,$e))))},Vn=function(e){for(let n of e){let r=n.target;n.isIntersecting?i(this,M).has(r)||(i(this,M).add(r),i(this,ce).onVisibilityChange(r,!0)):i(this,M).has(r)&&(i(this,M).delete(r),i(this,ce).onVisibilityChange(r,!1))}};function ci(t){for(let e of t){if(e.type==="attributes"&&e.attributeName===ue)return!0;for(let n of e.addedNodes)if(Bn(n))return!0;for(let n of e.removedNodes)if(Bn(n))return!0}return!1}function Bn(t){if(t.nodeType!==Node.ELEMENT_NODE)return!1;let e=t;return e.hasAttribute(ue)?!0:e.querySelector(`[${ue}]`)!==null}var fi={basic:1,"schema-json":2,"preview-token":3,"nested-arrays":4,"recursive-diffs":4};function Bt(t){let e=typeof t=="number"&&Number.isFinite(t)&&t>=1?Math.floor(t):void 0,r=Math.min(4,e??1),o=new Set;for(let[s,a]of Object.entries(fi))r>=a&&o.add(s);return{ours:4,...e!==void 0?{theirs:e}:{theirs:void 0},negotiated:r,capabilities:o}}var Be,x,ve,pe,je,Se,Gn,Wn,He=class{constructor(e,n){l(this,Se);l(this,Be);l(this,x);l(this,ve);l(this,pe,!1);l(this,je,Promise.resolve());d(this,Be,e),d(this,x,n),d(this,ve,r=>{f(this,Se,Gn).call(this,r)})}attach(e=window){i(this,pe)||(e.addEventListener("message",i(this,ve)),d(this,pe,!0))}detach(e=window){i(this,pe)&&(e.removeEventListener("message",i(this,ve)),d(this,pe,!1))}static sendReady(e,n){if(e.length===0||n.length===0)return;let r={type:"payload-live-preview",ready:!0,protocolVersion:4};for(let o of e)for(let s of n)try{o.postMessage(r,s)}catch{}}};Be=new WeakMap,x=new WeakMap,ve=new WeakMap,pe=new WeakMap,je=new WeakMap,Se=new WeakSet,Gn=function(e){let n=e.origin;if(!i(this,Be).call(this,n)){i(this,x).onInvalid?.("origin",n);return}let r=e.data;if(!pi(r)){i(this,x).onInvalid?.("shape",n);return}switch(r.type){case"payload-live-preview":if(!mi(r)){i(this,x).onInvalid?.("shape",n);return}f(this,Se,Wn).call(this,r,n);return;case"payload-document-event":i(this,x).onDocumentEvent(r,n);return;default:i(this,x).onInvalid?.("type",n)}},Wn=function(e,n){let r=i(this,x).validateToken;if(r===void 0){i(this,x).onUpdate(e,n);return}if(e.ready===!0&&e.data===void 0){i(this,x).onUpdate(e,n);return}let o;try{o=r(e.previewToken,n)}catch{i(this,x).onInvalid?.("token",n);return}if(typeof o=="boolean"){o?i(this,x).onUpdate(e,n):i(this,x).onInvalid?.("token",n);return}d(this,je,i(this,je).then(async()=>{let s;try{s=await o}catch{i(this,x).onInvalid?.("token",n);return}s?i(this,x).onUpdate(e,n):i(this,x).onInvalid?.("token",n)}))};function pi(t){return typeof t!="object"||t===null||!("type"in t)?!1:typeof t.type=="string"}function mi(t){let e=t;return!(e.data!==void 0&&!hi(e.data)||e.fieldSchemaJSON!==void 0&&!Array.isArray(e.fieldSchemaJSON)||e.globalSlug!==void 0&&typeof e.globalSlug!="string"||e.collectionSlug!==void 0&&typeof e.collectionSlug!="string"||e.locale!==void 0&&typeof e.locale!="string"||e.ready!==void 0&&typeof e.ready!="boolean"||e.previewToken!==void 0&&typeof e.previewToken!="string"||e.protocolVersion!==void 0&&typeof e.protocolVersion!="number")}function hi(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}var Ee,Ve,C,ze,St=class{constructor(e){l(this,Ee);l(this,Ve);l(this,C,null);l(this,ze,0);d(this,Ee,e.timeoutMs??0),d(this,Ve,e.onTimeout)}kick(){d(this,ze,Date.now()),!(i(this,Ee)<=0)&&(i(this,C)!==null&&clearTimeout(i(this,C)),d(this,C,setTimeout(()=>{d(this,C,null),i(this,Ve).call(this)},i(this,Ee))))}stop(){i(this,C)!==null&&(clearTimeout(i(this,C)),d(this,C,null))}get lastKickAt(){return i(this,ze)}get pending(){return i(this,C)!==null}};Ee=new WeakMap,Ve=new WeakMap,C=new WeakMap,ze=new WeakMap;var me,Ge,ke,vt,Et=class{constructor(e){l(this,ke);l(this,me,"disconnected");l(this,Ge);d(this,Ge,e)}get status(){return i(this,me)}markConnected(){return f(this,ke,vt).call(this,"connected")}markConnecting(){return f(this,ke,vt).call(this,"connecting")}markDisconnected(){return f(this,ke,vt).call(this,"disconnected")}};me=new WeakMap,Ge=new WeakMap,ke=new WeakSet,vt=function(e){if(i(this,me)===e)return!1;let n=i(this,me);return d(this,me,e),i(this,Ge).call(this,e,n),!0};var yi=()=>{},We,Ye,qe,Ke,he,q,kt=class{constructor(e){l(this,We);l(this,Ye);l(this,qe);l(this,Ke);l(this,he);l(this,q,null);d(this,We,e.serverURL.replace(/\\/+$/,""));let n=e.apiRoute??"/api";d(this,Ye,n.startsWith("/")?n:`/${n}`),d(this,qe,e.depth??1),d(this,Ke,e.fetchFn),d(this,he,e.log??yi)}canMerge(e){if(e.globalSlug!==void 0&&e.globalSlug!=="")return!0;if(e.collectionSlug===void 0||e.collectionSlug==="")return!1;let n=e.data.id;return typeof n=="string"||typeof n=="number"}async merge(e){if(!this.canMerge(e))return{status:"unavailable"};let n=i(this,Ke)??(typeof fetch=="function"?fetch:void 0);if(n===void 0)return{status:"unavailable"};i(this,q)?.abort();let r=new AbortController;d(this,q,r);let o=e.globalSlug!==void 0&&e.globalSlug!==""?`globals/${e.globalSlug}`:`${e.collectionSlug}/${String(e.data.id)}`,s=`${i(this,We)}${i(this,Ye)}/${encodeURI(o)}`;try{let a=await n(s,{method:"POST",credentials:"include",headers:{"Content-Type":"application/json","X-Payload-HTTP-Method-Override":"GET"},body:JSON.stringify({data:e.data,depth:i(this,qe),flattenLocales:!1,...e.locale!==void 0?{locale:e.locale}:{}}),signal:r.signal});if(!a.ok)return i(this,he).call(this,"merge fetch failed",a.status,s),{status:"unavailable"};let u=await a.json();return u===null||typeof u!="object"||Array.isArray(u)?(i(this,he).call(this,"merge fetch returned non-object",s),{status:"unavailable"}):{status:"merged",doc:u}}catch(a){return r.signal.aborted?{status:"superseded"}:(i(this,he).call(this,"merge fetch error",a),{status:"unavailable"})}finally{i(this,q)===r&&d(this,q,null)}}destroy(){i(this,q)?.abort(),d(this,q,null)}};We=new WeakMap,Ye=new WeakMap,qe=new WeakMap,Ke=new WeakMap,he=new WeakMap,q=new WeakMap;var gi=new Set(["http:","https:","mailto:","tel:"]),bi=/^\\s*(?:javascript|data|vbscript|file|blob|about)\\s*:/i,Ri=/^(?:\\.{1,2}\\/|[a-zA-Z0-9_-]+\\/?)/;function b(t){if(typeof t!="string"||t.length===0)return!1;let e=t.trim();if(e.length===0||bi.test(e))return!1;if(e.startsWith("#")||e.startsWith("?")||e.startsWith("//")||e.startsWith("/"))return!0;try{let n=new URL(e);return gi.has(n.protocol)}catch{return Ri.test(e)}}function At(t){if(!b(t))return!1;let e=t.trim();return/^https?:\\/\\//i.test(e)||/^\\/\\/[^/]/.test(e)}var Ti=new Set(["style","srcdoc","formaction","form","id","name","is","srcset","imagesrcset"]),wi=new Set(["href","src","poster","cite","action","xlink:href","data"]);function Yn(t,e,n){let r=e.toLowerCase().trim();if(r.length===0||r.startsWith("on")||Ti.has(r))return"blocked";if(n==null)return t.removeAttribute(r),"applied";if(typeof n!="string"&&typeof n!="number"&&typeof n!="boolean")return"blocked";let o=String(n);return wi.has(r)&&!b(o)?"blocked":(t.setAttribute(r,o),"applied")}var Ae,Je,Xe,Ze,Qe,et,tt,nt,Le,$,K,k,U,J,qn,Kn,jt,Lt=class{constructor(e,n){l(this,J);l(this,Ae);l(this,Je);l(this,Xe);l(this,Ze);l(this,Qe);l(this,et);l(this,tt);l(this,nt);l(this,Le);l(this,$,new Map);l(this,K,new Map);l(this,k,null);l(this,U,null);d(this,Ae,e),d(this,Je,n.debounceMs??50),d(this,Xe,n.isVisible),d(this,Ze,n.visibilityGateThreshold??50),d(this,Qe,n.disableVisibilityGate??!1),d(this,et,n.getCacheSize),d(this,tt,n.onFlush),d(this,nt,n.scheduleFrame??(typeof requestAnimationFrame=="function"?requestAnimationFrame.bind(globalThis):r=>setTimeout(()=>{r(performance.now())},0))),d(this,Le,n.cancelFrame??(typeof cancelAnimationFrame=="function"?cancelAnimationFrame.bind(globalThis):r=>{clearTimeout(r)}))}schedule(e){let n=i(this,$).get(e.target.element);n?(n.value=e.value,n.allFields=e.allFields):i(this,$).set(e.target.element,{target:e.target,value:e.value,allFields:e.allFields}),f(this,J,qn).call(this)}flushNow(){return i(this,k)!==null&&(clearTimeout(i(this,k)),d(this,k,null)),f(this,J,jt).call(this)}notifyVisible(e){let n=i(this,K).get(e);n&&(i(this,K).delete(e),i(this,Ae).call(this,n))}forget(e){i(this,$).delete(e),i(this,K).delete(e)}destroy(){i(this,k)!==null&&(clearTimeout(i(this,k)),d(this,k,null)),i(this,U)!==null&&(i(this,Le).call(this,i(this,U)),d(this,U,null)),i(this,$).clear(),i(this,K).clear()}get pendingCount(){return i(this,$).size}get replayCount(){return i(this,K).size}};Ae=new WeakMap,Je=new WeakMap,Xe=new WeakMap,Ze=new WeakMap,Qe=new WeakMap,et=new WeakMap,tt=new WeakMap,nt=new WeakMap,Le=new WeakMap,$=new WeakMap,K=new WeakMap,k=new WeakMap,U=new WeakMap,J=new WeakSet,qn=function(){i(this,k)!==null&&clearTimeout(i(this,k)),d(this,k,setTimeout(()=>{d(this,k,null),f(this,J,Kn).call(this)},i(this,Je)))},Kn=function(){i(this,U)!==null&&i(this,Le).call(this,i(this,U)),d(this,U,i(this,nt).call(this,()=>{d(this,U,null),f(this,J,jt).call(this)}))},jt=function(){var u;let e=performance.now(),n=!i(this,Qe)&&i(this,et).call(this)>i(this,Ze),r=i(this,$);d(this,$,new Map);let o=0,s=0;for(let m of r.values()){if(n&&!i(this,Xe).call(this,m.target.element)){i(this,K).set(m.target.element,m),s+=1;continue}i(this,Ae).call(this,m),o+=1}let a={applied:o,deferred:s,durationMs:performance.now()-e};return(u=i(this,tt))==null||u.call(this,a),a};function Me(){let t=xi();if(t!==void 0)return t;let e=vi();return e!==void 0?e:"en"}function xi(){if(typeof document>"u")return;let t=document.documentElement.getAttribute("lang");return t===null||t.length===0?void 0:t}function vi(){if(typeof navigator>"u")return;let t=navigator.language;return typeof t=="string"&&t.length>0?t:void 0}var Jn="payload-live-preview-a11y",Si=1500,Ei=["position:absolute","width:1px","height:1px","padding:0","margin:-1px","overflow:hidden","clip:rect(0 0 0 0)","clip-path:inset(50%)","white-space:nowrap","border:0"].join(";"),Xn={connected:"Live preview connected",disconnected:"Live preview disconnected",updated:t=>`${String(t)} ${t===1?"change":"changes"} applied`},ki={en:Xn,de:{connected:"Vorschau verbunden",disconnected:"Vorschau getrennt",updated:t=>`${String(t)} ${t===1?"\\xC4nderung":"\\xC4nderungen"} angewendet`}};function Ai(t){let e=t.split(/[-_]/)[0]?.toLowerCase()??"en";return ki[e]??Xn}var I,ye,H,oe,Zn,Mt,rt=class{constructor(e=Me()){l(this,oe);l(this,I,null);l(this,ye);l(this,H,null);d(this,ye,Ai(e))}announceConnected(){f(this,oe,Mt).call(this,i(this,ye).connected)}announceDisconnected(){f(this,oe,Mt).call(this,i(this,ye).disconnected)}announceUpdate(e){e<=0||f(this,oe,Mt).call(this,i(this,ye).updated(e))}detach(){i(this,H)!==null&&(clearTimeout(i(this,H)),d(this,H,null)),i(this,I)?.parentNode&&i(this,I).parentNode.removeChild(i(this,I))}};I=new WeakMap,ye=new WeakMap,H=new WeakMap,oe=new WeakSet,Zn=function(){if(i(this,I)!==null&&i(this,I).isConnected)return i(this,I);if(typeof document>"u"||document.body===null)return null;let e=document.getElementById(Jn);return e||(e=document.createElement("div"),e.id=Jn,e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),e.setAttribute("style",Ei),document.body.appendChild(e)),d(this,I,e),e},Mt=function(e){let n=f(this,oe,Zn).call(this);n&&(n.textContent=e,i(this,H)!==null&&clearTimeout(i(this,H)),d(this,H,setTimeout(()=>{d(this,H,null),i(this,I)&&(i(this,I).textContent="")},Si)))};var Li=new Set(["tabs","row","collapsible"]);function Vt(t,e=""){let n=new Map;return it(t,e,n),n}function it(t,e,n){for(let r of t){if(Li.has(r.type)){r.fields&&it(r.fields,e,n);continue}if(r.type==="group"){let s=e===""?r.name:`${e}.${r.name}`;n.set(s,r),r.fields&&it(r.fields,s,n);continue}let o=e===""?r.name:`${e}.${r.name}`;if(n.set(o,r),r.type==="array"&&r.fields)it(r.fields,`${o}.*`,n);else if(r.type==="blocks"&&r.blocks)for(let s of r.blocks)it(s.fields,`${o}.*.${s.slug}`,n)}}function zt(t,e){if(t.has(e))return t.get(e);let n=e.replace(/\\.\\d+(?=\\.|$)/g,".*");if(t.has(n))return t.get(n)}function Gt(t){if(typeof t!="object"||t===null)return;let e=t.id;if(typeof e=="string"||typeof e=="number")return e}function Qn(t){if(typeof t!="object"||t===null)return;let e=t.blockType;return typeof e=="string"?e:void 0}function ot(t,e){return e.every(r=>Gt(r)!==void 0)?Mi(t,e):Ii(t,e)}function Mi(t,e){let n=[],r=new Map;for(let s=0;s<t.length;s+=1){let a=Gt(t[s]);a!==void 0&&r.set(a,s)}let o=new Set;for(let s=0;s<e.length;s+=1){let a=e[s],u=Gt(a);if(u===void 0){n.push({kind:"insert",index:s,value:a});continue}let m=r.get(u);if(m===void 0){n.push({kind:"insert",index:s,value:a});continue}o.add(m);let T=t[m];if(Qn(T)!==Qn(a)){n.push({kind:"replace",index:s,oldValue:T,value:a});continue}m!==s&&n.push({kind:"move",from:m,to:s,value:a}),er(T,a)||n.push({kind:"update",index:s,value:a})}for(let s=0;s<t.length;s+=1)o.has(s)||n.push({kind:"remove",index:s,value:t[s]});return n}function Ii(t,e){let n=[],r=Math.min(t.length,e.length);for(let o=0;o<r;o+=1)er(t[o],e[o])||n.push({kind:"update",index:o,value:e[o]});if(e.length>t.length)for(let o=t.length;o<e.length;o+=1)n.push({kind:"insert",index:o,value:e[o]});if(t.length>e.length)for(let o=e.length;o<t.length;o+=1)n.push({kind:"remove",index:o,value:t[o]});return n}function er(t,e){if(Object.is(t,e))return!0;if(typeof t!="object"||typeof e!="object"||t===null||e===null)return!1;let n=t,r=e,o=Object.keys(n),s=Object.keys(r);if(o.length!==s.length)return!1;for(let a of o)if(!Object.is(n[a],r[a]))return!1;return!0}var tr={text:"text",textarea:"textarea",richText:"richText",email:"email",number:"number",checkbox:"checkbox",date:"date",select:"select",radio:"radio",array:"array",blocks:"blocks",group:"text",tabs:"text",row:"text",collapsible:"text",relationship:"relationship",upload:"upload",point:"text",json:"text",code:"text",ui:"text"};function Wt(t){if(Object.prototype.hasOwnProperty.call(tr,t))return tr[t]}var Ni=[0,500,1e3,2e3],S,A,X,se,Ie,Z,Ne,st,B,ge,be,at,O,_e,Ce,Q,Re,N,Oe,Pe,Fe,Te,ae,dt,lt,h,Yt,qt,Kt,rr,ir,or,sr,ar,dr,lr,ur,cr,fr,pr,It=class{constructor(e){l(this,h);l(this,S);l(this,A);l(this,X);l(this,se);l(this,Ie);l(this,Z);l(this,Ne);l(this,st);l(this,B);l(this,ge);l(this,be);l(this,at);l(this,O);l(this,_e);l(this,Ce,[]);l(this,Q);l(this,Re);l(this,N);l(this,Oe);l(this,Pe);l(this,Fe,Bt(void 0));l(this,Te,!1);l(this,ae,null);l(this,dt,0);l(this,lt,new Set);d(this,S,e.emitter),d(this,st,e.renderers),d(this,B,e.root??(typeof document<"u"?document:null)),d(this,ge,e.readyTargets),d(this,be,e.sendReady??Fi),d(this,at,e.onHeartbeatTimeout),d(this,O,e.log??Ci),d(this,_e,e.warn??Pi),d(this,Q,_i(e)),d(this,Re,e.dataMerge!==void 0?new kt({serverURL:e.dataMerge.serverURL,...e.dataMerge.apiRoute!==void 0?{apiRoute:e.dataMerge.apiRoute}:{},...e.dataMerge.depth!==void 0?{depth:e.dataMerge.depth}:{},...e.dataMerge.fetchFn!==void 0?{fetchFn:e.dataMerge.fetchFn}:{},log:(...n)=>{i(this,O).call(this,...n)}}):null),d(this,A,new wt),d(this,X,new xt({onStructuralChange:()=>{f(this,h,Kt).call(this)},onVisibilityChange:(n,r)=>{r&&i(this,se).notifyVisible(n)}},{...e.intersectionRootMargin!==void 0?{intersectionRootMargin:e.intersectionRootMargin}:{}})),d(this,se,new Lt(n=>{f(this,h,ur).call(this,n)},{...e.debounceMs!==void 0?{debounceMs:e.debounceMs}:{},...e.disableVisibilityGate!==void 0?{disableVisibilityGate:e.disableVisibilityGate}:{},...e.visibilityGateThreshold!==void 0?{visibilityGateThreshold:e.visibilityGateThreshold}:{},isVisible:n=>i(this,X).isVisible(n),getCacheSize:()=>i(this,A).elementCount,onFlush:n=>{f(this,h,fr).call(this,n)}})),d(this,Ie,new He(e.originMatcher,{onUpdate:(n,r)=>{f(this,h,or).call(this,n,r)},onDocumentEvent:(n,r)=>{f(this,h,ar).call(this,n,r)},onInvalid:(n,r)=>{if(n==="token"){let o=new Error(`Preview token rejected (origin: ${r})`);i(this,S).emit("error",{error:o,context:"token"})}i(this,O).call(this,"message rejected:",n,r)},...e.validateToken!==void 0?{validateToken:e.validateToken}:{}})),d(this,Z,new Et((n,r)=>{i(this,O).call(this,"connection",r,"\\u2192",n)})),d(this,Ne,new St({...e.heartbeatMs!==void 0?{timeoutMs:e.heartbeatMs}:{},onTimeout:()=>{f(this,h,pr).call(this)}}))}start(){if(i(this,Te))return!1;d(this,Te,!0);let e=i(this,B);if(e instanceof Document&&e.readyState==="loading"){let n=()=>{d(this,ae,null),f(this,h,Yt).call(this)};return d(this,ae,n),e.addEventListener("DOMContentLoaded",n,{once:!0}),!0}return f(this,h,Yt).call(this),!0}destroy(){if(!i(this,Te))return;if(d(this,Te,!1),i(this,ae)!==null){let n=i(this,B);n instanceof Document&&n.removeEventListener("DOMContentLoaded",i(this,ae)),d(this,ae,null),i(this,S).emit("destroy",{timestamp:Date.now()});return}for(let n of i(this,Ce))clearTimeout(n);i(this,Ce).length=0,i(this,Ne).stop(),i(this,Ie).detach(),i(this,X).stop(),i(this,se).destroy(),i(this,Re)?.destroy(),i(this,A).clear();let e=i(this,Z).status==="connected";i(this,Z).markDisconnected(),e&&(i(this,Q)?.announceDisconnected(),i(this,S).emit("disconnect",{reason:"destroy",timestamp:Date.now()})),i(this,Q)?.detach(),i(this,S).emit("destroy",{timestamp:Date.now()})}refreshCache(){f(this,h,Kt).call(this)}get status(){return i(this,Z).status}get cache(){return i(this,A)}get updateCount(){return i(this,dt)}get protocol(){return i(this,Fe)}};S=new WeakMap,A=new WeakMap,X=new WeakMap,se=new WeakMap,Ie=new WeakMap,Z=new WeakMap,Ne=new WeakMap,st=new WeakMap,B=new WeakMap,ge=new WeakMap,be=new WeakMap,at=new WeakMap,O=new WeakMap,_e=new WeakMap,Ce=new WeakMap,Q=new WeakMap,Re=new WeakMap,N=new WeakMap,Oe=new WeakMap,Pe=new WeakMap,Fe=new WeakMap,Te=new WeakMap,ae=new WeakMap,dt=new WeakMap,lt=new WeakMap,h=new WeakSet,Yt=function(){f(this,h,qt).call(this),i(this,X).start(i(this,B)instanceof Document?i(this,B).body:i(this,B)),i(this,Ie).attach(),f(this,h,rr).call(this);for(let e of Ni)if(e===0)i(this,be).call(this,i(this,ge));else{let n=setTimeout(()=>{i(this,be).call(this,i(this,ge))},e);i(this,Ce).push(n)}},qt=function(){let e=i(this,A).buildFromRoot(i(this,B));i(this,O).call(this,"cache built",e),i(this,S).emit("cacheRefresh",e);for(let n of i(this,A).values())i(this,X).observeElement(n.element)},Kt=function(){for(let e of i(this,A).values())i(this,X).unobserveElement(e.element),i(this,se).forget(e.element);f(this,h,qt).call(this)},rr=function(){i(this,S).emit("init",{timestamp:Date.now()})},ir=function(e){let n=Bt(e);n.negotiated!==i(this,Fe).negotiated&&(d(this,Fe,n),i(this,O).call(this,"protocol negotiated",`ours=${4}`,`theirs=${e}`,`negotiated=${n.negotiated}`))},or=function(e,n){i(this,Ne).kick(),e.protocolVersion!==void 0&&f(this,h,ir).call(this,e.protocolVersion),e.data!==void 0&&(i(this,Z).markConnected()&&(i(this,Q)?.announceConnected(),i(this,S).emit("connect",{origin:n,timestamp:Date.now()})),d(this,dt,i(this,dt)+1),e.locale!==void 0&&d(this,N,e.locale),e.fieldSchemaJSON!==void 0&&(d(this,Oe,e.fieldSchemaJSON),d(this,Pe,Vt(e.fieldSchemaJSON))),f(this,h,sr).call(this,e).then(r=>{if(r===null)return;let o={fields:r,...i(this,Oe)!==void 0?{schema:i(this,Oe)}:{},...e.globalSlug!==void 0?{globalSlug:e.globalSlug}:{},...e.collectionSlug!==void 0?{collectionSlug:e.collectionSlug}:{},...i(this,N)!==void 0?{locale:i(this,N)}:{}},s=!1;i(this,S).emit("beforeUpdate",{data:o,cancel:()=>{s=!0}}).then(()=>{s||f(this,h,dr).call(this,o)})}))},sr=async function(e){let n=e.data??{};if(i(this,Re)===null)return n;let r=await i(this,Re).merge({collectionSlug:e.collectionSlug,globalSlug:e.globalSlug,data:n,locale:i(this,N)});return r.status==="merged"?r.doc:r.status==="superseded"?null:n},ar=function(e,n){i(this,S).emit("documentSave",{timestamp:Date.now()})},dr=function(e){for(let[n,r]of i(this,A).entries()){let o=Hi(e.fields,n,i(this,N));if(o!==void 0)for(let s of r){let a={target:s,value:o,allFields:e.fields};i(this,se).schedule(a)}}f(this,h,lr).call(this,e.fields)},lr=function(e){if(i(this,A).elementCount===0)return;let n=new Set;for(let[r]of i(this,A).entries())n.add(r);for(let[r,o]of Object.entries(e)){if(i(this,lt).has(r)||Di.has(r)||!$i(o))continue;let s=Ui(r,i(this,N));n.has(r)||n.has(s)||(i(this,lt).add(r),i(this,_e).call(this,`[live-preview] update arrived for field "${r}" but no <\\u2026 data-payload-field="${s}"> element exists on this page. Render the binding anchor unconditionally in your template so live edits to an initially-empty field have somewhere to land.`))}},ur=function(e){let n=i(this,Pe)!==void 0?zt(i(this,Pe),e.target.fieldName):void 0,r=f(this,h,cr).call(this,e.target,n?.type);r==="text"&&e.target.explicitFieldType!==!0&&Oi(e.value)&&(r="richText");let o=i(this,st)[r],s=Bi(e.target.element),a={allFields:e.allFields,locale:i(this,N),schema:n};try{e.target.targetAttribute!==void 0?Yn(e.target.element,e.target.targetAttribute,e.value)==="blocked"&&i(this,_e).call(this,`[live-preview] refused to write field "${e.target.fieldName}" into attribute "${e.target.targetAttribute}" (unsafe attribute or value)`):o?o.render(e.target,e.value,a):i(this,O).call(this,"no renderer for",r)}catch(u){let m=u instanceof Error?u:new Error(String(u));i(this,S).emit("error",{error:m,context:"renderer"});return}i(this,S).emit("elementUpdate",{element:e.target.element,fieldName:e.target.fieldName,previousValue:s,nextValue:e.value})},cr=function(e,n){if(e.explicitFieldType)return e.fieldType;if(n!==void 0){let r=Wt(n);if(r!==void 0)return r}return e.fieldType},fr=function(e){e.applied===0&&e.deferred===0||(e.applied>0&&i(this,Q)?.announceUpdate(e.applied),i(this,S).emit("afterUpdate",{data:{fields:{},...i(this,N)!==void 0?{locale:i(this,N)}:{}},updatedCount:e.applied,durationMs:e.durationMs}))},pr=function(){var e;i(this,Z).markDisconnected()&&(i(this,Q)?.announceDisconnected(),i(this,S).emit("disconnect",{reason:"timeout",timestamp:Date.now()}));try{(e=i(this,at))==null||e.call(this)}catch(n){i(this,O).call(this,"onHeartbeatTimeout hook threw:",n)}i(this,be).call(this,i(this,ge))};function _i(t){return t.enableA11y===!1?null:t.a11yLocale!==void 0?new rt(t.a11yLocale):new rt}function Ci(){}function Oi(t){if(typeof t!="object"||t===null||!("root"in t))return!1;let e=t.root;return typeof e!="object"||e===null?!1:Array.isArray(e.children)}function Pi(...t){typeof console<"u"&&typeof console.warn=="function"&&console.warn(...t)}function Fi(t){if(typeof window>"u")return;let e=[];window.parent!==window&&e.push(window.parent),window.opener instanceof Window&&e.push(window.opener),He.sendReady(e,t)}var mr=new Set(["__proto__","prototype","constructor"]),Di=new Set(["id","_id","createdAt","updatedAt","createdBy","updatedBy","_status","globalType","collection","locale","localized"]);function $i(t){return t==null?!1:typeof t=="string"||typeof t=="number"||typeof t=="boolean"||typeof t=="bigint"}function Ui(t,e){if(!e)return t;let n=`_${e}`;return t.endsWith(n)?t.slice(0,-n.length):t}function Hi(t,e,n){let r=nr(t,e);if(r!==void 0)return r;if(e.includes(".")){let o=e.split("."),s=t;for(let a of o){if(mr.has(a)||s===null||typeof s!="object")return;s=s[a]}if(s!==void 0)return s}if(n!==void 0){let o=nr(t,`${e}_${n}`);if(o!==void 0)return o}}function nr(t,e){if(!mr.has(e)&&Object.prototype.hasOwnProperty.call(t,e))return t[e]}function Bi(t){return t.tagName==="INPUT"||t.tagName==="TEXTAREA"?t.value:t.tagName==="IMG"?t.src:t.textContent}function ut(){if(typeof window>"u")return!1;try{return window.self!==window.top}catch{return!0}}function Jt(){return typeof window>"u"?!1:window.opener!=null}function Xt(){return ut()||Jt()}function hr(){let t=ji();if(t!==void 0)return t!=="production";let e=Vi();if(e!==void 0)return e;if(typeof window<"u"){let n=window.location.hostname;if(n==="localhost"||n==="127.0.0.1")return!0}return!1}function yr(t){if(typeof process<"u"){let n=process.env[t];if(typeof n=="string"&&n.length>0)return n}let e=void 0;if(e){let n=e[t];if(typeof n=="string"&&n.length>0)return n}}function ji(){if(typeof process>"u")return;let t="production";return typeof t=="string"?t:void 0}function Vi(){let t=void 0;if(!t)return;let e=t.DEV;return typeof e=="boolean"?e:void 0}var zi=/^https?:\\/\\/(localhost|127\\.0\\.0\\.1)(?::\\d+)?$/i,Gi=/^https?:\\/\\/[^/?#\\s]+$/i,Wi=["PAYLOAD_ADMIN_ORIGIN","PUBLIC_PAYLOAD_ADMIN_ORIGIN","NEXT_PUBLIC_PAYLOAD_ADMIN_ORIGIN"],j,V,de,ct,P,Nt=class{constructor(e={}){l(this,j);l(this,V);l(this,de);l(this,ct);l(this,P);let n=new Set;for(let a of e.additionalOrigins??[]){let u=gr(a);u!==void 0&&n.add(u)}for(let a of Wi){let u=yr(a);if(u!==void 0)for(let m of u.split(",")){let T=gr(m);T!==void 0&&n.add(T)}}d(this,j,n);let r=e.enableReferrerDetection??!0,o;if(r){let a=e.referrer??(typeof document<"u"?document.referrer:"");if(a.length>0)try{let u=new URL(a).origin;u&&u!=="null"&&(o=u)}catch{}}d(this,V,o),d(this,ct,o!==void 0);let s=(e.enableLocalhostMatching??!0)&&(e.forceDevMode??hr());d(this,de,s)}matches(e){return e.length===0||e==="null"?!1:i(this,P)!==void 0?e===i(this,P):!!(i(this,j).has(e)||i(this,j).size===0&&i(this,V)!==void 0&&e===i(this,V)||i(this,de)&&zi.test(e))}lockOrigin(e){return this.matches(e)?(d(this,P,e),!0):!1}unlockOrigin(){let e=i(this,P);return d(this,P,void 0),e}get lockedOrigin(){return i(this,P)}enumerate(){if(i(this,P)!==void 0)return[i(this,P)];let e=new Set(i(this,j));if(i(this,j).size===0&&i(this,V)!==void 0&&e.add(i(this,V)),i(this,de))for(let n of Yi)e.add(`http://localhost:${String(n)}`),e.add(`http://127.0.0.1:${String(n)}`);return[...e]}get referrerWasAvailable(){return i(this,ct)}get isProductionUnconfigured(){return!(!ut()||i(this,j).size>0||i(this,de)||i(this,V)!==void 0)}get isReferrerOnlyTrust(){return i(this,j).size>0||i(this,de)?!1:i(this,V)!==void 0}};j=new WeakMap,V=new WeakMap,de=new WeakMap,ct=new WeakMap,P=new WeakMap;var Yi=[3e3,3001,3333,4e3,4321,5e3,5173,5174,8e3,8080,8888,9e3];function gr(t){let e=t.trim();if(e.length!==0)try{let n=new URL(e);return n.protocol!=="http:"&&n.protocol!=="https:"||!Gi.test(n.origin)?void 0:n.origin}catch{return}}var br={name:"payload-live-preview",version:"1.0.2",description:"Live preview for Payload CMS in Astro and any SSR/static frontend (SvelteKit, Nuxt, Next.js, plain HTML). Patches the DOM live, no rebuild.",author:"relative23",license:"MIT",type:"module",main:"./dist/index.cjs",module:"./dist/index.js",types:"./dist/index.d.ts",exports:{".":{import:{types:"./dist/index.d.ts",default:"./dist/index.js"},require:{types:"./dist/index.d.cts",default:"./dist/index.cjs"}},"./core":{import:{types:"./dist/core.d.ts",default:"./dist/core.js"},require:{types:"./dist/core.d.cts",default:"./dist/core.cjs"}},"./astro":{import:{types:"./dist/adapters/astro/index.d.ts",default:"./dist/adapters/astro/index.js"}},"./nextjs":{import:{types:"./dist/adapters/nextjs/index.d.ts",default:"./dist/adapters/nextjs/index.js"}},"./sveltekit":{import:{types:"./dist/adapters/sveltekit/index.d.ts",default:"./dist/adapters/sveltekit/index.js"}},"./nuxt":{import:{types:"./dist/adapters/nuxt/index.d.ts",default:"./dist/adapters/nuxt/index.js"}},"./codegen":{import:{types:"./dist/codegen.d.ts",default:"./dist/codegen.js"},require:{types:"./dist/codegen.d.cts",default:"./dist/codegen.cjs"}},"./codegen/astro":{import:{types:"./dist/codegen-astro.d.ts",default:"./dist/codegen-astro.js"}},"./payload":{import:{types:"./dist/payload.d.ts",default:"./dist/payload.js"},require:{types:"./dist/payload.d.cts",default:"./dist/payload.cjs"}},"./astro/RichText.astro":"./dist/adapters/astro/RichText.astro","./astro/middleware-entry":{import:{types:"./dist/adapters/astro/middleware-entry.d.ts",default:"./dist/adapters/astro/middleware-entry.js"}}},bin:{"pll-codegen":"./dist/codegen-cli.js"},files:["dist","README.md","LICENSE"],sideEffects:!1,scripts:{prepare:"npm run build:runtime","build:runtime":"tsx scripts/build-runtime.ts",build:"npm run build:runtime && tsup && npm run build:assets","build:assets":`node -e "require(\'node:fs\').copyFileSync(\'src/adapters/astro/RichText.astro\',\'dist/adapters/astro/RichText.astro\')"`,dev:"tsup --watch",test:"vitest run","test:watch":"vitest","test:unit":"vitest run tests/unit","test:integration":"vitest run tests/integration","test:e2e":"playwright test","test:bench":"vitest bench tests/benchmarks","test:coverage":"vitest run --coverage",typecheck:"tsc --noEmit",lint:"eslint .","lint:fix":"eslint . --fix",format:\'prettier --write "src/**/*.ts" "tests/**/*.ts"\',"format:check":\'prettier --check "src/**/*.ts" "tests/**/*.ts"\',check:"npm run typecheck && npm run lint && npm run test",prepublishOnly:"npm run check && npm run build",changeset:"changeset",version:"changeset version",release:"npm run build && changeset publish"},devDependencies:{"@changesets/cli":"^2.31.0","@eslint/js":"^10.0.1","@playwright/test":"^1.61.1","@types/node":"^22.20.1","@vitest/coverage-v8":"^4.1.10",esbuild:"^0.28.1",eslint:"^10.7.0",globals:"^17.7.0",jsdom:"^29.1.1",prettier:"^3.9.5","ts-morph":"^28.0.0",tsup:"^8.5.1",tsx:"^4.23.0",typescript:"^5.9.3","typescript-eslint":"^8.63.0",vitest:"^4.1.10"},keywords:["astro","astro-payload","astro-cms","astro-integration","astro-live-preview","payload","payload-cms","payload-live-preview","payload-plugin","live-preview","preview","cms","headless","headless-cms","lexical","sveltekit","nuxt","nextjs","ssr","framework-agnostic"],peerDependencies:{astro:">=4.0.0 <8.0.0","ts-morph":"^28.0.0"},peerDependenciesMeta:{astro:{optional:!0},"ts-morph":{optional:!0}},engines:{node:">=20.19.0"},publishConfig:{access:"public",provenance:!0},repository:{type:"git",url:"https://github.com/relative23/payload-live-preview.git"},bugs:{url:"https://github.com/relative23/payload-live-preview/issues"},homepage:"https://github.com/relative23/payload-live-preview#readme"};var Rr=br.version;var Zt=new Set(["p","br","strong","b","em","i","u","s","strike","mark","small","h1","h2","h3","h4","h5","h6","ul","ol","li","dl","dt","dd","blockquote","code","pre","kbd","samp","var","a","span","div","section","article","aside","header","footer","nav","figure","figcaption","img","picture","source","audio","video","sub","sup","hr","time","abbr","cite","q","table","thead","tbody","tfoot","tr","th","td","caption","colgroup","col"]),wr=new Set(["script","style","iframe","object","embed","link","meta","base","form","input","button","select","textarea","svg","math","template","frame","frameset","noframes","noscript"]),xr=new Set(["id","class","lang","dir","title","role","tabindex"]),Ki="aria-",Ji="data-",Qt={a:new Set(["href","target","rel","download","hreflang","type"]),img:new Set(["src","srcset","sizes","alt","width","height","loading","decoding"]),picture:new Set([]),source:new Set(["src","srcset","sizes","type","media"]),audio:new Set(["src","controls","autoplay","loop","muted","preload"]),video:new Set(["src","poster","controls","autoplay","loop","muted","preload","width","height","playsinline"]),time:new Set(["datetime"]),abbr:new Set(["title"]),q:new Set(["cite"]),blockquote:new Set(["cite"]),table:new Set(["summary"]),th:new Set(["colspan","rowspan","scope","headers","abbr"]),td:new Set(["colspan","rowspan","headers"]),col:new Set(["span"]),colgroup:new Set(["span"]),ol:new Set(["start","reversed","type"]),li:new Set(["value"]),code:new Set(["class"]),pre:new Set(["class"])},vr=new Set(["href","src","cite","poster"]),en=class extends Error{constructor(){super(...arguments);$n(this,"name","SanitizerEnvironmentError")}};function Xi(t){if(!t){let r=new Map;for(let[o,s]of Object.entries(Qt))r.set(o,s);return{allowedTags:Zt,attrByTag:r}}let e=new Set(Zt);for(let r of t.additionalAllowedTags??[])e.add(r);let n=new Map;for(let[r,o]of Object.entries(Qt))n.set(r,o);for(let[r,o]of Object.entries(t.additionalAllowedAttributes??{})){let s=n.get(r),a=new Set(s??[]);for(let u of o)a.add(u);n.set(r,a)}return{allowedTags:e,attrByTag:n}}var Tr;function z(t,e){let n=Sr();if(!n)throw new en("sanitizeHtml requires a DOM. Inject one via setSanitizerDocument() for SSR (linkedom, jsdom, happy-dom, \\u2026) or use the plain-text path on the server.");if(t==="")return"";let r=Xi(e),o=n.createElement("template");return o.innerHTML=t,tn(o.content,r),o.innerHTML}function Sr(){if(Tr)return Tr;if(!(typeof document>"u"))return document}function Er(){return Sr()!==void 0}function tn(t,e){for(let n of Array.from(t.childNodes))n.nodeType===Node.ELEMENT_NODE?Zi(n,e):n.nodeType===Node.COMMENT_NODE&&n.remove()}function Zi(t,e){let n=t.tagName.toLowerCase();if(wr.has(n)){t.remove();return}if(!e.allowedTags.has(n)){tn(t,e);let r=t.parentNode;if(r){for(;t.firstChild;)r.insertBefore(t.firstChild,t);t.remove()}return}Qi(t,n,e),n==="a"&&to(t),tn(t,e)}function Qi(t,e,n){let r=n.attrByTag.get(e);for(let o of Array.from(t.attributes)){let s=o.name.toLowerCase();if(s.startsWith("on")){t.removeAttribute(o.name);continue}if(s==="style"){t.removeAttribute(o.name);continue}if(!(xr.has(s)||s.startsWith(Ki)||s.startsWith(Ji))){if(r?.has(s)){(vr.has(s)&&!b(o.value)||s==="srcset"&&!eo(o.value))&&t.removeAttribute(o.name);continue}t.removeAttribute(o.name)}}}function eo(t){let e=t.split(",");for(let n of e){let r=n.trim();if(r.length===0)continue;let o=r.split(/\\s+/,1)[0];if(o===void 0||o.length===0||!b(o))return!1}return!0}function to(t){let e=t.getAttribute("href");e&&At(e)&&(t.setAttribute("rel","noopener noreferrer"),t.hasAttribute("target")||t.setAttribute("target","_blank"))}var qs=Object.freeze({allowedTags:Zt,removeCompletely:wr,globalAttributes:xr,attributesByTag:Qt,urlAttributes:vr});var kr=new Map;function p(t,e){kr.set(t,e)}function Ar(t){return kr.get(t)}var no={1:"left",2:"center",3:"right",4:"justify"},ro=new Set(["left","center","right","justify","start","end"]);function nn(t){let e=t.format;if(typeof e=="string"&&ro.has(e))return e;if(typeof e=="number"){let n=no[e];if(n!==void 0)return n}}function rn(t){let e=t.indent;return typeof e=="number"&&e>0?e:0}function ee(t){return t.direction==="rtl"?\' dir="rtl"\':t.direction==="ltr"?\' dir="ltr"\':""}function G(t){let e=nn(t),n=rn(t),r=[];return e!==void 0&&r.push(`text-align:${e}`),n>0&&r.push(`padding-inline-start:${String(n*40)}px`),r.length===0?"":` style="${r.join(";")}"`}var io=Object.freeze({"&":"&","<":"<",">":">",\'"\':""","\'":"'","/":"/","`":"`","=":"="}),oo=/[&<>"\'/`=]/g;function y(t){return t===""?"":t.replace(oo,e=>io[e])}function Lr(t){return t.replace(/[\'"()\\\\]/g,"\\\\$&")}var so=Object.freeze({"&":"&","<":"<",">":">",\'"\':""","\'":"'"}),ao=/[&<>"\']/g;function L(t){return t===""?"":t.replace(ao,e=>so[e])}function _t(t){return y(t).replace(/\\r\\n|\\r|\\n/g,"<br>")}var te={BOLD:1,ITALIC:2,STRIKETHROUGH:4,UNDERLINE:8,CODE:16,SUBSCRIPT:32,SUPERSCRIPT:64,HIGHLIGHT:128};var on=t=>{let e=typeof t.text=="string"?t.text:"",n=y(e),r=typeof t.format=="number"?t.format:0;return(r&te.CODE)!==0&&(n=`<code>${n}</code>`),(r&te.BOLD)!==0&&(n=`<strong>${n}</strong>`),(r&te.ITALIC)!==0&&(n=`<em>${n}</em>`),(r&te.UNDERLINE)!==0&&(n=`<u>${n}</u>`),(r&te.STRIKETHROUGH)!==0&&(n=`<s>${n}</s>`),(r&te.SUBSCRIPT)!==0&&(n=`<sub>${n}</sub>`),(r&te.SUPERSCRIPT)!==0&&(n=`<sup>${n}</sup>`),(r&te.HIGHLIGHT)!==0&&(n=`<mark>${n}</mark>`),n};p("text",on);var sn=(t,e)=>{let n=e.renderChildren(t.children??[]);return`<p${ee(t)}${G(t)}>${n}</p>`};p("paragraph",sn);var lo=new Set(["h1","h2","h3","h4","h5","h6"]),an=(t,e)=>{let n=typeof t.tag=="string"?t.tag.toLowerCase():"h2",r=lo.has(n)?n:"h2",o=e.renderChildren(t.children??[]);return`<${r}${ee(t)}${G(t)}>${o}</${r}>`};p("heading",an);var dn=(t,e)=>{let n=typeof t.listType=="string"?t.listType:"bullet",r=n==="number"?"ol":"ul",o=n==="number"&&typeof t.start=="number"&&t.start>1?` start="${String(t.start)}"`:"",s=n==="check"?\' role="list"\':"",a=e.renderChildren(t.children??[]);return`<${r}${ee(t)}${G(t)}${o}${s}>${a}</${r}>`},ln=(t,e)=>{let n=e.renderChildren(t.children??[]);if(typeof t.checked=="boolean")return`<li role="checkbox" aria-checked="${t.checked?"true":"false"}"${G(t)}>${n}</li>`;let r=typeof t.value=="number"?` value="${y(String(t.value))}"`:"";return`<li${ee(t)}${G(t)}${r}>${n}</li>`};p("list",dn);p("listitem",ln);var ft=(t,e)=>{let n=typeof t.url=="string"?t.url:"",r=e.renderChildren(t.children??[]);if(n.length===0||!b(n))return r;let o=At(n)?\' target="_blank" rel="noopener noreferrer"\':uo(t),s=typeof t.title=="string"?` title="${y(t.title)}"`:"";return`<a href="${L(n)}"${o}${s}>${r}</a>`};function uo(t){let e=typeof t.target=="string"?t.target:"";if(e.length===0)return"";let n=y(e);return e==="_blank"?\' target="_blank" rel="noopener noreferrer"\':` target="${n}"`}p("link",ft);p("autolink",ft);var un=(t,e)=>{let n=e.renderChildren(t.children??[]);return`<blockquote${ee(t)}${G(t)}>${n}</blockquote>`};p("quote",un);var cn=t=>{let e=Ir(typeof t.language=="string"?t.language:""),n=Mr(t);return`<pre><code${e===""?"":` class="language-${e}"`}>${y(n)}</code></pre>`},fn=t=>{let e=typeof t.text=="string"?t.text:"";return`<span${typeof t.highlightType=="string"?` class="token-${Ir(t.highlightType)}"`:""}>${y(e)}</span>`};p("code",cn);p("code-highlight",fn);function Mr(t){if(typeof t.text=="string")return t.text;if(!t.children)return"";let e="";for(let n of t.children)e+=Mr(n);return e}function Ir(t){return t.replace(/[^a-zA-Z0-9_-]/g,"")}var pn=()=>"<br>",mn=()=>"<hr>",hn=()=>" ";p("linebreak",pn);p("horizontalrule",mn);p("tab",hn);var yn=t=>{let e=co(t);if(e===void 0)return"";let n=e.url;if(typeof n!="string"||!b(n))return"";let r=typeof e.mimeType=="string"?e.mimeType:"";return r.startsWith("video/")?po(e,n):r.startsWith("audio/")?mo(e,n):r===""||r.startsWith("image/")?fo(e,n):ho(e,n)};p("upload",yn);function co(t){let e=t.value;if(!(typeof e!="object"||e===null))return e}function fo(t,e){let n=typeof t.alt=="string"?y(t.alt):"",r=typeof t.width=="number"?` width="${String(t.width)}"`:"",o=typeof t.height=="number"?` height="${String(t.height)}"`:"";return`<img src="${L(e)}" alt="${n}"${r}${o} loading="lazy" decoding="async">`}function po(t,e){let n=typeof t.width=="number"?` width="${String(t.width)}"`:"",r=typeof t.height=="number"?` height="${String(t.height)}"`:"",o=typeof t.mimeType=="string"?` type="${L(t.mimeType)}"`:"";return`<video controls${n}${r}><source src="${L(e)}"${o}></video>`}function mo(t,e){let n=typeof t.mimeType=="string"?` type="${L(t.mimeType)}"`:"";return`<audio controls><source src="${L(e)}"${n}></audio>`}function ho(t,e){let n=typeof t.filename=="string"?y(t.filename):y(e);return`<a href="${L(e)}" target="_blank" rel="noopener noreferrer">${n}</a>`}var gn=t=>{let e=typeof t.relationTo=="string"?t.relationTo:"",n=yo(t),r=go(n,e),o=y(r),s=e===""?"":` data-relation-to="${y(e)}"`,a=n?.url;return typeof a=="string"&&b(a)?`<a href="${L(a)}"${s}>${o}</a>`:`<span${s}>${o}</span>`};p("relationship",gn);function yo(t){let e=t.value;if(!(typeof e!="object"||e===null))return e}function go(t,e){return t===void 0?e===""?"#":`#${e}`:typeof t.title=="string"&&t.title.length>0?t.title:typeof t.name=="string"&&t.name.length>0?t.name:typeof t.slug=="string"&&t.slug.length>0?t.slug:t.id!==void 0?String(t.id):e===""?"#":`#${e}`}var bo=new Map;function bn(t){return bo.get(t)}var Rn=(t,e)=>{let n=Ro(t),r=typeof n.blockType=="string"?n.blockType:"",o=Nr(r);if(r!==""){let u=bn(r)??bn(o);if(u)return u(n,{renderChildren:e.renderChildren})}let s=[];o!==""&&s.push(`data-block-type="${y(o)}"`);for(let[u,m]of Object.entries(n)){if(u==="blockType"||u==="id"||m==null)continue;let T=typeof m=="string"||typeof m=="number"||typeof m=="boolean"?String(m):JSON.stringify(m);s.push(`data-block-${Nr(u)}="${y(T)}"`)}return`<div${s.length===0?"":` ${s.join(" ")}`}></div>`};p("block",Rn);function Ro(t){let e=t.fields;return typeof e!="object"||e===null?{}:e}function Nr(t){return t.replace(/[^a-zA-Z0-9_-]/g,"-").toLowerCase()}p("text",on);p("paragraph",sn);p("heading",an);p("list",dn);p("listitem",ln);p("link",ft);p("autolink",ft);p("quote",un);p("code",cn);p("code-highlight",fn);p("linebreak",pn);p("horizontalrule",mn);p("tab",hn);p("upload",yn);p("relationship",gn);p("block",Rn);var To={renderChildren:Tn,resolveAlignment:nn,resolveIndent:rn};function le(t){if(typeof t!="object"||t===null||!("root"in t))return!1;let e=t.root;return typeof e!="object"||e===null||!("children"in e)?!1:Array.isArray(e.children)}function _r(t,e={}){if(!le(t))return"";let n=Tn(t.root.children);return e.sanitize===!1||!Er()?n:z(n)}function Ct(t){return le(t)?t.root.children.map(Cr).join(`\n`).trim():""}function Tn(t){let e="";for(let n of t)e+=wo(n);return e}function wo(t){let e=Ar(t.type);return e?e(t,To):t.children!==void 0?Tn(t.children):""}function Cr(t){if(typeof t.text=="string")return t.text;if(t.type==="linebreak")return`\n`;if(t.children===void 0)return"";let e="";for(let n of t.children)e+=Cr(n);return e}var wn=new Map;function Or(t=[]){for(let n of t)wn.set(n.name,n);let e={};for(let[n,r]of wn)e[n]=r;return Object.freeze(e)}function g(t){wn.set(t.name,t)}var xo="data-payload-text",Pr=new WeakSet,xn={name:"text",render(t,e){let n=t.element,r=Eo(e);if(n.tagName==="INPUT"||n.tagName==="TEXTAREA"){n.value=r;return}if(vo(n)&&!n.hasAttribute(xo)){So(n,t.fieldName);return}if(r.includes(`\n`)||r.includes("\\r")){n.innerHTML=_t(r);return}n.textContent=r}};function vo(t){return t.firstElementChild!==null}function So(t,e){Pr.has(t)||(Pr.add(t),console.warn(`[live-preview] Skipping text update for "${e}" \\u2014 the bound <${t.tagName.toLowerCase()}> has structured child elements. Either move data-payload-field to the element whose textContent is the field value, or opt in with data-payload-text to replace the structure.`))}function Eo(t){return t==null?"":le(t)?Ct(t):typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"?String(t):JSON.stringify(t)}g(xn);function w(t){if(t==null)return"";if(typeof t=="string")return t;if(typeof t=="number"||typeof t=="boolean"||typeof t=="bigint")return String(t);try{return JSON.stringify(t)}catch{return""}}var vn={name:"textarea",render(t,e){let n=t.element,r=le(e)?Ct(e):w(e);if(n.tagName==="INPUT"||n.tagName==="TEXTAREA"){n.value=r;return}n.innerHTML=_t(r)}};g(vn);var Sn={name:"richText",render(t,e){if(le(e)){t.element.innerHTML=_r(e);return}typeof e=="string"&&(t.element.innerHTML=z(e))}};g(Sn);var En={name:"html",render(t,e){if(e==null){t.element.textContent="";return}let n=typeof e=="string"?e:w(e);t.element.innerHTML=z(n)}};g(En);var pt={name:"url",render(t,e,n){let r=t.element,o=w(e);if(r.tagName==="A"){let s=r,a=t.hrefField,u=a?n.allFields[a]:e;typeof u=="string"&&b(u)&&(s.href=u),s.textContent=o;return}if(r.tagName==="INPUT"||r.tagName==="TEXTAREA"){r.value=o;return}r.textContent=o}};g(pt);g({...pt,name:"email"});var kn={name:"image",render(t,e,n){let r=t.element,o=ko(e),s=Ao(o,e);if(s!==void 0){if(r.tagName==="IMG"){let a=r;a.src=s;let u=Lo(o,t.altField,n.allFields);u!==void 0&&(a.alt=u);return}r.style.backgroundImage=`url(\'${Lr(s)}\')`}}};function ko(t){if(!(typeof t!="object"||t===null))return t}function Ao(t,e){if(t?.url!==void 0&&b(t.url))return t.url;if(typeof e=="string"&&b(e))return e}function Lo(t,e,n){if(t?.alt!==void 0)return t.alt;if(e!==void 0){let r=n[e];if(typeof r=="string")return r}}g(kn);var An={name:"upload",render(t,e){let n=t.element,r=Mo(e);if(r===void 0)return;let o=r.url;if(typeof o!="string"||!b(o))return;if(n.tagName==="IMG"){let a=n;a.src=o,r.alt!==void 0&&(a.alt=r.alt);return}if(n.tagName==="A"){let a=n;a.href=o,a.textContent=r.filename??o;return}let s=r.filename!==void 0?y(r.filename):y(o);n.innerHTML=`<a href="${L(o)}">${s}</a>`}};function Mo(t){if(!(typeof t!="object"||t===null))return t}g(An);var Ln={name:"relationship",render(t,e){let n=t.element,o=Io(e).join(", ");if(n.tagName==="A"&&!Array.isArray(e)){let s=n,a=e?.url;typeof a=="string"&&b(a)&&(s.href=a),s.textContent=o;return}n.textContent=o}};function Io(t){return t==null?[""]:Array.isArray(t)?t.map(Fr):[Fr(t)]}function Fr(t){if(typeof t=="object"&&t!==null){let e=t;return typeof e.title=="string"&&e.title.length>0?e.title:typeof e.name=="string"&&e.name.length>0?e.name:typeof e.slug=="string"&&e.slug.length>0?e.slug:e.id!==void 0?String(e.id):""}return w(t)}g(Ln);var mt={name:"select",render(t,e){let n=t.element,r=Dr(e);if(n.tagName==="SELECT"){n.value=r;return}if(n.tagName==="INPUT"&&n.type==="radio"){let o=n;o.checked=o.value===r;return}n.textContent=r}};function Dr(t){return Array.isArray(t)?t.map(e=>Dr(e)).join(", "):w(t)}g(mt);g({...mt,name:"radio"});var Mn={name:"checkbox",render(t,e){let n=t.element,r=!!e;if(n.tagName==="INPUT"&&n.type==="checkbox"){n.checked=r;return}if(n.hasAttribute("aria-checked")){n.setAttribute("aria-checked",r?"true":"false");return}n.textContent=r?"true":"false"}};g(Mn);var ht=new Map,yt=new Map,No=64,_o=No;function $r(t,e){let n=Hr(t,e),r=ht.get(n);if(r!==void 0)return ht.delete(n),ht.set(n,r),r;let o=new Intl.NumberFormat(t,e);return ht.set(n,o),Br(ht),o}function Ur(t,e){let n=Hr(t,e),r=yt.get(n);if(r!==void 0)return yt.delete(n),yt.set(n,r),r;let o=new Intl.DateTimeFormat(t,e);return yt.set(n,o),Br(yt),o}function Hr(t,e){let n=t??"";if(e==null)return n;let r=In(e);return r==="{}"?n:`${n}|${r}`}function In(t){if(t===null||typeof t!="object")return JSON.stringify(t);if(Array.isArray(t))return`[${t.map(o=>In(o)).join(",")}]`;let e=t,n=Object.keys(e).sort(),r=[];for(let o of n){let s=e[o];s!==void 0&&r.push(`${JSON.stringify(o)}:${In(s)}`)}return`{${r.join(",")}}`}function Br(t){for(;t.size>_o;){let e=t.keys().next().value;if(e===void 0)break;t.delete(e)}}var Nn={name:"date",render(t,e,n){let r=t.element;if(e==null||e===""){r.tagName==="INPUT"?r.value="":(r.tagName==="TIME"&&r.removeAttribute("datetime"),r.textContent="");return}let o=typeof e=="string"?e:w(e),s=new Date(o),a=!Number.isNaN(s.getTime());if(r.tagName==="INPUT"){r.value=a?Co(r.type,s):o;return}if(r.tagName==="TIME"){r.setAttribute("datetime",a?s.toISOString():o),r.textContent=a?jr(s,n):o;return}r.textContent=a?jr(s,n):o}};function jr(t,e){let n=e.locale??Me();try{return Ur(n,{dateStyle:"medium",timeStyle:"short"}).format(t)}catch{return t.toISOString()}}function Co(t,e){return t==="date"?e.toISOString().slice(0,10):t==="datetime-local"?e.toISOString().slice(0,16):e.toISOString()}g(Nn);var _n={name:"number",render(t,e,n){let r=t.element;if(e==null||e===""){r.tagName==="INPUT"?r.value="":r.textContent="";return}let o=typeof e=="number"?e:Number(w(e));if(Number.isNaN(o)){r.textContent=w(e);return}if(r.tagName==="INPUT"){r.value=String(o);return}r.textContent=Oo(o,n)}};function Oo(t,e){let n=e.locale??Me();try{return $r(n).format(t)}catch{return String(t)}}g(_n);var gt={name:"array",render(t,e){let n=t.element;if(!Array.isArray(e))return;let r=t.arrayTemplate;if(r!==void 0&&r.length>0){let s=Po(r,e);n.innerHTML=z(s);return}let o=t.arraySeparator??", ";n.textContent=e.map($o).join(o)}};function Po(t,e){let n="";for(let r=0;r<e.length;r+=1)n+=Fo(t,e[r],r);return n}function Fo(t,e,n){let r=t;if(typeof e=="object"&&e!==null)for(let[o,s]of Object.entries(e)){let a=new RegExp(`\\\\{\\\\{${Do(o)}\\\\}\\\\}`,"g");r=r.replace(a,y(w(s)))}else r=r.replace(/\\{\\{value\\}\\}/g,y(w(e)));return r=r.replace(/\\{\\{index\\}\\}/g,String(n)),r}function Do(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function $o(t){return w(t)}g(gt);g({...gt,name:"blocks"});function Uo(){return typeof document>"u"?!1:typeof document.startViewTransition=="function"}async function Vr(t){if(!Uo()){t();return}let n=document.startViewTransition.call(document,t);try{await n.finished}catch{}}var Wr="data-payload-key",bt="data-payload-nested-key",Pn="data-payload-nested-template";function Yr(){return new WeakMap}function Pt(t){let{template:e,container:n,patches:r,store:o}=t,s=Bo(n,o),a=[],u=[],m=[],T=[],W=[];for(let c of r)c.kind==="remove"?a.push(c):c.kind==="insert"?u.push(c):c.kind==="move"?m.push(c):c.kind==="update"?T.push(c):W.push(c);a.sort((c,R)=>Ot(R)-Ot(c));for(let c of a){if(c.kind!=="remove")continue;n.children[c.index]?.remove(),jo(s,c.value)}for(let c of W){if(c.kind!=="replace")continue;let R=n.children[c.index],v=On(e,c.value,c.index);!R||!v||(zr(v,c.value,o),n.replaceChild(v,R),Cn(s,c.value))}for(let c of T){if(c.kind!=="update")continue;let R=n.children[c.index],v=On(e,c.value,c.index);!R||!v||(Ho(R,v,c.value,s,o),n.replaceChild(v,R),Cn(s,c.value))}u.sort((c,R)=>Ot(c)-Ot(R));for(let c of u){if(c.kind!=="insert")continue;let R=n.children[c.index]??null,v=On(e,c.value,c.index);v&&(zr(v,c.value,o),n.insertBefore(v,R),Cn(s,c.value))}for(let c of m){if(c.kind!=="move")continue;let R=Rt(c.value),v=R!==void 0?Vo(n,R):null;if(!v)continue;let De=n.children[c.to]??null;v!==De&&n.insertBefore(v,De)}}function zr(t,e,n){let r=t.querySelectorAll(`[${bt}]`);for(let o of Array.from(r)){let s=o.getAttribute(bt);if(s===null)continue;let a=o.getAttribute(Pn);if(!a)continue;let u=Fn(e,s);if(u===void 0)continue;let m=ot([],u);m.length!==0&&Pt({template:a,container:o,patches:m,nextItems:u,store:n})}}function Ho(t,e,n,r,o){let s=t.querySelectorAll(`[${bt}]`);if(s.length===0)return;let a=Rt(n),u=a!==void 0?r.get(a):void 0;for(let m of Array.from(s)){let T=m.getAttribute(bt);if(T===null)continue;let W=e.querySelector(`[${bt}="${qr(T)}"]`);if(!W)continue;W.replaceWith(m);let c=m.getAttribute(Pn)??W.getAttribute(Pn);if(!c)continue;let R=Fn(n,T)??[],v=Fn(u,T)??[],De=ot(v,R);De.length!==0&&Pt({template:c,container:m,patches:De,nextItems:R,store:o})}}function Fn(t,e){if(typeof t!="object"||t===null)return;let n=t[e];if(Array.isArray(n))return n}function Bo(t,e){let n=e.get(t);return n||(n=new Map,e.set(t,n)),n}function Cn(t,e){let n=Rt(e);n!==void 0&&t.set(n,e)}function jo(t,e){let n=Rt(e);n!==void 0&&t.delete(n)}function Ot(t){return t.kind==="move"?t.to:t.index}function Rt(t){if(typeof t!="object"||t===null)return;let e=t.id;if(typeof e=="string"||typeof e=="number")return String(e)}function Vo(t,e){return t.querySelector(`[${Wr}="${qr(e)}"]`)}function qr(t){let e=globalThis.CSS;return e?.escape?e.escape(t):t.replace(/[^a-zA-Z0-9_-]/g,"\\\\$&")}function On(t,e,n){if(typeof document>"u")return null;let r=zo(t,e,n),o=z(r),s=document.createElement("template");s.innerHTML=o;let a=s.content.firstElementChild;if(!a)return null;let u=Rt(e);return u!==void 0&&a.setAttribute(Wr,u),a}function zo(t,e,n){let r=t;if(typeof e=="object"&&e!==null)for(let[o,s]of Object.entries(e)){let a=new RegExp(`\\\\{\\\\{${Go(o)}\\\\}\\\\}`,"g"),u=y(Gr(s));r=r.replace(a,()=>u)}else{let o=y(Gr(e));r=r.replace(/\\{\\{value\\}\\}/g,()=>o)}return r.replace(/\\{\\{index\\}\\}/g,String(n))}function Gr(t){return t==null?"":typeof t=="string"?t:typeof t=="number"||typeof t=="boolean"||typeof t=="bigint"?String(t):JSON.stringify(t)}function Go(t){return t.replace(/[.*+?^${}()|[\\]\\\\]/g,"\\\\$&")}function Kr(){let t=new WeakMap,e=new WeakSet,n=Yr();return{name:"structural-array",render(r,o){if(!Array.isArray(o))return;let s=r.element,a=r.arrayTemplate;if(a===void 0||a.length===0){Wo(e,s,r.fieldName);return}let u=t.get(s)??[],m=ot(u,o);if(m.length===0){t.set(s,o.slice());return}Vr(()=>{Pt({template:a,container:s,patches:m,nextItems:o,store:n})}),t.set(s,o.slice())}}}function Wo(t,e,n){t.has(e)||(t.add(e),console.warn(`[live-preview] Skipping structural update for "${n}" \\u2014 the <${e.tagName.toLowerCase()}> with data-payload-structural is missing data-payload-array-template. Add an inline template (e.g., data-payload-array-template="<li>{{label}}</li>") so the renderer can materialise new items.`))}var Yo=[xn,vn,Sn,En,pt,{...pt,name:"email"},kn,An,Ln,mt,{...mt,name:"radio"},Mn,Nn,_n,gt,{...gt,name:"blocks"}];function Jr(){return Or([...Yo,Kr()])}function qo(){if(typeof window>"u"||!Xt())return;let t=window.__livePreview;if(t!==void 0)return t;let e=Ko(),n=new Nt({additionalOrigins:e.additionalOrigins,enableReferrerDetection:!e.disableReferrerDetection,enableLocalhostMatching:!e.disableLocalhostMatching});n.isProductionUnconfigured?console.warn("[live-preview] No trusted origin could be detected. Set the PAYLOAD_ADMIN_ORIGIN env var or pass `allowedOrigins` to generateInlineScript()."):n.isReferrerOnlyTrust&&console.warn("[live-preview] Trusting the embedding page via document.referrer only \\u2014 any site that frames this page could post preview updates. Pass explicit `allowedOrigins` and serve a `frame-ancestors` CSP for production.");let r=new Tt,o=Jr(),s=new It({renderers:o,originMatcher:u=>n.matches(u),readyTargets:n.enumerate(),emitter:r,...typeof e.serverURL=="string"&&e.serverURL!==""?{dataMerge:{serverURL:e.serverURL,...typeof e.apiRoute=="string"?{apiRoute:e.apiRoute}:{},...typeof e.mergeDepth=="number"?{depth:e.mergeDepth}:{}}}:{},debounceMs:e.debounceMs,heartbeatMs:e.heartbeatMs,intersectionRootMargin:e.intersectionRootMargin,disableVisibilityGate:e.disableVisibilityGate,visibilityGateThreshold:e.visibilityGateThreshold,enableA11y:e.enableA11y,onHeartbeatTimeout:()=>{n.unlockOrigin()},...e.debug?{log:(...u)=>{console.debug("[live-preview]",...u)}}:{}});r.on("connect",u=>{n.lockOrigin(u.origin)}),s.start();let a=Object.freeze({version:Rr,destroy:()=>{s.destroy();let u=window;u.__livePreview===a&&delete u.__livePreview},refresh:()=>{s.refreshCache()},enumerateOrigins:()=>n.enumerate()});return Object.defineProperty(window,"__livePreview",{value:a,writable:!1,configurable:!0}),a}function Ko(){let t=typeof __LIVE_PREVIEW_CONFIG__>"u"?void 0:__LIVE_PREVIEW_CONFIG__;return t!==void 0?t:{additionalOrigins:[],serverURL:"",apiRoute:"/api",mergeDepth:1,debug:!1,debounceMs:50,enableA11y:!0,heartbeatMs:0,disableVisibilityGate:!1,visibilityGateThreshold:50,intersectionRootMargin:"200px",disableReferrerDetection:!1,disableLocalhostMatching:!1}}var Jo=typeof __INLINE_BUILD__>"u"?!1:__INLINE_BUILD__;Jo&&qo();var Pl={isInIframe:ut,isInPopup:Jt,isInPreviewContext:Xt};})();\n';
|
|
5
|
-
var RUNTIME_BUILD_INFO = { generatedAt: "2026-07-11T19:02:27.899Z"};
|
|
6
|
-
|
|
7
|
-
// src/inline/generator.ts
|
|
8
|
-
var DEFAULT_DEBOUNCE_MS = 50;
|
|
9
|
-
var DEFAULT_HEARTBEAT_MS = 0;
|
|
10
|
-
var DEFAULT_VISIBILITY_GATE_THRESHOLD = 50;
|
|
11
|
-
var DEFAULT_INTERSECTION_ROOT_MARGIN = "200px";
|
|
12
|
-
function generateInlineScript(config = {}) {
|
|
13
|
-
if (RUNTIME_SOURCE.length === 0) {
|
|
14
|
-
throw new Error(
|
|
15
|
-
"[live-preview] runtime.generated.ts is empty. Run `npm run build:runtime` before bundling."
|
|
16
|
-
);
|
|
17
|
-
}
|
|
18
|
-
const configLiteral = JSON.stringify({
|
|
19
|
-
additionalOrigins: config.allowedOrigins ?? [],
|
|
20
|
-
serverURL: config.serverURL ?? "",
|
|
21
|
-
apiRoute: config.apiRoute ?? "/api",
|
|
22
|
-
mergeDepth: config.mergeDepth ?? 1,
|
|
23
|
-
debug: config.debug ?? false,
|
|
24
|
-
debounceMs: config.debounceMs ?? DEFAULT_DEBOUNCE_MS,
|
|
25
|
-
enableA11y: config.enableA11y ?? true,
|
|
26
|
-
heartbeatMs: config.heartbeatMs ?? DEFAULT_HEARTBEAT_MS,
|
|
27
|
-
disableVisibilityGate: config.disableVisibilityGate ?? false,
|
|
28
|
-
visibilityGateThreshold: config.visibilityGateThreshold ?? DEFAULT_VISIBILITY_GATE_THRESHOLD,
|
|
29
|
-
intersectionRootMargin: config.intersectionRootMargin ?? DEFAULT_INTERSECTION_ROOT_MARGIN,
|
|
30
|
-
disableReferrerDetection: config.disableReferrerDetection ?? false,
|
|
31
|
-
disableLocalhostMatching: config.disableLocalhostMatching ?? false
|
|
32
|
-
// `<` must never appear literally inside an inline <script> body —
|
|
33
|
-
// a consumer-supplied string containing `</script>` would otherwise
|
|
34
|
-
// terminate the tag early.
|
|
35
|
-
}).replace(/</g, "\\u003C");
|
|
36
|
-
const generatedAt = RUNTIME_BUILD_INFO.generatedAt;
|
|
37
|
-
return [
|
|
38
|
-
`/* payload-live-preview runtime ${generatedAt} */`,
|
|
39
|
-
`var __LIVE_PREVIEW_CONFIG__=${configLiteral};`,
|
|
40
|
-
`var __INLINE_BUILD__=true;`,
|
|
41
|
-
RUNTIME_SOURCE
|
|
42
|
-
].join("\n");
|
|
43
|
-
}
|
|
44
|
-
function wrapWithScriptTag(body, options = {}) {
|
|
45
|
-
const nonceAttr = options.nonce !== void 0 ? ` nonce="${escapeNonce(options.nonce)}"` : "";
|
|
46
|
-
return `<script${nonceAttr}>${body}</script>`;
|
|
47
|
-
}
|
|
48
|
-
function escapeNonce(nonce) {
|
|
49
|
-
if (!/^[A-Za-z0-9+/=_-]+$/.test(nonce)) {
|
|
50
|
-
throw new RangeError("wrapWithScriptTag: nonce contains invalid characters");
|
|
51
|
-
}
|
|
52
|
-
return nonce;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// src/adapters/astro/integration.ts
|
|
56
|
-
var VIRTUAL_OPTIONS_ID = "virtual:payload-live-preview/options";
|
|
57
|
-
var RESOLVED_VIRTUAL_OPTIONS_ID = `\0${VIRTUAL_OPTIONS_ID}`;
|
|
58
|
-
var MIDDLEWARE_ENTRYPOINT = "payload-live-preview/astro/middleware-entry";
|
|
59
|
-
function livePreview(options = {}) {
|
|
60
|
-
return {
|
|
61
|
-
name: "payload-live-preview",
|
|
62
|
-
hooks: {
|
|
63
|
-
"astro:config:setup": (ctx) => {
|
|
64
|
-
if (options.mode === "middleware") {
|
|
65
|
-
setupMiddlewareMode(ctx, options);
|
|
66
|
-
return;
|
|
67
|
-
}
|
|
68
|
-
if (options.autoInject === false) return;
|
|
69
|
-
const script = generateInlineScript({
|
|
70
|
-
...options.allowedOrigins !== void 0 ? { allowedOrigins: options.allowedOrigins } : {},
|
|
71
|
-
...options.serverURL !== void 0 ? { serverURL: options.serverURL } : {},
|
|
72
|
-
...options.apiRoute !== void 0 ? { apiRoute: options.apiRoute } : {},
|
|
73
|
-
...options.mergeDepth !== void 0 ? { mergeDepth: options.mergeDepth } : {},
|
|
74
|
-
...options.debug !== void 0 ? { debug: options.debug } : {},
|
|
75
|
-
...options.debounceMs !== void 0 ? { debounceMs: options.debounceMs } : {},
|
|
76
|
-
...options.heartbeatMs !== void 0 ? { heartbeatMs: options.heartbeatMs } : {}
|
|
77
|
-
});
|
|
78
|
-
ctx.injectScript("head-inline", script);
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
}
|
|
83
|
-
function setupMiddlewareMode(ctx, options) {
|
|
84
|
-
if (ctx.addMiddleware === void 0 || ctx.updateConfig === void 0) {
|
|
85
|
-
throw new Error(
|
|
86
|
-
"payload-live-preview: mode 'middleware' needs Astro's addMiddleware/updateConfig hooks (Astro >= 4). Upgrade Astro or use the default inline mode."
|
|
87
|
-
);
|
|
88
|
-
}
|
|
89
|
-
if (options.shouldInject !== void 0) {
|
|
90
|
-
throw new Error(
|
|
91
|
-
"payload-live-preview: `shouldInject` cannot be used with mode 'middleware' \u2014 options are serialized into the build. Use `previewQueryParams`/`previewSignals`, or register createLivePreviewMiddleware() manually in src/middleware.ts."
|
|
92
|
-
);
|
|
93
|
-
}
|
|
94
|
-
const { mode: _mode, shouldInject: _shouldInject, ...serializable } = options;
|
|
95
|
-
const optionsModule = `export default ${JSON.stringify(serializable).replace(/</g, "\\u003C")};`;
|
|
96
|
-
ctx.updateConfig({
|
|
97
|
-
vite: {
|
|
98
|
-
plugins: [
|
|
99
|
-
{
|
|
100
|
-
name: "payload-live-preview-options",
|
|
101
|
-
resolveId: (id) => id === VIRTUAL_OPTIONS_ID ? RESOLVED_VIRTUAL_OPTIONS_ID : void 0,
|
|
102
|
-
load: (id) => id === RESOLVED_VIRTUAL_OPTIONS_ID ? optionsModule : void 0
|
|
103
|
-
}
|
|
104
|
-
]
|
|
105
|
-
}
|
|
106
|
-
});
|
|
107
|
-
ctx.addMiddleware({ entrypoint: MIDDLEWARE_ENTRYPOINT, order: "pre" });
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// src/security/csp.ts
|
|
111
|
-
var DEFAULT_NONCE_BYTES = 16;
|
|
112
|
-
function generateCspNonce(bytes = DEFAULT_NONCE_BYTES) {
|
|
113
|
-
if (!Number.isInteger(bytes) || bytes < 8) {
|
|
114
|
-
throw new RangeError(`generateCspNonce: bytes must be an integer >= 8, got ${String(bytes)}`);
|
|
115
|
-
}
|
|
116
|
-
const crypto = resolveCrypto();
|
|
117
|
-
if (!crypto) {
|
|
118
|
-
throw new Error(
|
|
119
|
-
"generateCspNonce: Web Crypto is unavailable. On Node 18 call setCspCrypto(webcrypto) once at startup, or run with --experimental-global-webcrypto. We won't fabricate a predictable nonce \u2014 that would silently defeat the entire CSP."
|
|
120
|
-
);
|
|
121
|
-
}
|
|
122
|
-
const buffer = new Uint8Array(bytes);
|
|
123
|
-
crypto.getRandomValues(buffer);
|
|
124
|
-
return base64UrlEncode(buffer);
|
|
125
|
-
}
|
|
126
|
-
function resolveCrypto() {
|
|
127
|
-
const fromGlobal = globalThis.crypto;
|
|
128
|
-
if (fromGlobal?.getRandomValues) return fromGlobal;
|
|
129
|
-
return void 0;
|
|
130
|
-
}
|
|
131
|
-
function base64UrlEncode(bytes) {
|
|
132
|
-
let binary = "";
|
|
133
|
-
for (const byte of bytes) binary += String.fromCharCode(byte);
|
|
134
|
-
const base64 = typeof btoa === "function" ? btoa(binary) : Buffer.from(bytes).toString("base64");
|
|
135
|
-
return base64.replaceAll("+", "-").replaceAll("/", "_").replaceAll("=", "");
|
|
136
|
-
}
|
|
137
|
-
function buildFrameAncestors(options = {}) {
|
|
138
|
-
const { self = true, origins = [], allowNone = false } = options;
|
|
139
|
-
const seen = /* @__PURE__ */ new Set();
|
|
140
|
-
const out = [];
|
|
141
|
-
if (allowNone && !self && origins.length === 0) return "'none'";
|
|
142
|
-
if (self) {
|
|
143
|
-
out.push("'self'");
|
|
144
|
-
seen.add("'self'");
|
|
145
|
-
}
|
|
146
|
-
for (const origin of origins) {
|
|
147
|
-
const trimmed = origin.trim();
|
|
148
|
-
if (trimmed.length === 0 || seen.has(trimmed)) continue;
|
|
149
|
-
seen.add(trimmed);
|
|
150
|
-
out.push(trimmed);
|
|
151
|
-
}
|
|
152
|
-
return out.length > 0 ? out.join(" ") : "'none'";
|
|
153
|
-
}
|
|
154
|
-
function buildScriptSrcWithNonce(nonce, options = {}) {
|
|
155
|
-
if (nonce.length === 0) throw new RangeError("buildScriptSrcWithNonce: nonce is empty");
|
|
156
|
-
const { self = true, extra = [], strictDynamic = false } = options;
|
|
157
|
-
const parts = [];
|
|
158
|
-
if (self) parts.push("'self'");
|
|
159
|
-
parts.push(`'nonce-${nonce}'`);
|
|
160
|
-
if (strictDynamic) parts.push("'strict-dynamic'");
|
|
161
|
-
for (const e of extra) {
|
|
162
|
-
const trimmed = e.trim();
|
|
163
|
-
if (trimmed.length > 0) parts.push(trimmed);
|
|
164
|
-
}
|
|
165
|
-
return parts.join(" ");
|
|
166
|
-
}
|
|
167
|
-
function mergeCspHeader(existing, additions) {
|
|
168
|
-
const directives = /* @__PURE__ */ new Map();
|
|
169
|
-
for (const part of existing.split(";")) {
|
|
170
|
-
const trimmed = part.trim();
|
|
171
|
-
if (trimmed.length === 0) continue;
|
|
172
|
-
const spaceIndex = trimmed.indexOf(" ");
|
|
173
|
-
if (spaceIndex < 0) {
|
|
174
|
-
directives.set(trimmed.toLowerCase(), "");
|
|
175
|
-
continue;
|
|
176
|
-
}
|
|
177
|
-
directives.set(
|
|
178
|
-
trimmed.slice(0, spaceIndex).toLowerCase(),
|
|
179
|
-
trimmed.slice(spaceIndex + 1).trim()
|
|
180
|
-
);
|
|
181
|
-
}
|
|
182
|
-
for (const [rawName, rawAddition] of Object.entries(additions)) {
|
|
183
|
-
const name = rawName.toLowerCase();
|
|
184
|
-
const addition = typeof rawAddition === "string" ? { value: rawAddition } : rawAddition;
|
|
185
|
-
const mode = addition.mode ?? "union";
|
|
186
|
-
const current = directives.get(name);
|
|
187
|
-
if (mode === "replace" || current === void 0 || current.length === 0) {
|
|
188
|
-
directives.set(name, addition.value);
|
|
189
|
-
continue;
|
|
190
|
-
}
|
|
191
|
-
const seen = /* @__PURE__ */ new Set();
|
|
192
|
-
const merged = [];
|
|
193
|
-
for (const token of [...current.split(/\s+/), ...addition.value.split(/\s+/)]) {
|
|
194
|
-
if (token.length === 0 || seen.has(token)) continue;
|
|
195
|
-
seen.add(token);
|
|
196
|
-
merged.push(token);
|
|
197
|
-
}
|
|
198
|
-
const withoutNone = merged.filter((token) => token !== "'none'");
|
|
199
|
-
directives.set(name, (withoutNone.length > 0 ? withoutNone : merged).join(" "));
|
|
200
|
-
}
|
|
201
|
-
const out = [];
|
|
202
|
-
for (const [name, value] of directives) {
|
|
203
|
-
out.push(value.length === 0 ? name : `${name} ${value}`);
|
|
204
|
-
}
|
|
205
|
-
return out.join("; ");
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
// src/adapters/shared/preview-request.ts
|
|
209
|
-
var DEFAULT_QUERY_PARAMS = ["preview", "draft", "livePreview"];
|
|
210
|
-
function isPreviewRequest(request, options = {}) {
|
|
211
|
-
const signals = new Set(options.signals ?? ["query", "fetch-dest", "referer"]);
|
|
212
|
-
const queryParams = options.queryParams ?? DEFAULT_QUERY_PARAMS;
|
|
213
|
-
const checkFetchDest = (options.checkFetchDest ?? true) && signals.has("fetch-dest");
|
|
214
|
-
if (signals.has("query")) {
|
|
215
|
-
let url;
|
|
216
|
-
try {
|
|
217
|
-
url = new URL(request.url);
|
|
218
|
-
} catch {
|
|
219
|
-
url = void 0;
|
|
220
|
-
}
|
|
221
|
-
if (url !== void 0) {
|
|
222
|
-
for (const param of queryParams) {
|
|
223
|
-
const value = url.searchParams.get(param);
|
|
224
|
-
if (value === "true" || value === "1") return true;
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
if (checkFetchDest && request.headers.get("sec-fetch-dest") === "iframe") {
|
|
229
|
-
return true;
|
|
230
|
-
}
|
|
231
|
-
const adminOrigins = signals.has("referer") ? options.adminOrigins ?? [] : [];
|
|
232
|
-
if (adminOrigins.length > 0) {
|
|
233
|
-
const referer = request.headers.get("referer");
|
|
234
|
-
if (referer !== null) {
|
|
235
|
-
try {
|
|
236
|
-
const refererOrigin = new URL(referer).origin;
|
|
237
|
-
for (const adminOrigin of adminOrigins) {
|
|
238
|
-
try {
|
|
239
|
-
if (new URL(adminOrigin).origin === refererOrigin) return true;
|
|
240
|
-
} catch {
|
|
241
|
-
}
|
|
242
|
-
}
|
|
243
|
-
} catch {
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
return false;
|
|
248
|
-
}
|
|
249
|
-
|
|
250
|
-
// src/adapters/astro/middleware.ts
|
|
251
|
-
var NONCE_LOCALS_KEY = "livePreviewNonce";
|
|
252
|
-
var HTML_CONTENT_TYPE = /text\/html/i;
|
|
253
|
-
var HEAD_INSERT = /<head(\s[^>]*)?>/i;
|
|
254
|
-
function createLivePreviewMiddleware(options = {}) {
|
|
255
|
-
const allowedOrigins = options.allowedOrigins ?? [];
|
|
256
|
-
const autoInject = options.autoInject ?? true;
|
|
257
|
-
const injectMode = options.inject ?? "preview-only";
|
|
258
|
-
const manageCsp = normalizeManageCsp(options.manageCsp);
|
|
259
|
-
const shouldInject = options.shouldInject;
|
|
260
|
-
let cachedScriptBody;
|
|
261
|
-
const scriptBody = () => {
|
|
262
|
-
cachedScriptBody ??= generateInlineScript({
|
|
263
|
-
...options.allowedOrigins !== void 0 ? { allowedOrigins: options.allowedOrigins } : {},
|
|
264
|
-
...options.serverURL !== void 0 ? { serverURL: options.serverURL } : {},
|
|
265
|
-
...options.apiRoute !== void 0 ? { apiRoute: options.apiRoute } : {},
|
|
266
|
-
...options.mergeDepth !== void 0 ? { mergeDepth: options.mergeDepth } : {},
|
|
267
|
-
...options.debug !== void 0 ? { debug: options.debug } : {},
|
|
268
|
-
...options.debounceMs !== void 0 ? { debounceMs: options.debounceMs } : {},
|
|
269
|
-
...options.heartbeatMs !== void 0 ? { heartbeatMs: options.heartbeatMs } : {}
|
|
270
|
-
});
|
|
271
|
-
return cachedScriptBody;
|
|
272
|
-
};
|
|
273
|
-
return async (context, next) => {
|
|
274
|
-
const nonce = generateCspNonce();
|
|
275
|
-
context.locals[NONCE_LOCALS_KEY] = nonce;
|
|
276
|
-
const response = await next();
|
|
277
|
-
if (context.isPrerendered === true) return response;
|
|
278
|
-
const isPreview = injectMode === "always" || isPreviewRequest(context.request, {
|
|
279
|
-
...options.previewQueryParams !== void 0 ? { queryParams: options.previewQueryParams } : {},
|
|
280
|
-
...options.previewSignals !== void 0 ? { signals: options.previewSignals } : {},
|
|
281
|
-
adminOrigins: allowedOrigins
|
|
282
|
-
});
|
|
283
|
-
if (!isPreview) return response;
|
|
284
|
-
let outResponse = response;
|
|
285
|
-
const contentType = response.headers.get("content-type") ?? "";
|
|
286
|
-
const apply = autoInject && (shouldInject?.(context.request) ?? true);
|
|
287
|
-
if (apply && HTML_CONTENT_TYPE.test(contentType)) {
|
|
288
|
-
outResponse = await injectScript(response, nonce, scriptBody());
|
|
289
|
-
}
|
|
290
|
-
if (manageCsp !== false) {
|
|
291
|
-
outResponse = applyCspHeaders(outResponse, nonce, allowedOrigins, manageCsp, options);
|
|
292
|
-
}
|
|
293
|
-
return outResponse;
|
|
294
|
-
};
|
|
295
|
-
}
|
|
296
|
-
function normalizeManageCsp(value) {
|
|
297
|
-
if (value === false) return false;
|
|
298
|
-
if (value === "full") return "full";
|
|
299
|
-
return "frame-ancestors";
|
|
300
|
-
}
|
|
301
|
-
async function injectScript(response, nonce, body) {
|
|
302
|
-
const html = await response.text();
|
|
303
|
-
const headers = new Headers(response.headers);
|
|
304
|
-
headers.delete("content-length");
|
|
305
|
-
if (!HEAD_INSERT.test(html)) {
|
|
306
|
-
return new Response(html, {
|
|
307
|
-
status: response.status,
|
|
308
|
-
statusText: response.statusText,
|
|
309
|
-
headers
|
|
310
|
-
});
|
|
311
|
-
}
|
|
312
|
-
const scriptTag = wrapWithScriptTag(body, { nonce });
|
|
313
|
-
const out = html.replace(HEAD_INSERT, (match) => `${match}${scriptTag}`);
|
|
314
|
-
return new Response(out, {
|
|
315
|
-
status: response.status,
|
|
316
|
-
statusText: response.statusText,
|
|
317
|
-
headers
|
|
318
|
-
});
|
|
319
|
-
}
|
|
320
|
-
function applyCspHeaders(response, nonce, allowedOrigins, mode, options) {
|
|
321
|
-
const frameAncestors = buildFrameAncestors({
|
|
322
|
-
self: true,
|
|
323
|
-
origins: [...allowedOrigins, ...options.frameAncestorsExtra ?? []]
|
|
324
|
-
});
|
|
325
|
-
const additions = { "frame-ancestors": frameAncestors };
|
|
326
|
-
if (mode === "full") {
|
|
327
|
-
additions["script-src"] = buildScriptSrcWithNonce(nonce, {
|
|
328
|
-
self: true,
|
|
329
|
-
strictDynamic: options.strictDynamic ?? false,
|
|
330
|
-
...options.scriptSrcExtra !== void 0 ? { extra: options.scriptSrcExtra } : {}
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
const previous = response.headers.get("content-security-policy") ?? "";
|
|
334
|
-
const next = mergeCspHeader(previous, additions);
|
|
335
|
-
try {
|
|
336
|
-
response.headers.set("content-security-policy", next);
|
|
337
|
-
return response;
|
|
338
|
-
} catch {
|
|
339
|
-
const headers = new Headers(response.headers);
|
|
340
|
-
headers.set("content-security-policy", next);
|
|
341
|
-
return new Response(response.body, {
|
|
342
|
-
status: response.status,
|
|
343
|
-
statusText: response.statusText,
|
|
344
|
-
headers
|
|
345
|
-
});
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
// src/adapters/astro/component.ts
|
|
350
|
-
function renderLivePreviewScript(options = {}) {
|
|
351
|
-
const body = generateInlineScript({
|
|
352
|
-
...options.allowedOrigins !== void 0 ? { allowedOrigins: options.allowedOrigins } : {},
|
|
353
|
-
...options.serverURL !== void 0 ? { serverURL: options.serverURL } : {},
|
|
354
|
-
...options.apiRoute !== void 0 ? { apiRoute: options.apiRoute } : {},
|
|
355
|
-
...options.mergeDepth !== void 0 ? { mergeDepth: options.mergeDepth } : {},
|
|
356
|
-
...options.debug !== void 0 ? { debug: options.debug } : {},
|
|
357
|
-
...options.debounceMs !== void 0 ? { debounceMs: options.debounceMs } : {},
|
|
358
|
-
...options.heartbeatMs !== void 0 ? { heartbeatMs: options.heartbeatMs } : {},
|
|
359
|
-
...options.nonce !== void 0 ? { nonce: options.nonce } : {}
|
|
360
|
-
});
|
|
361
|
-
return wrapWithScriptTag(body, options.nonce !== void 0 ? { nonce: options.nonce } : {});
|
|
362
|
-
}
|
|
363
|
-
|
|
364
|
-
exports.NONCE_LOCALS_KEY = NONCE_LOCALS_KEY;
|
|
365
|
-
exports.createLivePreviewMiddleware = createLivePreviewMiddleware;
|
|
366
|
-
exports.isPreviewRequest = isPreviewRequest;
|
|
367
|
-
exports.livePreview = livePreview;
|
|
368
|
-
exports.renderLivePreviewScript = renderLivePreviewScript;
|
|
369
|
-
//# sourceMappingURL=index.cjs.map
|
|
370
|
-
//# sourceMappingURL=index.cjs.map
|