aptechka 0.59.2 → 0.60.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/lib/morph/Morph.d.ts +4 -0
- package/lib/morph/index.cjs +1 -1
- package/lib/morph/index.js +171 -163
- package/package.json +1 -1
package/lib/morph/Morph.d.ts
CHANGED
|
@@ -42,6 +42,10 @@ export interface MorphEvents {
|
|
|
42
42
|
morphOldChildrenRemoved: CustomEvent<MorphChildrenActionEntry>;
|
|
43
43
|
morphScroll: CustomEvent<MorphScrollDetail>;
|
|
44
44
|
}
|
|
45
|
+
export interface MorphGetRouteOptions {
|
|
46
|
+
searchParameters?: string;
|
|
47
|
+
revalidate?: boolean;
|
|
48
|
+
}
|
|
45
49
|
export declare class Morph {
|
|
46
50
|
#private;
|
|
47
51
|
static instance: Morph;
|
package/lib/morph/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var yt=(n,t)=>(t=Symbol[n])?t:Symbol.for("Symbol."+n),wt=n=>{throw TypeError(n)};var nt=(n,t,s)=>t.has(n)||wt("Cannot "+s);var e=(n,t,s)=>(nt(n,t,"read from private field"),s?s.call(n):t.get(n)),o=(n,t,s)=>t.has(n)?wt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(n):t.set(n,s),a=(n,t,s,i)=>(nt(n,t,"write to private field"),i?i.call(n,s):t.set(n,s),s),d=(n,t,s)=>(nt(n,t,"access private method"),s);var N=(n,t,s)=>new Promise((i,u)=>{var p=E=>{try{H(s.next(E))}catch(h){u(h)}},M=E=>{try{H(s.throw(E))}catch(h){u(h)}},H=E=>E.done?i(E.value):Promise.resolve(E.value).then(p,M);H((s=s.apply(n,t)).next())});var bt=(n,t,s)=>(t=n[yt("asyncIterator")])?t.call(n):(n=n[yt("iterator")](),t={},s=(i,u)=>(u=n[i])&&(t[i]=p=>new Promise((M,H,E)=>(p=u.call(n,p),E=p.done,Promise.resolve(p.value).then(h=>M({value:h,done:E}),H)))),s("next"),s("return"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const At=require("../index-Cqw2NKev.cjs"),K=require("../events-KVanG9sR.cjs"),Rt=require("../polyfills-Df4r-ETT.cjs"),kt=require("../scroll-DAhSpkhR.cjs"),tt=require("../url-D1CgmwZ_.cjs"),zt=require("../css-value-parser/index.cjs");class Ct extends HTMLElement{connectedCallback(){const t={"aria-live":"assertive","aria-atomic":"true",style:"position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"};for(const[s,i]of Object.entries(t))this.setAttribute(s,i)}}At.isBrowser&&!customElements.get("morph-announcer")&&customElements.define("morph-announcer",Ct);var b,c,x,G,F;class ot{constructor(t,s){o(this,b);o(this,c);o(this,x);o(this,G,t=>{if(t.preventDefault(),e(this,c).hasAttribute("data-back")&&e(this,b).previousPathname)history.back();else{const i=e(this,c).getAttribute("data-history-action")||"push",u=e(this,c).hasAttribute("data-center-scroll"),p=getComputedStyle(e(this,c)).getPropertyValue("--offset-scroll").trim(),M=p?zt.cssValueParser.parse(p):void 0,H=e(this,c).hasAttribute("data-revalidate"),E=e(this,c).hasAttribute("data-keep-search-parameters");e(this,b).navigate(e(this,x),{historyAction:i,centerScroll:u,offsetScroll:M,revalidate:H,keepSearchParameters:E})}});o(this,F,()=>{const t=e(this,c).hasAttribute("data-revalidate");e(this,b).prefetch(e(this,x),t),e(this,c).removeEventListener("pointerenter",e(this,F))});a(this,b,s),a(this,c,t),a(this,x,e(this,c).getAttribute("href")||"/"),e(this,c).addEventListener("click",e(this,G)),this.checkCurrent(location.pathname),e(this,c).hasAttribute("data-prefetch")&&e(this,c).addEventListener("pointerenter",e(this,F))}get element(){return e(this,c)}checkCurrent(t){const s=e(this,b).normalizePath(t),i=e(this,b).normalizePath(e(this,x));e(this,c).hasAttribute("data-include")&&s.pathname.includes(i.pathname)?e(this,c).classList.add("current"):i.pathname===s.pathname?e(this,c).classList.add("current"):e(this,c).classList.remove("current")}destroy(){e(this,c).removeEventListener("click",e(this,G)),e(this,c).removeEventListener("pointerenter",e(this,F)),e(this,c).classList.remove("current")}}b=new WeakMap,c=new WeakMap,x=new WeakMap,G=new WeakMap,F=new WeakMap;var A,V,v,q,D,C;class Pt{constructor(t,s,i){o(this,A);o(this,V);o(this,v,{x:0,y:0});o(this,q);o(this,D,null);o(this,C,null);a(this,A,t),a(this,V,s),a(this,q,i.cloneNode(!0))}get pathname(){return e(this,V)}get scrollState(){return e(this,v)}get document(){return e(this,C)}cloneDocument(){a(this,C,(e(this,D)||e(this,q)).cloneNode(!0))}get title(){let t="";if(e(this,C).title)t=e(this,C).title;else{const s=e(this,C).querySelector("h1");t=(s==null?void 0:s.innerText)||(s==null?void 0:s.textContent)||e(this,V)}return t}clearScrollState(){e(this,v).x=0,e(this,v).y=0}clearDocumentState(){a(this,D,null)}saveScrollState(){e(this,q).documentElement.hasAttribute("data-no-scroll-restoration")?(e(this,v).x=0,e(this,v).y=0):(e(this,v).x=e(this,A).scrollElement.scrollLeft,e(this,v).y=e(this,A).scrollElement.scrollTop)}saveDocumentState(){e(this,q).documentElement.hasAttribute("data-no-page-restoration")?a(this,D,null):a(this,D,document.cloneNode(!0))}restoreScrollPosition(){e(this,A).scrollElement.scroll({top:e(this,v).y,left:e(this,v).x})}renewScrollPosition(){e(this,A).scrollElement.scroll({top:0,left:0,behavior:"instant"})}}A=new WeakMap,V=new WeakMap,v=new WeakMap,q=new WeakMap,D=new WeakMap,C=new WeakMap;var k,B,m,st,T,f,J,R,P,y,W,z,Q,l,et,Tt,lt,Mt,ct,ht,ut,dt,it,j;const Y=class Y{constructor(t){o(this,l);o(this,k,null);o(this,B,null);o(this,m,[]);o(this,st,new DOMParser);o(this,T);o(this,f,null);o(this,J);o(this,R,[]);o(this,P,!1);o(this,y,null);o(this,W,new Map);o(this,z,null);o(this,Q,t=>{var s;return((s=t.getAttribute("href"))==null?void 0:s.startsWith("/"))&&!t.hasAttribute("download")&&!t.hasAttribute("data-morph-skip")&&!t.closest("[data-morph-skip]")&&t.getAttribute("target")!=="_blank"});o(this,it,t=>N(this,null,function*(){var s;(s=t.state)!=null&&s.path&&(t.preventDefault(),a(this,P,!0),yield this.navigate(t.state.path,{historyAction:"none"}),a(this,P,!1))}));o(this,j,()=>{const t=e(this,y).scrollTop,s=e(this,y).scrollLeft;document.documentElement.classList.toggle("top-scrolled",t>0),document.documentElement.classList.toggle("left-scrolled",s>0),K.dispatchEvent(document,"morphScroll",{detail:{left:s,top:t}})});if(At.isBrowser&&!Y.instance){Y.instance=this,a(this,k,{base:tt.normalizeBase(t==null?void 0:t.base),waitForHeadToLoad:(t==null?void 0:t.waitForHeadToLoad)!==!1,cachePages:(t==null?void 0:t.cachePages)!==!1,trailingSlash:(t==null?void 0:t.trailingSlash)||!1,scrollSelector:(t==null?void 0:t.scrollSelector)||"body",morphInsideScrollContainer:(t==null?void 0:t.morphInsideScrollContainer)||!1}),a(this,B,d(this,l,lt).call(this,document.body));const s=this.normalizePath(location.pathname+location.hash);a(this,f,s.pathname),e(this,W).set(e(this,f),new Pt(this,e(this,f),document)),document.documentElement.setAttribute("data-current-pathname",e(this,f)),document.documentElement.setAttribute("data-current-leaf",s.leaf),this.findLinks(),addEventListener("popstate",e(this,it)),tt.changeHistory({action:"replace",pathname:e(this,f),searchParameters:s.parameters||location.search,hash:s.hash}),a(this,z,new Ct),d(this,l,ut).call(this,document)}}get currentPathname(){return e(this,f)}get previousPathname(){return e(this,J)}get links(){return e(this,m)}get scrollElement(){return e(this,y)}get isPopstateNavigation(){return e(this,P)}normalizePath(t){return tt.splitPath(t,{base:e(this,k).base,trailingSlash:e(this,k).trailingSlash})}prefetch(t,s){return N(this,null,function*(){const i=this.normalizePath(t);d(this,l,et).call(this,i.pathname,s)})}navigate(H){return N(this,arguments,function*(t,{historyAction:s="push",centerScroll:i,offsetScroll:u,revalidate:p,keepSearchParameters:M}={}){var mt;if(e(this,R).length)return;const E=this.normalizePath(((mt=this.pathnameModifier)==null?void 0:mt.call(this,t))||t);let{pathname:h,hash:X,parameters:Ht,leaf:Nt}=E;if(e(this,T)===h||e(this,f)===h){e(this,P)||d(this,l,dt).call(this,X||0,{centerScroll:i,offsetScroll:u,behavior:"smooth"});return}a(this,T,h),e(this,m).forEach(I=>{I.checkCurrent(h)});try{let I=!0;if(this.preprocessor)try{yield new Promise((r,w)=>{var S;(S=this.preprocessor)==null||S.call(this,{pathname:h,resolve:r,reject:w})})}catch(r){r?console.error(r):console.log("Route change canceled"),I=!1}if(!I||e(this,T)!==h){e(this,m).forEach(r=>{r.checkCurrent(e(this,f))});return}const ft=yield d(this,l,et).call(this,e(this,f)),L=yield d(this,l,et).call(this,h,p);if(e(this,T)!==h){e(this,m).forEach(r=>{r.checkCurrent(e(this,f))});return}ft.saveScrollState(),ft.saveDocumentState(),e(this,P)||(L.clearScrollState(),L.clearDocumentState()),L.cloneDocument(),e(this,z).textContent=L.title,document.body.appendChild(e(this,z));const pt={pathname:h};K.dispatchEvent(document,"morphStart",{detail:pt});const Et=Array.from(document.head.children),gt=Array.from(L.document.head.children),vt=d(this,l,Mt).call(this,Et,gt),xt=d(this,l,ct).call(this,Et,vt),Z=d(this,l,ct).call(this,gt,vt);Z.forEach((r,w)=>{if(r.tagName==="SCRIPT"&&r.getAttribute("src")){const S=document.createElement("script");S.type="module",S.src=r.getAttribute("src"),Z[w]=S}}),Z.forEach(r=>{document.head.appendChild(r)});const rt=Z.filter(r=>{if(r.hasAttribute("data-no-waiting"))return!1;if(d(this,l,ht).call(this,r))return!0});e(this,k).waitForHeadToLoad&&rt.length&&(yield new Promise(r=>N(this,null,function*(){let w=0;try{for(var S=bt(rt),O,U,Lt;O=!(U=yield S.next()).done;O=!1){const _=U.value;_.onload=()=>{w++,w===rt.length&&r()}}}catch(U){Lt=[U]}finally{try{O&&(U=S.return)&&(yield U.call(S))}finally{if(Lt)throw Lt[0]}}}))),yield kt.wait(10);const St=[];xt.forEach(r=>{r.hasAttribute("data-permanent")||(d(this,l,ht).call(this,r)?St.push(r):r.remove())});const qt=d(this,l,lt).call(this,L.document.body);e(this,k).morphInsideScrollContainer||d(this,l,ut).call(this,L.document),document.documentElement.setAttribute("data-current-pathname",h),document.documentElement.setAttribute("data-current-leaf",Nt),tt.changeHistory({action:s,pathname:h,searchParameters:Ht||(M?location.search:""),hash:X}),e(this,z).remove(),a(this,J,e(this,f)),a(this,f,h),e(this,B).forEach((r,w)=>{const S=qt[w],O=getComputedStyle(r).getPropertyValue("--morph-duration"),U=[...S.childNodes];if(O){const Lt=[...r.childNodes];Lt.forEach(g=>{g instanceof HTMLElement&&(this.destroyOldLinks(g),g.classList.add("old"))}),U.forEach(g=>{g instanceof HTMLElement&&(this.findNewLinks(g),g.classList.add("new"))}),r.prepend(...U),Rt.requestIdleCallback(()=>{U.forEach(g=>{g instanceof HTMLElement&&g.classList.add("in")})});const _={morphElement:r,pathname:h};K.dispatchEvent(document,"morphNewChildrenAdded",{detail:_});const Dt=new Promise(g=>{setTimeout(()=>{Lt.forEach($=>$.remove()),U.forEach($=>{$ instanceof HTMLElement&&$.classList.remove("in","new")}),K.dispatchEvent(document,"morphOldChildrenRemoved",{detail:_}),g()},(parseFloat(O)||0)*1e3+10)});e(this,R).push(Dt)}else this.destroyOldLinks(r),r.innerHTML="",r.append(...U),this.findNewLinks(r)}),X?(L.clearScrollState(),d(this,l,dt).call(this,X,{centerScroll:i,offsetScroll:u})):e(this,P)?L.restoreScrollPosition():L.renewScrollPosition(),yield Promise.all(e(this,R)),St.forEach(r=>r.remove()),a(this,R,[]),e(this,B).forEach(r=>{r.querySelectorAll("script").forEach(S=>{const O=document.createElement("script");O.type="module",O.src=S.getAttribute("src"),S.replaceWith(O)})}),K.dispatchEvent(document,"morphComplete",{detail:pt}),window.dispatchEvent(new Event("resize"))}catch(I){console.error(I)}a(this,T,void 0)})}addLink(t){e(this,m).push(new ot(t,this))}addLinks(t){t.forEach(s=>{this.addLink(s)})}removeLink(t){a(this,m,e(this,m).filter(s=>s.element===t?(s.destroy(),!1):!0))}destroyOldLinks(t){a(this,m,e(this,m).filter(s=>t.contains(s.element)?(s.destroy(),!1):!0))}findNewLinks(t){const s=[...t.querySelectorAll("a")].filter(e(this,Q));e(this,m).push(...s.map(i=>new ot(i,this)))}findLinks(){const t=[...document.documentElement.querySelectorAll("a")].filter(e(this,Q));e(this,m).forEach(s=>s.destroy()),a(this,m,t.map(s=>new ot(s,this)))}};k=new WeakMap,B=new WeakMap,m=new WeakMap,st=new WeakMap,T=new WeakMap,f=new WeakMap,J=new WeakMap,R=new WeakMap,P=new WeakMap,y=new WeakMap,W=new WeakMap,z=new WeakMap,Q=new WeakMap,l=new WeakSet,et=function(t,s=!1){return N(this,null,function*(){let i=e(this,W).get(t);return(!i||s)&&(i=yield d(this,l,Tt).call(this,t)),i})},Tt=function(t){return N(this,null,function*(){const i=yield(yield fetch(t)).text(),u=e(this,st).parseFromString(i,"text/html"),p=new Pt(this,t,u);return e(this,W).set(t,p),p})},lt=function(t){const s=[...t.querySelectorAll("[data-morph]")];return s.length?s:[t]},Mt=function(t,s){return t.filter(i=>s.find(u=>u.outerHTML===i.outerHTML))},ct=function(t,s){return t.filter(i=>!s.find(u=>u.outerHTML===i.outerHTML))},ht=function(t){return t.tagName==="SCRIPT"||t.tagName==="STYLE"||t.tagName==="LINK"&&t.getAttribute("rel")==="stylesheet"},ut=function(t){var s,i;(s=e(this,y))==null||s.removeEventListener("scroll",e(this,j)),a(this,y,t.querySelector(e(this,k).scrollSelector)||t.documentElement),(i=e(this,y))==null||i.addEventListener("scroll",e(this,j)),e(this,j).call(this)},dt=function(t,s){const i=typeof t=="string"?document.getElementById(t):t;(typeof i=="number"||i)&&kt.scrollToElement(i,{scrollElement:e(this,y),behavior:(s==null?void 0:s.behavior)||"instant",center:s==null?void 0:s.centerScroll,offset:s==null?void 0:s.offsetScroll})},it=new WeakMap,j=new WeakMap,Y.instance=null;let at=Y;exports.Morph=at;
|
|
1
|
+
"use strict";var wt=(n,t)=>(t=Symbol[n])?t:Symbol.for("Symbol."+n),bt=n=>{throw TypeError(n)};var nt=(n,t,s)=>t.has(n)||bt("Cannot "+s);var e=(n,t,s)=>(nt(n,t,"read from private field"),s?s.call(n):t.get(n)),a=(n,t,s)=>t.has(n)?bt("Cannot add the same private member more than once"):t instanceof WeakSet?t.add(n):t.set(n,s),o=(n,t,s,i)=>(nt(n,t,"write to private field"),i?i.call(n,s):t.set(n,s),s),d=(n,t,s)=>(nt(n,t,"access private method"),s);var N=(n,t,s)=>new Promise((i,u)=>{var E=p=>{try{H(s.next(p))}catch(h){u(h)}},L=p=>{try{H(s.throw(p))}catch(h){u(h)}},H=p=>p.done?i(p.value):Promise.resolve(p.value).then(E,L);H((s=s.apply(n,t)).next())});var Pt=(n,t,s)=>(t=n[wt("asyncIterator")])?t.call(n):(n=n[wt("iterator")](),t={},s=(i,u)=>(u=n[i])&&(t[i]=E=>new Promise((L,H,p)=>(E=u.call(n,E),p=E.done,Promise.resolve(E.value).then(h=>L({value:h,done:p}),H)))),s("next"),s("return"),t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const Ct=require("../index-Cqw2NKev.cjs"),$=require("../events-KVanG9sR.cjs"),Rt=require("../polyfills-Df4r-ETT.cjs"),kt=require("../scroll-DAhSpkhR.cjs"),tt=require("../url-D1CgmwZ_.cjs"),zt=require("../css-value-parser/index.cjs");class Tt extends HTMLElement{connectedCallback(){const t={"aria-live":"assertive","aria-atomic":"true",style:"position: absolute; left: 0; top: 0; clip: rect(0 0 0 0); clip-path: inset(50%); overflow: hidden; white-space: nowrap; width: 1px; height: 1px"};for(const[s,i]of Object.entries(t))this.setAttribute(s,i)}}Ct.isBrowser&&!customElements.get("morph-announcer")&&customElements.define("morph-announcer",Tt);var P,l,x,Y,F;class at{constructor(t,s){a(this,P);a(this,l);a(this,x);a(this,Y,t=>{if(t.preventDefault(),e(this,l).hasAttribute("data-back")&&e(this,P).previousPathname)history.back();else{const i=e(this,l).getAttribute("data-history-action")||"push",u=e(this,l).hasAttribute("data-center-scroll"),E=getComputedStyle(e(this,l)).getPropertyValue("--offset-scroll").trim(),L=E?zt.cssValueParser.parse(E):void 0,H=e(this,l).hasAttribute("data-revalidate"),p=e(this,l).hasAttribute("data-keep-search-parameters");e(this,P).navigate(e(this,x),{historyAction:i,centerScroll:u,offsetScroll:L,revalidate:H,keepSearchParameters:p})}});a(this,F,()=>{const t=e(this,l).hasAttribute("data-revalidate");e(this,P).prefetch(e(this,x),t),e(this,l).removeEventListener("pointerenter",e(this,F))});o(this,P,s),o(this,l,t),o(this,x,e(this,l).getAttribute("href")||"/"),e(this,l).addEventListener("click",e(this,Y)),this.checkCurrent(location.pathname),e(this,l).hasAttribute("data-prefetch")&&e(this,l).addEventListener("pointerenter",e(this,F))}get element(){return e(this,l)}checkCurrent(t){const s=e(this,P).normalizePath(t),i=e(this,P).normalizePath(e(this,x));e(this,l).hasAttribute("data-include")&&s.pathname.includes(i.pathname)?e(this,l).classList.add("current"):i.pathname===s.pathname?e(this,l).classList.add("current"):e(this,l).classList.remove("current")}destroy(){e(this,l).removeEventListener("click",e(this,Y)),e(this,l).removeEventListener("pointerenter",e(this,F)),e(this,l).classList.remove("current")}}P=new WeakMap,l=new WeakMap,x=new WeakMap,Y=new WeakMap,F=new WeakMap;var C,V,v,q,D,T;class At{constructor(t,s,i){a(this,C);a(this,V);a(this,v,{x:0,y:0});a(this,q);a(this,D,null);a(this,T,null);o(this,C,t),o(this,V,s),o(this,q,i.cloneNode(!0))}get pathname(){return e(this,V)}get scrollState(){return e(this,v)}get document(){return e(this,T)}cloneDocument(){o(this,T,(e(this,D)||e(this,q)).cloneNode(!0))}get title(){let t="";if(e(this,T).title)t=e(this,T).title;else{const s=e(this,T).querySelector("h1");t=(s==null?void 0:s.innerText)||(s==null?void 0:s.textContent)||e(this,V)}return t}clearScrollState(){e(this,v).x=0,e(this,v).y=0}clearDocumentState(){o(this,D,null)}saveScrollState(){e(this,q).documentElement.hasAttribute("data-no-scroll-restoration")?(e(this,v).x=0,e(this,v).y=0):(e(this,v).x=e(this,C).scrollElement.scrollLeft,e(this,v).y=e(this,C).scrollElement.scrollTop)}saveDocumentState(){e(this,q).documentElement.hasAttribute("data-no-page-restoration")?o(this,D,null):o(this,D,document.cloneNode(!0))}restoreScrollPosition(){e(this,C).scrollElement.scroll({top:e(this,v).y,left:e(this,v).x})}renewScrollPosition(){e(this,C).scrollElement.scroll({top:0,left:0,behavior:"instant"})}}C=new WeakMap,V=new WeakMap,v=new WeakMap,q=new WeakMap,D=new WeakMap,T=new WeakMap;var k,B,m,st,M,f,G,R,A,w,W,z,J,c,et,Mt,ct,Ht,lt,ht,ut,dt,it,j;const K=class K{constructor(t){a(this,c);a(this,k,null);a(this,B,null);a(this,m,[]);a(this,st,new DOMParser);a(this,M);a(this,f,null);a(this,G);a(this,R,[]);a(this,A,!1);a(this,w,null);a(this,W,new Map);a(this,z,null);a(this,J,t=>{var s;return((s=t.getAttribute("href"))==null?void 0:s.startsWith("/"))&&!t.hasAttribute("download")&&!t.hasAttribute("data-morph-skip")&&!t.closest("[data-morph-skip]")&&t.getAttribute("target")!=="_blank"});a(this,it,t=>N(this,null,function*(){var s;(s=t.state)!=null&&s.path&&(t.preventDefault(),o(this,A,!0),yield this.navigate(t.state.path,{historyAction:"none"}),o(this,A,!1))}));a(this,j,()=>{const t=e(this,w).scrollTop,s=e(this,w).scrollLeft;document.documentElement.classList.toggle("top-scrolled",t>0),document.documentElement.classList.toggle("left-scrolled",s>0),$.dispatchEvent(document,"morphScroll",{detail:{left:s,top:t}})});if(Ct.isBrowser&&!K.instance){K.instance=this,o(this,k,{base:tt.normalizeBase(t==null?void 0:t.base),waitForHeadToLoad:(t==null?void 0:t.waitForHeadToLoad)!==!1,cachePages:(t==null?void 0:t.cachePages)!==!1,trailingSlash:(t==null?void 0:t.trailingSlash)||!1,scrollSelector:(t==null?void 0:t.scrollSelector)||"body",morphInsideScrollContainer:(t==null?void 0:t.morphInsideScrollContainer)||!1}),o(this,B,d(this,c,ct).call(this,document.body));const s=this.normalizePath(location.pathname+location.hash);o(this,f,s.pathname),e(this,W).set(e(this,f),new At(this,e(this,f),document)),document.documentElement.setAttribute("data-current-pathname",e(this,f)),document.documentElement.setAttribute("data-current-leaf",s.leaf),this.findLinks(),addEventListener("popstate",e(this,it)),tt.changeHistory({action:"replace",pathname:e(this,f),searchParameters:s.parameters||location.search,hash:s.hash}),o(this,z,new Tt),d(this,c,ut).call(this,document)}}get currentPathname(){return e(this,f)}get previousPathname(){return e(this,G)}get links(){return e(this,m)}get scrollElement(){return e(this,w)}get isPopstateNavigation(){return e(this,A)}normalizePath(t){return tt.splitPath(t,{base:e(this,k).base,trailingSlash:e(this,k).trailingSlash})}prefetch(t,s){return N(this,null,function*(){const i=this.normalizePath(t);d(this,c,et).call(this,i.pathname,{searchParameters:i.parameters,revalidate:s})})}navigate(H){return N(this,arguments,function*(t,{historyAction:s="push",centerScroll:i,offsetScroll:u,revalidate:E,keepSearchParameters:L}={}){var ft;if(e(this,R).length)return;const p=this.normalizePath(((ft=this.pathnameModifier)==null?void 0:ft.call(this,t))||t);let{pathname:h,hash:Q,parameters:mt,leaf:Nt}=p;if(e(this,M)===h||e(this,f)===h){e(this,A)||d(this,c,dt).call(this,Q||0,{centerScroll:i,offsetScroll:u,behavior:"smooth"});return}o(this,M,h),e(this,m).forEach(I=>{I.checkCurrent(h)});try{let I=!0;if(this.preprocessor)try{yield new Promise((r,b)=>{var S;(S=this.preprocessor)==null||S.call(this,{pathname:h,resolve:r,reject:b})})}catch(r){r?console.error(r):console.log("Route change canceled"),I=!1}if(!I||e(this,M)!==h){e(this,m).forEach(r=>{r.checkCurrent(e(this,f))});return}const pt=yield d(this,c,et).call(this,e(this,f)),y=yield d(this,c,et).call(this,h,{searchParameters:mt,revalidate:E});if(e(this,M)!==h){e(this,m).forEach(r=>{r.checkCurrent(e(this,f))});return}pt.saveScrollState(),pt.saveDocumentState(),e(this,A)||(y.clearScrollState(),y.clearDocumentState()),y.cloneDocument(),e(this,z).textContent=y.title,document.body.appendChild(e(this,z));const Et={pathname:h};$.dispatchEvent(document,"morphStart",{detail:Et});const gt=Array.from(document.head.children),vt=Array.from(y.document.head.children),St=d(this,c,Ht).call(this,gt,vt),xt=d(this,c,lt).call(this,gt,St),X=d(this,c,lt).call(this,vt,St);X.forEach((r,b)=>{if(r.tagName==="SCRIPT"&&r.getAttribute("src")){const S=document.createElement("script");S.type="module",S.src=r.getAttribute("src"),X[b]=S}}),X.forEach(r=>{document.head.appendChild(r)});const rt=X.filter(r=>{if(r.hasAttribute("data-no-waiting"))return!1;if(d(this,c,ht).call(this,r))return!0});e(this,k).waitForHeadToLoad&&rt.length&&(yield new Promise(r=>N(this,null,function*(){let b=0;try{for(var S=Pt(rt),O,U,yt;O=!(U=yield S.next()).done;O=!1){const Z=U.value;Z.onload=()=>{b++,b===rt.length&&r()}}}catch(U){yt=[U]}finally{try{O&&(U=S.return)&&(yield U.call(S))}finally{if(yt)throw yt[0]}}}))),yield kt.wait(10);const Lt=[];xt.forEach(r=>{r.hasAttribute("data-permanent")||(d(this,c,ht).call(this,r)?Lt.push(r):r.remove())});const qt=d(this,c,ct).call(this,y.document.body);e(this,k).morphInsideScrollContainer||d(this,c,ut).call(this,y.document),document.documentElement.setAttribute("data-current-pathname",h),document.documentElement.setAttribute("data-current-leaf",Nt),tt.changeHistory({action:s,pathname:h,searchParameters:mt||(L?location.search:""),hash:Q}),e(this,z).remove(),o(this,G,e(this,f)),o(this,f,h),e(this,B).forEach((r,b)=>{const S=qt[b],O=getComputedStyle(r).getPropertyValue("--morph-duration"),U=[...S.childNodes];if(O){const yt=[...r.childNodes];yt.forEach(g=>{g instanceof HTMLElement&&(this.destroyOldLinks(g),g.classList.add("old"))}),U.forEach(g=>{g instanceof HTMLElement&&(this.findNewLinks(g),g.classList.add("new"))}),r.prepend(...U),Rt.requestIdleCallback(()=>{U.forEach(g=>{g instanceof HTMLElement&&g.classList.add("in")})});const Z={morphElement:r,pathname:h};$.dispatchEvent(document,"morphNewChildrenAdded",{detail:Z});const Dt=new Promise(g=>{setTimeout(()=>{yt.forEach(_=>_.remove()),U.forEach(_=>{_ instanceof HTMLElement&&_.classList.remove("in","new")}),$.dispatchEvent(document,"morphOldChildrenRemoved",{detail:Z}),g()},(parseFloat(O)||0)*1e3+10)});e(this,R).push(Dt)}else this.destroyOldLinks(r),r.innerHTML="",r.append(...U),this.findNewLinks(r)}),Q?(y.clearScrollState(),d(this,c,dt).call(this,Q,{centerScroll:i,offsetScroll:u})):e(this,A)?y.restoreScrollPosition():y.renewScrollPosition(),yield Promise.all(e(this,R)),Lt.forEach(r=>r.remove()),o(this,R,[]),e(this,B).forEach(r=>{r.querySelectorAll("script").forEach(S=>{const O=document.createElement("script");O.type="module",O.src=S.getAttribute("src"),S.replaceWith(O)})}),$.dispatchEvent(document,"morphComplete",{detail:Et}),window.dispatchEvent(new Event("resize"))}catch(I){console.error(I)}o(this,M,void 0)})}addLink(t){e(this,m).push(new at(t,this))}addLinks(t){t.forEach(s=>{this.addLink(s)})}removeLink(t){o(this,m,e(this,m).filter(s=>s.element===t?(s.destroy(),!1):!0))}destroyOldLinks(t){o(this,m,e(this,m).filter(s=>t.contains(s.element)?(s.destroy(),!1):!0))}findNewLinks(t){const s=[...t.querySelectorAll("a")].filter(e(this,J));e(this,m).push(...s.map(i=>new at(i,this)))}findLinks(){const t=[...document.documentElement.querySelectorAll("a")].filter(e(this,J));e(this,m).forEach(s=>s.destroy()),o(this,m,t.map(s=>new at(s,this)))}};k=new WeakMap,B=new WeakMap,m=new WeakMap,st=new WeakMap,M=new WeakMap,f=new WeakMap,G=new WeakMap,R=new WeakMap,A=new WeakMap,w=new WeakMap,W=new WeakMap,z=new WeakMap,J=new WeakMap,c=new WeakSet,et=function(t,s){return N(this,null,function*(){let i=e(this,W).get(t);return(!i||s!=null&&s.revalidate)&&(i=yield d(this,c,Mt).call(this,t,s==null?void 0:s.searchParameters)),i})},Mt=function(t,s){return N(this,null,function*(){const u=yield(yield fetch(`${t}${s?"?"+s:""}`)).text(),E=e(this,st).parseFromString(u,"text/html"),L=new At(this,t,E);return e(this,W).set(t,L),L})},ct=function(t){const s=[...t.querySelectorAll("[data-morph]")];return s.length?s:[t]},Ht=function(t,s){return t.filter(i=>s.find(u=>u.outerHTML===i.outerHTML))},lt=function(t,s){return t.filter(i=>!s.find(u=>u.outerHTML===i.outerHTML))},ht=function(t){return t.tagName==="SCRIPT"||t.tagName==="STYLE"||t.tagName==="LINK"&&t.getAttribute("rel")==="stylesheet"},ut=function(t){var s,i;(s=e(this,w))==null||s.removeEventListener("scroll",e(this,j)),o(this,w,t.querySelector(e(this,k).scrollSelector)||t.documentElement),(i=e(this,w))==null||i.addEventListener("scroll",e(this,j)),e(this,j).call(this)},dt=function(t,s){const i=typeof t=="string"?document.getElementById(t):t;(typeof i=="number"||i)&&kt.scrollToElement(i,{scrollElement:e(this,w),behavior:(s==null?void 0:s.behavior)||"instant",center:s==null?void 0:s.centerScroll,offset:s==null?void 0:s.offsetScroll})},it=new WeakMap,j=new WeakMap,K.instance=null;let ot=K;exports.Morph=ot;
|
package/lib/morph/index.js
CHANGED
|
@@ -1,32 +1,32 @@
|
|
|
1
|
-
var
|
|
1
|
+
var St = (n, t) => (t = Symbol[n]) ? t : Symbol.for("Symbol." + n), wt = (n) => {
|
|
2
2
|
throw TypeError(n);
|
|
3
3
|
};
|
|
4
|
-
var rt = (n, t, s) => t.has(n) ||
|
|
5
|
-
var e = (n, t, s) => (rt(n, t, "read from private field"), s ? s.call(n) : t.get(n)),
|
|
4
|
+
var rt = (n, t, s) => t.has(n) || wt("Cannot " + s);
|
|
5
|
+
var e = (n, t, s) => (rt(n, t, "read from private field"), s ? s.call(n) : t.get(n)), a = (n, t, s) => t.has(n) ? wt("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(n) : t.set(n, s), o = (n, t, s, i) => (rt(n, t, "write to private field"), i ? i.call(n, s) : t.set(n, s), s), d = (n, t, s) => (rt(n, t, "access private method"), s);
|
|
6
6
|
var N = (n, t, s) => new Promise((i, u) => {
|
|
7
|
-
var
|
|
7
|
+
var E = (p) => {
|
|
8
8
|
try {
|
|
9
|
-
M(s.next(
|
|
9
|
+
M(s.next(p));
|
|
10
10
|
} catch (h) {
|
|
11
11
|
u(h);
|
|
12
12
|
}
|
|
13
|
-
},
|
|
13
|
+
}, S = (p) => {
|
|
14
14
|
try {
|
|
15
|
-
M(s.throw(
|
|
15
|
+
M(s.throw(p));
|
|
16
16
|
} catch (h) {
|
|
17
17
|
u(h);
|
|
18
18
|
}
|
|
19
|
-
}, M = (
|
|
19
|
+
}, M = (p) => p.done ? i(p.value) : Promise.resolve(p.value).then(E, S);
|
|
20
20
|
M((s = s.apply(n, t)).next());
|
|
21
21
|
});
|
|
22
|
-
var
|
|
22
|
+
var yt = (n, t, s) => (t = n[St("asyncIterator")]) ? t.call(n) : (n = n[St("iterator")](), t = {}, s = (i, u) => (u = n[i]) && (t[i] = (E) => new Promise((S, M, p) => (E = u.call(n, E), p = E.done, Promise.resolve(E.value).then((h) => S({ value: h, done: p }), M)))), s("next"), s("return"), t);
|
|
23
23
|
import { i as At } from "../index-euf5anj6.js";
|
|
24
|
-
import { d as
|
|
24
|
+
import { d as j } from "../events-CsVF98U6.js";
|
|
25
25
|
import { r as Rt } from "../polyfills-DJrTJQky.js";
|
|
26
26
|
import { w as zt, s as It } from "../scroll-Benkuq-t.js";
|
|
27
|
-
import { n as qt, c as
|
|
27
|
+
import { n as qt, c as bt, s as Ot } from "../url-B6BNcw6_.js";
|
|
28
28
|
import { cssValueParser as Ft } from "../css-value-parser/index.js";
|
|
29
|
-
class
|
|
29
|
+
class Ct extends HTMLElement {
|
|
30
30
|
connectedCallback() {
|
|
31
31
|
const t = {
|
|
32
32
|
"aria-live": "assertive",
|
|
@@ -37,200 +37,203 @@ class Pt extends HTMLElement {
|
|
|
37
37
|
this.setAttribute(s, i);
|
|
38
38
|
}
|
|
39
39
|
}
|
|
40
|
-
At && !customElements.get("morph-announcer") && customElements.define("morph-announcer",
|
|
41
|
-
var
|
|
40
|
+
At && !customElements.get("morph-announcer") && customElements.define("morph-announcer", Ct);
|
|
41
|
+
var k, c, x, Y, F;
|
|
42
42
|
class nt {
|
|
43
43
|
constructor(t, s) {
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
if (t.preventDefault(), e(this, c).hasAttribute("data-back") && e(this,
|
|
44
|
+
a(this, k);
|
|
45
|
+
a(this, c);
|
|
46
|
+
a(this, x);
|
|
47
|
+
a(this, Y, (t) => {
|
|
48
|
+
if (t.preventDefault(), e(this, c).hasAttribute("data-back") && e(this, k).previousPathname)
|
|
49
49
|
history.back();
|
|
50
50
|
else {
|
|
51
51
|
const i = e(this, c).getAttribute(
|
|
52
52
|
"data-history-action"
|
|
53
|
-
) || "push", u = e(this, c).hasAttribute("data-center-scroll"),
|
|
53
|
+
) || "push", u = e(this, c).hasAttribute("data-center-scroll"), E = getComputedStyle(e(this, c)).getPropertyValue("--offset-scroll").trim(), S = E ? Ft.parse(E) : void 0, M = e(this, c).hasAttribute("data-revalidate"), p = e(this, c).hasAttribute(
|
|
54
54
|
"data-keep-search-parameters"
|
|
55
55
|
);
|
|
56
|
-
e(this,
|
|
56
|
+
e(this, k).navigate(e(this, x), {
|
|
57
57
|
historyAction: i,
|
|
58
58
|
centerScroll: u,
|
|
59
|
-
offsetScroll:
|
|
59
|
+
offsetScroll: S,
|
|
60
60
|
revalidate: M,
|
|
61
|
-
keepSearchParameters:
|
|
61
|
+
keepSearchParameters: p
|
|
62
62
|
});
|
|
63
63
|
}
|
|
64
64
|
});
|
|
65
|
-
|
|
65
|
+
a(this, F, () => {
|
|
66
66
|
const t = e(this, c).hasAttribute("data-revalidate");
|
|
67
|
-
e(this,
|
|
67
|
+
e(this, k).prefetch(e(this, x), t), e(this, c).removeEventListener("pointerenter", e(this, F));
|
|
68
68
|
});
|
|
69
|
-
|
|
69
|
+
o(this, k, s), o(this, c, t), o(this, x, e(this, c).getAttribute("href") || "/"), e(this, c).addEventListener("click", e(this, Y)), this.checkCurrent(location.pathname), e(this, c).hasAttribute("data-prefetch") && e(this, c).addEventListener("pointerenter", e(this, F));
|
|
70
70
|
}
|
|
71
71
|
get element() {
|
|
72
72
|
return e(this, c);
|
|
73
73
|
}
|
|
74
74
|
checkCurrent(t) {
|
|
75
|
-
const s = e(this,
|
|
75
|
+
const s = e(this, k).normalizePath(t), i = e(this, k).normalizePath(e(this, x));
|
|
76
76
|
e(this, c).hasAttribute("data-include") && s.pathname.includes(i.pathname) ? e(this, c).classList.add("current") : i.pathname === s.pathname ? e(this, c).classList.add("current") : e(this, c).classList.remove("current");
|
|
77
77
|
}
|
|
78
78
|
destroy() {
|
|
79
|
-
e(this, c).removeEventListener("click", e(this,
|
|
79
|
+
e(this, c).removeEventListener("click", e(this, Y)), e(this, c).removeEventListener("pointerenter", e(this, F)), e(this, c).classList.remove("current");
|
|
80
80
|
}
|
|
81
81
|
}
|
|
82
|
-
|
|
83
|
-
var
|
|
84
|
-
class
|
|
82
|
+
k = new WeakMap(), c = new WeakMap(), x = new WeakMap(), Y = new WeakMap(), F = new WeakMap();
|
|
83
|
+
var C, V, v, D, R, T;
|
|
84
|
+
class kt {
|
|
85
85
|
constructor(t, s, i) {
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
86
|
+
a(this, C);
|
|
87
|
+
a(this, V);
|
|
88
|
+
a(this, v, { x: 0, y: 0 });
|
|
89
|
+
a(this, D);
|
|
90
|
+
a(this, R, null);
|
|
91
|
+
a(this, T, null);
|
|
92
|
+
o(this, C, t), o(this, V, s), o(this, D, i.cloneNode(!0));
|
|
93
93
|
}
|
|
94
94
|
get pathname() {
|
|
95
95
|
return e(this, V);
|
|
96
96
|
}
|
|
97
97
|
get scrollState() {
|
|
98
|
-
return e(this,
|
|
98
|
+
return e(this, v);
|
|
99
99
|
}
|
|
100
100
|
get document() {
|
|
101
|
-
return e(this,
|
|
101
|
+
return e(this, T);
|
|
102
102
|
}
|
|
103
103
|
cloneDocument() {
|
|
104
|
-
|
|
104
|
+
o(this, T, (e(this, R) || e(this, D)).cloneNode(!0));
|
|
105
105
|
}
|
|
106
106
|
get title() {
|
|
107
107
|
let t = "";
|
|
108
|
-
if (e(this,
|
|
109
|
-
t = e(this,
|
|
108
|
+
if (e(this, T).title)
|
|
109
|
+
t = e(this, T).title;
|
|
110
110
|
else {
|
|
111
|
-
const s = e(this,
|
|
111
|
+
const s = e(this, T).querySelector("h1");
|
|
112
112
|
t = (s == null ? void 0 : s.innerText) || (s == null ? void 0 : s.textContent) || e(this, V);
|
|
113
113
|
}
|
|
114
114
|
return t;
|
|
115
115
|
}
|
|
116
116
|
clearScrollState() {
|
|
117
|
-
e(this,
|
|
117
|
+
e(this, v).x = 0, e(this, v).y = 0;
|
|
118
118
|
}
|
|
119
119
|
clearDocumentState() {
|
|
120
|
-
|
|
120
|
+
o(this, R, null);
|
|
121
121
|
}
|
|
122
122
|
saveScrollState() {
|
|
123
123
|
e(this, D).documentElement.hasAttribute(
|
|
124
124
|
"data-no-scroll-restoration"
|
|
125
|
-
) ? (e(this,
|
|
125
|
+
) ? (e(this, v).x = 0, e(this, v).y = 0) : (e(this, v).x = e(this, C).scrollElement.scrollLeft, e(this, v).y = e(this, C).scrollElement.scrollTop);
|
|
126
126
|
}
|
|
127
127
|
saveDocumentState() {
|
|
128
128
|
e(this, D).documentElement.hasAttribute(
|
|
129
129
|
"data-no-page-restoration"
|
|
130
|
-
) ?
|
|
130
|
+
) ? o(this, R, null) : o(this, R, document.cloneNode(!0));
|
|
131
131
|
}
|
|
132
132
|
restoreScrollPosition() {
|
|
133
|
-
e(this,
|
|
134
|
-
top: e(this,
|
|
135
|
-
left: e(this,
|
|
133
|
+
e(this, C).scrollElement.scroll({
|
|
134
|
+
top: e(this, v).y,
|
|
135
|
+
left: e(this, v).x
|
|
136
136
|
});
|
|
137
137
|
}
|
|
138
138
|
renewScrollPosition() {
|
|
139
|
-
e(this,
|
|
139
|
+
e(this, C).scrollElement.scroll({
|
|
140
140
|
top: 0,
|
|
141
141
|
left: 0,
|
|
142
142
|
behavior: "instant"
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
145
|
}
|
|
146
|
-
|
|
147
|
-
var
|
|
148
|
-
const
|
|
146
|
+
C = new WeakMap(), V = new WeakMap(), v = new WeakMap(), D = new WeakMap(), R = new WeakMap(), T = new WeakMap();
|
|
147
|
+
var P, W, m, et, H, f, G, z, A, y, B, I, J, l, tt, Tt, at, Ht, ot, lt, ct, ht, st, U;
|
|
148
|
+
const K = class K {
|
|
149
149
|
constructor(t) {
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
150
|
+
a(this, l);
|
|
151
|
+
a(this, P, null);
|
|
152
|
+
a(this, W, null);
|
|
153
|
+
a(this, m, []);
|
|
154
|
+
a(this, et, new DOMParser());
|
|
155
|
+
a(this, H);
|
|
156
|
+
a(this, f, null);
|
|
157
|
+
a(this, G);
|
|
158
|
+
a(this, z, []);
|
|
159
|
+
a(this, A, !1);
|
|
160
|
+
a(this, y, null);
|
|
161
|
+
a(this, B, /* @__PURE__ */ new Map());
|
|
162
|
+
a(this, I, null);
|
|
163
|
+
a(this, J, (t) => {
|
|
164
164
|
var s;
|
|
165
165
|
return ((s = t.getAttribute("href")) == null ? void 0 : s.startsWith("/")) && !t.hasAttribute("download") && !t.hasAttribute("data-morph-skip") && !t.closest("[data-morph-skip]") && t.getAttribute("target") !== "_blank";
|
|
166
166
|
});
|
|
167
|
-
|
|
167
|
+
a(this, st, (t) => N(this, null, function* () {
|
|
168
168
|
var s;
|
|
169
|
-
(s = t.state) != null && s.path && (t.preventDefault(),
|
|
169
|
+
(s = t.state) != null && s.path && (t.preventDefault(), o(this, A, !0), yield this.navigate(t.state.path, { historyAction: "none" }), o(this, A, !1));
|
|
170
170
|
}));
|
|
171
|
-
|
|
172
|
-
const t = e(this,
|
|
173
|
-
document.documentElement.classList.toggle("top-scrolled", t > 0), document.documentElement.classList.toggle("left-scrolled", s > 0),
|
|
171
|
+
a(this, U, () => {
|
|
172
|
+
const t = e(this, y).scrollTop, s = e(this, y).scrollLeft;
|
|
173
|
+
document.documentElement.classList.toggle("top-scrolled", t > 0), document.documentElement.classList.toggle("left-scrolled", s > 0), j(document, "morphScroll", {
|
|
174
174
|
detail: {
|
|
175
175
|
left: s,
|
|
176
176
|
top: t
|
|
177
177
|
}
|
|
178
178
|
});
|
|
179
179
|
});
|
|
180
|
-
if (At && !
|
|
181
|
-
|
|
180
|
+
if (At && !K.instance) {
|
|
181
|
+
K.instance = this, o(this, P, {
|
|
182
182
|
base: qt(t == null ? void 0 : t.base),
|
|
183
183
|
waitForHeadToLoad: (t == null ? void 0 : t.waitForHeadToLoad) !== !1,
|
|
184
184
|
cachePages: (t == null ? void 0 : t.cachePages) !== !1,
|
|
185
185
|
trailingSlash: (t == null ? void 0 : t.trailingSlash) || !1,
|
|
186
186
|
scrollSelector: (t == null ? void 0 : t.scrollSelector) || "body",
|
|
187
187
|
morphInsideScrollContainer: (t == null ? void 0 : t.morphInsideScrollContainer) || !1
|
|
188
|
-
}),
|
|
188
|
+
}), o(this, W, d(this, l, at).call(this, document.body));
|
|
189
189
|
const s = this.normalizePath(
|
|
190
190
|
location.pathname + location.hash
|
|
191
191
|
);
|
|
192
|
-
|
|
192
|
+
o(this, f, s.pathname), e(this, B).set(
|
|
193
193
|
e(this, f),
|
|
194
|
-
new
|
|
194
|
+
new kt(this, e(this, f), document)
|
|
195
195
|
), document.documentElement.setAttribute(
|
|
196
196
|
"data-current-pathname",
|
|
197
197
|
e(this, f)
|
|
198
198
|
), document.documentElement.setAttribute(
|
|
199
199
|
"data-current-leaf",
|
|
200
200
|
s.leaf
|
|
201
|
-
), this.findLinks(), addEventListener("popstate", e(this, st)),
|
|
201
|
+
), this.findLinks(), addEventListener("popstate", e(this, st)), bt({
|
|
202
202
|
action: "replace",
|
|
203
203
|
pathname: e(this, f),
|
|
204
204
|
searchParameters: s.parameters || location.search,
|
|
205
205
|
hash: s.hash
|
|
206
|
-
}),
|
|
206
|
+
}), o(this, I, new Ct()), d(this, l, ct).call(this, document);
|
|
207
207
|
}
|
|
208
208
|
}
|
|
209
209
|
get currentPathname() {
|
|
210
210
|
return e(this, f);
|
|
211
211
|
}
|
|
212
212
|
get previousPathname() {
|
|
213
|
-
return e(this,
|
|
213
|
+
return e(this, G);
|
|
214
214
|
}
|
|
215
215
|
get links() {
|
|
216
216
|
return e(this, m);
|
|
217
217
|
}
|
|
218
218
|
get scrollElement() {
|
|
219
|
-
return e(this,
|
|
219
|
+
return e(this, y);
|
|
220
220
|
}
|
|
221
221
|
get isPopstateNavigation() {
|
|
222
222
|
return e(this, A);
|
|
223
223
|
}
|
|
224
224
|
normalizePath(t) {
|
|
225
225
|
return Ot(t, {
|
|
226
|
-
base: e(this,
|
|
227
|
-
trailingSlash: e(this,
|
|
226
|
+
base: e(this, P).base,
|
|
227
|
+
trailingSlash: e(this, P).trailingSlash
|
|
228
228
|
});
|
|
229
229
|
}
|
|
230
230
|
prefetch(t, s) {
|
|
231
231
|
return N(this, null, function* () {
|
|
232
232
|
const i = this.normalizePath(t);
|
|
233
|
-
d(this, l, tt).call(this, i.pathname,
|
|
233
|
+
d(this, l, tt).call(this, i.pathname, {
|
|
234
|
+
searchParameters: i.parameters,
|
|
235
|
+
revalidate: s
|
|
236
|
+
});
|
|
234
237
|
});
|
|
235
238
|
}
|
|
236
239
|
navigate(M) {
|
|
@@ -238,149 +241,152 @@ const Y = class Y {
|
|
|
238
241
|
historyAction: s = "push",
|
|
239
242
|
centerScroll: i,
|
|
240
243
|
offsetScroll: u,
|
|
241
|
-
revalidate:
|
|
242
|
-
keepSearchParameters:
|
|
244
|
+
revalidate: E,
|
|
245
|
+
keepSearchParameters: S
|
|
243
246
|
} = {}) {
|
|
244
|
-
var
|
|
247
|
+
var dt;
|
|
245
248
|
if (e(this, z).length)
|
|
246
249
|
return;
|
|
247
|
-
const
|
|
248
|
-
let { pathname: h, hash:
|
|
249
|
-
if (e(this,
|
|
250
|
-
e(this, A) || d(this, l, ht).call(this,
|
|
250
|
+
const p = this.normalizePath(((dt = this.pathnameModifier) == null ? void 0 : dt.call(this, t)) || t);
|
|
251
|
+
let { pathname: h, hash: Q, parameters: ut, leaf: Mt } = p;
|
|
252
|
+
if (e(this, H) === h || e(this, f) === h) {
|
|
253
|
+
e(this, A) || d(this, l, ht).call(this, Q || 0, {
|
|
251
254
|
centerScroll: i,
|
|
252
255
|
offsetScroll: u,
|
|
253
256
|
behavior: "smooth"
|
|
254
257
|
});
|
|
255
258
|
return;
|
|
256
259
|
}
|
|
257
|
-
|
|
260
|
+
o(this, H, h), e(this, m).forEach((q) => {
|
|
258
261
|
q.checkCurrent(h);
|
|
259
262
|
});
|
|
260
263
|
try {
|
|
261
264
|
let q = !0;
|
|
262
265
|
if (this.preprocessor)
|
|
263
266
|
try {
|
|
264
|
-
yield new Promise((r,
|
|
265
|
-
var
|
|
266
|
-
(
|
|
267
|
+
yield new Promise((r, b) => {
|
|
268
|
+
var L;
|
|
269
|
+
(L = this.preprocessor) == null || L.call(this, {
|
|
267
270
|
pathname: h,
|
|
268
271
|
resolve: r,
|
|
269
|
-
reject:
|
|
272
|
+
reject: b
|
|
270
273
|
});
|
|
271
274
|
});
|
|
272
275
|
} catch (r) {
|
|
273
276
|
r ? console.error(r) : console.log("Route change canceled"), q = !1;
|
|
274
277
|
}
|
|
275
|
-
if (!q || e(this,
|
|
278
|
+
if (!q || e(this, H) !== h) {
|
|
276
279
|
e(this, m).forEach((r) => {
|
|
277
280
|
r.checkCurrent(e(this, f));
|
|
278
281
|
});
|
|
279
282
|
return;
|
|
280
283
|
}
|
|
281
|
-
const
|
|
282
|
-
|
|
284
|
+
const mt = yield d(this, l, tt).call(this, e(this, f)), w = yield d(this, l, tt).call(this, h, {
|
|
285
|
+
searchParameters: ut,
|
|
286
|
+
revalidate: E
|
|
287
|
+
});
|
|
288
|
+
if (e(this, H) !== h) {
|
|
283
289
|
e(this, m).forEach((r) => {
|
|
284
290
|
r.checkCurrent(e(this, f));
|
|
285
291
|
});
|
|
286
292
|
return;
|
|
287
293
|
}
|
|
288
|
-
|
|
289
|
-
const
|
|
294
|
+
mt.saveScrollState(), mt.saveDocumentState(), e(this, A) || (w.clearScrollState(), w.clearDocumentState()), w.cloneDocument(), e(this, I).textContent = w.title, document.body.appendChild(e(this, I));
|
|
295
|
+
const ft = {
|
|
290
296
|
pathname: h
|
|
291
297
|
};
|
|
292
|
-
|
|
293
|
-
detail:
|
|
298
|
+
j(document, "morphStart", {
|
|
299
|
+
detail: ft
|
|
294
300
|
});
|
|
295
|
-
const
|
|
296
|
-
|
|
301
|
+
const pt = Array.from(document.head.children), Et = Array.from(w.document.head.children), gt = d(this, l, Ht).call(this, pt, Et), Nt = d(this, l, ot).call(this, pt, gt), X = d(this, l, ot).call(this, Et, gt);
|
|
302
|
+
X.forEach((r, b) => {
|
|
297
303
|
if (r.tagName === "SCRIPT" && r.getAttribute("src")) {
|
|
298
|
-
const
|
|
299
|
-
|
|
304
|
+
const L = document.createElement("script");
|
|
305
|
+
L.type = "module", L.src = r.getAttribute("src"), X[b] = L;
|
|
300
306
|
}
|
|
301
|
-
}),
|
|
307
|
+
}), X.forEach((r) => {
|
|
302
308
|
document.head.appendChild(r);
|
|
303
309
|
});
|
|
304
|
-
const it =
|
|
310
|
+
const it = X.filter((r) => {
|
|
305
311
|
if (r.hasAttribute("data-no-waiting"))
|
|
306
312
|
return !1;
|
|
307
313
|
if (d(this, l, lt).call(this, r))
|
|
308
314
|
return !0;
|
|
309
315
|
});
|
|
310
|
-
e(this,
|
|
311
|
-
let
|
|
316
|
+
e(this, P).waitForHeadToLoad && it.length && (yield new Promise((r) => N(this, null, function* () {
|
|
317
|
+
let b = 0;
|
|
312
318
|
try {
|
|
313
|
-
for (var
|
|
314
|
-
const
|
|
315
|
-
|
|
316
|
-
|
|
319
|
+
for (var L = yt(it), O, $, Lt; O = !($ = yield L.next()).done; O = !1) {
|
|
320
|
+
const Z = $.value;
|
|
321
|
+
Z.onload = () => {
|
|
322
|
+
b++, b === it.length && r();
|
|
317
323
|
};
|
|
318
324
|
}
|
|
319
|
-
} catch (
|
|
320
|
-
Lt = [
|
|
325
|
+
} catch ($) {
|
|
326
|
+
Lt = [$];
|
|
321
327
|
} finally {
|
|
322
328
|
try {
|
|
323
|
-
O && (
|
|
329
|
+
O && ($ = L.return) && (yield $.call(L));
|
|
324
330
|
} finally {
|
|
325
331
|
if (Lt)
|
|
326
332
|
throw Lt[0];
|
|
327
333
|
}
|
|
328
334
|
}
|
|
329
335
|
}))), yield zt(10);
|
|
330
|
-
const
|
|
336
|
+
const vt = [];
|
|
331
337
|
Nt.forEach((r) => {
|
|
332
|
-
r.hasAttribute("data-permanent") || (d(this, l, lt).call(this, r) ?
|
|
338
|
+
r.hasAttribute("data-permanent") || (d(this, l, lt).call(this, r) ? vt.push(r) : r.remove());
|
|
333
339
|
});
|
|
334
|
-
const xt = d(this, l,
|
|
335
|
-
e(this,
|
|
340
|
+
const xt = d(this, l, at).call(this, w.document.body);
|
|
341
|
+
e(this, P).morphInsideScrollContainer || d(this, l, ct).call(this, w.document), document.documentElement.setAttribute("data-current-pathname", h), document.documentElement.setAttribute("data-current-leaf", Mt), bt({
|
|
336
342
|
action: s,
|
|
337
343
|
pathname: h,
|
|
338
|
-
searchParameters:
|
|
339
|
-
hash:
|
|
340
|
-
}), e(this, I).remove(),
|
|
341
|
-
const
|
|
344
|
+
searchParameters: ut || (S ? location.search : ""),
|
|
345
|
+
hash: Q
|
|
346
|
+
}), e(this, I).remove(), o(this, G, e(this, f)), o(this, f, h), e(this, W).forEach((r, b) => {
|
|
347
|
+
const L = xt[b], O = getComputedStyle(r).getPropertyValue("--morph-duration"), $ = [...L.childNodes];
|
|
342
348
|
if (O) {
|
|
343
349
|
const Lt = [...r.childNodes];
|
|
344
350
|
Lt.forEach((g) => {
|
|
345
351
|
g instanceof HTMLElement && (this.destroyOldLinks(g), g.classList.add("old"));
|
|
346
|
-
}),
|
|
352
|
+
}), $.forEach((g) => {
|
|
347
353
|
g instanceof HTMLElement && (this.findNewLinks(g), g.classList.add("new"));
|
|
348
|
-
}), r.prepend(
|
|
349
|
-
|
|
354
|
+
}), r.prepend(...$), Rt(() => {
|
|
355
|
+
$.forEach((g) => {
|
|
350
356
|
g instanceof HTMLElement && g.classList.add("in");
|
|
351
357
|
});
|
|
352
358
|
});
|
|
353
|
-
const
|
|
359
|
+
const Z = {
|
|
354
360
|
morphElement: r,
|
|
355
361
|
pathname: h
|
|
356
362
|
};
|
|
357
|
-
|
|
358
|
-
detail:
|
|
363
|
+
j(document, "morphNewChildrenAdded", {
|
|
364
|
+
detail: Z
|
|
359
365
|
});
|
|
360
366
|
const Dt = new Promise((g) => {
|
|
361
367
|
setTimeout(() => {
|
|
362
|
-
Lt.forEach((_) => _.remove()),
|
|
368
|
+
Lt.forEach((_) => _.remove()), $.forEach((_) => {
|
|
363
369
|
_ instanceof HTMLElement && _.classList.remove("in", "new");
|
|
364
|
-
}),
|
|
365
|
-
detail:
|
|
370
|
+
}), j(document, "morphOldChildrenRemoved", {
|
|
371
|
+
detail: Z
|
|
366
372
|
}), g();
|
|
367
373
|
}, (parseFloat(O) || 0) * 1e3 + 10);
|
|
368
374
|
});
|
|
369
375
|
e(this, z).push(Dt);
|
|
370
376
|
} else
|
|
371
|
-
this.destroyOldLinks(r), r.innerHTML = "", r.append(
|
|
372
|
-
}),
|
|
373
|
-
r.querySelectorAll("script").forEach((
|
|
377
|
+
this.destroyOldLinks(r), r.innerHTML = "", r.append(...$), this.findNewLinks(r);
|
|
378
|
+
}), Q ? (w.clearScrollState(), d(this, l, ht).call(this, Q, { centerScroll: i, offsetScroll: u })) : e(this, A) ? w.restoreScrollPosition() : w.renewScrollPosition(), yield Promise.all(e(this, z)), vt.forEach((r) => r.remove()), o(this, z, []), e(this, W).forEach((r) => {
|
|
379
|
+
r.querySelectorAll("script").forEach((L) => {
|
|
374
380
|
const O = document.createElement("script");
|
|
375
|
-
O.type = "module", O.src =
|
|
381
|
+
O.type = "module", O.src = L.getAttribute("src"), L.replaceWith(O);
|
|
376
382
|
});
|
|
377
|
-
}),
|
|
378
|
-
detail:
|
|
383
|
+
}), j(document, "morphComplete", {
|
|
384
|
+
detail: ft
|
|
379
385
|
}), window.dispatchEvent(new Event("resize"));
|
|
380
386
|
} catch (q) {
|
|
381
387
|
console.error(q);
|
|
382
388
|
}
|
|
383
|
-
|
|
389
|
+
o(this, H, void 0);
|
|
384
390
|
});
|
|
385
391
|
}
|
|
386
392
|
addLink(t) {
|
|
@@ -392,14 +398,14 @@ const Y = class Y {
|
|
|
392
398
|
});
|
|
393
399
|
}
|
|
394
400
|
removeLink(t) {
|
|
395
|
-
|
|
401
|
+
o(this, m, e(this, m).filter((s) => s.element === t ? (s.destroy(), !1) : !0));
|
|
396
402
|
}
|
|
397
403
|
destroyOldLinks(t) {
|
|
398
|
-
|
|
404
|
+
o(this, m, e(this, m).filter((s) => t.contains(s.element) ? (s.destroy(), !1) : !0));
|
|
399
405
|
}
|
|
400
406
|
findNewLinks(t) {
|
|
401
407
|
const s = [...t.querySelectorAll("a")].filter(
|
|
402
|
-
e(this,
|
|
408
|
+
e(this, J)
|
|
403
409
|
);
|
|
404
410
|
e(this, m).push(
|
|
405
411
|
...s.map((i) => new nt(i, this))
|
|
@@ -408,30 +414,32 @@ const Y = class Y {
|
|
|
408
414
|
findLinks() {
|
|
409
415
|
const t = [
|
|
410
416
|
...document.documentElement.querySelectorAll("a")
|
|
411
|
-
].filter(e(this,
|
|
412
|
-
e(this, m).forEach((s) => s.destroy()),
|
|
417
|
+
].filter(e(this, J));
|
|
418
|
+
e(this, m).forEach((s) => s.destroy()), o(this, m, t.map((s) => new nt(s, this)));
|
|
413
419
|
}
|
|
414
420
|
};
|
|
415
|
-
|
|
421
|
+
P = new WeakMap(), W = new WeakMap(), m = new WeakMap(), et = new WeakMap(), H = new WeakMap(), f = new WeakMap(), G = new WeakMap(), z = new WeakMap(), A = new WeakMap(), y = new WeakMap(), B = new WeakMap(), I = new WeakMap(), J = new WeakMap(), l = new WeakSet(), tt = function(t, s) {
|
|
416
422
|
return N(this, null, function* () {
|
|
417
423
|
let i = e(this, B).get(t);
|
|
418
|
-
return (!i || s) && (i = yield d(this, l,
|
|
424
|
+
return (!i || s != null && s.revalidate) && (i = yield d(this, l, Tt).call(this, t, s == null ? void 0 : s.searchParameters)), i;
|
|
419
425
|
});
|
|
420
|
-
},
|
|
426
|
+
}, Tt = function(t, s) {
|
|
421
427
|
return N(this, null, function* () {
|
|
422
|
-
const
|
|
423
|
-
|
|
428
|
+
const u = yield (yield fetch(
|
|
429
|
+
`${t}${s ? "?" + s : ""}`
|
|
430
|
+
)).text(), E = e(this, et).parseFromString(u, "text/html"), S = new kt(this, t, E);
|
|
431
|
+
return e(this, B).set(t, S), S;
|
|
424
432
|
});
|
|
425
|
-
},
|
|
433
|
+
}, at = function(t) {
|
|
426
434
|
const s = [...t.querySelectorAll("[data-morph]")];
|
|
427
435
|
return s.length ? s : [t];
|
|
428
|
-
},
|
|
436
|
+
}, Ht = function(t, s) {
|
|
429
437
|
return t.filter(
|
|
430
438
|
(i) => s.find(
|
|
431
439
|
(u) => u.outerHTML === i.outerHTML
|
|
432
440
|
)
|
|
433
441
|
);
|
|
434
|
-
},
|
|
442
|
+
}, ot = function(t, s) {
|
|
435
443
|
return t.filter(
|
|
436
444
|
(i) => !s.find(
|
|
437
445
|
(u) => u.outerHTML === i.outerHTML
|
|
@@ -441,20 +449,20 @@ k = new WeakMap(), W = new WeakMap(), m = new WeakMap(), et = new WeakMap(), T =
|
|
|
441
449
|
return t.tagName === "SCRIPT" || t.tagName === "STYLE" || t.tagName === "LINK" && t.getAttribute("rel") === "stylesheet";
|
|
442
450
|
}, ct = function(t) {
|
|
443
451
|
var s, i;
|
|
444
|
-
(s = e(this,
|
|
452
|
+
(s = e(this, y)) == null || s.removeEventListener(
|
|
445
453
|
"scroll",
|
|
446
454
|
e(this, U)
|
|
447
|
-
),
|
|
455
|
+
), o(this, y, t.querySelector(e(this, P).scrollSelector) || t.documentElement), (i = e(this, y)) == null || i.addEventListener("scroll", e(this, U)), e(this, U).call(this);
|
|
448
456
|
}, ht = function(t, s) {
|
|
449
457
|
const i = typeof t == "string" ? document.getElementById(t) : t;
|
|
450
458
|
(typeof i == "number" || i) && It(i, {
|
|
451
|
-
scrollElement: e(this,
|
|
459
|
+
scrollElement: e(this, y),
|
|
452
460
|
behavior: (s == null ? void 0 : s.behavior) || "instant",
|
|
453
461
|
center: s == null ? void 0 : s.centerScroll,
|
|
454
462
|
offset: s == null ? void 0 : s.offsetScroll
|
|
455
463
|
});
|
|
456
|
-
}, st = new WeakMap(), U = new WeakMap(),
|
|
457
|
-
let
|
|
464
|
+
}, st = new WeakMap(), U = new WeakMap(), K.instance = null;
|
|
465
|
+
let Pt = K;
|
|
458
466
|
export {
|
|
459
|
-
|
|
467
|
+
Pt as Morph
|
|
460
468
|
};
|