@tamagui/use-element-layout 2.0.0-rc.4 → 2.0.0-rc.40

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/dist/cjs/index.js DELETED
@@ -1,198 +0,0 @@
1
- var __defProp = Object.defineProperty;
2
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
3
- var __getOwnPropNames = Object.getOwnPropertyNames;
4
- var __hasOwnProp = Object.prototype.hasOwnProperty;
5
- var __export = (target, all) => {
6
- for (var name in all)
7
- __defProp(target, name, { get: all[name], enumerable: !0 });
8
- }, __copyProps = (to, from, except, desc) => {
9
- if (from && typeof from == "object" || typeof from == "function")
10
- for (let key of __getOwnPropNames(from))
11
- !__hasOwnProp.call(to, key) && key !== except && __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
12
- return to;
13
- };
14
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: !0 }), mod);
15
- var index_exports = {};
16
- __export(index_exports, {
17
- LayoutMeasurementController: () => LayoutMeasurementController,
18
- createMeasure: () => createMeasure,
19
- createMeasureInWindow: () => createMeasureInWindow,
20
- createMeasureLayout: () => createMeasureLayout,
21
- enable: () => enable,
22
- getBoundingClientRectAsync: () => getBoundingClientRectAsync,
23
- getElementLayoutEvent: () => getElementLayoutEvent,
24
- measure: () => measure,
25
- measureInWindow: () => measureInWindow,
26
- measureLayout: () => measureLayout,
27
- measureNode: () => measureNode,
28
- setOnLayoutStrategy: () => setOnLayoutStrategy,
29
- useElementLayout: () => useElementLayout
30
- });
31
- module.exports = __toCommonJS(index_exports);
32
- var import_constants = require("@tamagui/constants"), import_is_equal_shallow = require("@tamagui/is-equal-shallow"), import_react = require("react"), import_jsx_runtime = require("react/jsx-runtime");
33
- const LayoutHandlers = /* @__PURE__ */ new WeakMap(), LayoutDisableKey = /* @__PURE__ */ new WeakMap(), Nodes = /* @__PURE__ */ new Set(), IntersectionState = /* @__PURE__ */ new WeakMap(), DisableLayoutContextValues = {}, DisableLayoutContextKey = (0, import_react.createContext)(""), ENABLE = typeof IntersectionObserver < "u", LayoutMeasurementController = ({
34
- disable,
35
- children
36
- }) => {
37
- const id = (0, import_react.useId)();
38
- return (0, import_constants.useIsomorphicLayoutEffect)(() => {
39
- DisableLayoutContextValues[id] = disable;
40
- }, [disable, id]), /* @__PURE__ */ (0, import_jsx_runtime.jsx)(DisableLayoutContextKey.Provider, { value: id, children });
41
- };
42
- let globalIntersectionObserver = null, strategy = "async";
43
- function setOnLayoutStrategy(state) {
44
- strategy = state;
45
- }
46
- const NodeRectCache = /* @__PURE__ */ new WeakMap(), LastChangeTime = /* @__PURE__ */ new WeakMap();
47
- let avoidUpdates = !0;
48
- const queuedUpdates = /* @__PURE__ */ new Map();
49
- function enable() {
50
- avoidUpdates && (avoidUpdates = !1, queuedUpdates && (queuedUpdates.forEach((cb) => cb()), queuedUpdates.clear()));
51
- }
52
- function startGlobalObservers() {
53
- !ENABLE || globalIntersectionObserver || (globalIntersectionObserver = new IntersectionObserver(
54
- (entries) => {
55
- entries.forEach((entry) => {
56
- const node = entry.target;
57
- IntersectionState.get(node) !== entry.isIntersecting && IntersectionState.set(node, entry.isIntersecting);
58
- });
59
- },
60
- {
61
- threshold: 0
62
- }
63
- ));
64
- }
65
- if (ENABLE) {
66
- const BoundingRects = /* @__PURE__ */ new WeakMap();
67
- async function updateLayoutIfChanged(node) {
68
- const onLayout = LayoutHandlers.get(node);
69
- if (typeof onLayout != "function") return;
70
- const parentNode = node.parentElement;
71
- if (!parentNode) return;
72
- let nodeRect, parentRect;
73
- if (strategy === "async") {
74
- const [nr, pr] = await Promise.all([
75
- BoundingRects.get(node),
76
- BoundingRects.get(parentNode)
77
- ]);
78
- if (!nr || !pr)
79
- return;
80
- nodeRect = nr, parentRect = pr;
81
- } else
82
- nodeRect = node.getBoundingClientRect(), parentRect = parentNode.getBoundingClientRect();
83
- if (!nodeRect || !parentRect)
84
- return;
85
- const cachedRect = NodeRectCache.get(node), cachedParentRect = NodeRectCache.get(parentNode);
86
- if (!cachedRect || !cachedParentRect || // has changed one rect
87
- // @ts-expect-error DOMRectReadOnly can go into object
88
- !(0, import_is_equal_shallow.isEqualShallow)(cachedRect, nodeRect) || // @ts-expect-error DOMRectReadOnly can go into object
89
- !(0, import_is_equal_shallow.isEqualShallow)(cachedParentRect, parentRect)) {
90
- NodeRectCache.set(node, nodeRect), NodeRectCache.set(parentNode, parentRect);
91
- const event = getElementLayoutEvent(nodeRect, parentRect);
92
- avoidUpdates ? queuedUpdates.set(node, () => onLayout(event)) : onLayout(event);
93
- }
94
- }
95
- const userSkipVal = process.env.TAMAGUI_LAYOUT_FRAME_SKIP, RUN_EVERY_X_FRAMES = userSkipVal ? +userSkipVal : 14;
96
- async function layoutOnAnimationFrame() {
97
- if (strategy !== "off") {
98
- const visibleNodes = [];
99
- await new Promise((res) => {
100
- const io = new IntersectionObserver(
101
- (entries) => {
102
- io.disconnect();
103
- for (const entry of entries)
104
- BoundingRects.set(entry.target, entry.boundingClientRect);
105
- res(!0);
106
- },
107
- {
108
- threshold: 0
109
- }
110
- );
111
- let didObserve = !1;
112
- for (const node of Nodes) {
113
- if (!(node.parentElement instanceof HTMLElement)) continue;
114
- const disableKey = LayoutDisableKey.get(node);
115
- disableKey && DisableLayoutContextValues[disableKey] === !0 || IntersectionState.get(node) !== !1 && (didObserve = !0, io.observe(node), io.observe(node.parentElement), visibleNodes.push(node));
116
- }
117
- didObserve || res(!1);
118
- }) && visibleNodes.forEach((node) => {
119
- updateLayoutIfChanged(node);
120
- });
121
- }
122
- setTimeout(layoutOnAnimationFrame, 16.6667 * RUN_EVERY_X_FRAMES);
123
- }
124
- layoutOnAnimationFrame();
125
- }
126
- const getElementLayoutEvent = (nodeRect, parentRect) => ({
127
- nativeEvent: {
128
- layout: getRelativeDimensions(nodeRect, parentRect),
129
- target: nodeRect
130
- },
131
- timeStamp: Date.now()
132
- }), getRelativeDimensions = (a, b) => {
133
- const { height, left, top, width } = a, x = left - b.left, y = top - b.top;
134
- return { x, y, width, height, pageX: a.left, pageY: a.top };
135
- };
136
- function useElementLayout(ref, onLayout) {
137
- const disableKey = (0, import_react.useContext)(DisableLayoutContextKey), node = ensureWebElement(ref.current?.host);
138
- node && onLayout && (LayoutHandlers.set(node, onLayout), LayoutDisableKey.set(node, disableKey)), (0, import_constants.useIsomorphicLayoutEffect)(() => {
139
- if (!onLayout) return;
140
- const node2 = ref.current?.host;
141
- if (!node2) return;
142
- Nodes.add(node2), startGlobalObservers(), globalIntersectionObserver && (globalIntersectionObserver.observe(node2), IntersectionState.set(node2, !0));
143
- const parentNode = node2.parentNode;
144
- return parentNode && onLayout(
145
- getElementLayoutEvent(
146
- node2.getBoundingClientRect(),
147
- parentNode.getBoundingClientRect()
148
- )
149
- ), () => {
150
- Nodes.delete(node2), LayoutHandlers.delete(node2), NodeRectCache.delete(node2), LastChangeTime.delete(node2), IntersectionState.delete(node2), globalIntersectionObserver && globalIntersectionObserver.unobserve(node2);
151
- };
152
- }, [ref, !!onLayout]);
153
- }
154
- function ensureWebElement(x) {
155
- if (!(typeof HTMLElement > "u"))
156
- return x instanceof HTMLElement ? x : void 0;
157
- }
158
- const getBoundingClientRectAsync = (node) => new Promise((res) => {
159
- if (!node || node.nodeType !== 1) return res(!1);
160
- const io = new IntersectionObserver(
161
- (entries) => (io.disconnect(), res(entries[0].boundingClientRect)),
162
- {
163
- threshold: 0
164
- }
165
- );
166
- io.observe(node);
167
- }), measureNode = async (node, relativeTo) => {
168
- const relativeNode = relativeTo || node?.parentElement;
169
- if (relativeNode instanceof HTMLElement) {
170
- const [nodeDim, relativeNodeDim] = await Promise.all([
171
- getBoundingClientRectAsync(node),
172
- getBoundingClientRectAsync(relativeNode)
173
- ]);
174
- if (relativeNodeDim && nodeDim)
175
- return getRelativeDimensions(nodeDim, relativeNodeDim);
176
- }
177
- return null;
178
- }, measure = async (node, callback) => {
179
- const out = await measureNode(
180
- node,
181
- node.parentNode instanceof HTMLElement ? node.parentNode : null
182
- );
183
- return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
184
- };
185
- function createMeasure(node) {
186
- return (callback) => measure(node, callback);
187
- }
188
- const measureInWindow = async (node, callback) => {
189
- const out = await measureNode(node, null);
190
- return out && callback?.(out.pageX, out.pageY, out.width, out.height), out;
191
- }, createMeasureInWindow = (node) => (callback) => measureInWindow(node, callback), measureLayout = async (node, relativeNode, callback) => {
192
- const out = await measureNode(node, relativeNode);
193
- return out && callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY), out;
194
- };
195
- function createMeasureLayout(node) {
196
- return (relativeTo, callback) => measureLayout(node, relativeTo, callback);
197
- }
198
- //# sourceMappingURL=index.js.map
@@ -1,6 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../src/index.tsx"],
4
- "mappings": "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",
5
- "names": ["node"]
6
- }