payload-live-preview 2.2.0 → 2.2.1

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.
Files changed (79) hide show
  1. package/README.md +32 -18
  2. package/dist/adapters/astro/index.js +1 -1
  3. package/dist/adapters/astro/index.js.map +1 -1
  4. package/dist/adapters/astro/middleware-entry.js +1 -1
  5. package/dist/adapters/astro/middleware-entry.js.map +1 -1
  6. package/dist/adapters/nextjs/index.js +1 -1
  7. package/dist/adapters/nextjs/index.js.map +1 -1
  8. package/dist/adapters/nuxt/index.js +1 -1
  9. package/dist/adapters/nuxt/index.js.map +1 -1
  10. package/dist/adapters/react/index.d.ts +2 -2
  11. package/dist/adapters/react/index.js +1 -1
  12. package/dist/adapters/react/index.js.map +1 -1
  13. package/dist/adapters/sveltekit/index.js +1 -1
  14. package/dist/adapters/sveltekit/index.js.map +1 -1
  15. package/dist/adapters/vue/index.d.ts +2 -2
  16. package/dist/adapters/vue/index.js +1 -1
  17. package/dist/adapters/vue/index.js.map +1 -1
  18. package/dist/annotate.d.ts +22 -15
  19. package/dist/annotate.js +1 -1
  20. package/dist/annotate.js.map +1 -1
  21. package/dist/client.cjs +1 -1
  22. package/dist/client.cjs.map +1 -1
  23. package/dist/client.d.cts +112 -112
  24. package/dist/client.d.ts +112 -112
  25. package/dist/client.js +1 -1
  26. package/dist/client.js.map +1 -1
  27. package/dist/codegen-cli.js +1 -1
  28. package/dist/codegen-cli.js.map +1 -1
  29. package/dist/codegen.cjs +1 -1
  30. package/dist/codegen.cjs.map +1 -1
  31. package/dist/codegen.d.cts +14 -16
  32. package/dist/codegen.d.ts +14 -16
  33. package/dist/codegen.js +1 -1
  34. package/dist/codegen.js.map +1 -1
  35. package/dist/core.cjs +1 -1
  36. package/dist/core.cjs.map +1 -1
  37. package/dist/core.d.cts +176 -170
  38. package/dist/core.d.ts +176 -170
  39. package/dist/core.js +1 -1
  40. package/dist/core.js.map +1 -1
  41. package/dist/doctor-cli.d.ts +1 -1
  42. package/dist/doctor-cli.js +1 -1
  43. package/dist/doctor-cli.js.map +1 -1
  44. package/dist/doctor.d.ts +2 -2
  45. package/dist/doctor.js +1 -1
  46. package/dist/doctor.js.map +1 -1
  47. package/dist/{document-session-DWi9H3Qk.d.ts → document-session-Bkd181PV.d.ts} +3 -2
  48. package/dist/fragment.cjs.map +1 -1
  49. package/dist/fragment.d.cts +1 -1
  50. package/dist/fragment.d.ts +1 -1
  51. package/dist/fragment.js.map +1 -1
  52. package/dist/index.cjs +1 -1
  53. package/dist/index.cjs.map +1 -1
  54. package/dist/index.d.cts +181 -175
  55. package/dist/index.d.ts +181 -175
  56. package/dist/index.js +1 -1
  57. package/dist/index.js.map +1 -1
  58. package/dist/lean.cjs +1 -1
  59. package/dist/lean.cjs.map +1 -1
  60. package/dist/lean.js +1 -1
  61. package/dist/lean.js.map +1 -1
  62. package/dist/lexical.cjs +1 -1
  63. package/dist/lexical.cjs.map +1 -1
  64. package/dist/lexical.js +1 -1
  65. package/dist/lexical.js.map +1 -1
  66. package/dist/plugins.cjs +1 -1
  67. package/dist/plugins.cjs.map +1 -1
  68. package/dist/plugins.d.cts +1 -1
  69. package/dist/plugins.d.ts +1 -1
  70. package/dist/plugins.js +1 -1
  71. package/dist/plugins.js.map +1 -1
  72. package/dist/{probe-DpMZ4fOS.d.ts → probe-D-IHg9dF.d.ts} +1 -1
  73. package/dist/structural.cjs +2 -2
  74. package/dist/structural.cjs.map +1 -1
  75. package/dist/structural.d.cts +27 -27
  76. package/dist/structural.d.ts +27 -27
  77. package/dist/structural.js +2 -2
  78. package/dist/structural.js.map +1 -1
  79. package/package.json +7 -6
@@ -139,7 +139,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
139
139
  readonly AuditGateThresholdExceeded: "LP0705";
140
140
  /** Owner markers exist, but some bindings are outside all of them. */
141
141
  readonly AuditUnownedBindings: "LP0706";
142
- /** The preview response carries no bindings at all. */
142
+ /** The preview response carries no bindings and no fragment boundary. */
143
143
  readonly AuditNoBindings: "LP0707";
144
144
  /** The URL did not return an HTML page, so nothing else can be judged. */
145
145
  readonly AuditNotAPage: "LP0708";
