@trebired/frontend 13.17.0 → 13.19.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/CHANGELOG.md +12 -0
- package/dist/layout/index.d.ts +3 -0
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +6 -2
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/scroll.d.ts +15 -0
- package/dist/layout/scroll.d.ts.map +1 -0
- package/dist/layout/scroll.js +90 -0
- package/dist/layout/scroll.js.map +1 -0
- package/dist/src/layout/index.d.ts +3 -0
- package/dist/src/layout/index.d.ts.map +1 -1
- package/dist/src/layout/index.js +6 -2
- package/dist/src/layout/index.js.map +1 -1
- package/dist/src/layout/scroll.d.ts +15 -0
- package/dist/src/layout/scroll.d.ts.map +1 -0
- package/dist/src/layout/scroll.js +90 -0
- package/dist/src/layout/scroll.js.map +1 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 13.19.0
|
|
4
|
+
|
|
5
|
+
- The scroll-state boot script now gets the state right on a reload or a back/forward navigation. The browser restores the scroll position after the boot script runs, so the first value was always "not scrolled"; the script now remembers the position in `sessionStorage` on `pagehide` and seeds the state from it when the navigation is a reload or a history traversal, and the real position takes over as soon as the page has loaded.
|
|
6
|
+
- Added `data-…-scroll-settling`, set on `<html>` until the page has loaded and the state has settled. Styles that transition on the scroll state can switch the transition off while it is present, so a late correction lands in one frame instead of animating.
|
|
7
|
+
- The boot script also re-reads the state on `DOMContentLoaded`, on `pageshow` and in the first animation frame.
|
|
8
|
+
|
|
9
|
+
## 13.18.0
|
|
10
|
+
|
|
11
|
+
- Added the scroll-state system, so a header that changes appearance once the page is scrolled no longer has to compute that in React. `createScrollStateBootScript()` returns a boot script that sets `data-…-scrolled` on `<html>` before the first paint and keeps it current from then on, so the correct header is painted immediately even when a reload restores a scrolled position.
|
|
12
|
+
- `bindScrollState()` binds the same state from the runtime for apps that do not use a boot script, and does nothing when the boot script already owns it. `bindLayouts` calls it, with the threshold configurable through `scroll` in the layout runtime options.
|
|
13
|
+
- `applyScrollState()`, `readScrollState()`, `SCROLL_STATE_ATTRIBUTE` and `SCROLL_STATE_SELECTOR` are exported for stylesheets and code that need the state directly. The threshold defaults to 24 pixels.
|
|
14
|
+
|
|
3
15
|
## 13.17.0
|
|
4
16
|
|
|
5
17
|
- The locale boot script no longer keeps the document hidden until `DOMContentLoaded`. It still hides the page when the visitor's stored locale differs from the rendered one, but `LocaleProvider` now clears that pending state as soon as the localized tree has committed, so the hidden window lasts only until the correct text is on screen instead of until every deferred script has run.
|
package/dist/layout/index.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type BindRoot } from "../dom/index.d.ts";
|
|
2
|
+
import { type ScrollStateOptions } from "./scroll.js";
|
|
2
3
|
import { type HeaderRuntimeOptions } from "./header.js";
|
|
3
4
|
declare const LAYOUT_ROOT_SELECTOR: string;
|
|
4
5
|
declare const LAYOUT_MAIN_SELECTOR: string;
|
|
@@ -20,6 +21,7 @@ type LayoutBodyState = {
|
|
|
20
21
|
type LayoutRuntimeOptions = {
|
|
21
22
|
header?: HeaderRuntimeOptions;
|
|
22
23
|
mobile?: boolean;
|
|
24
|
+
scroll?: ScrollStateOptions;
|
|
23
25
|
};
|
|
24
26
|
declare function readLayoutBodyState(root?: ParentNode): LayoutBodyState;
|
|
25
27
|
declare function applyLayoutBodyState(state: LayoutBodyState, options?: LayoutRuntimeOptions): LayoutBodyState;
|
|
@@ -31,6 +33,7 @@ declare function ensureLayoutPortalRoot(): HTMLElement;
|
|
|
31
33
|
declare function createLayoutBootScript(state?: Partial<LayoutBodyState>): string;
|
|
32
34
|
export { LAYOUT_BODY_ATTRIBUTE, LAYOUT_CONTENT_SELECTOR, LAYOUT_MAIN_SELECTOR, LAYOUT_MOBILE_BODY_ATTRIBUTE, LAYOUT_PORTAL_ROOT_ID, LAYOUT_PORTAL_ROOT_SELECTOR, LAYOUT_ROOT_SELECTOR, SITE_HEADER_ROOT_ATTRIBUTE, SITE_HEADER_ROOT_SELECTOR, applyLayoutBodyState, bindLayoutRoot, bindLayouts, createLayoutBootScript, ensureLayoutPortalRoot, readLayoutBodyState, siteHeaderRootHtml, syncLayoutBodyState, };
|
|
33
35
|
export * from "./breadcrumb.js";
|
|
36
|
+
export * from "./scroll.js";
|
|
34
37
|
export * from "./header.js";
|
|
35
38
|
export * from "./state.js";
|
|
36
39
|
export type { LayoutBodyState, LayoutRuntimeOptions, LayoutSide };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAGrB,QAAA,MAAM,oBAAoB,QAAsC,CAAC;AACjE,QAAA,MAAM,oBAAoB,QAAsC,CAAC;AACjE,QAAA,MAAM,uBAAuB,QAAyC,CAAC;AACvE,QAAA,MAAM,qBAAqB,2BAA0C,CAAC;AACtE,QAAA,MAAM,2BAA2B,QAA6C,CAAC;AAC/E,QAAA,MAAM,qBAAqB,kBAA6B,CAAC;AACzD,QAAA,MAAM,4BAA4B,kBAAoC,CAAC;AACvE,QAAA,MAAM,0BAA0B,kBAAuC,CAAC;AACxE,QAAA,MAAM,yBAAyB,QAA2C,CAAC;AAE3E,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnC,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAGrB,QAAA,MAAM,oBAAoB,QAAsC,CAAC;AACjE,QAAA,MAAM,oBAAoB,QAAsC,CAAC;AACjE,QAAA,MAAM,uBAAuB,QAAyC,CAAC;AACvE,QAAA,MAAM,qBAAqB,2BAA0C,CAAC;AACtE,QAAA,MAAM,2BAA2B,QAA6C,CAAC;AAC/E,QAAA,MAAM,qBAAqB,kBAA6B,CAAC;AACzD,QAAA,MAAM,4BAA4B,kBAAoC,CAAC;AACvE,QAAA,MAAM,0BAA0B,kBAAuC,CAAC;AACxE,QAAA,MAAM,yBAAyB,QAA2C,CAAC;AAE3E,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnC,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAUF,iBAAS,mBAAmB,CAAC,IAAI,GAAE,UAAqB,GAAG,eAAe,CAQzE;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,GAAE,oBAAyB,mBAgBvF;AAED,iBAAS,mBAAmB,CAAC,IAAI,GAAE,UAAqB,EAAE,OAAO,GAAE,oBAAyB,mBAE3F;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,GAAE,oBAAyB,eAKnF;AAED,iBAAS,WAAW,CAAC,IAAI,GAAE,QAAmB,EAAE,OAAO,GAAE,oBAAyB,QASjF;AAED,iBAAS,kBAAkB,CAAC,UAAU,EAAE,MAAM,UAE7C;AAED,iBAAS,sBAAsB,gBAS9B;AAED,iBAAS,sBAAsB,CAAC,KAAK,GAAE,OAAO,CAAC,eAAe,CAAM,UAqBnE;AAED,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,CAAC;AACF,cAAa,iBAAiB,CAAC;AAC/B,cAAa,aAAa,CAAC;AAC3B,cAAa,aAAa,CAAC;AAC3B,cAAa,YAAY,CAAC;AAC1B,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/layout/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { queryAll } from "../dom/index.js";
|
|
2
2
|
import { bindBreadcrumbs } from "./breadcrumb.js";
|
|
3
|
+
import { bindScrollState } from "./scroll.js";
|
|
3
4
|
import { HEADER_PRIMARY_SELECTOR, HEADER_SECONDARY_SELECTOR, bindHeaders, } from "./header.js";
|
|
4
5
|
import { FRONTEND_PREFIX, frontendDataAttr, frontendDataSelector } from "../namespace/index.js";
|
|
5
6
|
const LAYOUT_ROOT_SELECTOR = frontendDataSelector("layout-root");
|
|
@@ -54,8 +55,10 @@ function bindLayouts(root = document, options = {}) {
|
|
|
54
55
|
});
|
|
55
56
|
bindHeaders(root, options.header || {});
|
|
56
57
|
bindBreadcrumbs(root);
|
|
57
|
-
if (root
|
|
58
|
-
|
|
58
|
+
if (root !== document)
|
|
59
|
+
return;
|
|
60
|
+
bindScrollState(options.scroll);
|
|
61
|
+
syncLayoutBodyState(document, options);
|
|
59
62
|
}
|
|
60
63
|
function siteHeaderRootHtml(headerHtml) {
|
|
61
64
|
return `<div ${SITE_HEADER_ROOT_ATTRIBUTE}="">${headerHtml}</div>`;
|
|
@@ -96,6 +99,7 @@ function createLayoutBootScript(state = {}) {
|
|
|
96
99
|
}
|
|
97
100
|
export { LAYOUT_BODY_ATTRIBUTE, LAYOUT_CONTENT_SELECTOR, LAYOUT_MAIN_SELECTOR, LAYOUT_MOBILE_BODY_ATTRIBUTE, LAYOUT_PORTAL_ROOT_ID, LAYOUT_PORTAL_ROOT_SELECTOR, LAYOUT_ROOT_SELECTOR, SITE_HEADER_ROOT_ATTRIBUTE, SITE_HEADER_ROOT_SELECTOR, applyLayoutBodyState, bindLayoutRoot, bindLayouts, createLayoutBootScript, ensureLayoutPortalRoot, readLayoutBodyState, siteHeaderRootHtml, syncLayoutBodyState, };
|
|
98
101
|
export * from "./breadcrumb.js";
|
|
102
|
+
export * from "./scroll.js";
|
|
99
103
|
export * from "./header.js";
|
|
100
104
|
export * from "./state.js";
|
|
101
105
|
//# sourceMappingURL=index.js.map
|
package/dist/layout/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,WAAW,GAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAExF,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;AACjE,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;AACjE,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AACvE,MAAM,qBAAqB,GAAG,GAAG,eAAe,qBAAqB,CAAC;AACtE,MAAM,2BAA2B,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAC/E,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACzD,MAAM,4BAA4B,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;AACvE,MAAM,0BAA0B,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACxE,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layout/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare const SCROLL_STATE_ATTRIBUTE: `data-${string}`;
|
|
2
|
+
declare const SCROLL_STATE_SELECTOR: string;
|
|
3
|
+
declare const SCROLL_SETTLING_ATTRIBUTE: `data-${string}`;
|
|
4
|
+
declare const SCROLL_SETTLING_SELECTOR: string;
|
|
5
|
+
declare const DEFAULT_SCROLL_THRESHOLD = 24;
|
|
6
|
+
type ScrollStateOptions = {
|
|
7
|
+
threshold?: number;
|
|
8
|
+
};
|
|
9
|
+
declare function readScrollState(options?: ScrollStateOptions): boolean;
|
|
10
|
+
declare function applyScrollState(options?: ScrollStateOptions): boolean;
|
|
11
|
+
declare function bindScrollState(options?: ScrollStateOptions): () => void;
|
|
12
|
+
declare function createScrollStateBootScript(options?: ScrollStateOptions): string;
|
|
13
|
+
export { DEFAULT_SCROLL_THRESHOLD, SCROLL_SETTLING_ATTRIBUTE, SCROLL_SETTLING_SELECTOR, SCROLL_STATE_ATTRIBUTE, SCROLL_STATE_SELECTOR, applyScrollState, bindScrollState, createScrollStateBootScript, readScrollState, };
|
|
14
|
+
export type { ScrollStateOptions };
|
|
15
|
+
//# sourceMappingURL=scroll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../src/layout/scroll.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,sBAAsB,kBAA+B,CAAC;AAC5D,QAAA,MAAM,qBAAqB,QAA2C,CAAC;AACvE,QAAA,MAAM,yBAAyB,kBAAsC,CAAC;AACtE,QAAA,MAAM,wBAAwB,QAA0C,CAAC;AAEzE,QAAA,MAAM,wBAAwB,KAAK,CAAC;AAEpC,KAAK,kBAAkB,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAOF,iBAAS,eAAe,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAGlE;AAED,iBAAS,gBAAgB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAMnE;AAOD,iBAAS,eAAe,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,IAAI,CAYrE;AAuCD,iBAAS,2BAA2B,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAY7E;AAED,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,2BAA2B,EAC3B,eAAe,GAChB,CAAC;AACF,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { FRONTEND_PREFIX, frontendDataAttr, frontendDataSelector } from "../namespace/index.js";
|
|
2
|
+
const SCROLL_STATE_ATTRIBUTE = frontendDataAttr("scrolled");
|
|
3
|
+
const SCROLL_STATE_SELECTOR = frontendDataSelector("scrolled", "true");
|
|
4
|
+
const SCROLL_SETTLING_ATTRIBUTE = frontendDataAttr("scroll-settling");
|
|
5
|
+
const SCROLL_SETTLING_SELECTOR = frontendDataSelector("scroll-settling");
|
|
6
|
+
const SCROLL_STORAGE_PREFIX = `${FRONTEND_PREFIX}:scroll:`;
|
|
7
|
+
const DEFAULT_SCROLL_THRESHOLD = 24;
|
|
8
|
+
function scrollStateThreshold(options = {}) {
|
|
9
|
+
const value = Number(options.threshold);
|
|
10
|
+
return Number.isFinite(value) && value >= 0 ? value : DEFAULT_SCROLL_THRESHOLD;
|
|
11
|
+
}
|
|
12
|
+
function readScrollState(options = {}) {
|
|
13
|
+
if (typeof window === "undefined")
|
|
14
|
+
return false;
|
|
15
|
+
return (window.scrollY || window.pageYOffset || 0) > scrollStateThreshold(options);
|
|
16
|
+
}
|
|
17
|
+
function applyScrollState(options = {}) {
|
|
18
|
+
const scrolled = readScrollState(options);
|
|
19
|
+
if (typeof document !== "undefined") {
|
|
20
|
+
document.documentElement.setAttribute(SCROLL_STATE_ATTRIBUTE, scrolled ? "true" : "false");
|
|
21
|
+
}
|
|
22
|
+
return scrolled;
|
|
23
|
+
}
|
|
24
|
+
function scrollStateBound() {
|
|
25
|
+
if (typeof document === "undefined")
|
|
26
|
+
return false;
|
|
27
|
+
return document.documentElement.hasAttribute(SCROLL_STATE_ATTRIBUTE);
|
|
28
|
+
}
|
|
29
|
+
function bindScrollState(options = {}) {
|
|
30
|
+
if (typeof window === "undefined" || scrollStateBound())
|
|
31
|
+
return () => undefined;
|
|
32
|
+
const update = () => {
|
|
33
|
+
applyScrollState(options);
|
|
34
|
+
};
|
|
35
|
+
update();
|
|
36
|
+
window.addEventListener("scroll", update, { passive: true });
|
|
37
|
+
window.addEventListener("resize", update, { passive: true });
|
|
38
|
+
return () => {
|
|
39
|
+
window.removeEventListener("scroll", update);
|
|
40
|
+
window.removeEventListener("resize", update);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function scrollStateSeedSource() {
|
|
44
|
+
return [
|
|
45
|
+
`var K=${JSON.stringify(SCROLL_STORAGE_PREFIX)}+location.pathname+location.search,N='',S=0;`,
|
|
46
|
+
"try{N=(performance.getEntriesByType('navigation')[0]||{}).type||''}catch(e){}",
|
|
47
|
+
"if(N==='reload'||N==='back_forward'){try{S=parseFloat(sessionStorage.getItem(K))||0}catch(e){}}",
|
|
48
|
+
"window.addEventListener('pagehide',function(){",
|
|
49
|
+
"try{sessionStorage.setItem(K,String(window.scrollY||window.pageYOffset||0))}catch(e){}});",
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
function scrollStateUpdateSource() {
|
|
53
|
+
return [
|
|
54
|
+
"var u=function(){var v=window.scrollY||window.pageYOffset||0;",
|
|
55
|
+
"if(S){if(v)S=0;else v=S}",
|
|
56
|
+
"h.setAttribute(A,v>T?'true':'false')};",
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
function scrollStateSettleSource() {
|
|
60
|
+
return [
|
|
61
|
+
"h.setAttribute(G,'');",
|
|
62
|
+
"window.addEventListener('load',function(){S=0;u();",
|
|
63
|
+
"var f=function(){h.removeAttribute(G)};",
|
|
64
|
+
"if(window.requestAnimationFrame)window.requestAnimationFrame(f);else f()});",
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
function scrollStateListenerSource() {
|
|
68
|
+
return [
|
|
69
|
+
"window.addEventListener('scroll',u,{passive:true});",
|
|
70
|
+
"window.addEventListener('resize',u,{passive:true});",
|
|
71
|
+
"window.addEventListener('pageshow',u);",
|
|
72
|
+
"document.addEventListener('DOMContentLoaded',u);",
|
|
73
|
+
"if(window.requestAnimationFrame)window.requestAnimationFrame(u);",
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
function createScrollStateBootScript(options = {}) {
|
|
77
|
+
return [
|
|
78
|
+
"(function(){try{",
|
|
79
|
+
`var A=${JSON.stringify(SCROLL_STATE_ATTRIBUTE)},G=${JSON.stringify(SCROLL_SETTLING_ATTRIBUTE)};`,
|
|
80
|
+
`var T=${scrollStateThreshold(options)},h=document.documentElement;`,
|
|
81
|
+
...scrollStateSeedSource(),
|
|
82
|
+
...scrollStateUpdateSource(),
|
|
83
|
+
"u();",
|
|
84
|
+
...scrollStateSettleSource(),
|
|
85
|
+
...scrollStateListenerSource(),
|
|
86
|
+
"}catch(e){}})();",
|
|
87
|
+
].join("");
|
|
88
|
+
}
|
|
89
|
+
export { DEFAULT_SCROLL_THRESHOLD, SCROLL_SETTLING_ATTRIBUTE, SCROLL_SETTLING_SELECTOR, SCROLL_STATE_ATTRIBUTE, SCROLL_STATE_SELECTOR, applyScrollState, bindScrollState, createScrollStateBootScript, readScrollState, };
|
|
90
|
+
//# sourceMappingURL=scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../src/layout/scroll.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAExF,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,UAAU,CAAC,CAAC;AAC5D,MAAM,qBAAqB,GAAG,oBAAoB,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;AACvE,MAAM,yBAAyB,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC;AACtE,MAAM,wBAAwB,GAAG,oBAAoB,CAAC,iBAAiB,CAAC,CAAC;AACzE,MAAM,qBAAqB,GAAG,GAAG,eAAe,UAAU,CAAC;AAC3D,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAMpC,SAAS,oBAAoB,CAAC,UAA8B,EAAE;IAC5D,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,wBAAwB,CAAC;AACjF,CAAC;AAED,SAAS,eAAe,CAAC,UAA8B,EAAE;IACvD,IAAI,OAAO,MAAM,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAChD,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,WAAW,IAAI,CAAC,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACrF,CAAC;AAED,SAAS,gBAAgB,CAAC,UAA8B,EAAE;IACxD,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,sBAAsB,EAAE,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,gBAAgB;IACvB,IAAI,OAAO,QAAQ,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC;IAClD,OAAO,QAAQ,CAAC,eAAe,CAAC,YAAY,CAAC,sBAAsB,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,eAAe,CAAC,UAA8B,EAAE;IACvD,IAAI,OAAO,MAAM,KAAK,WAAW,IAAI,gBAAgB,EAAE;QAAE,OAAO,GAAG,EAAE,CAAC,SAAS,CAAC;IAChF,MAAM,MAAM,GAAG,GAAG,EAAE;QAClB,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC5B,CAAC,CAAC;IACF,MAAM,EAAE,CAAC;IACT,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,OAAO,GAAG,EAAE;QACV,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,qBAAqB;IAC5B,OAAO;QACL,SAAS,IAAI,CAAC,SAAS,CAAC,qBAAqB,CAAC,8CAA8C;QAC5F,+EAA+E;QAC/E,iGAAiG;QACjG,gDAAgD;QAChD,2FAA2F;KAC5F,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;QACL,+DAA+D;QAC/D,0BAA0B;QAC1B,wCAAwC;KACzC,CAAC;AACJ,CAAC;AAED,SAAS,uBAAuB;IAC9B,OAAO;QACL,uBAAuB;QACvB,oDAAoD;QACpD,yCAAyC;QACzC,6EAA6E;KAC9E,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB;IAChC,OAAO;QACL,qDAAqD;QACrD,qDAAqD;QACrD,wCAAwC;QACxC,kDAAkD;QAClD,kEAAkE;KACnE,CAAC;AACJ,CAAC;AAED,SAAS,2BAA2B,CAAC,UAA8B,EAAE;IACnE,OAAO;QACL,kBAAkB;QAClB,SAAS,IAAI,CAAC,SAAS,CAAC,sBAAsB,CAAC,MAAM,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,GAAG;QACjG,SAAS,oBAAoB,CAAC,OAAO,CAAC,8BAA8B;QACpE,GAAG,qBAAqB,EAAE;QAC1B,GAAG,uBAAuB,EAAE;QAC5B,MAAM;QACN,GAAG,uBAAuB,EAAE;QAC5B,GAAG,yBAAyB,EAAE;QAC9B,kBAAkB;KACnB,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AACb,CAAC;AAED,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,2BAA2B,EAC3B,eAAe,GAChB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type BindRoot } from "../../dom/index.d.ts";
|
|
2
|
+
import { type ScrollStateOptions } from "./scroll.js";
|
|
2
3
|
import { type HeaderRuntimeOptions } from "./header.js";
|
|
3
4
|
declare const LAYOUT_ROOT_SELECTOR: string;
|
|
4
5
|
declare const LAYOUT_MAIN_SELECTOR: string;
|
|
@@ -20,6 +21,7 @@ type LayoutBodyState = {
|
|
|
20
21
|
type LayoutRuntimeOptions = {
|
|
21
22
|
header?: HeaderRuntimeOptions;
|
|
22
23
|
mobile?: boolean;
|
|
24
|
+
scroll?: ScrollStateOptions;
|
|
23
25
|
};
|
|
24
26
|
declare function readLayoutBodyState(root?: ParentNode): LayoutBodyState;
|
|
25
27
|
declare function applyLayoutBodyState(state: LayoutBodyState, options?: LayoutRuntimeOptions): LayoutBodyState;
|
|
@@ -31,6 +33,7 @@ declare function ensureLayoutPortalRoot(): HTMLElement;
|
|
|
31
33
|
declare function createLayoutBootScript(state?: Partial<LayoutBodyState>): string;
|
|
32
34
|
export { LAYOUT_BODY_ATTRIBUTE, LAYOUT_CONTENT_SELECTOR, LAYOUT_MAIN_SELECTOR, LAYOUT_MOBILE_BODY_ATTRIBUTE, LAYOUT_PORTAL_ROOT_ID, LAYOUT_PORTAL_ROOT_SELECTOR, LAYOUT_ROOT_SELECTOR, SITE_HEADER_ROOT_ATTRIBUTE, SITE_HEADER_ROOT_SELECTOR, applyLayoutBodyState, bindLayoutRoot, bindLayouts, createLayoutBootScript, ensureLayoutPortalRoot, readLayoutBodyState, siteHeaderRootHtml, syncLayoutBodyState, };
|
|
33
35
|
export * from "./breadcrumb.js";
|
|
36
|
+
export * from "./scroll.js";
|
|
34
37
|
export * from "./header.js";
|
|
35
38
|
export * from "./state.js";
|
|
36
39
|
export type { LayoutBodyState, LayoutRuntimeOptions, LayoutSide };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAGrB,QAAA,MAAM,oBAAoB,QAAsC,CAAC;AACjE,QAAA,MAAM,oBAAoB,QAAsC,CAAC;AACjE,QAAA,MAAM,uBAAuB,QAAyC,CAAC;AACvE,QAAA,MAAM,qBAAqB,2BAA0C,CAAC;AACtE,QAAA,MAAM,2BAA2B,QAA6C,CAAC;AAC/E,QAAA,MAAM,qBAAqB,kBAA6B,CAAC;AACzD,QAAA,MAAM,4BAA4B,kBAAoC,CAAC;AACvE,QAAA,MAAM,0BAA0B,kBAAuC,CAAC;AACxE,QAAA,MAAM,yBAAyB,QAA2C,CAAC;AAE3E,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnC,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAExD,OAAO,EAAmB,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAIL,KAAK,oBAAoB,EAC1B,MAAM,aAAa,CAAC;AAGrB,QAAA,MAAM,oBAAoB,QAAsC,CAAC;AACjE,QAAA,MAAM,oBAAoB,QAAsC,CAAC;AACjE,QAAA,MAAM,uBAAuB,QAAyC,CAAC;AACvE,QAAA,MAAM,qBAAqB,2BAA0C,CAAC;AACtE,QAAA,MAAM,2BAA2B,QAA6C,CAAC;AAC/E,QAAA,MAAM,qBAAqB,kBAA6B,CAAC;AACzD,QAAA,MAAM,4BAA4B,kBAAoC,CAAC;AACvE,QAAA,MAAM,0BAA0B,kBAAuC,CAAC;AACxE,QAAA,MAAM,yBAAyB,QAA2C,CAAC;AAE3E,KAAK,UAAU,GAAG,MAAM,GAAG,OAAO,CAAC;AAEnC,KAAK,eAAe,GAAG;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,KAAK,oBAAoB,GAAG;IAC1B,MAAM,CAAC,EAAE,oBAAoB,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAUF,iBAAS,mBAAmB,CAAC,IAAI,GAAE,UAAqB,GAAG,eAAe,CAQzE;AAED,iBAAS,oBAAoB,CAAC,KAAK,EAAE,eAAe,EAAE,OAAO,GAAE,oBAAyB,mBAgBvF;AAED,iBAAS,mBAAmB,CAAC,IAAI,GAAE,UAAqB,EAAE,OAAO,GAAE,oBAAyB,mBAE3F;AAED,iBAAS,cAAc,CAAC,IAAI,EAAE,WAAW,GAAG,IAAI,EAAE,OAAO,GAAE,oBAAyB,eAKnF;AAED,iBAAS,WAAW,CAAC,IAAI,GAAE,QAAmB,EAAE,OAAO,GAAE,oBAAyB,QASjF;AAED,iBAAS,kBAAkB,CAAC,UAAU,EAAE,MAAM,UAE7C;AAED,iBAAS,sBAAsB,gBAS9B;AAED,iBAAS,sBAAsB,CAAC,KAAK,GAAE,OAAO,CAAC,eAAe,CAAM,UAqBnE;AAED,OAAO,EACL,qBAAqB,EACrB,uBAAuB,EACvB,oBAAoB,EACpB,4BAA4B,EAC5B,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,0BAA0B,EAC1B,yBAAyB,EACzB,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACpB,CAAC;AACF,cAAa,iBAAiB,CAAC;AAC/B,cAAa,aAAa,CAAC;AAC3B,cAAa,aAAa,CAAC;AAC3B,cAAa,YAAY,CAAC;AAC1B,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/src/layout/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { queryAll } from "../../dom/index.js";
|
|
2
2
|
import { bindBreadcrumbs } from "./breadcrumb.js";
|
|
3
|
+
import { bindScrollState } from "./scroll.js";
|
|
3
4
|
import { HEADER_PRIMARY_SELECTOR, HEADER_SECONDARY_SELECTOR, bindHeaders, } from "./header.js";
|
|
4
5
|
import { FRONTEND_PREFIX, frontendDataAttr, frontendDataSelector } from "../../namespace/index.js";
|
|
5
6
|
const LAYOUT_ROOT_SELECTOR = frontendDataSelector("layout-root");
|
|
@@ -54,8 +55,10 @@ function bindLayouts(root = document, options = {}) {
|
|
|
54
55
|
});
|
|
55
56
|
bindHeaders(root, options.header || {});
|
|
56
57
|
bindBreadcrumbs(root);
|
|
57
|
-
if (root
|
|
58
|
-
|
|
58
|
+
if (root !== document)
|
|
59
|
+
return;
|
|
60
|
+
bindScrollState(options.scroll);
|
|
61
|
+
syncLayoutBodyState(document, options);
|
|
59
62
|
}
|
|
60
63
|
function siteHeaderRootHtml(headerHtml) {
|
|
61
64
|
return `<div ${SITE_HEADER_ROOT_ATTRIBUTE}="">${headerHtml}</div>`;
|
|
@@ -96,6 +99,7 @@ function createLayoutBootScript(state = {}) {
|
|
|
96
99
|
}
|
|
97
100
|
export { LAYOUT_BODY_ATTRIBUTE, LAYOUT_CONTENT_SELECTOR, LAYOUT_MAIN_SELECTOR, LAYOUT_MOBILE_BODY_ATTRIBUTE, LAYOUT_PORTAL_ROOT_ID, LAYOUT_PORTAL_ROOT_SELECTOR, LAYOUT_ROOT_SELECTOR, SITE_HEADER_ROOT_ATTRIBUTE, SITE_HEADER_ROOT_SELECTOR, applyLayoutBodyState, bindLayoutRoot, bindLayouts, createLayoutBootScript, ensureLayoutPortalRoot, readLayoutBodyState, siteHeaderRootHtml, syncLayoutBodyState, };
|
|
98
101
|
export * from "./breadcrumb.js";
|
|
102
|
+
export * from "./scroll.js";
|
|
99
103
|
export * from "./header.js";
|
|
100
104
|
export * from "./state.js";
|
|
101
105
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layout/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAiB,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EACL,uBAAuB,EACvB,yBAAyB,EACzB,WAAW,GAEZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAExF,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;AACjE,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,aAAa,CAAC,CAAC;AACjE,MAAM,uBAAuB,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,CAAC;AACvE,MAAM,qBAAqB,GAAG,GAAG,eAAe,qBAAqB,CAAC;AACtE,MAAM,2BAA2B,GAAG,oBAAoB,CAAC,oBAAoB,CAAC,CAAC;AAC/E,MAAM,qBAAqB,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;AACzD,MAAM,4BAA4B,GAAG,gBAAgB,CAAC,eAAe,CAAC,CAAC;AACvE,MAAM,0BAA0B,GAAG,gBAAgB,CAAC,kBAAkB,CAAC,CAAC;AACxE,MAAM,yBAAyB,GAAG,oBAAoB,CAAC,kBAAkB,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/layout/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
declare const SCROLL_STATE_ATTRIBUTE: `data-${string}`;
|
|
2
|
+
declare const SCROLL_STATE_SELECTOR: string;
|
|
3
|
+
declare const SCROLL_SETTLING_ATTRIBUTE: `data-${string}`;
|
|
4
|
+
declare const SCROLL_SETTLING_SELECTOR: string;
|
|
5
|
+
declare const DEFAULT_SCROLL_THRESHOLD = 24;
|
|
6
|
+
type ScrollStateOptions = {
|
|
7
|
+
threshold?: number;
|
|
8
|
+
};
|
|
9
|
+
declare function readScrollState(options?: ScrollStateOptions): boolean;
|
|
10
|
+
declare function applyScrollState(options?: ScrollStateOptions): boolean;
|
|
11
|
+
declare function bindScrollState(options?: ScrollStateOptions): () => void;
|
|
12
|
+
declare function createScrollStateBootScript(options?: ScrollStateOptions): string;
|
|
13
|
+
export { DEFAULT_SCROLL_THRESHOLD, SCROLL_SETTLING_ATTRIBUTE, SCROLL_SETTLING_SELECTOR, SCROLL_STATE_ATTRIBUTE, SCROLL_STATE_SELECTOR, applyScrollState, bindScrollState, createScrollStateBootScript, readScrollState, };
|
|
14
|
+
export type { ScrollStateOptions };
|
|
15
|
+
//# sourceMappingURL=scroll.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../src/layout/scroll.ts"],"names":[],"mappings":"AAEA,QAAA,MAAM,sBAAsB,kBAA+B,CAAC;AAC5D,QAAA,MAAM,qBAAqB,QAA2C,CAAC;AACvE,QAAA,MAAM,yBAAyB,kBAAsC,CAAC;AACtE,QAAA,MAAM,wBAAwB,QAA0C,CAAC;AAEzE,QAAA,MAAM,wBAAwB,KAAK,CAAC;AAEpC,KAAK,kBAAkB,GAAG;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAOF,iBAAS,eAAe,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAGlE;AAED,iBAAS,gBAAgB,CAAC,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAMnE;AAOD,iBAAS,eAAe,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,IAAI,CAYrE;AAuCD,iBAAS,2BAA2B,CAAC,OAAO,GAAE,kBAAuB,GAAG,MAAM,CAY7E;AAED,OAAO,EACL,wBAAwB,EACxB,yBAAyB,EACzB,wBAAwB,EACxB,sBAAsB,EACtB,qBAAqB,EACrB,gBAAgB,EAChB,eAAe,EACf,2BAA2B,EAC3B,eAAe,GAChB,CAAC;AACF,YAAY,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import { FRONTEND_PREFIX, frontendDataAttr, frontendDataSelector } from "../../namespace/index.js";
|
|
2
|
+
const SCROLL_STATE_ATTRIBUTE = frontendDataAttr("scrolled");
|
|
3
|
+
const SCROLL_STATE_SELECTOR = frontendDataSelector("scrolled", "true");
|
|
4
|
+
const SCROLL_SETTLING_ATTRIBUTE = frontendDataAttr("scroll-settling");
|
|
5
|
+
const SCROLL_SETTLING_SELECTOR = frontendDataSelector("scroll-settling");
|
|
6
|
+
const SCROLL_STORAGE_PREFIX = `${FRONTEND_PREFIX}:scroll:`;
|
|
7
|
+
const DEFAULT_SCROLL_THRESHOLD = 24;
|
|
8
|
+
function scrollStateThreshold(options = {}) {
|
|
9
|
+
const value = Number(options.threshold);
|
|
10
|
+
return Number.isFinite(value) && value >= 0 ? value : DEFAULT_SCROLL_THRESHOLD;
|
|
11
|
+
}
|
|
12
|
+
function readScrollState(options = {}) {
|
|
13
|
+
if (typeof window === "undefined")
|
|
14
|
+
return false;
|
|
15
|
+
return (window.scrollY || window.pageYOffset || 0) > scrollStateThreshold(options);
|
|
16
|
+
}
|
|
17
|
+
function applyScrollState(options = {}) {
|
|
18
|
+
const scrolled = readScrollState(options);
|
|
19
|
+
if (typeof document !== "undefined") {
|
|
20
|
+
document.documentElement.setAttribute(SCROLL_STATE_ATTRIBUTE, scrolled ? "true" : "false");
|
|
21
|
+
}
|
|
22
|
+
return scrolled;
|
|
23
|
+
}
|
|
24
|
+
function scrollStateBound() {
|
|
25
|
+
if (typeof document === "undefined")
|
|
26
|
+
return false;
|
|
27
|
+
return document.documentElement.hasAttribute(SCROLL_STATE_ATTRIBUTE);
|
|
28
|
+
}
|
|
29
|
+
function bindScrollState(options = {}) {
|
|
30
|
+
if (typeof window === "undefined" || scrollStateBound())
|
|
31
|
+
return () => undefined;
|
|
32
|
+
const update = () => {
|
|
33
|
+
applyScrollState(options);
|
|
34
|
+
};
|
|
35
|
+
update();
|
|
36
|
+
window.addEventListener("scroll", update, { passive: true });
|
|
37
|
+
window.addEventListener("resize", update, { passive: true });
|
|
38
|
+
return () => {
|
|
39
|
+
window.removeEventListener("scroll", update);
|
|
40
|
+
window.removeEventListener("resize", update);
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function scrollStateSeedSource() {
|
|
44
|
+
return [
|
|
45
|
+
`var K=${JSON.stringify(SCROLL_STORAGE_PREFIX)}+location.pathname+location.search,N='',S=0;`,
|
|
46
|
+
"try{N=(performance.getEntriesByType('navigation')[0]||{}).type||''}catch(e){}",
|
|
47
|
+
"if(N==='reload'||N==='back_forward'){try{S=parseFloat(sessionStorage.getItem(K))||0}catch(e){}}",
|
|
48
|
+
"window.addEventListener('pagehide',function(){",
|
|
49
|
+
"try{sessionStorage.setItem(K,String(window.scrollY||window.pageYOffset||0))}catch(e){}});",
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
function scrollStateUpdateSource() {
|
|
53
|
+
return [
|
|
54
|
+
"var u=function(){var v=window.scrollY||window.pageYOffset||0;",
|
|
55
|
+
"if(S){if(v)S=0;else v=S}",
|
|
56
|
+
"h.setAttribute(A,v>T?'true':'false')};",
|
|
57
|
+
];
|
|
58
|
+
}
|
|
59
|
+
function scrollStateSettleSource() {
|
|
60
|
+
return [
|
|
61
|
+
"h.setAttribute(G,'');",
|
|
62
|
+
"window.addEventListener('load',function(){S=0;u();",
|
|
63
|
+
"var f=function(){h.removeAttribute(G)};",
|
|
64
|
+
"if(window.requestAnimationFrame)window.requestAnimationFrame(f);else f()});",
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
function scrollStateListenerSource() {
|
|
68
|
+
return [
|
|
69
|
+
"window.addEventListener('scroll',u,{passive:true});",
|
|
70
|
+
"window.addEventListener('resize',u,{passive:true});",
|
|
71
|
+
"window.addEventListener('pageshow',u);",
|
|
72
|
+
"document.addEventListener('DOMContentLoaded',u);",
|
|
73
|
+
"if(window.requestAnimationFrame)window.requestAnimationFrame(u);",
|
|
74
|
+
];
|
|
75
|
+
}
|
|
76
|
+
function createScrollStateBootScript(options = {}) {
|
|
77
|
+
return [
|
|
78
|
+
"(function(){try{",
|
|
79
|
+
`var A=${JSON.stringify(SCROLL_STATE_ATTRIBUTE)},G=${JSON.stringify(SCROLL_SETTLING_ATTRIBUTE)};`,
|
|
80
|
+
`var T=${scrollStateThreshold(options)},h=document.documentElement;`,
|
|
81
|
+
...scrollStateSeedSource(),
|
|
82
|
+
...scrollStateUpdateSource(),
|
|
83
|
+
"u();",
|
|
84
|
+
...scrollStateSettleSource(),
|
|
85
|
+
...scrollStateListenerSource(),
|
|
86
|
+
"}catch(e){}})();",
|
|
87
|
+
].join("");
|
|
88
|
+
}
|
|
89
|
+
export { DEFAULT_SCROLL_THRESHOLD, SCROLL_SETTLING_ATTRIBUTE, SCROLL_SETTLING_SELECTOR, SCROLL_STATE_ATTRIBUTE, SCROLL_STATE_SELECTOR, applyScrollState, bindScrollState, createScrollStateBootScript, readScrollState, };
|
|
90
|
+
//# sourceMappingURL=scroll.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scroll.js","sourceRoot":"","sources":["../../../src/layout/scroll.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED