@sheinx/hooks 3.5.2-beta.9 → 3.5.2
Sign up to get free protection for your applications and to get access to all the features.
- package/cjs/utils/dom/element.d.ts +1 -0
- package/cjs/utils/dom/element.d.ts.map +1 -1
- package/cjs/utils/dom/element.js +20 -0
- package/cjs/utils/lazyload.d.ts.map +1 -1
- package/cjs/utils/lazyload.js +4 -1
- package/esm/utils/dom/element.d.ts +1 -0
- package/esm/utils/dom/element.d.ts.map +1 -1
- package/esm/utils/dom/element.js +19 -0
- package/esm/utils/lazyload.d.ts.map +1 -1
- package/esm/utils/lazyload.js +4 -1
- package/package.json +1 -1
@@ -13,6 +13,7 @@ export declare const addResizeObserver: (el: HTMLElement, handler: any, options?
|
|
13
13
|
}) => () => void;
|
14
14
|
export declare function getParent(el: HTMLElement | null | Element, target?: string | HTMLElement): Element | null;
|
15
15
|
export declare function getClosestScrollContainer(element: HTMLElement | null): HTMLElement | null;
|
16
|
+
export declare function getClosestFixedContainer(element: Element | HTMLElement | null): HTMLElement | null;
|
16
17
|
export declare function cssSupport(attr: keyof CSSStyleDeclaration, value: string): boolean;
|
17
18
|
export declare const parsePxToNumber: (str: string) => number;
|
18
19
|
//# sourceMappingURL=element.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["element.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,WAAW,UAAQ,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,KAAK,CAAC,SAAS,CASjB;AAGD,eAAO,MAAM,iBAAiB,OACxB,WAAW,WACN,GAAG;;;gBA4Cb,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,kBAmBxF;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["element.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,WAAW,UAAQ,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,KAAK,CAAC,SAAS,CASjB;AAGD,eAAO,MAAM,iBAAiB,OACxB,WAAW,WACN,GAAG;;;gBA4Cb,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,kBAmBxF;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAmCzF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,sBAqB7E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,mBAAmB,EAAE,KAAK,EAAE,MAAM,WAYxE;AAED,eAAO,MAAM,eAAe,QAAS,MAAM,WAAwC,CAAC"}
|
package/cjs/utils/dom/element.js
CHANGED
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
});
|
6
6
|
exports.addResizeObserver = void 0;
|
7
7
|
exports.cssSupport = cssSupport;
|
8
|
+
exports.getClosestFixedContainer = getClosestFixedContainer;
|
8
9
|
exports.getClosestScrollContainer = getClosestScrollContainer;
|
9
10
|
exports.getParent = getParent;
|
10
11
|
exports.parsePxToNumber = void 0;
|
@@ -156,6 +157,25 @@ function getClosestScrollContainer(element) {
|
|
156
157
|
// 如果没有找到可滚动的祖先,返回 body 或 documentElement
|
157
158
|
return document.scrollingElement || document.documentElement;
|
158
159
|
}
|
160
|
+
function getClosestFixedContainer(element) {
|
161
|
+
if (!element) {
|
162
|
+
return null;
|
163
|
+
}
|
164
|
+
var isFixable = function isFixable(el) {
|
165
|
+
var style = window.getComputedStyle(el);
|
166
|
+
return style.position === 'fixed';
|
167
|
+
};
|
168
|
+
|
169
|
+
// 遍历父元素
|
170
|
+
var parent = element.parentElement;
|
171
|
+
while (parent) {
|
172
|
+
if (isFixable(parent)) {
|
173
|
+
return parent;
|
174
|
+
}
|
175
|
+
parent = parent.parentElement;
|
176
|
+
}
|
177
|
+
return null;
|
178
|
+
}
|
159
179
|
function cssSupport(attr, value) {
|
160
180
|
if ((0, _is.isBrowser)()) {
|
161
181
|
var element = document.createElement('div');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lazyload.d.ts","sourceRoot":"","sources":["lazyload.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"lazyload.d.ts","sourceRoot":"","sources":["lazyload.ts"],"names":[],"mappings":"AAKA,KAAK,UAAU,GAAG;IAChB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC,CAAC;AAoBF,wBAAgB,QAAQ,SAgBvB;AAWD,wBAAgB,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,QAUvE;AAyBD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBA4BvC"}
|
package/cjs/utils/lazyload.js
CHANGED
@@ -7,6 +7,7 @@ exports.addStack = addStack;
|
|
7
7
|
exports.dispatch = dispatch;
|
8
8
|
exports.removeStack = removeStack;
|
9
9
|
var _utils = require("../utils");
|
10
|
+
var _element = require("./dom/element");
|
10
11
|
var throttle = 80;
|
11
12
|
var components = {};
|
12
13
|
var timeout = null;
|
@@ -66,10 +67,12 @@ function removeStack(id, removeListener) {
|
|
66
67
|
function getObserver(obj, id) {
|
67
68
|
var _obj$container = obj.container,
|
68
69
|
container = _obj$container === void 0 ? null : _obj$container,
|
70
|
+
element = obj.element,
|
69
71
|
offset = obj.offset,
|
70
72
|
render = obj.render,
|
71
73
|
offscreen = obj.offscreen,
|
72
74
|
noRemove = obj.noRemove;
|
75
|
+
var fixedContainer = (0, _element.getClosestFixedContainer)(element);
|
73
76
|
var observer = new IntersectionObserver(function (entries) {
|
74
77
|
entries.forEach(function (en) {
|
75
78
|
if (en.isIntersecting || en.intersectionRatio > 0) {
|
@@ -80,7 +83,7 @@ function getObserver(obj, id) {
|
|
80
83
|
}
|
81
84
|
});
|
82
85
|
}, {
|
83
|
-
root: container,
|
86
|
+
root: fixedContainer || container,
|
84
87
|
rootMargin: "".concat(offset, "px")
|
85
88
|
});
|
86
89
|
obj.observer = observer;
|
@@ -13,6 +13,7 @@ export declare const addResizeObserver: (el: HTMLElement, handler: any, options?
|
|
13
13
|
}) => () => void;
|
14
14
|
export declare function getParent(el: HTMLElement | null | Element, target?: string | HTMLElement): Element | null;
|
15
15
|
export declare function getClosestScrollContainer(element: HTMLElement | null): HTMLElement | null;
|
16
|
+
export declare function getClosestFixedContainer(element: Element | HTMLElement | null): HTMLElement | null;
|
16
17
|
export declare function cssSupport(attr: keyof CSSStyleDeclaration, value: string): boolean;
|
17
18
|
export declare const parsePxToNumber: (str: string) => number;
|
18
19
|
//# sourceMappingURL=element.d.ts.map
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["element.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,WAAW,UAAQ,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,KAAK,CAAC,SAAS,CASjB;AAGD,eAAO,MAAM,iBAAiB,OACxB,WAAW,WACN,GAAG;;;gBA4Cb,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,kBAmBxF;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,
|
1
|
+
{"version":3,"file":"element.d.ts","sourceRoot":"","sources":["element.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAa1B;;;;;;GAMG;AACH,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,KAAK,CAAC,SAAS,EACzB,WAAW,UAAQ,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,KAAK,CAAC,SAAS,CASjB;AAGD,eAAO,MAAM,iBAAiB,OACxB,WAAW,WACN,GAAG;;;gBA4Cb,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI,GAAG,OAAO,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,kBAmBxF;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI,GAAG,WAAW,GAAG,IAAI,CAmCzF;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,GAAG,IAAI,sBAqB7E;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,mBAAmB,EAAE,KAAK,EAAE,MAAM,WAYxE;AAED,eAAO,MAAM,eAAe,QAAS,MAAM,WAAwC,CAAC"}
|
package/esm/utils/dom/element.js
CHANGED
@@ -145,6 +145,25 @@ export function getClosestScrollContainer(element) {
|
|
145
145
|
// 如果没有找到可滚动的祖先,返回 body 或 documentElement
|
146
146
|
return document.scrollingElement || document.documentElement;
|
147
147
|
}
|
148
|
+
export function getClosestFixedContainer(element) {
|
149
|
+
if (!element) {
|
150
|
+
return null;
|
151
|
+
}
|
152
|
+
var isFixable = function isFixable(el) {
|
153
|
+
var style = window.getComputedStyle(el);
|
154
|
+
return style.position === 'fixed';
|
155
|
+
};
|
156
|
+
|
157
|
+
// 遍历父元素
|
158
|
+
var parent = element.parentElement;
|
159
|
+
while (parent) {
|
160
|
+
if (isFixable(parent)) {
|
161
|
+
return parent;
|
162
|
+
}
|
163
|
+
parent = parent.parentElement;
|
164
|
+
}
|
165
|
+
return null;
|
166
|
+
}
|
148
167
|
export function cssSupport(attr, value) {
|
149
168
|
if (isBrowser()) {
|
150
169
|
var element = document.createElement('div');
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"lazyload.d.ts","sourceRoot":"","sources":["lazyload.ts"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"lazyload.d.ts","sourceRoot":"","sources":["lazyload.ts"],"names":[],"mappings":"AAKA,KAAK,UAAU,GAAG;IAChB,SAAS,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,IAAI,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAC;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,oBAAoB,CAAC;CACjC,CAAC;AAoBF,wBAAgB,QAAQ,SAgBvB;AAWD,wBAAgB,WAAW,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,QAUvE;AAyBD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBA4BvC"}
|
package/esm/utils/lazyload.js
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
import { generateUUID, docSize } from "../utils";
|
2
|
+
import { getClosestFixedContainer } from "./dom/element";
|
2
3
|
var throttle = 80;
|
3
4
|
var components = {};
|
4
5
|
var timeout = null;
|
@@ -58,10 +59,12 @@ export function removeStack(id, removeListener) {
|
|
58
59
|
function getObserver(obj, id) {
|
59
60
|
var _obj$container = obj.container,
|
60
61
|
container = _obj$container === void 0 ? null : _obj$container,
|
62
|
+
element = obj.element,
|
61
63
|
offset = obj.offset,
|
62
64
|
render = obj.render,
|
63
65
|
offscreen = obj.offscreen,
|
64
66
|
noRemove = obj.noRemove;
|
67
|
+
var fixedContainer = getClosestFixedContainer(element);
|
65
68
|
var observer = new IntersectionObserver(function (entries) {
|
66
69
|
entries.forEach(function (en) {
|
67
70
|
if (en.isIntersecting || en.intersectionRatio > 0) {
|
@@ -72,7 +75,7 @@ function getObserver(obj, id) {
|
|
72
75
|
}
|
73
76
|
});
|
74
77
|
}, {
|
75
|
-
root: container,
|
78
|
+
root: fixedContainer || container,
|
76
79
|
rootMargin: "".concat(offset, "px")
|
77
80
|
});
|
78
81
|
obj.observer = observer;
|