package/dist/plugins.d.ts CHANGED
@@ -139,7 +139,7 @@ declare const DIAGNOSTIC_CODES: Readonly<{
139
139
  readonly AuditGateThresholdExceeded: "LP0705";
140
140
  /** Owner markers exist, but some bindings are outside all of them. */
141
141
  readonly AuditUnownedBindings: "LP0706";
142
- /** The preview response carries no bindings at all. */
142
+ /** The preview response carries no bindings and no fragment boundary. */
143
143
  readonly AuditNoBindings: "LP0707";
144
144
  /** The URL did not return an HTML page, so nothing else can be judged. */
145
145
  readonly AuditNotAPage: "LP0708";
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.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};
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.1");if(void 0!==n)return void this.#A(e.name,n);const r=new i(e.name,this.#t),o=this.#k(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`)}#A(e,t){const n=`plugin "${e}" refused: ${t}`;this.#t(n),this.#a.emit("error",{error:new Error(n),context:"plugin",code:"LP0103"})}#k(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 A(e){return"object"==typeof e&&null!==e}function k(e){return Array.isArray(e)?"array":A(e)?"object":"scalar"}function $(e,t){return A(e)?e[t]:void 0}function C(e,t){return("string"==typeof t||"number"==typeof t)&&A(e)&&!Array.isArray(e)&&e.id===t}function N(e,t){if(!A(e)||!A(t))return C(e,t)||C(t,e)||L(e)===L(t);if(Array.isArray(e)!==Array.isArray(t))return!1;const n=Object.keys(t);return n.length===Object.keys(e).length&&n.every(n=>Object.hasOwn(e,n)&&N($(e,n),$(t,n)))}function O(e,t){const n=L(t),r=L(e);return void 0!==n&&n===r||!(!C(e,t)&&!C(t,e))||void 0!==n&&void 0!==r&&N(e,t)}function T(e,t,n,r){const i=[];let o=0;const s=(e,t,n,a)=>{if(o+=1,r.covers(e)||O(t,n))return;if(!((void 0===t||k(t)===k(n))&&A(n)&&r.reachesBelow(e)&&a<8))return void i.push({path:e,value:n});const c=function(e,t){const n=new Set(Object.keys(t));if(A(e))for(const t of Object.keys(e))n.add(t);return[...n]}(t,n);0===c.length&&i.push({path:e,value:n});for(const r of c){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 U=/* @__PURE__ */new Set(["id","_id","createdAt","updatedAt","createdBy","updatedBy","_status","globalType","collection","locale","localized"]);function E(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 R(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 z="payload-live-preview-unbound",q={"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 F(e,t,n,r=[],i="descendant"){const o=[...t],s=function(e,t,n){const r=R(e,n),i=e=>r.covers(e)||r.reachesBelow(e);return e=>{if(i(e))return!0;const n=E(e,t);return n!==e&&i(n)}}(o,n,r),a=Object.keys(e).filter(e=>!U.has(e)&&!s(e));return"declared"===i&&a.push(...function(e,t,n,r){const i=R(t,r),o=[];for(const[t,r]of Object.entries(e)){if(U.has(t))continue;const e=E(t,n);if(!i.covers(e)&&i.reachesBelow(e))for(const{path:t}of T(e,void 0,r,i))o.push(t)}return o}(e,o,n,r)),[...new Set(a)].sort((e,t)=>e.localeCompare(t))}function M(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 j(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?M(e,t):n.writeText(t).catch(()=>{M(e,t)})}(e,`${w}="${t}"`),r.textContent=`${n} ✓`}),r}function B(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=z,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(z)?.remove(),n.body.append(r)),r.hidden=0===e.length&&0===t.length,o.hidden=0===e.length,s.replaceChildren(...e.map(e=>j(n,e,e))),a.hidden=0===t.length,c.replaceChildren(...t.map(({field:e,matched:t})=>j(n,e,`${e} ← ${JSON.stringify(t)}`)))},destroy:()=>{r.remove()}}}(n,q[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=F(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{#O=/* @__PURE__ */new Map;#T=/* @__PURE__ */new Map;on(e,t){return this.#U(this.#O,e,t)}once(e,t){return this.#U(this.#T,e,t)}off(e,t){this.#E(this.#O,e,t),this.#E(this.#T,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.#O.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.#T.get(e);if(o&&o.size>0){const n=[...o];this.#T.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.#O.get(e)?.size??0)+(this.#T.get(e)?.size??0)}removeAllListeners(e){if(void 0===e)return this.#O.clear(),void this.#T.clear();this.#O.delete(e),this.#T.delete(e)}eventNames(){const e=/* @__PURE__ */new Set;for(const t of this.#O.keys())e.add(t);for(const t of this.#T.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)}}},H=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{H as DIAGNOSTIC_CODES,EventEmitter,s as PluginManager,h as createAnalyticsPlugin,B as createUnboundFieldsOverlayPlugin,d as debugPlugin,g as documentSavePlugin,u as highlightPlugin,F as unboundFieldNames};
2
2
  //# sourceMappingURL=plugins.js.map