@sanity/visual-editing
Version:
[](https://npm-stat.com/charts.html?package=@sanity/visual-editing) [](https://
2 lines (1 loc) • 19.2 kB
JavaScript
import{c as e}from"react-compiler-runtime";import{useState as t,useEffect as n,startTransition as o,createContext as r}from"react";import{useEffectEvent as i}from"use-effect-event";import{i as a}from"./context.js";import{b as s,c}from"./mutations.js";import{d as l}from"./transformSanityNodeData.js";import{VERCEL_STEGA_REGEX as u,vercelStegaDecode as d}from"@vercel/stega";function m(r,l){const u=e(16),[d,m]=t(!0),[y,p]=t(r),[f,g]=t(null),[h,v]=t(r),w=s();let x;u[0]!==l?(x=(e,t)=>(Array.isArray(l)?l:[l]).reduce(((t,n)=>n(t,{document:e.document,id:c(e.id),originalId:e.id,type:e.type})),t),u[0]=l,u[1]=x):x=u[1];const E=i(x);let b;u[2]!==r?(b=()=>v(r),u[2]=r,u[3]=b):b=u[3];const M=i(b);let L,T,S,k;return u[4]!==w||u[5]!==E||u[6]!==M?(L=()=>{if(a(w))return;let e;const t=w.on("rebased.local",(t=>{const n={document:t.document,id:t.id,originalId:c(t.id),type:"mutate"};p((e=>E(n,e))),g(n),M(),m(!1),clearTimeout(e)})),n=w.on("pristine",(()=>{e=setTimeout((()=>{o((()=>m(!0)))}),15e3)}));return()=>{t.unsubscribe(),n.unsubscribe()}},T=[w,E,M],u[4]=w,u[5]=E,u[6]=M,u[7]=L,u[8]=T):(L=u[7],T=u[8]),n(L,T),u[9]!==f||u[10]!==h||u[11]!==r||u[12]!==d||u[13]!==E?(S=()=>{if(!d){if(!f)throw new Error("No last event found when syncing passthrough");h!==r&&o((()=>{p(E(f,r)),v(r)}))}},k=[f,h,r,d,E],u[9]=f,u[10]=h,u[11]=r,u[12]=d,u[13]=E,u[14]=S,u[15]=k):(S=u[14],k=u[15]),n(S,k),d?r:y}const y=[];for(let e=0;e<256;++e)y.push((e+256).toString(16).slice(1));let p;const f=new Uint8Array(16);function g(){if(!p){if(typeof crypto>"u"||!crypto.getRandomValues)throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");p=crypto.getRandomValues.bind(crypto)}return p(f)}var h={randomUUID:typeof crypto<"u"&&crypto.randomUUID&&crypto.randomUUID.bind(crypto)};function v(e,t,n){if(h.randomUUID&&!t&&!e)return h.randomUUID();const o=(e=e||{}).random||(e.rng||g)();return o[6]=15&o[6]|64,o[8]=63&o[8]|128,function(e,t=0){return(y[e[t+0]]+y[e[t+1]]+y[e[t+2]]+y[e[t+3]]+"-"+y[e[t+4]]+y[e[t+5]]+"-"+y[e[t+6]]+y[e[t+7]]+"-"+y[e[t+8]]+y[e[t+9]]+"-"+y[e[t+10]]+y[e[t+11]]+y[e[t+12]]+y[e[t+13]]+y[e[t+14]]+y[e[t+15]]).toLowerCase()}(o)}function w(e){const t=e.getBoundingClientRect();return{x:t.x+scrollX,y:t.y+scrollY,w:t.width,h:t.height}}function x(e,t,n){return"x"===n?{x:e.x+t,y:e.y,w:e.w-2*t,h:e.h}:{x:e.x,y:e.y+t,w:e.w,h:e.h-2*t}}function E(e,t){const{x1:n,y1:o,x2:r,y2:i}=e,{x1:a,y1:s,x2:c,y2:l}=t;if(n===r&&o===i||a===c&&s===l)return!1;const u=(l-s)*(r-n)-(c-a)*(i-o);if(0===u)return!1;const d=((c-a)*(o-s)-(l-s)*(n-a))/u,m=((r-n)*(o-s)-(i-o)*(n-a))/u;if(d<0||d>1||m<0||m>1)return!1;return{x:n+d*(r-n),y:o+d*(i-o)}}function b(e,t){return e.x===t.x&&e.y===t.y&&e.w===t.w&&e.h===t.h}function M(e,t){const n=[{x1:t.x,y1:t.y,x2:t.x+t.w,y2:t.y},{x1:t.x+t.w,y1:t.y,x2:t.x+t.w,y2:t.y+t.h},{x1:t.x+t.w,y1:t.y+t.h,x2:t.x,y2:t.y+t.h},{x1:t.x,y1:t.y+t.h,x2:t.x,y2:t.y}],o=[];for(let t=0;t<n.length;t++){const r=E(e,n[t]);if(r){let e=!1;for(let t=0;t<o.length;t++)o[t].x===r.x&&o[t].y===r.y&&(e=!0);e||o.push(r)}}return 0!==o.length&&o.sort(((t,n)=>L(t,{x:e.x1,y:e.y1})-L(n,{x:e.x1,y:e.y1})))}function L(e,t){const n=e.x-t.x,o=e.y-t.y;return Math.sqrt(n*n+o*o)}function T(e,t,n){const o={x:e.x1,y:e.y1};if(t.some((e=>function(e,t){const n=e.x>=t.x&&e.x<=t.x+t.w,o=e.y>=t.y&&e.y<=t.y+t.h;return n&&o}(o,x(e,Math.min(e.w,e.h)/10,"horizontal"===n?"x":"y")))))return null;let r,i;for(const a of t){const t=M(e,x(a,Math.min(a.w,a.h)/10,"horizontal"===n?"x":"y"));if(t){const e=t[0];r?L(o,e)<L(o,r)&&(r=e,i=a):(r=e,i=a)}}return i||null}function S(e,t,n){const{x:o,y:r,w:i,h:a}=e,{x:s,y:c}=n;return{x:s+(o-s)*t,y:c+(r-c)*t,w:i*t,h:a*t}}function k(e){const t=Math.max(0,Math.min(...e.map((e=>e.y)))),n=Math.min(document.body.scrollHeight,Math.max(...e.map((e=>e.y+e.h))));return{min:t,max:n,height:n-t}}function I(e,t){return t.find((t=>b(w(t.elements.element),e)))?.sanity}function A(e,t,n){return Object.values(t).every((e=>null===e))?null:"horizontal"===n?{left:t.left?{rect:t.left,sanity:I(t.left,e)}:null,right:t.right?{rect:t.right,sanity:I(t.right,e)}:null}:{top:t.top?{rect:t.top,sanity:I(t.top,e)}:null,bottom:t.bottom?{rect:t.bottom,sanity:I(t.bottom,e)}:null}}function U(e){const t=document.body.getBoundingClientRect();return{x:Math.max(t.x,Math.min(e.clientX,t.x+t.width)),y:e.clientY+window.scrollY}}function C(e,t,n){const o=w(t),r=[...t.querySelectorAll(":where(h1, h2, h3, h4, p, a, img, span, button):not(:has(*))")];e.x<=o.x&&(e.x=o.x),e.x>=o.x+o.w&&(e.x=o.x+o.w),e.y>=o.y+o.h&&(e.y=o.y+o.h),e.y<=o.y&&(e.y=o.y);const i=r.map((e=>{const t=S(w(e),n,{x:o.x,y:o.y});return{x:t.x-o.x,y:t.y-o.y,w:t.w,h:t.h,tagName:e.tagName}}));return{offsetX:(o.x-e.x)*n,offsetY:(o.y-e.y)*n,w:o.w*n,h:o.h*n,maxWidth:o.w*n*.75,childRects:i}}function D(e){const t=function(e){const t=Math.max(0,Math.min(...e.map((e=>e.x)))),n=Math.min(document.body.offsetWidth,Math.max(...e.map((e=>e.x+e.w))));return{min:t,max:n,width:n-t}}(e),n=k(e),o=t.min>8&&t.min+t.width<=window.innerWidth-8,r=n.min>8&&n.min+n.height<=document.body.scrollHeight-8,i=o&&r;return{x:i?t.min-8:t.min,y:i?n.min-8:n.min,w:i?t.width+16:t.width,h:i?n.height+16:n.height}}async function N(e,t,n,o,r,i){return new Promise((a=>{const s=window.getComputedStyle(t).transform;if(1===new DOMMatrix(s).a)return;const c=n-window.innerHeight,l=scrollY;(e-=window.innerHeight/2)<0&&(e=0),t.addEventListener("transitionend",(()=>{t.style.transition="none",t.style.transform="none",scrollTo({top:e,behavior:"instant"}),setTimeout((()=>{o({type:"overlay/dragEndMinimapTransition"}),o({type:"overlay/dragToggleMinimap",display:!1})}),2*r),a()}),{once:!0}),o({type:"overlay/dragStartMinimapTransition"}),t.style.transform=`translateY(${Math.max(l-e,-c+l)}px) scale(1)`,i&&(document.body.style.overflow=i.body.overflow,document.body.style.height=i.body.height,document.documentElement.style.overflow=i.documentElement.overflow,document.documentElement.style.height=i.documentElement.height)}))}let R=!1,O={x:0,y:0},P={x:0,y:0},Y=typeof document>"u"?0:document.documentElement.scrollHeight,G=null;function H(e){const{mouseEvent:t,element:n,overlayGroup:o,handler:r,target:i,onSequenceStart:a,onSequenceEnd:s}=e;if(0!==t.button)return;window.focus();const c=150;let l=o.map((e=>w(e.elements.element)));const u=n.getAttribute("data-sanity-drag-flow")||((g=l).some((e=>g.filter((t=>!b(e,t))).some((t=>e.y===t.y))))?"horizontal":"vertical"),d=n.getAttribute("data-sanity-drag-group"),m=!!n.getAttribute("data-sanity-drag-minimap-disable"),y=!!n.getAttribute("data-sanity-drag-prevent-default"),p=n.getAttribute("data-unstable_sanity-drag-document-height"),f=n.getAttribute("data-unstable_sanity-drag-group-height");var g;let h=null;const v=U(t),x=document.body,{minYScaled:E,scaleFactor:M}=function(e,t){let n=t||k(e).height;n+=200;const o=n>window.innerHeight?window.innerHeight/n:1,r=e.map((e=>S(e,o,{x:window.innerWidth/2,y:0}))),{min:i}=k(r);return{scaleFactor:o,minYScaled:i-100*o}}(l,f?~~f:null);let I=!1,H=!1,_=!0;R||(G={body:{overflow:window.getComputedStyle(document.body).overflow,height:window.getComputedStyle(document.body).height},documentElement:{overflow:window.getComputedStyle(document.documentElement).overflow,height:window.getComputedStyle(document.documentElement).height}},Y=p?~~p:document.documentElement.scrollHeight);const j=setInterval((()=>{l=o.map((e=>w(e.elements.element)))}),c),z=()=>{if(M>=1)return;const e=C(P,n,M);r({type:"overlay/dragUpdateSkeleton",skeleton:e}),r({type:"overlay/dragToggleMinimapPrompt",display:!1}),r({type:"overlay/dragToggleMinimap",display:!0}),R=!0,async function(e,t,n,o,r){return new Promise((i=>{e.addEventListener("transitionend",(()=>{setTimeout((()=>{o({type:"overlay/dragEndMinimapTransition"})}),2*r),i()}),{once:!0}),o({type:"overlay/dragStartMinimapTransition"}),o({type:"overlay/dragToggleMinimap",display:!0}),document.body.style.overflow="hidden",document.body.style.height="100%",document.documentElement.style.overflow="initial",document.documentElement.style.height="100%",setTimeout((()=>{e.style.transformOrigin="50% 0px",e.style.transition="transform 150ms ease",e.style.transform=`translate3d(0px, ${-n+scrollY}px, 0px) scale(${t})`}),25)}))}(x,M,E,r,c).then((()=>{setTimeout((()=>{r({type:"overlay/dragUpdateGroupRect",groupRect:D(l)})}),300)}))},q=e=>{Math.abs(e.deltaY)>=10&&M<1&&!R&&!H&&!m&&_&&(r({type:"overlay/dragToggleMinimapPrompt",display:!0}),H=!0),e.shiftKey&&!R&&!m&&(window.dispatchEvent(new CustomEvent("unstable_sanity/dragApplyMinimap")),setTimeout((()=>{z()}),50))},W=e=>{if(e.preventDefault(),P=U(e),O=function(e){const t=document.body,n=window.getComputedStyle(t).transform;if("none"===n)return{x:e.x,y:e.y};const o=new DOMMatrix(n).inverse(),r=new DOMPoint(e.x,e.y).matrixTransform(o);return{x:r.x,y:r.y}}(P),Math.abs(L(P,v))<4)return;if(!I){const e=D(l),t=C(P,n,1);r({type:"overlay/dragStart",flow:u}),r({type:"overlay/dragUpdateSkeleton",skeleton:t}),r({type:"overlay/dragUpdateGroupRect",groupRect:e}),I=!0,a()}r({type:"overlay/dragUpdateCursorPosition",x:P.x,y:P.y}),e.shiftKey&&!R&&!m&&(window.dispatchEvent(new CustomEvent("unstable_sanity/dragApplyMinimap")),setTimeout((()=>{z()}),50));const t=function(e,t,n){if("horizontal"===n){const o={x1:e.x,y1:e.y,x2:e.x-1e8,y2:e.y},r={x1:e.x,y1:e.y,x2:e.x+1e8,y2:e.y};return{left:T(o,t,n),right:T(r,t,n)}}{const o={x1:e.x,y1:e.y,x2:e.x,y2:e.y-1e8},r={x1:e.x,y1:e.y,x2:e.x,y2:e.y+1e8};return{top:T(o,t,n),bottom:T(r,t,n)}}}(P,l,u);JSON.stringify(h)!==JSON.stringify(t)&&(h=t,r({type:"overlay/dragUpdateInsertPosition",insertPosition:A(o,h,u)}))},V=()=>{_=!1,r({type:"overlay/dragEnd",target:i,insertPosition:h?A(o,h,u):null,dragGroup:d,flow:u,preventInsertDefault:y}),H&&r({type:"overlay/dragToggleMinimapPrompt",display:!1}),R||(clearInterval(j),s(),J(),B()),$()},X=e=>{if("Shift"===e.key&&R){R=!1;const e=C(P,n,1/M);r({type:"overlay/dragUpdateSkeleton",skeleton:e}),window.dispatchEvent(new CustomEvent("unstable_sanity/dragResetMinimap")),setTimeout((()=>{N(O.y,x,Y,r,c,G)}),50),r({type:"overlay/dragUpdateGroupRect",groupRect:null}),_||(clearInterval(j),$(),J(),B(),s())}},F=()=>{r({type:"overlay/dragUpdateGroupRect",groupRect:null}),window.dispatchEvent(new CustomEvent("unstable_sanity/dragResetMinimap")),setTimeout((()=>{N(O.y,x,Y,r,c,G).then((()=>{R=!1}))}),50),clearInterval(j),$(),J(),B(),s()},$=()=>{window.removeEventListener("mousemove",W),window.removeEventListener("wheel",q),window.removeEventListener("mouseup",V)},B=()=>{window.removeEventListener("keyup",X)},J=()=>{window.removeEventListener("blur",F)};window.addEventListener("blur",F),window.addEventListener("keyup",X),window.addEventListener("wheel",q),window.addEventListener("mousemove",W),window.addEventListener("mouseup",V)}const _=e=>e instanceof HTMLElement||e instanceof SVGElement;function j(e){const{display:t}=window.getComputedStyle(e);if("inline"!==t)return e;const n=e.parentElement;return n?j(n):null}const z=e=>e&&_(e)?e.dataset?.sanityOverlayElement?e:z(e.parentElement):null;function q(e,t=!1){return n=e,u.lastIndex=0,u.test(n)?function(e,t=!1){try{const n=d(e);return n&&"sanity.io"===n.origin?(t&&(n.href=n.href?.replace(".alt","")),n):null}catch(t){return console.error("Failed to decode stega for string: ",e,"with the original error: ",t),null}}(e,t):null;var n}const W=e=>e.nodeType===Node.ELEMENT_NODE,V=e=>"IMG"===e.tagName,X=e=>"TIME"===e.tagName,F=e=>"SVG"===e.tagName.toUpperCase();function $(e){return"path"in e}function B(e,t){let n=e.split("."),o=t.split(".");const r=Math.min(n.length,o.length);return n=n.slice(0,r).reverse(),o=o.slice(0,r).reverse(),n.reduce(((e,t,n)=>t===o[n]?[...e,t]:[]),[]).reverse().join(".")}function J(e){if(!e.length||!e.map((e=>$(e))).every(((e,t,n)=>e===n[0])))return;if(!$(e[0]))return e[0];const t=e.filter($);let n=e[0];const o=["projectId","dataset","id","baseUrl","workspace","tool"];for(let e=1;e<t.length;e++){const r=t[e];if(o.some((e=>r[e]!==n?.[e]))){n=void 0;break}n.path=B(n.path,r.path)}return n}function K(e){const t=[];function n(e,n){const o=l(n);if(!o)return;const r=j(e);r&&t.push({elements:{element:e,measureElement:r},sanity:o})}if(e)for(const o of e.childNodes){const{nodeType:e,parentElement:r,textContent:i}=o;if(W(o)&&void 0!==o.dataset?.sanityEditTarget){const e=K(o).map((({sanity:e})=>e));if(!e.map((e=>$(e))).every(((e,t,n)=>e===n[0])))continue;const n=J(e);n&&t.push({elements:{element:o,measureElement:o},sanity:n})}else if(e===Node.TEXT_NODE&&r&&i){const e=q(i);if(!e)continue;n(r,e)}else if(W(o)){if("SCRIPT"===o.tagName||"SANITY-VISUAL-EDITING"===o.tagName)continue;if(o.dataset?.sanity)n(o,o.dataset.sanity);else if(o.dataset?.sanityEditInfo)n(o,o.dataset.sanityEditInfo);else{if(V(o)){const e=q(o.alt,!0);if(!e)continue;n(o,e);continue}if(X(o)){const e=q(o.dateTime,!0);if(!e)continue;n(o,e)}else if(F(o)){if(!o.ariaLabel)continue;const e=q(o.ariaLabel,!0);if(!e)continue;n(o,e)}}t.push(...K(o))}}return t}function Q(e){const t=e.lastIndexOf(".");return e.substring(t,e.length).includes("[")}function Z(e){if(!Q(e))return null;const t=e.split(".");return t[t.length-1]=t[t.length-1].replace(/\[.*?\]/g,"[]"),t.join(".")}function ee(e,t){return!(!Q(e.path)||!Q(t.path))&&Z(e.path)===Z(t.path)}function te(e,t,n,o){if(!e.getAttribute("data-sanity")||e.getAttribute("data-sanity-drag-disable")||!t||!$(t)||!Q(t.path))return null;const r=e.getAttribute("data-sanity-drag-group"),i=[...n].reduce(((e,n)=>{const i=o.get(n),a=n.getAttribute("data-sanity-drag-disable"),s=n.getAttribute("data-sanity-drag-group"),c=null!==n.getAttribute("data-sanity"),l=null===r||r===s;return i&&!a&&$(i.sanity)&&ee(t,i.sanity)&&l&&c&&e.push(i),e}),[]);return i.length<=1?null:i}function ne({handler:e,overlayElement:t,inFrame:n,optimisticActorReady:o}){let r=!1;const i=new Map,a=new WeakMap,s=new Set,c=new WeakMap,l=new WeakMap,u=n;let d,m,y,p=!1,f=[];const g=()=>f[f.length-1];function h(e,t){e.removeEventListener("click",t.click,{capture:!0}),e.removeEventListener("contextmenu",t.contextmenu,{capture:!0}),e.removeEventListener("mousemove",t.mousemove,{capture:!0}),e.removeEventListener("mousedown",t.mousedown,{capture:!0}),e.removeEventListener("mouseenter",t.mouseenter),e.removeEventListener("mouseleave",t.mouseleave)}function x({id:t,elements:n,handlers:o}){const{element:r,measureElement:i}=n;(function(e,t){e.addEventListener("click",t.click,{capture:!0}),e.addEventListener("contextmenu",t.contextmenu,{capture:!0}),e.addEventListener("mousemove",t.mousemove,{once:!0,capture:!0}),e.addEventListener("mousedown",t.mousedown,{capture:!0})})(r,o),d.observe(i),e({type:"element/activate",id:t})}function E({id:t,elements:n,handlers:o}){const{element:r,measureElement:i}=n;h(r,o),d.unobserve(i),f=f.filter((e=>e!==r)),e({type:"element/deactivate",id:t})}function b(t){if(n&&o)for(const n of f){if(t===n){const n=a.get(t)?.sanity;if(!n||!$(n))return;if(te(t,n,s,a)){const n=t.style.cursor;n&&l.set(t,n),e({type:"overlay/setCursor",element:t,cursor:"move"});continue}}M(n)}}function M(t){const n=l.get(t);e({type:"overlay/setCursor",element:t,cursor:n})}function L({elements:l,sanity:d}){const{element:y,measureElement:h}=l,E={click(t){const n=t.target;if(y===g()&&y.contains(n)){u&&(t.preventDefault(),t.stopPropagation());const n=a.get(y)?.sanity;n&&!p&&e({type:"element/click",id:L,sanity:n})}},contextmenu(t){if(!("path"in d&&n&&o&&d.path.split(".").pop()?.includes("[_key==")))return;const r=t.target;y===g()&&y.contains(r)&&(u&&(t.preventDefault(),t.stopPropagation()),e({type:"element/contextmenu",id:L,position:{x:t.clientX,y:t.clientY},sanity:d}))},mousedown(t){if(t.preventDefault(),t.currentTarget!==f.at(-1)||y.getAttribute("data-sanity-drag-disable")||!n||!o)return;const r=a.get(y)?.sanity;if(!r||!$(r)||!Q(r.path))return;const i=te(y,d,s,a);i&&H({element:y,handler:e,mouseEvent:t,overlayGroup:i,target:r,onSequenceStart:()=>{p=!0},onSequenceEnd:()=>{setTimeout((()=>{p=!1}),250)}})},mousemove(e){E.mouseenter(e);const t=e.currentTarget;t&&(t.addEventListener("mouseenter",E.mouseenter),t.addEventListener("mouseleave",E.mouseleave))},mouseenter(){document.querySelector("vercel-live-feedback")&&y.closest("[data-vercel-edit-info]")||y.closest("[data-vercel-edit-target]")||(f.push(y),e({type:"element/mouseenter",id:L,rect:w(y)}),b(y))},mouseleave(n){function o(){f.pop();const t=g();if(e({type:"element/mouseleave",id:L}),t){b(t);const n=a.get(t);n&&e({type:"element/mouseenter",id:n.id,rect:w(t)})}M(y)}const{relatedTarget:r}=n,i=z(r),s=t.contains(i);if(_(i)&&s)return function e(t){const n=r=>{const{relatedTarget:i}=r;z(i)?i&&_(i)&&(t.removeEventListener("mouseleave",n),e(i)):(t.removeEventListener("mouseleave",n),o())};t.addEventListener("mouseleave",n)}(i);o()}},L=v(),T={id:L,elements:l,sanity:d,handlers:E};s.add(y),c.set(h,y),i.set(L,y),a.set(y,T),m?.observe(y),e({type:"element/register",id:L,element:y,rect:w(y),sanity:d,dragDisabled:!!y.getAttribute("data-sanity-drag-disable")}),r&&x(T)}function T({elements:t,sanity:n}){const{element:o}=t,r=a.get(o);r&&(a.set(o,{...r,sanity:n}),e({type:"element/update",id:r.id,rect:w(o),sanity:n}))}function S(e){const t=K(e);for(const e of t){const{element:t}=e.elements;a.has(t)?T(e):L(e)}}function k(t){const n=a.get(t);if(n){const{id:o,handlers:r}=n;h(t,r),d.unobserve(t),a.delete(t),s.delete(t),i.delete(o),e({type:"element/unregister",id:o})}}function I(e){let n=!1;for(const o of e){const{target:e,type:r}=o,i="characterData"===r?e.parentElement:e;i===t||t.contains(i)||(n=!0,_(i)&&S({childNodes:[i]}))}if(n)for(const e of s)e.isConnected||k(e)}function A(t){const n=a.get(t);n&&e({type:"element/updateRect",id:n.id,rect:w(t)})}function U(e){for(const t of e){const e=t.target;if(_(e)){const t=c.get(e);if(!t)return;A(t)}}}function C(e){if(r)for(const t of e){const{target:e}=t,n=_(e)&&a.get(e);n&&(t.isIntersecting?x(n):E(n))}}function D(t){const n=z(t.target);n?"capture"===n.dataset.sanityOverlayElement&&(t.preventDefault(),t.stopPropagation()):(f=[],e({type:"overlay/blur"}))}function N(){for(const e of s)A(e)}function R(t){"Escape"===t.key&&(f=[],e({type:"overlay/blur"}))}function O(e){const{target:t}=e;if(t!==window.document&&_(t))for(const e of s)t.contains(e)&&A(e)}function P(){r||(m=new IntersectionObserver(C,{threshold:.3}),s.forEach((e=>m.observe(e))),e({type:"overlay/activate"}),r=!0)}function Y(){r&&(m?.disconnect(),s.forEach((e=>{const t=a.get(e);t&&E(t)})),e({type:"overlay/deactivate"}),r=!1)}return window.document.fonts.ready.then((()=>{for(const e of s)A(e)})),window.addEventListener("click",D),window.addEventListener("contextmenu",D),window.addEventListener("keydown",R),window.addEventListener("resize",N),window.addEventListener("scroll",O,{capture:!0,passive:!0}),d=new ResizeObserver(U),y=new MutationObserver(I),y.observe(document.body,{attributes:!0,characterData:!0,childList:!0,subtree:!0}),S(document.body),P(),{activate:P,deactivate:Y,destroy:function(){window.removeEventListener("click",D),window.removeEventListener("contextmenu",D),window.removeEventListener("keydown",R),window.removeEventListener("resize",N),window.removeEventListener("scroll",O),y.disconnect(),d.disconnect(),s.forEach((e=>{k(e)})),i.clear(),s.clear(),f=[],Y()}}}const oe=r(null);export{oe as S,ne as c,ee as s,m as u};//# sourceMappingURL=SharedStateContext.js.map