payload-live-preview 2.1.2 → 2.2.0
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 +166 -51
- package/dist/adapters/astro/index.d.ts +7 -7
- package/dist/adapters/astro/index.js +1 -1
- package/dist/adapters/astro/index.js.map +1 -1
- package/dist/adapters/astro/middleware-entry.d.ts +3 -3
- package/dist/adapters/astro/middleware-entry.js +1 -1
- package/dist/adapters/astro/middleware-entry.js.map +1 -1
- package/dist/adapters/nextjs/index.d.ts +2 -2
- package/dist/adapters/nextjs/index.js +1 -1
- package/dist/adapters/nextjs/index.js.map +1 -1
- package/dist/adapters/nuxt/index.d.ts +4 -4
- package/dist/adapters/nuxt/index.js +1 -1
- package/dist/adapters/nuxt/index.js.map +1 -1
- package/dist/adapters/nuxt/module.d.ts +1 -1
- package/dist/adapters/sveltekit/index.d.ts +5 -5
- package/dist/adapters/sveltekit/index.js +1 -1
- package/dist/adapters/sveltekit/index.js.map +1 -1
- package/dist/client.cjs +1 -1
- package/dist/client.cjs.map +1 -1
- package/dist/client.d.cts +2 -2
- package/dist/client.d.ts +2 -2
- package/dist/client.js +1 -1
- package/dist/client.js.map +1 -1
- package/dist/core.cjs +1 -1
- package/dist/core.cjs.map +1 -1
- package/dist/core.d.cts +2 -2
- package/dist/core.d.ts +2 -2
- package/dist/core.js +1 -1
- package/dist/core.js.map +1 -1
- package/dist/doctor-cli.d.ts +1 -1
- package/dist/doctor-cli.js +1 -1
- package/dist/doctor-cli.js.map +1 -1
- package/dist/doctor.d.ts +15 -2
- package/dist/doctor.js +1 -1
- package/dist/doctor.js.map +1 -1
- package/dist/{fragment-endpoint-B2qcRw5T.d.ts → fragment-endpoint-DGGLIijM.d.ts} +1 -1
- package/dist/fragment.cjs.map +1 -1
- package/dist/fragment.d.cts +2 -2
- package/dist/fragment.d.ts +2 -2
- package/dist/fragment.js.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/lean.cjs +1 -1
- package/dist/lean.cjs.map +1 -1
- package/dist/lean.js +1 -1
- package/dist/lean.js.map +1 -1
- package/dist/{locals-B1mF3aTb.d.ts → locals-zz2gi9dj.d.ts} +1 -1
- package/dist/{middleware-BGobLN9P.d.ts → middleware-CI-UTf6R.d.ts} +2 -2
- package/dist/{options-Cm8fC7dj.d.ts → options-CnYybG51.d.ts} +8 -0
- package/dist/plugins.cjs +1 -1
- package/dist/plugins.cjs.map +1 -1
- package/dist/plugins.d.cts +2 -2
- package/dist/plugins.d.ts +2 -2
- package/dist/plugins.js +1 -1
- package/dist/plugins.js.map +1 -1
- package/dist/{probe-DGPDsnbj.d.ts → probe-DpMZ4fOS.d.ts} +2 -2
- package/package.json +5 -1
package/dist/plugins.d.cts
CHANGED
|
@@ -135,7 +135,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
|
|
|
135
135
|
readonly AuditFrameOptionsBlocks: "LP0703";
|
|
136
136
|
/** Binding attributes are served to anonymous visitors. */
|
|
137
137
|
readonly AuditBindingsExposed: "LP0704";
|
|
138
|
-
/** More bindings than the
|
|
138
|
+
/** More bindings than the visibility gate will write eagerly. */
|
|
139
139
|
readonly AuditGateThresholdExceeded: "LP0705";
|
|
140
140
|
/** Owner markers exist, but some bindings are outside all of them. */
|
|
141
141
|
readonly AuditUnownedBindings: "LP0706";
|
|
@@ -157,7 +157,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
|
|
|
157
157
|
readonly FragmentStrategyUnavailable: "LP0806";
|
|
158
158
|
/** A revision changed a field with no binding; `onUnfaithfulPatch` refreshed the route. */
|
|
159
159
|
readonly UnboundChangeRefresh: "LP0807";
|
|
160
|
-
/** `onUnfaithfulPatch: 'escalate'` found no route or fragment strategy to hand an unfaithful patch to; the page keeps it. */
|
|
160
|
+
/** `onUnfaithfulPatch: 'escalate'` found no route or fragment strategy, or no boundary, to hand an unfaithful patch to; the page keeps it. */
|
|
161
161
|
readonly EscalationUnavailable: "LP0808";
|
|
162
162
|
/** A fragment inserted an Astro island the page cannot start: it never loaded the island element or that client directive. */
|
|
163
163
|
readonly IslandStartUnavailable: "LP0809";
|
package/dist/plugins.d.ts
CHANGED
|
@@ -135,7 +135,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
|
|
|
135
135
|
readonly AuditFrameOptionsBlocks: "LP0703";
|
|
136
136
|
/** Binding attributes are served to anonymous visitors. */
|
|
137
137
|
readonly AuditBindingsExposed: "LP0704";
|
|
138
|
-
/** More bindings than the
|
|
138
|
+
/** More bindings than the visibility gate will write eagerly. */
|
|
139
139
|
readonly AuditGateThresholdExceeded: "LP0705";
|
|
140
140
|
/** Owner markers exist, but some bindings are outside all of them. */
|
|
141
141
|
readonly AuditUnownedBindings: "LP0706";
|
|
@@ -157,7 +157,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
|
|
|
157
157
|
readonly FragmentStrategyUnavailable: "LP0806";
|
|
158
158
|
/** A revision changed a field with no binding; `onUnfaithfulPatch` refreshed the route. */
|
|
159
159
|
readonly UnboundChangeRefresh: "LP0807";
|
|
160
|
-
/** `onUnfaithfulPatch: 'escalate'` found no route or fragment strategy to hand an unfaithful patch to; the page keeps it. */
|
|
160
|
+
/** `onUnfaithfulPatch: 'escalate'` found no route or fragment strategy, or no boundary, to hand an unfaithful patch to; the page keeps it. */
|
|
161
161
|
readonly EscalationUnavailable: "LP0808";
|
|
162
162
|
/** A fragment inserted an Astro island the page cannot start: it never loaded the island element or that client directive. */
|
|
163
163
|
readonly IslandStartUnavailable: "LP0809";
|
package/dist/plugins.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
function e(e){return("object"==typeof e&&null!==e||"function"==typeof e)&&"function"==typeof e.then&&(Promise.resolve(e).catch(()=>{}),!0)}function t(t){return(...n)=>{try{e(t(...n))}catch{}}}var n=t((...e)=>console.error(...e)),r=()=>{},i=class{#e;#t;#n=/* @__PURE__ */new Set;#r="staging";constructor(e,t){this.#e=e,this.#t=t}assertOpen(){if("closed"===this.#r)throw new Error(`Plugin context for "${this.#e}" is no longer active`)}get active(){return"active"===this.#r}eligible(){return"closed"!==this.#r}own(e){return this.assertOpen(),this.#i({kind:"cleanup",acquire:void 0,finalize:void 0,cleanup:e,disposed:!1})}stage(e,t,n){this.assertOpen();const r={kind:e,acquire:t,finalize:n,cleanup:void 0,disposed:!1},i=this.#i(r);if("active"===this.#r)try{this.#o(r)}catch(e){throw this.#s(r),e}return i}counts(){const e={transform:0,renderer:0,subscription:0,cleanup:0};for(const t of this.#n)e[t.kind]+=1;return e}commit(){if("staging"!==this.#r)throw new Error(`Plugin context for "${this.#e}" cannot be committed`);this.#r="committing";try{for(const e of this.#n)this.#o(e);this.#r="active"}catch(e){throw this.close(),e}}close(){if("closed"!==this.#r){this.#r="closed";for(const e of[...this.#n].reverse())this.#s(e);this.#n.clear()}}#i(e){return this.#n.add(e),()=>{this.#s(e)}}#o(e){if(e.disposed||void 0!==e.cleanup||void 0===e.acquire)return;const t=e.acquire();e.cleanup=t??r}#s(t){if(t.disposed)return;t.disposed=!0,this.#n.delete(t);const n=t.cleanup;if(t.cleanup=void 0,void 0!==n)try{e(n())&&this.#t(`plugin "${this.#e}" cleanup returned a Promise/thenable; cleanups must be synchronous`)}catch(e){this.#t(`plugin "${this.#e}" cleanup failed:`,e)}try{t.finalize?.()}catch(e){this.#t(`plugin "${this.#e}" cleanup failed:`,e)}}},o=class{#a;#c;#l=/* @__PURE__ */new Set;constructor(e,t){this.#a=e,this.#c=t}on(e,t){return this.#u("on",e,t)}once(e,t){return this.#u("once",e,t)}off(e,t){const n=t;for(const t of[...this.#l])t.event===e&&t.handler===n&&t.dispose()}emit(e,t){return this.#c.assertOpen(),this.#a.emit(e,t)}emitWhile(e,t,n){return this.#c.assertOpen(),this.#a.emitWhile(e,t,()=>{if(!this.#c.eligible())return!1;const e=n();return!!this.#c.eligible()&&e})}listenerCount(e){let t=0;for(const n of this.#l)n.event===e&&(t+=1);return t}removeAllListeners(e){for(const t of[...this.#l])void 0!==e&&t.event!==e||t.dispose()}eventNames(){const e=/* @__PURE__ */new Set;for(const t of this.#l)e.add(t.event);return[...e]}#u(e,t,n){this.#c.assertOpen();const i=n,o=[...this.#l].find(n=>n.kind===e&&n.event===t&&n.handler===i);if(void 0!==o)return o.dispose;let s=r,a=!0;const c=async t=>{this.#c.active&&a&&("once"===e&&s(),await n(t))},l={kind:e,event:t,handler:i,dispose:r};return s=this.#c.stage("subscription",()=>this.#a[e](t,c),()=>{a=!1,this.#l.delete(l)}),l.dispose=s,this.#l.add(l),s}},s=class{#a;#d;#h;#f;#t;#p=/* @__PURE__ */new Map;#g=/* @__PURE__ */new Map;#m=/* @__PURE__ */new Map;#v=/* @__PURE__ */new Set;#y=/* @__PURE__ */new Map;#w=Promise.resolve();#b=0;constructor(e){this.#a=e.events,this.#d=e.config,this.#h=e.registerFieldRenderer,this.#t=t(e.log);const n=e.onTransformError;this.#f=void 0===n?void 0:t((...e)=>{const t=e[0];try{return n(t)}catch(e){return void this.#t("transform error reporter failed:",e)}})}register(e){return this.#b>0?this.#P(e,!1):this.#S(()=>this.#P(e,!0))}unregister(e){return this.#b>0?this.#x(e,!1):this.#S(async()=>{await this.#x(e,!0)})}destroyAll(){return this.#b>0?this.#L(!1):this.#S(async()=>{await this.#L(!0)})}applyTransforms(t,n,r,i){const o=this.#y.get(t);if(void 0===o||0===o.length)return n;let s=n;for(const a of[...o]){if(!a.active)continue;const{transform:o}=a;if(!1===i?.())return n;try{s=o(s,{fieldName:t,element:r.element,allFields:r.allFields});const a=e(s);if(!1===i?.())return n;if(a)throw new TypeError(`Transform for "${t}" returned a Promise/thenable; transforms must be synchronous`)}catch(e){if(!1===i?.())return n;const r=e instanceof Error?e:new Error(String(e));return this.#t(`transform for "${t}" failed:`,r),this.#f?.(r),n}}return s}list(){return[...this.#p.keys()]}snapshot(){const e=[],t=(e,t,n,r)=>{const i=r.counts();return{name:e,version:t,state:n,registrations:{transforms:i.transform,renderers:i.renderer,subscriptions:i.subscription,cleanups:i.cleanup}}};for(const[n,r]of this.#g)e.push(t(n,void 0,"initializing",r.scope));for(const[n,r]of this.#p)e.push(t(n,r.plugin.version,"active",r.scope));for(const t of this.#m.keys())e.push({name:t,version:void 0,state:"tearing-down",registrations:{transforms:0,renderers:0,subscriptions:0,cleanups:0}});return e}get size(){return this.#p.size}async#P(e,t){if(this.#p.has(e.name)||this.#g.has(e.name)||this.#m.has(e.name))return void this.#t(`plugin "${e.name}" already registered`);const n=function(e,t){if(void 0!==e){if(void 0!==e.runtime&&!function(e,t){const n=function(e){const t=/^v?(\d+)\.(\d+)\.(\d+)/.exec(e.trim());if(null!==t)return[Number(t[1]),Number(t[2]),Number(t[3])]}(e);return void 0!==n&&t.split("||").some(e=>{const r=e.trim().split(/\s+/).filter(e=>e.length>0);return 0===r.length?""===e.trim()&&""===t.trim():r.every(e=>function(e,t){const n=t.trim();if(""===n||"*"===n)return!0;const r=/^(\^|~|>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.(\d+)/.exec(n);if(null===r)return!1;const i=r[1]??"=",o=[Number(r[2]),Number(r[3]),Number(r[4])],s=function(e,t){for(let n=0;n<3;n+=1){const r=(e[n]??0)-(t[n]??0);if(0!==r)return r}return 0}(e,o);switch(i){case"=":return 0===s;case">":return s>0;case">=":return s>=0;case"<":return s<0;case"<=":return s<=0;case"~":return s>=0&&e[0]===o[0]&&e[1]===o[1];case"^":return!(s<0)&&(o[0]>0?e[0]===o[0]:o[1]>0?0===e[0]&&e[1]===o[1]:0===e[0]&&0===e[1]&&e[2]===o[2]);default:return!1}}(n,e))})}(t,e.runtime))return`declares runtime ${e.runtime}, this runtime is ${t}`;if(void 0!==e.protocol){if(!Number.isInteger(e.protocol)||e.protocol<1)return`declares an invalid protocol version ${String(e.protocol)}`;if(e.protocol<4)return`declares protocol ${String(e.protocol)}, this runtime speaks ${String(4)}`}}}(e.compat,"2.1.2");if(void 0!==n)return void this.#k(e.name,n);const r=new i(e.name,this.#t),o=this.#A(e.name,r),s={scope:r,cancelled:!1};this.#g.set(e.name,s);try{if(await this.#$(()=>e.init(o),t),s.cancelled)return;r.commit()}catch(t){return r.close(),void(s.cancelled||this.#t(`plugin "${e.name}" init failed:`,t))}finally{this.#g.get(e.name)===s&&this.#g.delete(e.name)}this.#p.set(e.name,{plugin:e,scope:r}),this.#t(`plugin "${e.name}" registered`)}#k(e,t){const n=`plugin "${e}" refused: ${t}`;this.#t(n),this.#a.emit("error",{error:new Error(n),context:"plugin",code:"LP0103"})}#A(e,t){return{events:new o(this.#a,t),registerFieldRenderer:e=>{t.stage("renderer",()=>{const t=this.#h(e);return"function"==typeof t?t:void 0})},registerTransform:(e,n)=>{const r={transform:n,active:!1};t.stage("transform",()=>{r.active=!0;const t=this.#y.get(e);return void 0===t?this.#y.set(e,[r]):t.push(r),()=>{r.active=!1;const t=this.#y.get(e);if(void 0===t)return;const n=t.indexOf(r);n>=0&&t.splice(n,1),0===t.length&&this.#y.delete(e)}})},registerCleanup:e=>{t.own(e)},getConfig:()=>this.#d,log:(...t)=>{this.#t(`[${e}]`,...t)}}}#x(e,t){const n=this.#g.get(e);if(void 0!==n)return n.cancelled=!0,n.scope.close(),Promise.resolve();const r=this.#m.get(e);if(void 0!==r)return this.#v.has(e)?Promise.resolve():t?this.#C(r):r;const i=this.#p.get(e);if(void 0===i)return Promise.resolve();this.#p.delete(e),i.scope.close();const o=Promise.resolve().then(()=>this.#N(e,i.plugin,t));return this.#m.set(e,o),o.then(()=>{this.#m.get(e)===o&&this.#m.delete(e)}),o}async#N(e,t,n){if(void 0!==t.destroy){this.#v.add(e);try{await this.#$(()=>t.destroy?.(),n)}catch(t){this.#t(`plugin "${e}" destroy failed:`,t)}finally{this.#v.delete(e)}}}async#L(e){for(const e of this.#g.values())e.cancelled=!0,e.scope.close();const t=[...this.#p.keys()];for(const n of t)await this.#x(n,e)}async#$(e,t){t?await this.#C(Promise.resolve().then(e)):await e()}async#C(e){this.#b+=1;try{await e}finally{this.#b-=1}}#S(e){const t=this.#w.then(e);return this.#w=t.catch(e=>{this.#t("plugin manager mutation failed:",e)}),t}},a="payload-live-preview-highlight",c=/* @__PURE__ */new WeakMap,l=/* @__PURE__ */new WeakMap,u={name:"highlight",version:"1.0.0",init:e=>{if("undefined"==typeof document||"undefined"==typeof window)return;const t="function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,n=function(e,t){let n=c.get(e);void 0===n||n.connected()||(c.delete(e),n=void 0),void 0===n&&(n=function(e,t){const n=e.getElementById(a);if(n instanceof HTMLStyleElement)return{pluginOwned:!1,connected:()=>n.isConnected,remove:()=>{},owners:0};const r=function(e,t){try{if(!Array.isArray(e.adoptedStyleSheets)||"function"!=typeof CSSStyleSheet)return;const n=new CSSStyleSheet;if("function"!=typeof n.replaceSync)return;return n.replaceSync(t),e.adoptedStyleSheets=[...e.adoptedStyleSheets,n],n}catch{return}}(e,t);if(void 0!==r)return{pluginOwned:!0,connected:()=>e.adoptedStyleSheets.includes(r),remove:()=>{e.adoptedStyleSheets=e.adoptedStyleSheets.filter(e=>e!==r)},owners:0};const i=e.createElement("style");return i.id=a,i.textContent=t,e.head.appendChild(i),{pluginOwned:!0,connected:()=>i.isConnected,remove:()=>{i.remove()},owners:0}}(e,t?".lp-highlight{outline:2px solid rgba(0,102,204,0.85);outline-offset:2px;}":"@keyframes lp-highlight{0%{outline:2px solid rgba(0,102,204,0.85);outline-offset:2px}100%{outline:2px solid transparent;outline-offset:2px}}.lp-highlight{animation:lp-highlight 0.6s ease-out;}"),c.set(e,n));const r=n;r.owners+=1;let i=!0;return()=>{i&&(i=!1,r.owners-=1,r.owners>0||(c.get(e)===r&&c.delete(e),r.pluginOwned&&r.remove()))}}(document,t),r=t?1e3:600,i=/* @__PURE__ */new WeakMap,o=/* @__PURE__ */new Set;e.registerCleanup?.(()=>{for(const e of[...o])e();n()}),e.events.on("elementUpdate",e=>{const t=e.element;i.get(t)?.();const n=function(e){let t=l.get(e);void 0===t&&(t={owners:0,pluginAdded:!e.classList.contains("lp-highlight")},l.set(e,t));const n=t;n.owners+=1,e.classList.add("lp-highlight");let r=!0;return()=>{r&&(r=!1,n.owners-=1,n.owners>0||(l.delete(e),n.pluginAdded&&e.classList.remove("lp-highlight")))}}(t);let s=!1;const a=()=>{s||(s=!0,window.clearTimeout(c),i.get(t)===a&&i.delete(t),o.delete(a),n())},c=window.setTimeout(a,r);o.add(a),i.set(t,a)})}},d={name:"debug",version:"1.0.0",init:e=>{e.events.on("init",()=>{e.log("init")}),e.events.on("connect",t=>{e.log("connect ←",t.origin)}),e.events.on("disconnect",t=>{e.log("disconnect (",t.reason,")")}),e.events.on("cacheRefresh",t=>{e.log("cacheRefresh",t.elementCount,"elements,",t.fieldCount,"fields")}),e.events.on("beforeUpdate",t=>{e.log("beforeUpdate",Object.keys(t.data.fields).length,"fields")}),e.events.on("afterUpdate",t=>{e.log("afterUpdate",t.updatedCount,"in",t.durationMs.toFixed(2),"ms")}),e.events.on("error",t=>{e.log("error in",t.context,":",t.error.message)})}};function h(){let e=0,t=0,n=0;return{name:"analytics",version:"1.0.0",init:r=>{r.events.on("afterUpdate",r=>{e+=1,t+=r.updatedCount,n+=r.durationMs})},getStats:()=>({updateCount:e,totalElements:t,totalDurationMs:n,averageDurationMs:0===e?0:n/e})}}var f="payload-live-preview:scroll";function p(){"undefined"!=typeof window&&(function(){if("undefined"!=typeof window)try{sessionStorage.setItem(f,JSON.stringify({href:window.location.href,x:window.scrollX,y:window.scrollY}))}catch{}}(),window.location.reload())}function g(e={}){const t=e.strategy??"silent";return{name:"document-save",version:"1.1.0",init:n=>{let r=!0;const i=/* @__PURE__ */new Set;n.registerCleanup?.(()=>{r=!1;for(const e of i)e.abort();i.clear()}),function(){if("undefined"!=typeof window)try{const e=sessionStorage.getItem(f);if(null===e)return;sessionStorage.removeItem(f);const t=JSON.parse(e);if(t.href!==window.location.href)return;window.scrollTo(t.x??0,t.y??0)}catch{}}(),n.events.on("documentSave",()=>{if(!r)return;if("silent"===t)return;if("reload"===t)return void p();const o=new AbortController;i.add(o);const s="fetch"===t?async function(e,t,n){if(e.handler)try{await e.handler(n)}catch(e){if(!r||n.aborted)return;t("document-save handler threw:",e)}else t("document-save: fetch strategy selected but no handler supplied")}(e,n.log,o.signal):async function(e,t,n,r){if("undefined"==typeof fetch)return void t("document-save: revalidate strategy needs fetch — not available");const i=e.revalidateUrl??"/api/revalidate";let o=!1;try{const s=await fetch(i,{method:"POST",signal:n,headers:{"Content-Type":"application/json",...e.revalidateHeaders??{}},body:JSON.stringify({source:"payload-live-preview"})});if(!r()||n.aborted)return;o=s.ok,o||t("document-save revalidate non-2xx:",s.status)}catch(e){if(!r()||n.aborted)return;t("document-save revalidate failed:",e)}o||"reload"!==e.onRevalidateFailure||p()}(e,n.log,o.signal,()=>r);s.finally(()=>{i.delete(o)})})}}}function m(e){if(null==e)return[];const t=/* @__PURE__ */new Set,n=[];for(const r of e.split(/[\s,]+/)){const e=r.trim();0===e.length||t.has(e)||(t.add(e),n.push(e))}return n}var v="data-payload-island";function y(e){return function(e){return"astro-island"===e.tagName.toLowerCase()||e.hasAttribute(v)}(e)&&!("patch"===e.getAttribute(v))}function isInsideIsland(e){let t=e;for(;null!==t;){if(y(t))return!0;t=t.parentElement}return!1}var w="data-payload-field",b="data-payload-depends",P="data-payload-guessed",S="data-payload-covers";function x(e){if((e.getAttribute("data-payload-fragment")??"").length>0)return"fragment";const t=e.getAttribute("data-payload-strategy");return null!==t?"route"===t?"route":void 0:e.hasAttribute(w)&&null!==e.closest("head")?"route":void 0}function L(e){switch(typeof e){case"string":return e.length>65536?void 0:`s:${e}`;case"number":return`n:${Object.is(e,-0)?"-0":String(e)}`;case"boolean":return"b:"+(e?"1":"0");case"bigint":return`i:${String(e)}`;case"undefined":return"u";case"object":{if(null===e)return"z";let t;try{t=JSON.stringify(e)}catch{return}return t.length>65536?void 0:`o:${t}`}case"symbol":case"function":return}}function k(e){return"object"==typeof e&&null!==e}function A(e){return Array.isArray(e)?"array":k(e)?"object":"scalar"}function $(e,t){return k(e)?e[t]:void 0}function C(e,t,n,r){const i=[];let o=0;const s=(e,t,n,a)=>{if(o+=1,r.covers(e))return;const c=L(n);if(void 0!==c&&c===L(t))return;if(!((void 0===t||A(t)===A(n))&&k(n)&&r.reachesBelow(e)&&a<8))return void i.push({path:e,value:n});const l=function(e,t){const n=new Set(Object.keys(t));if(k(e))for(const t of Object.keys(e))n.add(t);return[...n]}(t,n);0===l.length&&i.push({path:e,value:n});for(const r of l){if(o>=1024)return void i.push({path:e,value:n});s(`${e}.${r}`,$(t,r),$(n,r),a+1)}};return s(e,t,n,0),i}var N=/* @__PURE__ */new Set(["id","_id","createdAt","updatedAt","createdBy","updatedBy","_status","globalType","collection","locale","localized"]);function T(e,t){if(void 0===t||0===t.length)return e;const n=`_${t}`;return e.endsWith(n)?e.slice(0,-n.length):e}function O(e,t){const n=new Set(e),r=[...t],i=(e,t)=>{const n=`${t}.`;for(const t of e)if(t.startsWith(n))return!0;return!1};return{covers:e=>n.has(e)||r.some(t=>t===e||e.startsWith(`${t}.`)),reachesBelow:e=>i(n,e)||i(r,e)}}var U="payload-live-preview-unbound",E={"bottom-right":"bottom:12px;right:12px;","bottom-left":"bottom:12px;left:12px;","top-right":"top:12px;right:12px;","top-left":"top:12px;left:12px;"};function R(e,t,n,r=[],i="descendant"){const o=[...t],s=function(e,t,n){const r=O(e,n),i=e=>r.covers(e)||r.reachesBelow(e);return e=>{if(i(e))return!0;const n=T(e,t);return n!==e&&i(n)}}(o,n,r),a=Object.keys(e).filter(e=>!N.has(e)&&!s(e));return"declared"===i&&a.push(...function(e,t,n,r){const i=O(t,r),o=[];for(const[t,r]of Object.entries(e)){if(N.has(t))continue;const e=T(t,n);if(!i.covers(e)&&i.reachesBelow(e))for(const{path:t}of C(e,void 0,r,i))o.push(t)}return o}(e,o,n,r)),[...new Set(a)].sort((e,t)=>e.localeCompare(t))}function z(e,t){const n=e.createElement("textarea");n.value=t,n.setAttribute("readonly",""),n.style.cssText="position:fixed;opacity:0;pointer-events:none;",e.body.append(n),n.select(),n.remove()}function q(e,t,n){const r=e.createElement("button");return r.type="button",r.textContent=n,r.style.cssText="display:block;width:100%;text-align:left;margin:2px 0;padding:2px 4px;border:0;border-radius:3px;background:#222;color:#7fd1ff;font:inherit;cursor:pointer;",r.title=`Copy ${w}="${t}"`,r.addEventListener("click",()=>{!function(e,t){const n=e.defaultView?.navigator.clipboard;null==n?z(e,t):n.writeText(t).catch(()=>{z(e,t)})}(e,`${w}="${t}"`),r.textContent=`${n} ✓`}),r}function F(e={}){return{name:"unbound-fields",version:"1.0.0",init:t=>{const n=e.root??("undefined"==typeof document?void 0:document);if(void 0===n)return;if((e.onlyWithDebug??1)&&!0!==t.getConfig().debug)return void t.log("not mounted: the client runs without `debug: true`");const r=function(e,t){const n=function(e){return 9===e.nodeType?e:e.ownerDocument}(e);if(null==n?.body)return null;const r=n.createElement("aside");r.id=U,r.style.cssText="position:fixed;z-index:2147483646;max-width:280px;max-height:40vh;overflow:auto;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;background:#111;color:#eee;border:1px solid #333;border-radius:6px;padding:8px 10px;box-shadow:0 4px 16px rgba(0,0,0,0.4);"+t,r.setAttribute("aria-hidden","true"),r.hidden=!0;const i=e=>{const t=n.createElement("div");return t.textContent=e,t.style.cssText="font-weight:600;margin-bottom:4px;",t},o=i("Unbound fields"),s=n.createElement("div"),a=i("Guessed bindings");a.setAttribute("data-testid","guessed-bindings");const c=n.createElement("div");return r.append(o,s,a,c),n.body.append(r),{update:(e,t)=>{r.isConnected||(n.getElementById(U)?.remove(),n.body.append(r)),r.hidden=0===e.length&&0===t.length,o.hidden=0===e.length,s.replaceChildren(...e.map(e=>q(n,e,e))),a.hidden=0===t.length,c.replaceChildren(...t.map(({field:e,matched:t})=>q(n,e,`${e} ← ${JSON.stringify(t)}`)))},destroy:()=>{r.remove()}}}(n,E[e.position??"bottom-right"]);if(null===r)return;t.registerCleanup?.(r.destroy);const i="declared"===t.getConfig().subfieldCoverage?"declared":"descendant",o=t.getConfig().strategies??{};t.events.on("afterUpdate",e=>{const s=R(e.data.fields,function(e){const t=[];for(const n of e.querySelectorAll(`[${w}]`)){const e=n.getAttribute(w);null!==e&&e.length>0&&t.push(e)}return t}(n),e.data.locale,function(e,t){const n=[];for(const t of e.querySelectorAll(`[${S}]`))n.push(...m(t.getAttribute(S)));for(const r of e.querySelectorAll(`[${b}]`)){const e=x(r);void 0!==e&&void 0!==t[e]&&(isInsideIsland(r)||n.push(...m(r.getAttribute(b))))}return n}(n,o),i),a=function(e){const t=[];for(const n of e.querySelectorAll(`[${P}]`)){const e=n.getAttribute(w);null!==e&&0!==e.length&&t.push({field:e,matched:n.getAttribute(P)??""})}return t}(n);r.update(s,a),s.length>0&&t.log("unbound:",s.join(", ")),a.length>0&&t.log("guessed:",a.map(e=>e.field).join(", "))})}}}var EventEmitter=class{#T=/* @__PURE__ */new Map;#O=/* @__PURE__ */new Map;on(e,t){return this.#U(this.#T,e,t)}once(e,t){return this.#U(this.#O,e,t)}off(e,t){this.#E(this.#T,e,t),this.#E(this.#O,e,t)}async emit(e,t){await this.#R(e,t)}async emitWhile(e,t,n){return this.#R(e,t,n)}async#R(e,t,n){const r=()=>n?.()??!0;if(!r())return!1;const i=this.#T.get(e);if(i)for(const n of[...i]){if(!r())return!1;if(await this.#z(n,t,e),!r())return!1}if(!r())return!1;const o=this.#O.get(e);if(o&&o.size>0){const n=[...o];this.#O.delete(e);for(const i of n){if(!r())return!1;if(await this.#z(i,t,e),!r())return!1}}return r()}listenerCount(e){return(this.#T.get(e)?.size??0)+(this.#O.get(e)?.size??0)}removeAllListeners(e){if(void 0===e)return this.#T.clear(),void this.#O.clear();this.#T.delete(e),this.#O.delete(e)}eventNames(){const e=/* @__PURE__ */new Set;for(const t of this.#T.keys())e.add(t);for(const t of this.#O.keys())e.add(t);return[...e]}#U(e,t,n){let r=e.get(t);return r||(r=/* @__PURE__ */new Set,e.set(t,r)),r.add(n),()=>{this.#E(e,t,n)}}#E(e,t,n){const r=e.get(t);void 0!==r&&(r.delete(n),0===r.size&&e.delete(t))}async#z(e,t,r){try{await e(t)}catch(e){const t="string"==typeof r||"number"==typeof r?String(r):"<event>";n(`[live-preview] LP0601: handler for "${t}" threw:`,e)}}},M=Object.freeze({NoTrustedOrigin:"LP0101",ReferrerOnlyTrust:"LP0102",PluginIncompatible:"LP0103",ProfileFeatureOmitted:"LP0104",OrphanField:"LP0201",UnattributableUpdate:"LP0202",UnboundField:"LP0203",VisibilityGateDeferred:"LP0301",UnsafeAttributeWrite:"LP0401",TextTargetHasChildren:"LP0402",MissingArrayTemplate:"LP0403",StructuralItemUnkeyed:"LP0404",StructuralDuplicateKey:"LP0405",StructuralUnstableKeys:"LP0406",UnsupportedStrategy:"LP0407",UnknownValueFormat:"LP0408",SanitizerDroppedAttribute:"LP0409",UnrenderedBlockKept:"LP0410",UnfaithfulPatch:"LP0411",ServerFormatReplaced:"LP0412",UnrenderedBlockLost:"LP0413",MessageRejected:"LP0501",TokenRejected:"LP0502",ProtocolShapeUnknown:"LP0503",HandlerThrew:"LP0601",TransformThrew:"LP0602",RendererThrew:"LP0603",StartupFailed:"LP0605",ReadyFailed:"LP0606",HydrationWaitTimedOut:"LP0607",AuditRuntimeMissing:"LP0701",AuditNoFrameAncestors:"LP0702",AuditFrameOptionsBlocks:"LP0703",AuditBindingsExposed:"LP0704",AuditGateThresholdExceeded:"LP0705",AuditUnownedBindings:"LP0706",AuditNoBindings:"LP0707",AuditNotAPage:"LP0708",FragmentRequestFailed:"LP0801",FragmentResponseInvalid:"LP0802",FragmentUnauthorized:"LP0803",FragmentSuperseded:"LP0804",RouteRefreshLoop:"LP0805",FragmentStrategyUnavailable:"LP0806",UnboundChangeRefresh:"LP0807",EscalationUnavailable:"LP0808",IslandStartUnavailable:"LP0809",RouteRefreshUnconfirmed:"LP0810",V2ReadinessGap:"LP0709",RuntimeOnPublicPage:"LP0710"});export{M as DIAGNOSTIC_CODES,EventEmitter,s as PluginManager,h as createAnalyticsPlugin,F as createUnboundFieldsOverlayPlugin,d as debugPlugin,g as documentSavePlugin,u as highlightPlugin,R as unboundFieldNames};
|
|
1
|
+
function e(e){return("object"==typeof e&&null!==e||"function"==typeof e)&&"function"==typeof e.then&&(Promise.resolve(e).catch(()=>{}),!0)}function t(t){return(...n)=>{try{e(t(...n))}catch{}}}var n=t((...e)=>console.error(...e)),r=()=>{},i=class{#e;#t;#n=/* @__PURE__ */new Set;#r="staging";constructor(e,t){this.#e=e,this.#t=t}assertOpen(){if("closed"===this.#r)throw new Error(`Plugin context for "${this.#e}" is no longer active`)}get active(){return"active"===this.#r}eligible(){return"closed"!==this.#r}own(e){return this.assertOpen(),this.#i({kind:"cleanup",acquire:void 0,finalize:void 0,cleanup:e,disposed:!1})}stage(e,t,n){this.assertOpen();const r={kind:e,acquire:t,finalize:n,cleanup:void 0,disposed:!1},i=this.#i(r);if("active"===this.#r)try{this.#o(r)}catch(e){throw this.#s(r),e}return i}counts(){const e={transform:0,renderer:0,subscription:0,cleanup:0};for(const t of this.#n)e[t.kind]+=1;return e}commit(){if("staging"!==this.#r)throw new Error(`Plugin context for "${this.#e}" cannot be committed`);this.#r="committing";try{for(const e of this.#n)this.#o(e);this.#r="active"}catch(e){throw this.close(),e}}close(){if("closed"!==this.#r){this.#r="closed";for(const e of[...this.#n].reverse())this.#s(e);this.#n.clear()}}#i(e){return this.#n.add(e),()=>{this.#s(e)}}#o(e){if(e.disposed||void 0!==e.cleanup||void 0===e.acquire)return;const t=e.acquire();e.cleanup=t??r}#s(t){if(t.disposed)return;t.disposed=!0,this.#n.delete(t);const n=t.cleanup;if(t.cleanup=void 0,void 0!==n)try{e(n())&&this.#t(`plugin "${this.#e}" cleanup returned a Promise/thenable; cleanups must be synchronous`)}catch(e){this.#t(`plugin "${this.#e}" cleanup failed:`,e)}try{t.finalize?.()}catch(e){this.#t(`plugin "${this.#e}" cleanup failed:`,e)}}},o=class{#a;#c;#l=/* @__PURE__ */new Set;constructor(e,t){this.#a=e,this.#c=t}on(e,t){return this.#u("on",e,t)}once(e,t){return this.#u("once",e,t)}off(e,t){const n=t;for(const t of[...this.#l])t.event===e&&t.handler===n&&t.dispose()}emit(e,t){return this.#c.assertOpen(),this.#a.emit(e,t)}emitWhile(e,t,n){return this.#c.assertOpen(),this.#a.emitWhile(e,t,()=>{if(!this.#c.eligible())return!1;const e=n();return!!this.#c.eligible()&&e})}listenerCount(e){let t=0;for(const n of this.#l)n.event===e&&(t+=1);return t}removeAllListeners(e){for(const t of[...this.#l])void 0!==e&&t.event!==e||t.dispose()}eventNames(){const e=/* @__PURE__ */new Set;for(const t of this.#l)e.add(t.event);return[...e]}#u(e,t,n){this.#c.assertOpen();const i=n,o=[...this.#l].find(n=>n.kind===e&&n.event===t&&n.handler===i);if(void 0!==o)return o.dispose;let s=r,a=!0;const c=async t=>{this.#c.active&&a&&("once"===e&&s(),await n(t))},l={kind:e,event:t,handler:i,dispose:r};return s=this.#c.stage("subscription",()=>this.#a[e](t,c),()=>{a=!1,this.#l.delete(l)}),l.dispose=s,this.#l.add(l),s}},s=class{#a;#d;#h;#f;#t;#p=/* @__PURE__ */new Map;#g=/* @__PURE__ */new Map;#m=/* @__PURE__ */new Map;#v=/* @__PURE__ */new Set;#y=/* @__PURE__ */new Map;#w=Promise.resolve();#b=0;constructor(e){this.#a=e.events,this.#d=e.config,this.#h=e.registerFieldRenderer,this.#t=t(e.log);const n=e.onTransformError;this.#f=void 0===n?void 0:t((...e)=>{const t=e[0];try{return n(t)}catch(e){return void this.#t("transform error reporter failed:",e)}})}register(e){return this.#b>0?this.#P(e,!1):this.#S(()=>this.#P(e,!0))}unregister(e){return this.#b>0?this.#x(e,!1):this.#S(async()=>{await this.#x(e,!0)})}destroyAll(){return this.#b>0?this.#L(!1):this.#S(async()=>{await this.#L(!0)})}applyTransforms(t,n,r,i){const o=this.#y.get(t);if(void 0===o||0===o.length)return n;let s=n;for(const a of[...o]){if(!a.active)continue;const{transform:o}=a;if(!1===i?.())return n;try{s=o(s,{fieldName:t,element:r.element,allFields:r.allFields});const a=e(s);if(!1===i?.())return n;if(a)throw new TypeError(`Transform for "${t}" returned a Promise/thenable; transforms must be synchronous`)}catch(e){if(!1===i?.())return n;const r=e instanceof Error?e:new Error(String(e));return this.#t(`transform for "${t}" failed:`,r),this.#f?.(r),n}}return s}list(){return[...this.#p.keys()]}snapshot(){const e=[],t=(e,t,n,r)=>{const i=r.counts();return{name:e,version:t,state:n,registrations:{transforms:i.transform,renderers:i.renderer,subscriptions:i.subscription,cleanups:i.cleanup}}};for(const[n,r]of this.#g)e.push(t(n,void 0,"initializing",r.scope));for(const[n,r]of this.#p)e.push(t(n,r.plugin.version,"active",r.scope));for(const t of this.#m.keys())e.push({name:t,version:void 0,state:"tearing-down",registrations:{transforms:0,renderers:0,subscriptions:0,cleanups:0}});return e}get size(){return this.#p.size}async#P(e,t){if(this.#p.has(e.name)||this.#g.has(e.name)||this.#m.has(e.name))return void this.#t(`plugin "${e.name}" already registered`);const n=function(e,t){if(void 0!==e){if(void 0!==e.runtime&&!function(e,t){const n=function(e){const t=/^v?(\d+)\.(\d+)\.(\d+)/.exec(e.trim());if(null!==t)return[Number(t[1]),Number(t[2]),Number(t[3])]}(e);return void 0!==n&&t.split("||").some(e=>{const r=e.trim().split(/\s+/).filter(e=>e.length>0);return 0===r.length?""===e.trim()&&""===t.trim():r.every(e=>function(e,t){const n=t.trim();if(""===n||"*"===n)return!0;const r=/^(\^|~|>=|<=|>|<|=)?\s*v?(\d+)\.(\d+)\.(\d+)/.exec(n);if(null===r)return!1;const i=r[1]??"=",o=[Number(r[2]),Number(r[3]),Number(r[4])],s=function(e,t){for(let n=0;n<3;n+=1){const r=(e[n]??0)-(t[n]??0);if(0!==r)return r}return 0}(e,o);switch(i){case"=":return 0===s;case">":return s>0;case">=":return s>=0;case"<":return s<0;case"<=":return s<=0;case"~":return s>=0&&e[0]===o[0]&&e[1]===o[1];case"^":return!(s<0)&&(o[0]>0?e[0]===o[0]:o[1]>0?0===e[0]&&e[1]===o[1]:0===e[0]&&0===e[1]&&e[2]===o[2]);default:return!1}}(n,e))})}(t,e.runtime))return`declares runtime ${e.runtime}, this runtime is ${t}`;if(void 0!==e.protocol){if(!Number.isInteger(e.protocol)||e.protocol<1)return`declares an invalid protocol version ${String(e.protocol)}`;if(e.protocol<4)return`declares protocol ${String(e.protocol)}, this runtime speaks ${String(4)}`}}}(e.compat,"2.2.0");if(void 0!==n)return void this.#k(e.name,n);const r=new i(e.name,this.#t),o=this.#A(e.name,r),s={scope:r,cancelled:!1};this.#g.set(e.name,s);try{if(await this.#$(()=>e.init(o),t),s.cancelled)return;r.commit()}catch(t){return r.close(),void(s.cancelled||this.#t(`plugin "${e.name}" init failed:`,t))}finally{this.#g.get(e.name)===s&&this.#g.delete(e.name)}this.#p.set(e.name,{plugin:e,scope:r}),this.#t(`plugin "${e.name}" registered`)}#k(e,t){const n=`plugin "${e}" refused: ${t}`;this.#t(n),this.#a.emit("error",{error:new Error(n),context:"plugin",code:"LP0103"})}#A(e,t){return{events:new o(this.#a,t),registerFieldRenderer:e=>{t.stage("renderer",()=>{const t=this.#h(e);return"function"==typeof t?t:void 0})},registerTransform:(e,n)=>{const r={transform:n,active:!1};t.stage("transform",()=>{r.active=!0;const t=this.#y.get(e);return void 0===t?this.#y.set(e,[r]):t.push(r),()=>{r.active=!1;const t=this.#y.get(e);if(void 0===t)return;const n=t.indexOf(r);n>=0&&t.splice(n,1),0===t.length&&this.#y.delete(e)}})},registerCleanup:e=>{t.own(e)},getConfig:()=>this.#d,log:(...t)=>{this.#t(`[${e}]`,...t)}}}#x(e,t){const n=this.#g.get(e);if(void 0!==n)return n.cancelled=!0,n.scope.close(),Promise.resolve();const r=this.#m.get(e);if(void 0!==r)return this.#v.has(e)?Promise.resolve():t?this.#C(r):r;const i=this.#p.get(e);if(void 0===i)return Promise.resolve();this.#p.delete(e),i.scope.close();const o=Promise.resolve().then(()=>this.#N(e,i.plugin,t));return this.#m.set(e,o),o.then(()=>{this.#m.get(e)===o&&this.#m.delete(e)}),o}async#N(e,t,n){if(void 0!==t.destroy){this.#v.add(e);try{await this.#$(()=>t.destroy?.(),n)}catch(t){this.#t(`plugin "${e}" destroy failed:`,t)}finally{this.#v.delete(e)}}}async#L(e){for(const e of this.#g.values())e.cancelled=!0,e.scope.close();const t=[...this.#p.keys()];for(const n of t)await this.#x(n,e)}async#$(e,t){t?await this.#C(Promise.resolve().then(e)):await e()}async#C(e){this.#b+=1;try{await e}finally{this.#b-=1}}#S(e){const t=this.#w.then(e);return this.#w=t.catch(e=>{this.#t("plugin manager mutation failed:",e)}),t}},a="payload-live-preview-highlight",c=/* @__PURE__ */new WeakMap,l=/* @__PURE__ */new WeakMap,u={name:"highlight",version:"1.0.0",init:e=>{if("undefined"==typeof document||"undefined"==typeof window)return;const t="function"==typeof window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches,n=function(e,t){let n=c.get(e);void 0===n||n.connected()||(c.delete(e),n=void 0),void 0===n&&(n=function(e,t){const n=e.getElementById(a);if(n instanceof HTMLStyleElement)return{pluginOwned:!1,connected:()=>n.isConnected,remove:()=>{},owners:0};const r=function(e,t){try{if(!Array.isArray(e.adoptedStyleSheets)||"function"!=typeof CSSStyleSheet)return;const n=new CSSStyleSheet;if("function"!=typeof n.replaceSync)return;return n.replaceSync(t),e.adoptedStyleSheets=[...e.adoptedStyleSheets,n],n}catch{return}}(e,t);if(void 0!==r)return{pluginOwned:!0,connected:()=>e.adoptedStyleSheets.includes(r),remove:()=>{e.adoptedStyleSheets=e.adoptedStyleSheets.filter(e=>e!==r)},owners:0};const i=e.createElement("style");return i.id=a,i.textContent=t,e.head.appendChild(i),{pluginOwned:!0,connected:()=>i.isConnected,remove:()=>{i.remove()},owners:0}}(e,t?".lp-highlight{outline:2px solid rgba(0,102,204,0.85);outline-offset:2px;}":"@keyframes lp-highlight{0%{outline:2px solid rgba(0,102,204,0.85);outline-offset:2px}100%{outline:2px solid transparent;outline-offset:2px}}.lp-highlight{animation:lp-highlight 0.6s ease-out;}"),c.set(e,n));const r=n;r.owners+=1;let i=!0;return()=>{i&&(i=!1,r.owners-=1,r.owners>0||(c.get(e)===r&&c.delete(e),r.pluginOwned&&r.remove()))}}(document,t),r=t?1e3:600,i=/* @__PURE__ */new WeakMap,o=/* @__PURE__ */new Set;e.registerCleanup?.(()=>{for(const e of[...o])e();n()}),e.events.on("elementUpdate",e=>{const t=e.element;i.get(t)?.();const n=function(e){let t=l.get(e);void 0===t&&(t={owners:0,pluginAdded:!e.classList.contains("lp-highlight")},l.set(e,t));const n=t;n.owners+=1,e.classList.add("lp-highlight");let r=!0;return()=>{r&&(r=!1,n.owners-=1,n.owners>0||(l.delete(e),n.pluginAdded&&e.classList.remove("lp-highlight")))}}(t);let s=!1;const a=()=>{s||(s=!0,window.clearTimeout(c),i.get(t)===a&&i.delete(t),o.delete(a),n())},c=window.setTimeout(a,r);o.add(a),i.set(t,a)})}},d={name:"debug",version:"1.0.0",init:e=>{e.events.on("init",()=>{e.log("init")}),e.events.on("connect",t=>{e.log("connect ←",t.origin)}),e.events.on("disconnect",t=>{e.log("disconnect (",t.reason,")")}),e.events.on("cacheRefresh",t=>{e.log("cacheRefresh",t.elementCount,"elements,",t.fieldCount,"fields")}),e.events.on("beforeUpdate",t=>{e.log("beforeUpdate",Object.keys(t.data.fields).length,"fields")}),e.events.on("afterUpdate",t=>{e.log("afterUpdate",t.updatedCount,"in",t.durationMs.toFixed(2),"ms")}),e.events.on("error",t=>{e.log("error in",t.context,":",t.error.message)})}};function h(){let e=0,t=0,n=0;return{name:"analytics",version:"1.0.0",init:r=>{r.events.on("afterUpdate",r=>{e+=1,t+=r.updatedCount,n+=r.durationMs})},getStats:()=>({updateCount:e,totalElements:t,totalDurationMs:n,averageDurationMs:0===e?0:n/e})}}var f="payload-live-preview:scroll";function p(){"undefined"!=typeof window&&(function(){if("undefined"!=typeof window)try{sessionStorage.setItem(f,JSON.stringify({href:window.location.href,x:window.scrollX,y:window.scrollY}))}catch{}}(),window.location.reload())}function g(e={}){const t=e.strategy??"silent";return{name:"document-save",version:"1.1.0",init:n=>{let r=!0;const i=/* @__PURE__ */new Set;n.registerCleanup?.(()=>{r=!1;for(const e of i)e.abort();i.clear()}),function(){if("undefined"!=typeof window)try{const e=sessionStorage.getItem(f);if(null===e)return;sessionStorage.removeItem(f);const t=JSON.parse(e);if(t.href!==window.location.href)return;window.scrollTo(t.x??0,t.y??0)}catch{}}(),n.events.on("documentSave",()=>{if(!r)return;if("silent"===t)return;if("reload"===t)return void p();const o=new AbortController;i.add(o);const s="fetch"===t?async function(e,t,n){if(e.handler)try{await e.handler(n)}catch(e){if(!r||n.aborted)return;t("document-save handler threw:",e)}else t("document-save: fetch strategy selected but no handler supplied")}(e,n.log,o.signal):async function(e,t,n,r){if("undefined"==typeof fetch)return void t("document-save: revalidate strategy needs fetch — not available");const i=e.revalidateUrl??"/api/revalidate";let o=!1;try{const s=await fetch(i,{method:"POST",signal:n,headers:{"Content-Type":"application/json",...e.revalidateHeaders??{}},body:JSON.stringify({source:"payload-live-preview"})});if(!r()||n.aborted)return;o=s.ok,o||t("document-save revalidate non-2xx:",s.status)}catch(e){if(!r()||n.aborted)return;t("document-save revalidate failed:",e)}o||"reload"!==e.onRevalidateFailure||p()}(e,n.log,o.signal,()=>r);s.finally(()=>{i.delete(o)})})}}}function m(e){if(null==e)return[];const t=/* @__PURE__ */new Set,n=[];for(const r of e.split(/[\s,]+/)){const e=r.trim();0===e.length||t.has(e)||(t.add(e),n.push(e))}return n}var v="data-payload-island";function y(e){return function(e){return"astro-island"===e.tagName.toLowerCase()||e.hasAttribute(v)}(e)&&!("patch"===e.getAttribute(v))}function isInsideIsland(e){let t=e;for(;null!==t;){if(y(t))return!0;t=t.parentElement}return!1}var w="data-payload-field",b="data-payload-depends",P="data-payload-guessed",S="data-payload-covers";function x(e){if((e.getAttribute("data-payload-fragment")??"").length>0)return"fragment";const t=e.getAttribute("data-payload-strategy");return null!==t?"route"===t?"route":void 0:e.hasAttribute(w)&&null!==e.closest("head")?"route":void 0}function L(e){switch(typeof e){case"string":return e.length>65536?void 0:`s:${e}`;case"number":return`n:${Object.is(e,-0)?"-0":String(e)}`;case"boolean":return"b:"+(e?"1":"0");case"bigint":return`i:${String(e)}`;case"undefined":return"u";case"object":{if(null===e)return"z";let t;try{t=JSON.stringify(e)}catch{return}return t.length>65536?void 0:`o:${t}`}case"symbol":case"function":return}}function k(e){return"object"==typeof e&&null!==e}function A(e){return Array.isArray(e)?"array":k(e)?"object":"scalar"}function $(e,t){return k(e)?e[t]:void 0}function C(e,t,n,r){const i=[];let o=0;const s=(e,t,n,a)=>{if(o+=1,r.covers(e))return;const c=L(n);if(void 0!==c&&c===L(t))return;if(!((void 0===t||A(t)===A(n))&&k(n)&&r.reachesBelow(e)&&a<8))return void i.push({path:e,value:n});const l=function(e,t){const n=new Set(Object.keys(t));if(k(e))for(const t of Object.keys(e))n.add(t);return[...n]}(t,n);0===l.length&&i.push({path:e,value:n});for(const r of l){if(o>=1024)return void i.push({path:e,value:n});s(`${e}.${r}`,$(t,r),$(n,r),a+1)}};return s(e,t,n,0),i}var N=/* @__PURE__ */new Set(["id","_id","createdAt","updatedAt","createdBy","updatedBy","_status","globalType","collection","locale","localized"]);function T(e,t){if(void 0===t||0===t.length)return e;const n=`_${t}`;return e.endsWith(n)?e.slice(0,-n.length):e}function O(e,t){const n=new Set(e),r=[...t],i=(e,t)=>{const n=`${t}.`;for(const t of e)if(t.startsWith(n))return!0;return!1};return{covers:e=>n.has(e)||r.some(t=>t===e||e.startsWith(`${t}.`)),reachesBelow:e=>i(n,e)||i(r,e)}}var U="payload-live-preview-unbound",E={"bottom-right":"bottom:12px;right:12px;","bottom-left":"bottom:12px;left:12px;","top-right":"top:12px;right:12px;","top-left":"top:12px;left:12px;"};function R(e,t,n,r=[],i="descendant"){const o=[...t],s=function(e,t,n){const r=O(e,n),i=e=>r.covers(e)||r.reachesBelow(e);return e=>{if(i(e))return!0;const n=T(e,t);return n!==e&&i(n)}}(o,n,r),a=Object.keys(e).filter(e=>!N.has(e)&&!s(e));return"declared"===i&&a.push(...function(e,t,n,r){const i=O(t,r),o=[];for(const[t,r]of Object.entries(e)){if(N.has(t))continue;const e=T(t,n);if(!i.covers(e)&&i.reachesBelow(e))for(const{path:t}of C(e,void 0,r,i))o.push(t)}return o}(e,o,n,r)),[...new Set(a)].sort((e,t)=>e.localeCompare(t))}function z(e,t){const n=e.createElement("textarea");n.value=t,n.setAttribute("readonly",""),n.style.cssText="position:fixed;opacity:0;pointer-events:none;",e.body.append(n),n.select(),n.remove()}function q(e,t,n){const r=e.createElement("button");return r.type="button",r.textContent=n,r.style.cssText="display:block;width:100%;text-align:left;margin:2px 0;padding:2px 4px;border:0;border-radius:3px;background:#222;color:#7fd1ff;font:inherit;cursor:pointer;",r.title=`Copy ${w}="${t}"`,r.addEventListener("click",()=>{!function(e,t){const n=e.defaultView?.navigator.clipboard;null==n?z(e,t):n.writeText(t).catch(()=>{z(e,t)})}(e,`${w}="${t}"`),r.textContent=`${n} ✓`}),r}function F(e={}){return{name:"unbound-fields",version:"1.0.0",init:t=>{const n=e.root??("undefined"==typeof document?void 0:document);if(void 0===n)return;if((e.onlyWithDebug??1)&&!0!==t.getConfig().debug)return void t.log("not mounted: the client runs without `debug: true`");const r=function(e,t){const n=function(e){return 9===e.nodeType?e:e.ownerDocument}(e);if(null==n?.body)return null;const r=n.createElement("aside");r.id=U,r.style.cssText="position:fixed;z-index:2147483646;max-width:280px;max-height:40vh;overflow:auto;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,monospace;background:#111;color:#eee;border:1px solid #333;border-radius:6px;padding:8px 10px;box-shadow:0 4px 16px rgba(0,0,0,0.4);"+t,r.setAttribute("aria-hidden","true"),r.hidden=!0;const i=e=>{const t=n.createElement("div");return t.textContent=e,t.style.cssText="font-weight:600;margin-bottom:4px;",t},o=i("Unbound fields"),s=n.createElement("div"),a=i("Guessed bindings");a.setAttribute("data-testid","guessed-bindings");const c=n.createElement("div");return r.append(o,s,a,c),n.body.append(r),{update:(e,t)=>{r.isConnected||(n.getElementById(U)?.remove(),n.body.append(r)),r.hidden=0===e.length&&0===t.length,o.hidden=0===e.length,s.replaceChildren(...e.map(e=>q(n,e,e))),a.hidden=0===t.length,c.replaceChildren(...t.map(({field:e,matched:t})=>q(n,e,`${e} ← ${JSON.stringify(t)}`)))},destroy:()=>{r.remove()}}}(n,E[e.position??"bottom-right"]);if(null===r)return;t.registerCleanup?.(r.destroy);const i="declared"===t.getConfig().subfieldCoverage?"declared":"descendant",o=t.getConfig().strategies??{};t.events.on("afterUpdate",e=>{const s=R(e.data.fields,function(e){const t=[];for(const n of e.querySelectorAll(`[${w}]`)){const e=n.getAttribute(w);null!==e&&e.length>0&&t.push(e)}return t}(n),e.data.locale,function(e,t){const n=[];for(const t of e.querySelectorAll(`[${S}]`))n.push(...m(t.getAttribute(S)));for(const r of e.querySelectorAll(`[${b}]`)){const e=x(r);void 0!==e&&void 0!==t[e]&&(isInsideIsland(r)||n.push(...m(r.getAttribute(b))))}return n}(n,o),i),a=function(e){const t=[];for(const n of e.querySelectorAll(`[${P}]`)){const e=n.getAttribute(w);null!==e&&0!==e.length&&t.push({field:e,matched:n.getAttribute(P)??""})}return t}(n);r.update(s,a),s.length>0&&t.log("unbound:",s.join(", ")),a.length>0&&t.log("guessed:",a.map(e=>e.field).join(", "))})}}}var EventEmitter=class{#T=/* @__PURE__ */new Map;#O=/* @__PURE__ */new Map;on(e,t){return this.#U(this.#T,e,t)}once(e,t){return this.#U(this.#O,e,t)}off(e,t){this.#E(this.#T,e,t),this.#E(this.#O,e,t)}async emit(e,t){await this.#R(e,t)}async emitWhile(e,t,n){return this.#R(e,t,n)}async#R(e,t,n){const r=()=>n?.()??!0;if(!r())return!1;const i=this.#T.get(e);if(i)for(const n of[...i]){if(!r())return!1;if(await this.#z(n,t,e),!r())return!1}if(!r())return!1;const o=this.#O.get(e);if(o&&o.size>0){const n=[...o];this.#O.delete(e);for(const i of n){if(!r())return!1;if(await this.#z(i,t,e),!r())return!1}}return r()}listenerCount(e){return(this.#T.get(e)?.size??0)+(this.#O.get(e)?.size??0)}removeAllListeners(e){if(void 0===e)return this.#T.clear(),void this.#O.clear();this.#T.delete(e),this.#O.delete(e)}eventNames(){const e=/* @__PURE__ */new Set;for(const t of this.#T.keys())e.add(t);for(const t of this.#O.keys())e.add(t);return[...e]}#U(e,t,n){let r=e.get(t);return r||(r=/* @__PURE__ */new Set,e.set(t,r)),r.add(n),()=>{this.#E(e,t,n)}}#E(e,t,n){const r=e.get(t);void 0!==r&&(r.delete(n),0===r.size&&e.delete(t))}async#z(e,t,r){try{await e(t)}catch(e){const t="string"==typeof r||"number"==typeof r?String(r):"<event>";n(`[live-preview] LP0601: handler for "${t}" threw:`,e)}}},M=Object.freeze({NoTrustedOrigin:"LP0101",ReferrerOnlyTrust:"LP0102",PluginIncompatible:"LP0103",ProfileFeatureOmitted:"LP0104",OrphanField:"LP0201",UnattributableUpdate:"LP0202",UnboundField:"LP0203",VisibilityGateDeferred:"LP0301",UnsafeAttributeWrite:"LP0401",TextTargetHasChildren:"LP0402",MissingArrayTemplate:"LP0403",StructuralItemUnkeyed:"LP0404",StructuralDuplicateKey:"LP0405",StructuralUnstableKeys:"LP0406",UnsupportedStrategy:"LP0407",UnknownValueFormat:"LP0408",SanitizerDroppedAttribute:"LP0409",UnrenderedBlockKept:"LP0410",UnfaithfulPatch:"LP0411",ServerFormatReplaced:"LP0412",UnrenderedBlockLost:"LP0413",MessageRejected:"LP0501",TokenRejected:"LP0502",ProtocolShapeUnknown:"LP0503",HandlerThrew:"LP0601",TransformThrew:"LP0602",RendererThrew:"LP0603",StartupFailed:"LP0605",ReadyFailed:"LP0606",HydrationWaitTimedOut:"LP0607",AuditRuntimeMissing:"LP0701",AuditNoFrameAncestors:"LP0702",AuditFrameOptionsBlocks:"LP0703",AuditBindingsExposed:"LP0704",AuditGateThresholdExceeded:"LP0705",AuditUnownedBindings:"LP0706",AuditNoBindings:"LP0707",AuditNotAPage:"LP0708",FragmentRequestFailed:"LP0801",FragmentResponseInvalid:"LP0802",FragmentUnauthorized:"LP0803",FragmentSuperseded:"LP0804",RouteRefreshLoop:"LP0805",FragmentStrategyUnavailable:"LP0806",UnboundChangeRefresh:"LP0807",EscalationUnavailable:"LP0808",IslandStartUnavailable:"LP0809",RouteRefreshUnconfirmed:"LP0810",V2ReadinessGap:"LP0709",RuntimeOnPublicPage:"LP0710"});export{M as DIAGNOSTIC_CODES,EventEmitter,s as PluginManager,h as createAnalyticsPlugin,F as createUnboundFieldsOverlayPlugin,d as debugPlugin,g as documentSavePlugin,u as highlightPlugin,R as unboundFieldNames};
|
|
2
2
|
//# sourceMappingURL=plugins.js.map
|