UNPKG

@vtbag/element-crossing

Version:

Sites using cross-document view transitions do full page loads of static content on navigation. The element crossing provides a way to preserve current dynamic state of selected elements across cross-document view transitions for a smoother user experienc

2 lines (1 loc) 1.07 kB
"use strict";(()=>{top.__vtbag??={};var n=top.__vtbag.elementCrossing??={storageMap:new Map,addrWeakMap:new WeakMap,fun:{pseudoAddress(e){let t="0x000000";if(e==null)return t;for(;t==="0x000000";)t=n.addrWeakMap.get(e)??"0x"+Math.random().toString(16).slice(2,8).toUpperCase();return n.addrWeakMap.set(e,t),t},setItem(e,t){n.storageMap.set(e,t)},getItem(e){return n.storageMap.get(e)},removeItem(e){n.storageMap.delete(e)},clear(){n.storageMap.clear()}}};top===self&&a();function a(){top.addEventListener("pagereveal",()=>{let e=top.document,t=e.documentElement.lang,o=e.documentElement.style.colorScheme,r=e.createElement("html");r.innerHTML=`<body style="margin:0; overflow=clip"><iframe width=${innerWidth} height=${innerHeight} style="border:0" src="${location.href}"/>`,n.iframe=r.querySelector("iframe"),r.lang=t,r.style.overflow="clip",r.style.colorScheme=o,e.documentElement.replaceWith(r),n.frameDocument=e.querySelector("iframe").contentDocument}),top.addEventListener("resize",()=>{n.iframe.width=""+top.innerWidth,n.iframe.height=""+top.innerHeight})}})();