@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.
@@ -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,CA+BzF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,mBAAmB,EAAE,KAAK,EAAE,MAAM,WAYxE;AAED,eAAO,MAAM,eAAe,QAAS,MAAM,WAAwC,CAAC"}
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"}
@@ -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":"AAIA,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;AAwBD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBA4BvC"}
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"}
@@ -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,CA+BzF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,mBAAmB,EAAE,KAAK,EAAE,MAAM,WAYxE;AAED,eAAO,MAAM,eAAe,QAAS,MAAM,WAAwC,CAAC"}
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"}
@@ -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":"AAIA,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;AAwBD,wBAAgB,QAAQ,CAAC,GAAG,EAAE,UAAU,iBA4BvC"}
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"}
@@ -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;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sheinx/hooks",
3
- "version": "3.5.2-beta.9",
3
+ "version": "3.5.2",
4
4
  "description": "",
5
5
  "keywords": [],
6
6
  "license": "MIT",