aptechka 0.96.4 → 0.96.6
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/size-element/index.cjs +1 -1
- package/lib/size-element/index.js +2 -2
- package/lib/spa/SPA.d.ts +20 -7
- package/lib/spa/index.cjs +1 -1
- package/lib/spa/index.d.ts +1 -1
- package/lib/spa/index.js +100 -72
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __defProp=Object.defineProperty;var __typeError=msg=>{throw TypeError(msg)};var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __accessCheck=(obj,member,msg)=>member.has(obj)||__typeError("Cannot "+msg);var __privateGet=(obj,member,getter)=>(__accessCheck(obj,member,"read from private field"),getter?getter.call(obj):member.get(obj)),__privateAdd=(obj,member,value)=>member.has(obj)?__typeError("Cannot add the same private member more than once"):member instanceof WeakSet?member.add(obj):member.set(obj,value),__privateSet=(obj,member,value,setter)=>(__accessCheck(obj,member,"write to private field"),setter?setter.call(obj,value):member.set(obj,value),value),__privateMethod=(obj,member,method)=>(__accessCheck(obj,member,"access private method"),method);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const elementResizer_index=require("../element-resizer/index.cjs"),browser=require("../browser-CIp8NsnF.cjs");require("construct-style-sheets-polyfill");require("../index-BrasTsja.cjs");var _targetElement,_SizeElement_instances,setVar_fn,_resizeListener;const _SizeElement=class _SizeElement extends HTMLElement{constructor(){super(...arguments);__privateAdd(this,_SizeElement_instances);__privateAdd(this,_targetElement,this);__privateAdd(this,_resizeListener,__name(()=>{__privateGet(this,_targetElement).style.removeProperty("--width"),__privateGet(this,_targetElement).style.removeProperty("--height"),__privateMethod(this,_SizeElement_instances,setVar_fn).call(this,"width"),__privateMethod(this,_SizeElement_instances,setVar_fn).call(this,"height"),setTimeout(()=>{const width=this.offsetWidth,height=this.offsetHeight;__privateMethod(this,_SizeElement_instances,setVar_fn).call(this,"width",width+"px"),__privateMethod(this,_SizeElement_instances,setVar_fn).call(this,"height",height+"px")},0)},"#resizeListener"))}connectedCallback(){var _a;const targetName=(_a=this.getAttribute("target"))==null?void 0:_a.trim();targetName&&(targetName==="parent"?__privateSet(this,_targetElement,this.parentElement||this):__privateSet(this,_targetElement,document.querySelector(targetName)||this)),elementResizer_index.elementResizer.subscribe(this,__privateGet(this,_resizeListener))}disconnectedCallback(){elementResizer_index.elementResizer.unsubscribe(__privateGet(this,_resizeListener))}};_targetElement=new WeakMap,_SizeElement_instances=new WeakSet,setVar_fn=__name(function(varName,value){const prefix=this.dataset.prefix||"";value?__privateGet(this,_targetElement).style.setProperty(`--${prefix}${varName}`,value):__privateGet(this,_targetElement).style.removeProperty(`--${prefix}${varName}`)},"#setVar"),_resizeListener=new WeakMap,__name(_SizeElement,"SizeElement");let SizeElement=_SizeElement;browser.isBrowser&&!customElements.get("e-size-element")&&customElements.define("e-size-element",SizeElement);exports.SizeElement=SizeElement;
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty;var __typeError=msg=>{throw TypeError(msg)};var __name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __accessCheck=(obj,member,msg)=>member.has(obj)||__typeError("Cannot "+msg);var __privateGet=(obj,member,getter)=>(__accessCheck(obj,member,"read from private field"),getter?getter.call(obj):member.get(obj)),__privateAdd=(obj,member,value)=>member.has(obj)?__typeError("Cannot add the same private member more than once"):member instanceof WeakSet?member.add(obj):member.set(obj,value),__privateSet=(obj,member,value,setter)=>(__accessCheck(obj,member,"write to private field"),setter?setter.call(obj,value):member.set(obj,value),value),__privateMethod=(obj,member,method)=>(__accessCheck(obj,member,"access private method"),method);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const elementResizer_index=require("../element-resizer/index.cjs"),browser=require("../browser-CIp8NsnF.cjs");require("construct-style-sheets-polyfill");require("../index-BrasTsja.cjs");var _targetElement,_SizeElement_instances,setVar_fn,_resizeListener;const _SizeElement=class _SizeElement extends HTMLElement{constructor(){super(...arguments);__privateAdd(this,_SizeElement_instances);__privateAdd(this,_targetElement,this);__privateAdd(this,_resizeListener,__name(()=>{__privateGet(this,_targetElement).style.removeProperty("--width"),__privateGet(this,_targetElement).style.removeProperty("--height"),__privateMethod(this,_SizeElement_instances,setVar_fn).call(this,"width"),__privateMethod(this,_SizeElement_instances,setVar_fn).call(this,"height"),setTimeout(()=>{const width=this.offsetWidth,height=this.offsetHeight;__privateMethod(this,_SizeElement_instances,setVar_fn).call(this,"width",width+"px"),__privateMethod(this,_SizeElement_instances,setVar_fn).call(this,"height",height+"px")},0)},"#resizeListener"))}connectedCallback(){var _a;const targetName=(_a=this.getAttribute("target"))==null?void 0:_a.trim();targetName&&(targetName==="parent"?__privateSet(this,_targetElement,this.parentElement||this):__privateSet(this,_targetElement,document.querySelector(targetName)||this)),elementResizer_index.elementResizer.subscribe(this,__privateGet(this,_resizeListener)),document.addEventListener("spaAfterUpdate",__privateGet(this,_resizeListener))}disconnectedCallback(){elementResizer_index.elementResizer.unsubscribe(__privateGet(this,_resizeListener)),document.removeEventListener("spaAfterUpdate",__privateGet(this,_resizeListener))}};_targetElement=new WeakMap,_SizeElement_instances=new WeakSet,setVar_fn=__name(function(varName,value){const prefix=this.dataset.prefix||"";value?__privateGet(this,_targetElement).style.setProperty(`--${prefix}${varName}`,value):__privateGet(this,_targetElement).style.removeProperty(`--${prefix}${varName}`)},"#setVar"),_resizeListener=new WeakMap,__name(_SizeElement,"SizeElement");let SizeElement=_SizeElement;browser.isBrowser&&!customElements.get("e-size-element")&&customElements.define("e-size-element",SizeElement);exports.SizeElement=SizeElement;
|
|
@@ -25,10 +25,10 @@ const _SizeElement = class _SizeElement extends HTMLElement {
|
|
|
25
25
|
connectedCallback() {
|
|
26
26
|
var _a;
|
|
27
27
|
const targetName = (_a = this.getAttribute("target")) == null ? void 0 : _a.trim();
|
|
28
|
-
targetName && (targetName === "parent" ? __privateSet(this, _targetElement, this.parentElement || this) : __privateSet(this, _targetElement, document.querySelector(targetName) || this)), elementResizer.subscribe(this, __privateGet(this, _resizeListener));
|
|
28
|
+
targetName && (targetName === "parent" ? __privateSet(this, _targetElement, this.parentElement || this) : __privateSet(this, _targetElement, document.querySelector(targetName) || this)), elementResizer.subscribe(this, __privateGet(this, _resizeListener)), document.addEventListener("spaAfterUpdate", __privateGet(this, _resizeListener));
|
|
29
29
|
}
|
|
30
30
|
disconnectedCallback() {
|
|
31
|
-
elementResizer.unsubscribe(__privateGet(this, _resizeListener));
|
|
31
|
+
elementResizer.unsubscribe(__privateGet(this, _resizeListener)), document.removeEventListener("spaAfterUpdate", __privateGet(this, _resizeListener));
|
|
32
32
|
}
|
|
33
33
|
};
|
|
34
34
|
_targetElement = new WeakMap(), _SizeElement_instances = new WeakSet(), setVar_fn = /* @__PURE__ */ __name(function(varName, value) {
|
package/lib/spa/SPA.d.ts
CHANGED
|
@@ -3,26 +3,39 @@ import { PageScroll } from '../page-scroll';
|
|
|
3
3
|
export type SPAURLModifier = (url: URL) => URL;
|
|
4
4
|
export interface SPAOptions extends Pick<LocalLinksOptions, 'base' | 'trailingSlash' | 'includeAnchor'> {
|
|
5
5
|
scrollSelector?: string;
|
|
6
|
-
beforeDiff?: (newDocument: Document) => void | Promise<void>;
|
|
7
|
-
afterDiff?: () => void | Promise<void>;
|
|
6
|
+
beforeDiff?: (newDocument: Document, signal: AbortSignal) => void | Promise<void>;
|
|
7
|
+
afterDiff?: (signal: AbortSignal) => void | Promise<void>;
|
|
8
8
|
viewTransition?: boolean;
|
|
9
9
|
urlModifier?: SPAURLModifier;
|
|
10
10
|
}
|
|
11
11
|
export interface SPANavigateOptions extends LocalLinksLinkOptions {
|
|
12
12
|
pushStateNoFetch?: boolean;
|
|
13
|
+
signal?: AbortSignal;
|
|
13
14
|
}
|
|
14
15
|
export interface SPAEvents {
|
|
15
|
-
spaBeforeFetch: CustomEvent
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
spaBeforeFetch: CustomEvent<{
|
|
17
|
+
signal: AbortSignal;
|
|
18
|
+
}>;
|
|
19
|
+
spaAfterFetch: CustomEvent<{
|
|
20
|
+
signal: AbortSignal;
|
|
21
|
+
}>;
|
|
22
|
+
spaBeforeUpdate: CustomEvent<{
|
|
23
|
+
signal: AbortSignal;
|
|
24
|
+
}>;
|
|
25
|
+
spaAfterUpdate: CustomEvent<{
|
|
26
|
+
signal: AbortSignal;
|
|
27
|
+
}>;
|
|
28
|
+
}
|
|
29
|
+
export interface SPANavigationHandle extends Promise<void> {
|
|
30
|
+
signal: AbortSignal;
|
|
31
|
+
abort: () => void;
|
|
19
32
|
}
|
|
20
33
|
export declare class SPA {
|
|
21
34
|
#private;
|
|
22
35
|
static instance: SPA;
|
|
23
36
|
constructor(options?: SPAOptions);
|
|
24
37
|
get scroll(): PageScroll;
|
|
25
|
-
navigate(url: URL | string, options?: SPANavigateOptions):
|
|
38
|
+
navigate(url: URL | string, options?: SPANavigateOptions): SPANavigationHandle;
|
|
26
39
|
}
|
|
27
40
|
declare global {
|
|
28
41
|
interface DocumentEventMap extends SPAEvents {
|
package/lib/spa/index.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __defProp=Object.defineProperty,__defProps=Object.defineProperties;var __getOwnPropDescs=Object.getOwnPropertyDescriptors;var __getOwnPropSymbols=Object.getOwnPropertySymbols;var __hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable;var __typeError=msg=>{throw TypeError(msg)};var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __accessCheck=(obj,member,msg)=>member.has(obj)||__typeError("Cannot "+msg);var __privateGet=(obj,member,getter)=>(__accessCheck(obj,member,"read from private field"),getter?getter.call(obj):member.get(obj)),__privateAdd=(obj,member,value)=>member.has(obj)?__typeError("Cannot add the same private member more than once"):member instanceof WeakSet?member.add(obj):member.set(obj,value),__privateSet=(obj,member,value,setter)=>(__accessCheck(obj,member,"write to private field"),setter?setter.call(obj,value):member.set(obj,value),value);var __privateWrapper=(obj,member,setter,getter)=>({set _(value){__privateSet(obj,member,value,setter)},get _(){return __privateGet(obj,member,getter)}});var __async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const cache_index=require("../cache/index.cjs"),LocalLinks=require("../LocalLinks-D9t9p3Kh.cjs"),PageAnnouncerElement=require("../PageAnnouncerElement-DreveHSN.cjs"),PageScroll=require("../PageScroll-xuHDTIoC.cjs"),ScrollNavigator=require("../ScrollNavigator-CNKI1Iae.cjs"),historyManager=require("../historyManager-Car6P2ak.cjs"),events=require("../events-UlGk63iC.cjs"),morph=require("../morph-CsmERL3V.cjs");require("construct-style-sheets-polyfill");require("../index-BrasTsja.cjs");const url=require("../url-D_KuhhOg.cjs");var _cache,_domParser,_options,_scroll,_links,_announcerElement,_updateId,_isBack;const _SPA=class _SPA{constructor(options){__privateAdd(this,_cache,new cache_index.Cache);__privateAdd(this,_domParser,new DOMParser);__privateAdd(this,_options,null);__privateAdd(this,_scroll,null);__privateAdd(this,_links,null);__privateAdd(this,_announcerElement,null);__privateAdd(this,_updateId,0);__privateAdd(this,_isBack,!1);_SPA.instance||(_SPA.instance=this,__privateSet(this,_options,__spreadProps(__spreadValues({},options),{base:url.normalizeBase(options==null?void 0:options.base)})),__privateSet(this,_announcerElement,new PageAnnouncerElement.PageAnnouncerElement),__privateSet(this,_scroll,new PageScroll.PageScroll(__privateGet(this,_options).scrollSelector)),__privateGet(this,_scroll).update(),__privateSet(this,_links,new LocalLinks.LocalLinks({base:__privateGet(this,_options).base,trailingSlash:__privateGet(this,_options).trailingSlash,includeAnchor:options==null?void 0:options.includeAnchor,onClick:__name((url2,options2)=>{
|
|
1
|
+
"use strict";var __defProp=Object.defineProperty,__defProps=Object.defineProperties;var __getOwnPropDescs=Object.getOwnPropertyDescriptors;var __getOwnPropSymbols=Object.getOwnPropertySymbols;var __hasOwnProp=Object.prototype.hasOwnProperty,__propIsEnum=Object.prototype.propertyIsEnumerable;var __typeError=msg=>{throw TypeError(msg)};var __defNormalProp=(obj,key,value)=>key in obj?__defProp(obj,key,{enumerable:!0,configurable:!0,writable:!0,value}):obj[key]=value,__spreadValues=(a,b)=>{for(var prop in b||(b={}))__hasOwnProp.call(b,prop)&&__defNormalProp(a,prop,b[prop]);if(__getOwnPropSymbols)for(var prop of __getOwnPropSymbols(b))__propIsEnum.call(b,prop)&&__defNormalProp(a,prop,b[prop]);return a},__spreadProps=(a,b)=>__defProps(a,__getOwnPropDescs(b)),__name=(target,value)=>__defProp(target,"name",{value,configurable:!0});var __accessCheck=(obj,member,msg)=>member.has(obj)||__typeError("Cannot "+msg);var __privateGet=(obj,member,getter)=>(__accessCheck(obj,member,"read from private field"),getter?getter.call(obj):member.get(obj)),__privateAdd=(obj,member,value)=>member.has(obj)?__typeError("Cannot add the same private member more than once"):member instanceof WeakSet?member.add(obj):member.set(obj,value),__privateSet=(obj,member,value,setter)=>(__accessCheck(obj,member,"write to private field"),setter?setter.call(obj,value):member.set(obj,value),value),__privateMethod=(obj,member,method)=>(__accessCheck(obj,member,"access private method"),method);var __privateWrapper=(obj,member,setter,getter)=>({set _(value){__privateSet(obj,member,value,setter)},get _(){return __privateGet(obj,member,getter)}});var __async=(__this,__arguments,generator)=>new Promise((resolve,reject)=>{var fulfilled=value=>{try{step(generator.next(value))}catch(e){reject(e)}},rejected=value=>{try{step(generator.throw(value))}catch(e){reject(e)}},step=x=>x.done?resolve(x.value):Promise.resolve(x.value).then(fulfilled,rejected);step((generator=generator.apply(__this,__arguments)).next())});Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const cache_index=require("../cache/index.cjs"),LocalLinks=require("../LocalLinks-D9t9p3Kh.cjs"),PageAnnouncerElement=require("../PageAnnouncerElement-DreveHSN.cjs"),PageScroll=require("../PageScroll-xuHDTIoC.cjs"),ScrollNavigator=require("../ScrollNavigator-CNKI1Iae.cjs"),historyManager=require("../historyManager-Car6P2ak.cjs"),events=require("../events-UlGk63iC.cjs"),morph=require("../morph-CsmERL3V.cjs");require("construct-style-sheets-polyfill");require("../index-BrasTsja.cjs");const url=require("../url-D_KuhhOg.cjs");var _cache,_domParser,_options,_scroll,_links,_announcerElement,_updateId,_isBack,_SPA_instances,navigateInternal_fn;const _SPA=class _SPA{constructor(options){__privateAdd(this,_SPA_instances);__privateAdd(this,_cache,new cache_index.Cache);__privateAdd(this,_domParser,new DOMParser);__privateAdd(this,_options,null);__privateAdd(this,_scroll,null);__privateAdd(this,_links,null);__privateAdd(this,_announcerElement,null);__privateAdd(this,_updateId,0);__privateAdd(this,_isBack,!1);_SPA.instance||(_SPA.instance=this,__privateSet(this,_options,__spreadProps(__spreadValues({},options),{base:url.normalizeBase(options==null?void 0:options.base)})),__privateSet(this,_announcerElement,new PageAnnouncerElement.PageAnnouncerElement),__privateSet(this,_scroll,new PageScroll.PageScroll(__privateGet(this,_options).scrollSelector)),__privateGet(this,_scroll).update(),__privateSet(this,_links,new LocalLinks.LocalLinks({base:__privateGet(this,_options).base,trailingSlash:__privateGet(this,_options).trailingSlash,includeAnchor:options==null?void 0:options.includeAnchor,onClick:__name((url2,options2)=>{this.navigate(url2,options2).signal.addEventListener("abort",()=>{console.log("Navigation aborted")})},"onClick")})),__privateGet(this,_links).update(),historyManager.historyManager.addPopStateHandler(event=>{var _a,_b,_c,_d,_e,_f;if((_b=(_a=event.state)==null?void 0:_a.data)!=null&&_b.popover||(_d=(_c=event.previousState)==null?void 0:_c.data)!=null&&_d.popover)return;__privateSet(this,_isBack,!0),this.navigate(location.href.replace(location.origin,""),{scrollValue:((_f=(_e=event.state)==null?void 0:_e.data)==null?void 0:_f.scrollTop)||0}).signal.addEventListener("abort",()=>{console.log("Popstate navigation aborted")})}))}get scroll(){return __privateGet(this,_scroll)}navigate(url2,options){const abortController=new AbortController,signal=(options==null?void 0:options.signal)||abortController.signal,navigationPromise=__privateMethod(this,_SPA_instances,navigateInternal_fn).call(this,url2,__spreadProps(__spreadValues({},options),{signal})).catch(error=>{throw error instanceof Error&&error.name==="AbortError"||console.error("Navigation failed:",error),error});return Object.assign(navigationPromise,{signal,abort:__name(()=>abortController.abort(),"abort")})}};_cache=new WeakMap,_domParser=new WeakMap,_options=new WeakMap,_scroll=new WeakMap,_links=new WeakMap,_announcerElement=new WeakMap,_updateId=new WeakMap,_isBack=new WeakMap,_SPA_instances=new WeakSet,navigateInternal_fn=__name(function(url$1,options){return __async(this,null,function*(){var _a,_b,_c,_d,_e,_f,_g;let isBack=__privateGet(this,_isBack);__privateSet(this,_isBack,!1);const updateId=++__privateWrapper(this,_updateId)._,{signal}=options||{signal:new AbortController().signal};let fullUrl=url.normalizeURL(url$1,{base:__privateGet(this,_options).base,trailingSlash:__privateGet(this,_options).trailingSlash});if(__privateGet(this,_options).urlModifier&&(fullUrl=__privateGet(this,_options).urlModifier(fullUrl)),options!=null&&options.pushStateNoFetch){historyManager.historyManager.updateCurrentStateData({scrollTop:__privateGet(this,_scroll).y}),historyManager.historyManager.pushState(fullUrl);return}signal.throwIfAborted(),events.dispatchEvent(document,"spaBeforeFetch",{custom:!0,detail:{signal}});let contents=__privateGet(this,_cache).get(fullUrl.toString());if(!contents||options!=null&&options.revalidate)try{contents=yield(yield fetch(`${fullUrl}`,{headers:{"X-SPA":"true"},signal})).text()}catch(error){if(error instanceof Error&&error.name==="AbortError")throw error;window.location.assign(fullUrl);return}if(signal.throwIfAborted(),events.dispatchEvent(document,"spaAfterFetch",{custom:!0,detail:{signal}}),!contents||(options!=null&&options.cache&&__privateGet(this,_cache).set(fullUrl.toString(),contents),signal.throwIfAborted(),__privateGet(this,_updateId)!==updateId))return;isBack?historyManager.historyManager.updatePreviousStateData({scrollTop:__privateGet(this,_scroll).y}):(historyManager.historyManager.updateCurrentStateData({scrollTop:__privateGet(this,_scroll).y}),historyManager.historyManager.pushState(fullUrl)),signal.throwIfAborted();const html=__privateGet(this,_domParser).parseFromString(contents,"text/html");if(url.normalizeRelativeURLs(html,fullUrl),yield(_b=(_a=__privateGet(this,_options)).beforeDiff)==null?void 0:_b.call(_a,html,signal),signal.throwIfAborted(),__privateGet(this,_updateId)!==updateId)return;events.dispatchEvent(document,"spaBeforeUpdate",{custom:!0,detail:{signal}});let title=(_c=html.querySelector("title"))==null?void 0:_c.textContent;if(title)document.title=title;else{const h1=document.querySelector("h1");title=(_e=(_d=h1==null?void 0:h1.innerText)!=null?_d:h1==null?void 0:h1.textContent)!=null?_e:fullUrl.pathname}signal.throwIfAborted(),__privateGet(this,_announcerElement).create(html,title);const updateDone=__name(()=>{__privateGet(this,_scroll).update(),__privateGet(this,_links).update(),__privateGet(this,_announcerElement).done(),options!=null&&options.keepScrollPosition||ScrollNavigator.ScrollNavigator.scrollToElement((options==null?void 0:options.scrollValue)||0,__spreadValues({scrollElement:__privateGet(this,_scroll).element,behavior:"instant"},options==null?void 0:options.scrollOptions))},"updateDone");if(__privateGet(this,_options).viewTransition&&document.startViewTransition){const v=document.startViewTransition(()=>morph.morph(document,html));yield v.updateCallbackDone,signal.throwIfAborted(),updateDone(),yield v.finished}else yield morph.morph(document,html),signal.throwIfAborted(),updateDone();yield(_g=(_f=__privateGet(this,_options)).afterDiff)==null?void 0:_g.call(_f,signal),signal.throwIfAborted(),events.dispatchEvent(document,"spaAfterUpdate",{custom:!0,detail:{signal}})})},"#navigateInternal"),__name(_SPA,"SPA"),_SPA.instance=null;let SPA=_SPA;exports.SPA=SPA;
|
package/lib/spa/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export { SPA, type SPAEvents, type SPANavigateOptions, type SPAOptions, type SPAURLModifier, } from './SPA';
|
|
1
|
+
export { SPA, type SPAEvents, type SPANavigateOptions, type SPANavigationHandle, type SPAOptions, type SPAURLModifier, } from './SPA';
|
package/lib/spa/index.js
CHANGED
|
@@ -14,7 +14,7 @@ var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { en
|
|
|
14
14
|
return a;
|
|
15
15
|
}, __spreadProps = (a, b) => __defProps(a, __getOwnPropDescs(b)), __name = (target, value) => __defProp(target, "name", { value, configurable: !0 });
|
|
16
16
|
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
17
|
-
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)), __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value), __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
|
|
17
|
+
var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj)), __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value), __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value), __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
18
18
|
var __privateWrapper = (obj, member, setter, getter) => ({
|
|
19
19
|
set _(value) {
|
|
20
20
|
__privateSet(obj, member, value, setter);
|
|
@@ -50,9 +50,10 @@ import { m as morph } from "../morph-DwKYrG4g.js";
|
|
|
50
50
|
import "construct-style-sheets-polyfill";
|
|
51
51
|
import "../index-Z2Lgb7xU.js";
|
|
52
52
|
import { a as normalizeBase, n as normalizeURL, b as normalizeRelativeURLs } from "../url-bipuV3FR.js";
|
|
53
|
-
var _cache, _domParser, _options, _scroll, _links, _announcerElement, _updateId, _isBack;
|
|
53
|
+
var _cache, _domParser, _options, _scroll, _links, _announcerElement, _updateId, _isBack, _SPA_instances, navigateInternal_fn;
|
|
54
54
|
const _SPA = class _SPA {
|
|
55
55
|
constructor(options) {
|
|
56
|
+
__privateAdd(this, _SPA_instances);
|
|
56
57
|
__privateAdd(this, _cache, new Cache());
|
|
57
58
|
__privateAdd(this, _domParser, new DOMParser());
|
|
58
59
|
__privateAdd(this, _options, null);
|
|
@@ -68,89 +69,116 @@ const _SPA = class _SPA {
|
|
|
68
69
|
trailingSlash: __privateGet(this, _options).trailingSlash,
|
|
69
70
|
includeAnchor: options == null ? void 0 : options.includeAnchor,
|
|
70
71
|
onClick: /* @__PURE__ */ __name((url, options2) => {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
}
|
|
74
|
-
window.location.assign(url);
|
|
75
|
-
}
|
|
72
|
+
this.navigate(url, options2).signal.addEventListener("abort", () => {
|
|
73
|
+
console.log("Navigation aborted");
|
|
74
|
+
});
|
|
76
75
|
}, "onClick")
|
|
77
76
|
})), __privateGet(this, _links).update(), historyManager.addPopStateHandler((event) => {
|
|
78
77
|
var _a, _b, _c, _d, _e, _f;
|
|
79
|
-
(_b = (_a = event.state) == null ? void 0 : _a.data) != null && _b.popover || (_d = (_c = event.previousState) == null ? void 0 : _c.data) != null && _d.popover
|
|
80
|
-
|
|
81
|
-
|
|
78
|
+
if ((_b = (_a = event.state) == null ? void 0 : _a.data) != null && _b.popover || (_d = (_c = event.previousState) == null ? void 0 : _c.data) != null && _d.popover)
|
|
79
|
+
return;
|
|
80
|
+
__privateSet(this, _isBack, !0), this.navigate(
|
|
81
|
+
location.href.replace(location.origin, ""),
|
|
82
|
+
{
|
|
83
|
+
scrollValue: ((_f = (_e = event.state) == null ? void 0 : _e.data) == null ? void 0 : _f.scrollTop) || 0
|
|
84
|
+
}
|
|
85
|
+
).signal.addEventListener("abort", () => {
|
|
86
|
+
console.log("Popstate navigation aborted");
|
|
87
|
+
});
|
|
82
88
|
}));
|
|
83
89
|
}
|
|
84
90
|
get scroll() {
|
|
85
91
|
return __privateGet(this, _scroll);
|
|
86
92
|
}
|
|
87
93
|
navigate(url, options) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
}).then((res) => res.text()).catch(() => {
|
|
112
|
-
window.location.assign(fullUrl);
|
|
113
|
-
})), dispatchEvent(document, "spaAfterFetch", {
|
|
114
|
-
custom: !0
|
|
115
|
-
}), !contents || (options != null && options.cache && __privateGet(this, _cache).set(fullUrl.toString(), contents), __privateGet(this, _updateId) !== updateId))
|
|
116
|
-
return;
|
|
117
|
-
isBack ? historyManager.updatePreviousStateData({
|
|
118
|
-
scrollTop: __privateGet(this, _scroll).y
|
|
119
|
-
}) : (historyManager.updateCurrentStateData({
|
|
94
|
+
const abortController = new AbortController(), signal = (options == null ? void 0 : options.signal) || abortController.signal, navigationPromise = __privateMethod(this, _SPA_instances, navigateInternal_fn).call(this, url, __spreadProps(__spreadValues({}, options), {
|
|
95
|
+
signal
|
|
96
|
+
})).catch((error) => {
|
|
97
|
+
throw error instanceof Error && error.name === "AbortError" || console.error("Navigation failed:", error), error;
|
|
98
|
+
});
|
|
99
|
+
return Object.assign(navigationPromise, {
|
|
100
|
+
signal,
|
|
101
|
+
abort: /* @__PURE__ */ __name(() => abortController.abort(), "abort")
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
_cache = new WeakMap(), _domParser = new WeakMap(), _options = new WeakMap(), _scroll = new WeakMap(), _links = new WeakMap(), _announcerElement = new WeakMap(), _updateId = new WeakMap(), _isBack = new WeakMap(), _SPA_instances = new WeakSet(), navigateInternal_fn = /* @__PURE__ */ __name(function(url, options) {
|
|
106
|
+
return __async(this, null, function* () {
|
|
107
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
|
108
|
+
let isBack = __privateGet(this, _isBack);
|
|
109
|
+
__privateSet(this, _isBack, !1);
|
|
110
|
+
const updateId = ++__privateWrapper(this, _updateId)._, { signal } = options || { signal: new AbortController().signal };
|
|
111
|
+
let fullUrl = normalizeURL(url, {
|
|
112
|
+
base: __privateGet(this, _options).base,
|
|
113
|
+
trailingSlash: __privateGet(this, _options).trailingSlash
|
|
114
|
+
});
|
|
115
|
+
if (__privateGet(this, _options).urlModifier && (fullUrl = __privateGet(this, _options).urlModifier(fullUrl)), options != null && options.pushStateNoFetch) {
|
|
116
|
+
historyManager.updateCurrentStateData({
|
|
120
117
|
scrollTop: __privateGet(this, _scroll).y
|
|
121
|
-
}), historyManager.pushState(fullUrl)
|
|
122
|
-
|
|
123
|
-
|
|
118
|
+
}), historyManager.pushState(fullUrl);
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
signal.throwIfAborted(), dispatchEvent(document, "spaBeforeFetch", {
|
|
122
|
+
custom: !0,
|
|
123
|
+
detail: { signal }
|
|
124
|
+
});
|
|
125
|
+
let contents = __privateGet(this, _cache).get(fullUrl.toString());
|
|
126
|
+
if (!contents || options != null && options.revalidate)
|
|
127
|
+
try {
|
|
128
|
+
contents = yield (yield fetch(`${fullUrl}`, {
|
|
129
|
+
headers: {
|
|
130
|
+
"X-SPA": "true"
|
|
131
|
+
},
|
|
132
|
+
signal
|
|
133
|
+
})).text();
|
|
134
|
+
} catch (error) {
|
|
135
|
+
if (error instanceof Error && error.name === "AbortError")
|
|
136
|
+
throw error;
|
|
137
|
+
window.location.assign(fullUrl);
|
|
124
138
|
return;
|
|
125
|
-
dispatchEvent(document, "spaBeforeUpdate", {
|
|
126
|
-
custom: !0
|
|
127
|
-
});
|
|
128
|
-
let title = (_c = html.querySelector("title")) == null ? void 0 : _c.textContent;
|
|
129
|
-
if (title)
|
|
130
|
-
document.title = title;
|
|
131
|
-
else {
|
|
132
|
-
const h1 = document.querySelector("h1");
|
|
133
|
-
title = (_e = (_d = h1 == null ? void 0 : h1.innerText) != null ? _d : h1 == null ? void 0 : h1.textContent) != null ? _e : fullUrl.pathname;
|
|
134
139
|
}
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
140
|
+
if (signal.throwIfAborted(), dispatchEvent(document, "spaAfterFetch", {
|
|
141
|
+
custom: !0,
|
|
142
|
+
detail: { signal }
|
|
143
|
+
}), !contents || (options != null && options.cache && __privateGet(this, _cache).set(fullUrl.toString(), contents), signal.throwIfAborted(), __privateGet(this, _updateId) !== updateId))
|
|
144
|
+
return;
|
|
145
|
+
isBack ? historyManager.updatePreviousStateData({
|
|
146
|
+
scrollTop: __privateGet(this, _scroll).y
|
|
147
|
+
}) : (historyManager.updateCurrentStateData({
|
|
148
|
+
scrollTop: __privateGet(this, _scroll).y
|
|
149
|
+
}), historyManager.pushState(fullUrl)), signal.throwIfAborted();
|
|
150
|
+
const html = __privateGet(this, _domParser).parseFromString(contents, "text/html");
|
|
151
|
+
if (normalizeRelativeURLs(html, fullUrl), yield (_b = (_a = __privateGet(this, _options)).beforeDiff) == null ? void 0 : _b.call(_a, html, signal), signal.throwIfAborted(), __privateGet(this, _updateId) !== updateId)
|
|
152
|
+
return;
|
|
153
|
+
dispatchEvent(document, "spaBeforeUpdate", {
|
|
154
|
+
custom: !0,
|
|
155
|
+
detail: { signal }
|
|
150
156
|
});
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
157
|
+
let title = (_c = html.querySelector("title")) == null ? void 0 : _c.textContent;
|
|
158
|
+
if (title)
|
|
159
|
+
document.title = title;
|
|
160
|
+
else {
|
|
161
|
+
const h1 = document.querySelector("h1");
|
|
162
|
+
title = (_e = (_d = h1 == null ? void 0 : h1.innerText) != null ? _d : h1 == null ? void 0 : h1.textContent) != null ? _e : fullUrl.pathname;
|
|
163
|
+
}
|
|
164
|
+
signal.throwIfAborted(), __privateGet(this, _announcerElement).create(html, title);
|
|
165
|
+
const updateDone = /* @__PURE__ */ __name(() => {
|
|
166
|
+
__privateGet(this, _scroll).update(), __privateGet(this, _links).update(), __privateGet(this, _announcerElement).done(), options != null && options.keepScrollPosition || ScrollNavigator.scrollToElement((options == null ? void 0 : options.scrollValue) || 0, __spreadValues({
|
|
167
|
+
scrollElement: __privateGet(this, _scroll).element,
|
|
168
|
+
behavior: "instant"
|
|
169
|
+
}, options == null ? void 0 : options.scrollOptions));
|
|
170
|
+
}, "updateDone");
|
|
171
|
+
if (__privateGet(this, _options).viewTransition && document.startViewTransition) {
|
|
172
|
+
const v = document.startViewTransition(() => morph(document, html));
|
|
173
|
+
yield v.updateCallbackDone, signal.throwIfAborted(), updateDone(), yield v.finished;
|
|
174
|
+
} else
|
|
175
|
+
yield morph(document, html), signal.throwIfAborted(), updateDone();
|
|
176
|
+
yield (_g = (_f = __privateGet(this, _options)).afterDiff) == null ? void 0 : _g.call(_f, signal), signal.throwIfAborted(), dispatchEvent(document, "spaAfterUpdate", {
|
|
177
|
+
custom: !0,
|
|
178
|
+
detail: { signal }
|
|
179
|
+
});
|
|
180
|
+
});
|
|
181
|
+
}, "#navigateInternal"), __name(_SPA, "SPA"), _SPA.instance = null;
|
|
154
182
|
let SPA = _SPA;
|
|
155
183
|
export {
|
|
156
184
|
SPA
|