@hanzogui/use-element-layout 8.3.0 → 8.3.2

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.
@@ -0,0 +1,444 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.measureLayout = exports.createMeasureInWindow = exports.measureInWindow = exports.measure = exports.measureNode = exports.getBoundingClientRectAsync = exports.getElementLayoutEvent = exports.LayoutMeasurementController = void 0;
4
+ exports.setOnLayoutStrategy = setOnLayoutStrategy;
5
+ exports.enable = enable;
6
+ exports.registerLayoutNode = registerLayoutNode;
7
+ exports.useElementLayout = useElementLayout;
8
+ exports.createMeasure = createMeasure;
9
+ exports.createMeasureLayout = createMeasureLayout;
10
+ const jsx_runtime_1 = require("react/jsx-runtime");
11
+ const constants_1 = require("@hanzogui/constants");
12
+ const react_1 = require("react");
13
+ const LayoutHandlers = new WeakMap();
14
+ const LayoutDisableKey = new WeakMap();
15
+ const Nodes = new Set();
16
+ const IntersectionState = new WeakMap();
17
+ // feature flag to enable pre-transform dimension reporting (matches RN behavior)
18
+ // can be set via env var at build time or runtime global for testing
19
+ // see: https://github.com/hanzoai/gui/pull/2329
20
+ const usePretransformDimensions = () => globalThis.__GUI_ONLAYOUT_PRETRANSFORM === true ||
21
+ process.env.GUI_ONLAYOUT_PRETRANSFORM === '1';
22
+ let _debugLayout;
23
+ function isDebugLayout() {
24
+ if (_debugLayout === undefined) {
25
+ _debugLayout =
26
+ typeof window !== 'undefined' &&
27
+ new URLSearchParams(window.location.search).has('__tamaDebugLayout');
28
+ }
29
+ return _debugLayout;
30
+ }
31
+ // separating to avoid all re-rendering
32
+ const DisableLayoutContextValues = {};
33
+ const DisableLayoutContextKey = (0, react_1.createContext)('');
34
+ const ENABLE = "web" === 'web' && typeof IntersectionObserver !== 'undefined';
35
+ // internal testing - advanced helper to turn off layout measurement for extra performance
36
+ // TODO document!
37
+ // TODO could add frame skip control here
38
+ const LayoutMeasurementController = ({ disable, children, }) => {
39
+ const id = (0, react_1.useId)();
40
+ (0, constants_1.useIsomorphicLayoutEffect)(() => {
41
+ DisableLayoutContextValues[id] = disable;
42
+ }, [disable, id]);
43
+ return ((0, jsx_runtime_1.jsx)(DisableLayoutContextKey.Provider, { value: id, children: children }));
44
+ };
45
+ exports.LayoutMeasurementController = LayoutMeasurementController;
46
+ // Single persistent IntersectionObserver for visibility tracking
47
+ let globalIntersectionObserver = null;
48
+ let strategy = 'async';
49
+ function setOnLayoutStrategy(state) {
50
+ strategy = state;
51
+ }
52
+ const NodeRectCache = new WeakMap();
53
+ // prevent thrashing during first hydration (somewhat, streaming gets trickier)
54
+ let avoidUpdates = true;
55
+ const queuedUpdates = new Map();
56
+ function enable() {
57
+ if (avoidUpdates) {
58
+ avoidUpdates = false;
59
+ if (queuedUpdates) {
60
+ queuedUpdates.forEach((cb) => cb());
61
+ queuedUpdates.clear();
62
+ }
63
+ }
64
+ }
65
+ function startGlobalObservers() {
66
+ if (!ENABLE || globalIntersectionObserver)
67
+ return;
68
+ globalIntersectionObserver = new IntersectionObserver((entries) => {
69
+ for (let i = 0; i < entries.length; i++) {
70
+ const entry = entries[i];
71
+ const node = entry.target;
72
+ if (IntersectionState.get(node) !== entry.isIntersecting) {
73
+ IntersectionState.set(node, entry.isIntersecting);
74
+ }
75
+ }
76
+ }, {
77
+ threshold: 0,
78
+ });
79
+ }
80
+ // optimization: inline rect comparison to avoid function call overhead on hot path
81
+ function rectsEqual(a, b) {
82
+ return a.x === b.x && a.y === b.y && a.width === b.width && a.height === b.height;
83
+ }
84
+ if (ENABLE) {
85
+ const BoundingRects = new WeakMap();
86
+ // optimization: persistent IO for rect fetching, reused across cycles
87
+ let rectFetchObserver = null;
88
+ let rectFetchResolve = null;
89
+ let rectFetchStartTime = 0;
90
+ let lastCallbackDelay = 0;
91
+ function ensureRectFetchObserver() {
92
+ if (rectFetchObserver)
93
+ return rectFetchObserver;
94
+ rectFetchObserver = new IntersectionObserver((entries) => {
95
+ lastCallbackDelay = Math.round(performance.now() - rectFetchStartTime);
96
+ // store all rects
97
+ for (let i = 0; i < entries.length; i++) {
98
+ BoundingRects.set(entries[i].target, entries[i].boundingClientRect);
99
+ }
100
+ if (process.env.NODE_ENV === 'development' &&
101
+ isDebugLayout() &&
102
+ lastCallbackDelay > 50) {
103
+ console.warn('[onLayout-io-delay]', lastCallbackDelay + 'ms', entries.length, 'entries');
104
+ }
105
+ if (rectFetchResolve) {
106
+ rectFetchResolve(true);
107
+ rectFetchResolve = null;
108
+ }
109
+ }, {
110
+ threshold: 0,
111
+ });
112
+ return rectFetchObserver;
113
+ }
114
+ async function updateLayoutIfChanged(node) {
115
+ const onLayout = LayoutHandlers.get(node);
116
+ if (typeof onLayout !== 'function')
117
+ return;
118
+ const parentNode = node.parentElement;
119
+ if (!parentNode)
120
+ return;
121
+ let nodeRect;
122
+ let parentRect;
123
+ // respect the strategy contract
124
+ if (strategy === 'async') {
125
+ nodeRect = BoundingRects.get(node);
126
+ parentRect = BoundingRects.get(parentNode);
127
+ if (!nodeRect || !parentRect) {
128
+ return;
129
+ }
130
+ }
131
+ else {
132
+ nodeRect = node.getBoundingClientRect();
133
+ parentRect = parentNode.getBoundingClientRect();
134
+ }
135
+ emitLayoutIfChanged(node, parentNode, nodeRect, parentRect);
136
+ }
137
+ const rAF = typeof requestAnimationFrame !== 'undefined' ? requestAnimationFrame : undefined;
138
+ // adaptive frame skipping with backoff
139
+ const userSkipVal = process.env.GUI_LAYOUT_FRAME_SKIP;
140
+ const BASE_SKIP_FRAMES = userSkipVal ? +userSkipVal : 10;
141
+ const MAX_SKIP_FRAMES = 20;
142
+ let skipFrames = BASE_SKIP_FRAMES;
143
+ let frameCount = 0;
144
+ async function layoutOnAnimationFrame() {
145
+ // skip frames based on adaptive rate
146
+ if (frameCount++ % skipFrames !== 0) {
147
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
148
+ return;
149
+ }
150
+ // reset frame count to avoid overflow
151
+ if (frameCount >= Number.MAX_SAFE_INTEGER) {
152
+ frameCount = 0;
153
+ }
154
+ if (strategy !== 'off') {
155
+ const visibleNodes = [];
156
+ // optimization: deduplicate parent observations
157
+ const parentsToObserve = new Set();
158
+ // collect visible nodes and their unique parents
159
+ for (const node of Nodes) {
160
+ const parentElement = node.parentElement;
161
+ if (!(parentElement instanceof HTMLElement)) {
162
+ cleanupNode(node);
163
+ continue;
164
+ }
165
+ const disableKey = LayoutDisableKey.get(node);
166
+ if (disableKey && DisableLayoutContextValues[disableKey] === true)
167
+ continue;
168
+ if (IntersectionState.get(node) === false)
169
+ continue;
170
+ visibleNodes.push(node);
171
+ parentsToObserve.add(parentElement);
172
+ }
173
+ if (visibleNodes.length > 0) {
174
+ const io = ensureRectFetchObserver();
175
+ rectFetchStartTime = performance.now();
176
+ // observe all nodes
177
+ for (let i = 0; i < visibleNodes.length; i++) {
178
+ io.observe(visibleNodes[i]);
179
+ }
180
+ // optimization: observe unique parents only (not N times for N children)
181
+ for (const parent of parentsToObserve) {
182
+ io.observe(parent);
183
+ }
184
+ // wait for callback
185
+ await new Promise((res) => {
186
+ rectFetchResolve = res;
187
+ });
188
+ // unobserve all to reset for next cycle
189
+ for (let i = 0; i < visibleNodes.length; i++) {
190
+ io.unobserve(visibleNodes[i]);
191
+ }
192
+ for (const parent of parentsToObserve) {
193
+ io.unobserve(parent);
194
+ }
195
+ // adaptive backoff: if IO was slow, skip more frames next cycle
196
+ if (lastCallbackDelay > 50) {
197
+ skipFrames = Math.min(skipFrames + 2, MAX_SKIP_FRAMES);
198
+ }
199
+ else if (lastCallbackDelay < 20) {
200
+ // recover back to base rate when things are fast
201
+ skipFrames = Math.max(skipFrames - 1, BASE_SKIP_FRAMES);
202
+ }
203
+ // process updates
204
+ for (let i = 0; i < visibleNodes.length; i++) {
205
+ updateLayoutIfChanged(visibleNodes[i]);
206
+ }
207
+ }
208
+ }
209
+ // schedule next frame
210
+ rAF ? rAF(layoutOnAnimationFrame) : setTimeout(layoutOnAnimationFrame, 16);
211
+ }
212
+ layoutOnAnimationFrame();
213
+ }
214
+ const getElementLayoutEvent = (nodeRect, parentRect, node) => {
215
+ return {
216
+ nativeEvent: {
217
+ layout: getRelativeDimensions(nodeRect, parentRect, node),
218
+ target: nodeRect,
219
+ },
220
+ timeStamp: Date.now(),
221
+ };
222
+ };
223
+ exports.getElementLayoutEvent = getElementLayoutEvent;
224
+ /**
225
+ * get pre-transform dimensions for a node.
226
+ * uses offsetWidth/offsetHeight which report CSS layout dimensions
227
+ * unaffected by transforms - this matches React Native's onLayout behavior.
228
+ *
229
+ * see: https://github.com/hanzoai/gui/pull/2329
230
+ */
231
+ const getPreTransformDimensions = (node) => {
232
+ return {
233
+ width: node.offsetWidth,
234
+ height: node.offsetHeight,
235
+ };
236
+ };
237
+ const getRelativeDimensions = (a, b, aNode) => {
238
+ const { left, top } = a;
239
+ const x = left - b.left;
240
+ const y = top - b.top;
241
+ // get pre-transform dimensions when flag is enabled and node is available
242
+ const { width, height } = usePretransformDimensions() && aNode
243
+ ? getPreTransformDimensions(aNode)
244
+ : { width: a.width, height: a.height };
245
+ return { x, y, width, height, pageX: a.left, pageY: a.top };
246
+ };
247
+ function emitLayoutIfChanged(node, parentNode, nodeRect, parentRect) {
248
+ const onLayout = LayoutHandlers.get(node);
249
+ if (typeof onLayout !== 'function')
250
+ return;
251
+ const cachedRect = NodeRectCache.get(node);
252
+ const cachedParentRect = NodeRectCache.get(parentNode);
253
+ const nodeChanged = !cachedRect || !rectsEqual(cachedRect, nodeRect);
254
+ const parentChanged = !cachedParentRect || !rectsEqual(cachedParentRect, parentRect);
255
+ if (!nodeChanged && !parentChanged)
256
+ return;
257
+ NodeRectCache.set(node, nodeRect);
258
+ NodeRectCache.set(parentNode, parentRect);
259
+ const event = (0, exports.getElementLayoutEvent)(nodeRect, parentRect, node);
260
+ if (process.env.NODE_ENV === 'development' && isDebugLayout()) {
261
+ console.log('[useElementLayout] change', {
262
+ tag: node.tagName,
263
+ id: node.id || undefined,
264
+ className: (node.className || '').slice(0, 60) || undefined,
265
+ layout: event.nativeEvent.layout,
266
+ first: !cachedRect,
267
+ });
268
+ }
269
+ if (avoidUpdates) {
270
+ queuedUpdates.set(node, () => onLayout(event));
271
+ }
272
+ else {
273
+ onLayout(event);
274
+ }
275
+ }
276
+ function observeLayoutNode(node, disableKey) {
277
+ Nodes.add(node);
278
+ if (disableKey) {
279
+ LayoutDisableKey.set(node, disableKey);
280
+ }
281
+ else {
282
+ LayoutDisableKey.delete(node);
283
+ }
284
+ startGlobalObservers();
285
+ if (globalIntersectionObserver) {
286
+ globalIntersectionObserver.observe(node);
287
+ IntersectionState.set(node, true);
288
+ }
289
+ }
290
+ // register an arbitrary DOM element into the measurement loop without React lifecycle
291
+ function registerLayoutNode(node, onChange, disableKey) {
292
+ LayoutHandlers.set(node, onChange);
293
+ observeLayoutNode(node, disableKey);
294
+ return () => cleanupNode(node);
295
+ }
296
+ function cleanupNode(node) {
297
+ Nodes.delete(node);
298
+ LayoutHandlers.delete(node);
299
+ LayoutDisableKey.delete(node);
300
+ NodeRectCache.delete(node);
301
+ IntersectionState.delete(node);
302
+ if (globalIntersectionObserver) {
303
+ globalIntersectionObserver.unobserve(node);
304
+ }
305
+ }
306
+ const PrevHostNode = new WeakMap();
307
+ // spec: onLayout fires one synchronous initial event on mount and on host swap
308
+ // (RN parity, and before-paint so consumers can position without flicker).
309
+ // bypasses the avoidUpdates queue on purpose; seeds the rect cache so the
310
+ // measurement loop doesn't re-emit an identical event a frame later.
311
+ function emitLayoutSync(node) {
312
+ const onLayout = LayoutHandlers.get(node);
313
+ if (typeof onLayout !== 'function')
314
+ return;
315
+ const parentNode = node.parentElement;
316
+ if (!parentNode)
317
+ return;
318
+ const nodeRect = node.getBoundingClientRect();
319
+ const parentRect = parentNode.getBoundingClientRect();
320
+ NodeRectCache.set(node, nodeRect);
321
+ NodeRectCache.set(parentNode, parentRect);
322
+ onLayout((0, exports.getElementLayoutEvent)(nodeRect, parentRect, node));
323
+ }
324
+ function useElementLayout(ref, onLayout) {
325
+ const disableKey = (0, react_1.useContext)(DisableLayoutContextKey);
326
+ // keep handlers up to date so polling always calls the latest callback
327
+ const node = ensureWebElement(ref.current?.host);
328
+ if (node && onLayout) {
329
+ LayoutHandlers.set(node, onLayout);
330
+ LayoutDisableKey.set(node, disableKey);
331
+ }
332
+ // detect mounts + host swaps after commit and fire the immediate sync layout event
333
+ (0, constants_1.useIsomorphicLayoutEffect)(() => {
334
+ if (!onLayout)
335
+ return;
336
+ const nextNode = ensureWebElement(ref.current?.host);
337
+ const prevNode = PrevHostNode.get(ref);
338
+ if (nextNode === prevNode)
339
+ return;
340
+ if (prevNode)
341
+ cleanupNode(prevNode);
342
+ PrevHostNode.set(ref, nextNode);
343
+ if (!nextNode)
344
+ return;
345
+ LayoutHandlers.set(nextNode, onLayout);
346
+ observeLayoutNode(nextNode, disableKey);
347
+ emitLayoutSync(nextNode);
348
+ });
349
+ (0, constants_1.useIsomorphicLayoutEffect)(() => {
350
+ if (!onLayout)
351
+ return;
352
+ const node = ref.current?.host;
353
+ if (!node)
354
+ return;
355
+ LayoutHandlers.set(node, onLayout);
356
+ observeLayoutNode(node, disableKey);
357
+ if (process.env.NODE_ENV === 'development' && isDebugLayout()) {
358
+ console.log('[useElementLayout] register', {
359
+ tag: node.tagName,
360
+ id: node.id || undefined,
361
+ className: (node.className || '').slice(0, 60) || undefined,
362
+ totalNodes: Nodes.size,
363
+ });
364
+ }
365
+ return () => {
366
+ cleanupNode(node);
367
+ // also clean up any node from a mid-lifecycle host swap
368
+ const swappedNode = PrevHostNode.get(ref);
369
+ if (swappedNode && swappedNode !== node) {
370
+ cleanupNode(swappedNode);
371
+ }
372
+ PrevHostNode.delete(ref);
373
+ };
374
+ }, [ref, !!onLayout]);
375
+ }
376
+ function ensureWebElement(x) {
377
+ if (typeof HTMLElement === 'undefined') {
378
+ return undefined;
379
+ }
380
+ return x instanceof HTMLElement ? x : undefined;
381
+ }
382
+ const getBoundingClientRectAsync = (node) => {
383
+ return new Promise((res) => {
384
+ if (!node || node.nodeType !== 1)
385
+ return res(false);
386
+ const io = new IntersectionObserver((entries) => {
387
+ io.disconnect();
388
+ return res(entries[0].boundingClientRect);
389
+ }, {
390
+ threshold: 0,
391
+ });
392
+ io.observe(node);
393
+ });
394
+ };
395
+ exports.getBoundingClientRectAsync = getBoundingClientRectAsync;
396
+ const measureNode = async (node, relativeTo) => {
397
+ const relativeNode = relativeTo || node?.parentElement;
398
+ if (relativeNode instanceof HTMLElement) {
399
+ const [nodeDim, relativeNodeDim] = await Promise.all([
400
+ (0, exports.getBoundingClientRectAsync)(node),
401
+ (0, exports.getBoundingClientRectAsync)(relativeNode),
402
+ ]);
403
+ if (relativeNodeDim && nodeDim) {
404
+ return getRelativeDimensions(nodeDim, relativeNodeDim, node);
405
+ }
406
+ }
407
+ return null;
408
+ };
409
+ exports.measureNode = measureNode;
410
+ const measure = async (node, callback) => {
411
+ const out = await (0, exports.measureNode)(node, node.parentNode instanceof HTMLElement ? node.parentNode : null);
412
+ if (out) {
413
+ callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);
414
+ }
415
+ return out;
416
+ };
417
+ exports.measure = measure;
418
+ function createMeasure(node) {
419
+ return (callback) => (0, exports.measure)(node, callback);
420
+ }
421
+ const measureInWindow = async (node, callback) => {
422
+ const out = await (0, exports.measureNode)(node, null);
423
+ if (out) {
424
+ callback?.(out.pageX, out.pageY, out.width, out.height);
425
+ }
426
+ return out;
427
+ };
428
+ exports.measureInWindow = measureInWindow;
429
+ const createMeasureInWindow = (node) => {
430
+ return (callback) => (0, exports.measureInWindow)(node, callback);
431
+ };
432
+ exports.createMeasureInWindow = createMeasureInWindow;
433
+ const measureLayout = async (node, relativeNode, callback) => {
434
+ const out = await (0, exports.measureNode)(node, relativeNode);
435
+ if (out) {
436
+ callback?.(out.x, out.y, out.width, out.height, out.pageX, out.pageY);
437
+ }
438
+ return out;
439
+ };
440
+ exports.measureLayout = measureLayout;
441
+ function createMeasureLayout(node) {
442
+ return (relativeTo, callback) => (0, exports.measureLayout)(node, relativeTo, callback);
443
+ }
444
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ { "type": "commonjs" }