sidakram-bippy 0.2.24

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,736 @@
1
+ /**
2
+ * @license bippy
3
+ *
4
+ * Copyright (c) Aiden Bai, Million Software, Inc.
5
+ *
6
+ * This source code is licensed under the MIT license found in the
7
+ * LICENSE file in the root directory of this source tree.
8
+ */
9
+
10
+ // src/rdt-hook.ts
11
+ var version = "0.2.24";
12
+ var BIPPY_INSTRUMENTATION_STRING = `bippy-${version}`;
13
+ var objectDefineProperty = Object.defineProperty;
14
+ var objectHasOwnProperty = Object.prototype.hasOwnProperty;
15
+ var NO_OP = () => {
16
+ };
17
+ var checkDCE = (fn) => {
18
+ try {
19
+ const code = Function.prototype.toString.call(fn);
20
+ if (code.indexOf("^_^") > -1) {
21
+ setTimeout(() => {
22
+ throw new Error(
23
+ "React is running in production mode, but dead code elimination has not been applied. Read how to correctly configure React for production: https://reactjs.org/link/perf-use-production-build"
24
+ );
25
+ });
26
+ }
27
+ } catch {
28
+ }
29
+ };
30
+ var isRealReactDevtools = (rdtHook = getRDTHook()) => {
31
+ return "getFiberRoots" in rdtHook;
32
+ };
33
+ var isReactRefreshOverride = false;
34
+ var injectFnStr = void 0;
35
+ var isReactRefresh = (rdtHook = getRDTHook()) => {
36
+ if (isReactRefreshOverride) return true;
37
+ if (typeof rdtHook.inject === "function") {
38
+ injectFnStr = rdtHook.inject.toString();
39
+ }
40
+ return Boolean(injectFnStr?.includes("(injected)"));
41
+ };
42
+ var onActiveListeners = /* @__PURE__ */ new Set();
43
+ var installRDTHook = (onActive) => {
44
+ const renderers = /* @__PURE__ */ new Map();
45
+ let i = 0;
46
+ const rdtHook = {
47
+ checkDCE,
48
+ supportsFiber: true,
49
+ supportsFlight: true,
50
+ hasUnsupportedRendererAttached: false,
51
+ renderers,
52
+ onCommitFiberRoot: NO_OP,
53
+ onCommitFiberUnmount: NO_OP,
54
+ onPostCommitFiberRoot: NO_OP,
55
+ inject(renderer) {
56
+ const nextID = ++i;
57
+ renderers.set(nextID, renderer);
58
+ if (!rdtHook._instrumentationIsActive) {
59
+ rdtHook._instrumentationIsActive = true;
60
+ onActiveListeners.forEach((listener) => listener());
61
+ }
62
+ return nextID;
63
+ },
64
+ _instrumentationSource: BIPPY_INSTRUMENTATION_STRING,
65
+ _instrumentationIsActive: false
66
+ };
67
+ try {
68
+ objectDefineProperty(globalThis, "__REACT_DEVTOOLS_GLOBAL_HOOK__", {
69
+ value: rdtHook,
70
+ configurable: true,
71
+ writable: true
72
+ });
73
+ const originalWindowHasOwnProperty = window.hasOwnProperty;
74
+ let hasRanHack = false;
75
+ objectDefineProperty(window, "hasOwnProperty", {
76
+ value: function() {
77
+ if (!hasRanHack && arguments[0] === "__REACT_DEVTOOLS_GLOBAL_HOOK__") {
78
+ globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__ = void 0;
79
+ hasRanHack = true;
80
+ return -0;
81
+ }
82
+ return originalWindowHasOwnProperty.apply(this, arguments);
83
+ },
84
+ configurable: true,
85
+ writable: true
86
+ });
87
+ } catch {
88
+ patchRDTHook(onActive);
89
+ }
90
+ return rdtHook;
91
+ };
92
+ var patchRDTHook = (onActive) => {
93
+ if (onActive) {
94
+ onActiveListeners.add(onActive);
95
+ }
96
+ try {
97
+ const rdtHook = globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
98
+ if (!rdtHook) return;
99
+ if (!rdtHook._instrumentationSource) {
100
+ isReactRefreshOverride = isReactRefresh(rdtHook);
101
+ rdtHook.checkDCE = checkDCE;
102
+ rdtHook.supportsFiber = true;
103
+ rdtHook.supportsFlight = true;
104
+ rdtHook.hasUnsupportedRendererAttached = false;
105
+ rdtHook._instrumentationSource = BIPPY_INSTRUMENTATION_STRING;
106
+ rdtHook._instrumentationIsActive = false;
107
+ if (rdtHook.renderers.size) {
108
+ rdtHook._instrumentationIsActive = true;
109
+ onActiveListeners.forEach((listener) => listener());
110
+ return;
111
+ }
112
+ const prevInject = rdtHook.inject;
113
+ if (isReactRefresh(rdtHook) && !isRealReactDevtools()) {
114
+ isReactRefreshOverride = true;
115
+ let nextID = rdtHook.inject(null);
116
+ if (nextID) {
117
+ rdtHook._instrumentationIsActive = true;
118
+ }
119
+ rdtHook.inject = () => nextID++;
120
+ } else {
121
+ rdtHook.inject = (renderer) => {
122
+ const id = prevInject(renderer);
123
+ rdtHook._instrumentationIsActive = true;
124
+ onActiveListeners.forEach((listener) => listener());
125
+ return id;
126
+ };
127
+ }
128
+ }
129
+ if (rdtHook.renderers.size || rdtHook._instrumentationIsActive || // depending on this to inject is unsafe, since inject could occur before and we wouldn't know
130
+ isReactRefresh()) {
131
+ onActive?.();
132
+ }
133
+ } catch {
134
+ }
135
+ };
136
+ var hasRDTHook = () => {
137
+ return objectHasOwnProperty.call(
138
+ globalThis,
139
+ "__REACT_DEVTOOLS_GLOBAL_HOOK__"
140
+ );
141
+ };
142
+ var getRDTHook = (onActive) => {
143
+ if (!hasRDTHook()) {
144
+ return installRDTHook(onActive);
145
+ }
146
+ patchRDTHook(onActive);
147
+ return globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__;
148
+ };
149
+ var isClientEnvironment = () => {
150
+ return Boolean(
151
+ typeof window !== "undefined" && (window.document?.createElement || window.navigator?.product === "ReactNative")
152
+ );
153
+ };
154
+
155
+ // src/install-hook-script-string.ts
156
+ var INSTALL_HOOK_SCRIPT_STRING = "(()=>{try{var t=()=>{};const n=new Map;let o=0;globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__={checkDCE:t,supportsFiber:!0,supportsFlight:!0,hasUnsupportedRendererAttached:!1,renderers:n,onCommitFiberRoot:t,onCommitFiberUnmount:t,onPostCommitFiberRoot:t,inject(t){var e=++o;return n.set(e,t),globalThis.__REACT_DEVTOOLS_GLOBAL_HOOK__._instrumentationIsActive=!0,e},_instrumentationIsActive:!1,_script:!0}}catch{}})()";
157
+
158
+ // src/core.ts
159
+ var FunctionComponentTag = 0;
160
+ var ClassComponentTag = 1;
161
+ var HostRootTag = 3;
162
+ var HostComponentTag = 5;
163
+ var HostTextTag = 6;
164
+ var FragmentTag = 7;
165
+ var ContextConsumerTag = 9;
166
+ var ForwardRefTag = 11;
167
+ var SuspenseComponentTag = 13;
168
+ var MemoComponentTag = 14;
169
+ var SimpleMemoComponentTag = 15;
170
+ var DehydratedSuspenseComponentTag = 18;
171
+ var OffscreenComponentTag = 22;
172
+ var LegacyHiddenComponentTag = 23;
173
+ var HostHoistableTag = 26;
174
+ var HostSingletonTag = 27;
175
+ var CONCURRENT_MODE_NUMBER = 60111;
176
+ var ELEMENT_TYPE_SYMBOL_STRING = "Symbol(react.element)";
177
+ var TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING = "Symbol(react.transitional.element)";
178
+ var CONCURRENT_MODE_SYMBOL_STRING = "Symbol(react.concurrent_mode)";
179
+ var DEPRECATED_ASYNC_MODE_SYMBOL_STRING = "Symbol(react.async_mode)";
180
+ var PerformedWork = 1;
181
+ var Placement = 2;
182
+ var Hydrating = 4096;
183
+ var Update = 4;
184
+ var Cloned = 8;
185
+ var ChildDeletion = 16;
186
+ var ContentReset = 32;
187
+ var Snapshot = 1024;
188
+ var Visibility = 8192;
189
+ var MutationMask = Placement | Update | ChildDeletion | ContentReset | Hydrating | Visibility | Snapshot;
190
+ var isValidElement = (element) => typeof element === "object" && element != null && "$$typeof" in element && // react 18 uses Symbol.for('react.element'), react 19 uses Symbol.for('react.transitional.element')
191
+ [
192
+ ELEMENT_TYPE_SYMBOL_STRING,
193
+ TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING
194
+ ].includes(String(element.$$typeof));
195
+ var isValidFiber = (fiber) => typeof fiber === "object" && fiber != null && "tag" in fiber && "stateNode" in fiber && "return" in fiber && "child" in fiber && "sibling" in fiber && "flags" in fiber;
196
+ var isHostFiber = (fiber) => {
197
+ switch (fiber.tag) {
198
+ case HostComponentTag:
199
+ // @ts-expect-error: it exists
200
+ case HostHoistableTag:
201
+ // @ts-expect-error: it exists
202
+ case HostSingletonTag:
203
+ return true;
204
+ default:
205
+ return typeof fiber.type === "string";
206
+ }
207
+ };
208
+ var isCompositeFiber = (fiber) => {
209
+ switch (fiber.tag) {
210
+ case FunctionComponentTag:
211
+ case ClassComponentTag:
212
+ case SimpleMemoComponentTag:
213
+ case MemoComponentTag:
214
+ case ForwardRefTag:
215
+ return true;
216
+ default:
217
+ return false;
218
+ }
219
+ };
220
+ var traverseContexts = (fiber, selector) => {
221
+ try {
222
+ const nextDependencies = fiber.dependencies;
223
+ const prevDependencies = fiber.alternate?.dependencies;
224
+ if (!nextDependencies || !prevDependencies) return false;
225
+ if (typeof nextDependencies !== "object" || !("firstContext" in nextDependencies) || typeof prevDependencies !== "object" || !("firstContext" in prevDependencies)) {
226
+ return false;
227
+ }
228
+ let nextContext = nextDependencies.firstContext;
229
+ let prevContext = prevDependencies.firstContext;
230
+ while (nextContext && typeof nextContext === "object" && "memoizedValue" in nextContext || prevContext && typeof prevContext === "object" && "memoizedValue" in prevContext) {
231
+ if (selector(nextContext, prevContext) === true) return true;
232
+ nextContext = nextContext?.next;
233
+ prevContext = prevContext?.next;
234
+ }
235
+ } catch {
236
+ }
237
+ return false;
238
+ };
239
+ var traverseState = (fiber, selector) => {
240
+ try {
241
+ let nextState = fiber.memoizedState;
242
+ let prevState = fiber.alternate?.memoizedState;
243
+ while (nextState || prevState) {
244
+ if (selector(nextState, prevState) === true) return true;
245
+ nextState = nextState?.next;
246
+ prevState = prevState?.next;
247
+ }
248
+ } catch {
249
+ }
250
+ return false;
251
+ };
252
+ var traverseProps = (fiber, selector) => {
253
+ try {
254
+ const nextProps = fiber.memoizedProps;
255
+ const prevProps = fiber.alternate?.memoizedProps || {};
256
+ const allKeys = /* @__PURE__ */ new Set([
257
+ ...Object.keys(prevProps),
258
+ ...Object.keys(nextProps)
259
+ ]);
260
+ for (const propName of allKeys) {
261
+ const prevValue = prevProps?.[propName];
262
+ const nextValue = nextProps?.[propName];
263
+ if (selector(propName, nextValue, prevValue) === true) return true;
264
+ }
265
+ } catch {
266
+ }
267
+ return false;
268
+ };
269
+ var didFiberRender = (fiber) => {
270
+ const nextProps = fiber.memoizedProps;
271
+ const prevProps = fiber.alternate?.memoizedProps || {};
272
+ const flags = fiber.flags ?? fiber.effectTag ?? 0;
273
+ switch (fiber.tag) {
274
+ case ClassComponentTag:
275
+ case FunctionComponentTag:
276
+ case ContextConsumerTag:
277
+ case ForwardRefTag:
278
+ case MemoComponentTag:
279
+ case SimpleMemoComponentTag: {
280
+ return (flags & PerformedWork) === PerformedWork;
281
+ }
282
+ default:
283
+ if (!fiber.alternate) return true;
284
+ return prevProps !== nextProps || fiber.alternate.memoizedState !== fiber.memoizedState || fiber.alternate.ref !== fiber.ref;
285
+ }
286
+ };
287
+ var didFiberCommit = (fiber) => {
288
+ return Boolean(
289
+ (fiber.flags & (MutationMask | Cloned)) !== 0 || (fiber.subtreeFlags & (MutationMask | Cloned)) !== 0
290
+ );
291
+ };
292
+ var getMutatedHostFibers = (fiber) => {
293
+ const mutations = [];
294
+ const stack = [fiber];
295
+ while (stack.length) {
296
+ const node = stack.pop();
297
+ if (!node) continue;
298
+ if (isHostFiber(node) && didFiberCommit(node) && didFiberRender(node)) {
299
+ mutations.push(node);
300
+ }
301
+ if (node.child) stack.push(node.child);
302
+ if (node.sibling) stack.push(node.sibling);
303
+ }
304
+ return mutations;
305
+ };
306
+ var getFiberStack = (fiber) => {
307
+ const stack = [];
308
+ let currentFiber = fiber;
309
+ while (currentFiber.return) {
310
+ stack.push(currentFiber);
311
+ currentFiber = currentFiber.return;
312
+ }
313
+ return stack;
314
+ };
315
+ var shouldFilterFiber = (fiber) => {
316
+ switch (fiber.tag) {
317
+ case DehydratedSuspenseComponentTag:
318
+ return true;
319
+ case HostTextTag:
320
+ case FragmentTag:
321
+ case LegacyHiddenComponentTag:
322
+ case OffscreenComponentTag:
323
+ return true;
324
+ case HostRootTag:
325
+ return false;
326
+ default: {
327
+ const symbolOrNumber = typeof fiber.type === "object" && fiber.type !== null ? fiber.type.$$typeof : fiber.type;
328
+ const typeSymbol = typeof symbolOrNumber === "symbol" ? symbolOrNumber.toString() : symbolOrNumber;
329
+ switch (typeSymbol) {
330
+ case CONCURRENT_MODE_NUMBER:
331
+ case CONCURRENT_MODE_SYMBOL_STRING:
332
+ case DEPRECATED_ASYNC_MODE_SYMBOL_STRING:
333
+ return true;
334
+ default:
335
+ return false;
336
+ }
337
+ }
338
+ }
339
+ };
340
+ var getNearestHostFiber = (fiber, ascending = false) => {
341
+ let hostFiber = traverseFiber(fiber, isHostFiber, ascending);
342
+ if (!hostFiber) {
343
+ hostFiber = traverseFiber(fiber, isHostFiber, !ascending);
344
+ }
345
+ return hostFiber;
346
+ };
347
+ var getNearestHostFibers = (fiber) => {
348
+ const hostFibers = [];
349
+ const stack = [];
350
+ if (isHostFiber(fiber)) {
351
+ hostFibers.push(fiber);
352
+ } else if (fiber.child) {
353
+ stack.push(fiber.child);
354
+ }
355
+ while (stack.length) {
356
+ const currentNode = stack.pop();
357
+ if (!currentNode) break;
358
+ if (isHostFiber(currentNode)) {
359
+ hostFibers.push(currentNode);
360
+ } else if (currentNode.child) {
361
+ stack.push(currentNode.child);
362
+ }
363
+ if (currentNode.sibling) {
364
+ stack.push(currentNode.sibling);
365
+ }
366
+ }
367
+ return hostFibers;
368
+ };
369
+ var traverseFiber = (fiber, selector, ascending = false) => {
370
+ if (!fiber) return null;
371
+ if (selector(fiber) === true) return fiber;
372
+ let child = ascending ? fiber.return : fiber.child;
373
+ while (child) {
374
+ const match = traverseFiber(child, selector, ascending);
375
+ if (match) return match;
376
+ child = ascending ? null : child.sibling;
377
+ }
378
+ return null;
379
+ };
380
+ var getTimings = (fiber) => {
381
+ const totalTime = fiber?.actualDuration ?? 0;
382
+ let selfTime = totalTime;
383
+ let child = fiber?.child ?? null;
384
+ while (totalTime > 0 && child != null) {
385
+ selfTime -= child.actualDuration ?? 0;
386
+ child = child.sibling;
387
+ }
388
+ return { selfTime, totalTime };
389
+ };
390
+ var hasMemoCache = (fiber) => {
391
+ return Boolean(
392
+ fiber.updateQueue?.memoCache
393
+ );
394
+ };
395
+ var getType = (type) => {
396
+ const currentType = type;
397
+ if (typeof currentType === "function") {
398
+ return currentType;
399
+ }
400
+ if (typeof currentType === "object" && currentType) {
401
+ return getType(
402
+ currentType.type || currentType.render
403
+ );
404
+ }
405
+ return null;
406
+ };
407
+ var getDisplayName = (type) => {
408
+ const currentType = type;
409
+ if (typeof currentType !== "function" && !(typeof currentType === "object" && currentType)) {
410
+ return null;
411
+ }
412
+ const name = currentType.displayName || currentType.name || null;
413
+ if (name) return name;
414
+ const unwrappedType = getType(currentType);
415
+ if (!unwrappedType) return null;
416
+ return unwrappedType.displayName || unwrappedType.name || null;
417
+ };
418
+ var detectReactBuildType = (renderer) => {
419
+ try {
420
+ if (typeof renderer.version === "string" && renderer.bundleType > 0) {
421
+ return "development";
422
+ }
423
+ } catch {
424
+ }
425
+ return "production";
426
+ };
427
+ var isInstrumentationActive = () => {
428
+ const rdtHook = getRDTHook();
429
+ return Boolean(rdtHook._instrumentationIsActive) || isRealReactDevtools() || isReactRefresh();
430
+ };
431
+ var fiberId = 0;
432
+ var fiberIdMap = /* @__PURE__ */ new WeakMap();
433
+ var setFiberId = (fiber, id = fiberId++) => {
434
+ fiberIdMap.set(fiber, id);
435
+ };
436
+ var getFiberId = (fiber) => {
437
+ let id = fiberIdMap.get(fiber);
438
+ if (!id && fiber.alternate) {
439
+ id = fiberIdMap.get(fiber.alternate);
440
+ }
441
+ if (!id) {
442
+ id = fiberId++;
443
+ setFiberId(fiber, id);
444
+ }
445
+ return id;
446
+ };
447
+ var mountFiberRecursively = (onRender, firstChild, traverseSiblings) => {
448
+ let fiber = firstChild;
449
+ while (fiber != null) {
450
+ if (!fiberIdMap.has(fiber)) {
451
+ getFiberId(fiber);
452
+ }
453
+ const shouldIncludeInTree = !shouldFilterFiber(fiber);
454
+ if (shouldIncludeInTree && didFiberRender(fiber)) {
455
+ onRender(fiber, "mount");
456
+ }
457
+ if (fiber.tag === SuspenseComponentTag) {
458
+ const isTimedOut = fiber.memoizedState !== null;
459
+ if (isTimedOut) {
460
+ const primaryChildFragment = fiber.child;
461
+ const fallbackChildFragment = primaryChildFragment ? primaryChildFragment.sibling : null;
462
+ if (fallbackChildFragment) {
463
+ const fallbackChild = fallbackChildFragment.child;
464
+ if (fallbackChild !== null) {
465
+ mountFiberRecursively(onRender, fallbackChild, false);
466
+ }
467
+ }
468
+ } else {
469
+ let primaryChild = null;
470
+ if (fiber.child !== null) {
471
+ primaryChild = fiber.child.child;
472
+ }
473
+ if (primaryChild !== null) {
474
+ mountFiberRecursively(onRender, primaryChild, false);
475
+ }
476
+ }
477
+ } else if (fiber.child != null) {
478
+ mountFiberRecursively(onRender, fiber.child, true);
479
+ }
480
+ fiber = traverseSiblings ? fiber.sibling : null;
481
+ }
482
+ };
483
+ var updateFiberRecursively = (onRender, nextFiber, prevFiber, parentFiber) => {
484
+ if (!fiberIdMap.has(nextFiber)) {
485
+ getFiberId(nextFiber);
486
+ }
487
+ if (!prevFiber) return;
488
+ if (!fiberIdMap.has(prevFiber)) {
489
+ getFiberId(prevFiber);
490
+ }
491
+ const isSuspense = nextFiber.tag === SuspenseComponentTag;
492
+ const shouldIncludeInTree = !shouldFilterFiber(nextFiber);
493
+ if (shouldIncludeInTree && didFiberRender(nextFiber)) {
494
+ onRender(nextFiber, "update");
495
+ }
496
+ const prevDidTimeout = isSuspense && prevFiber.memoizedState !== null;
497
+ const nextDidTimeOut = isSuspense && nextFiber.memoizedState !== null;
498
+ if (prevDidTimeout && nextDidTimeOut) {
499
+ const nextFallbackChildSet = nextFiber.child?.sibling ?? null;
500
+ const prevFallbackChildSet = prevFiber.child?.sibling ?? null;
501
+ if (nextFallbackChildSet !== null && prevFallbackChildSet !== null) {
502
+ updateFiberRecursively(
503
+ onRender,
504
+ nextFallbackChildSet,
505
+ prevFallbackChildSet);
506
+ }
507
+ } else if (prevDidTimeout && !nextDidTimeOut) {
508
+ const nextPrimaryChildSet = nextFiber.child;
509
+ if (nextPrimaryChildSet !== null) {
510
+ mountFiberRecursively(onRender, nextPrimaryChildSet, true);
511
+ }
512
+ } else if (!prevDidTimeout && nextDidTimeOut) {
513
+ unmountFiberChildrenRecursively(onRender, prevFiber);
514
+ const nextFallbackChildSet = nextFiber.child?.sibling ?? null;
515
+ if (nextFallbackChildSet !== null) {
516
+ mountFiberRecursively(onRender, nextFallbackChildSet, true);
517
+ }
518
+ } else if (nextFiber.child !== prevFiber.child) {
519
+ let nextChild = nextFiber.child;
520
+ while (nextChild) {
521
+ if (nextChild.alternate) {
522
+ const prevChild = nextChild.alternate;
523
+ updateFiberRecursively(
524
+ onRender,
525
+ nextChild,
526
+ prevChild);
527
+ } else {
528
+ mountFiberRecursively(onRender, nextChild, false);
529
+ }
530
+ nextChild = nextChild.sibling;
531
+ }
532
+ }
533
+ };
534
+ var unmountFiber = (onRender, fiber) => {
535
+ const isRoot = fiber.tag === HostRootTag;
536
+ if (isRoot || !shouldFilterFiber(fiber)) {
537
+ onRender(fiber, "unmount");
538
+ }
539
+ };
540
+ var unmountFiberChildrenRecursively = (onRender, fiber) => {
541
+ const isTimedOutSuspense = fiber.tag === SuspenseComponentTag && fiber.memoizedState !== null;
542
+ let child = fiber.child;
543
+ if (isTimedOutSuspense) {
544
+ const primaryChildFragment = fiber.child;
545
+ const fallbackChildFragment = primaryChildFragment?.sibling ?? null;
546
+ child = fallbackChildFragment?.child ?? null;
547
+ }
548
+ while (child !== null) {
549
+ if (child.return !== null) {
550
+ unmountFiber(onRender, child);
551
+ unmountFiberChildrenRecursively(onRender, child);
552
+ }
553
+ child = child.sibling;
554
+ }
555
+ };
556
+ var commitId = 0;
557
+ var rootInstanceMap = /* @__PURE__ */ new WeakMap();
558
+ var traverseRenderedFibers = (root, onRender) => {
559
+ const fiber = "current" in root ? root.current : root;
560
+ let rootInstance = rootInstanceMap.get(root);
561
+ if (!rootInstance) {
562
+ rootInstance = { prevFiber: null, id: commitId++ };
563
+ rootInstanceMap.set(root, rootInstance);
564
+ }
565
+ const { prevFiber } = rootInstance;
566
+ if (!fiber) {
567
+ unmountFiber(onRender, fiber);
568
+ } else if (prevFiber !== null) {
569
+ const wasMounted = prevFiber && prevFiber.memoizedState != null && prevFiber.memoizedState.element != null && // A dehydrated root is not considered mounted
570
+ prevFiber.memoizedState.isDehydrated !== true;
571
+ const isMounted = fiber.memoizedState != null && fiber.memoizedState.element != null && // A dehydrated root is not considered mounted
572
+ fiber.memoizedState.isDehydrated !== true;
573
+ if (!wasMounted && isMounted) {
574
+ mountFiberRecursively(onRender, fiber, false);
575
+ } else if (wasMounted && isMounted) {
576
+ updateFiberRecursively(onRender, fiber, fiber.alternate);
577
+ } else if (wasMounted && !isMounted) {
578
+ unmountFiber(onRender, fiber);
579
+ }
580
+ } else {
581
+ mountFiberRecursively(onRender, fiber, true);
582
+ }
583
+ rootInstance.prevFiber = fiber;
584
+ };
585
+ var createFiberVisitor = ({
586
+ onRender
587
+ }) => {
588
+ return (_rendererID, root, _state) => {
589
+ traverseRenderedFibers(root, onRender);
590
+ };
591
+ };
592
+ var instrument = (options) => {
593
+ return getRDTHook(() => {
594
+ const rdtHook = getRDTHook();
595
+ options.onActive?.();
596
+ rdtHook._instrumentationSource = options.name ?? BIPPY_INSTRUMENTATION_STRING;
597
+ const prevOnCommitFiberRoot = rdtHook.onCommitFiberRoot;
598
+ if (options.onCommitFiberRoot) {
599
+ rdtHook.onCommitFiberRoot = (rendererID, root, priority) => {
600
+ if (prevOnCommitFiberRoot)
601
+ prevOnCommitFiberRoot(rendererID, root, priority);
602
+ options.onCommitFiberRoot?.(rendererID, root, priority);
603
+ };
604
+ }
605
+ const prevOnCommitFiberUnmount = rdtHook.onCommitFiberUnmount;
606
+ if (options.onCommitFiberUnmount) {
607
+ rdtHook.onCommitFiberUnmount = (rendererID, root) => {
608
+ if (prevOnCommitFiberUnmount)
609
+ prevOnCommitFiberUnmount(rendererID, root);
610
+ options.onCommitFiberUnmount?.(rendererID, root);
611
+ };
612
+ }
613
+ const prevOnPostCommitFiberRoot = rdtHook.onPostCommitFiberRoot;
614
+ if (options.onPostCommitFiberRoot) {
615
+ rdtHook.onPostCommitFiberRoot = (rendererID, root) => {
616
+ if (prevOnPostCommitFiberRoot)
617
+ prevOnPostCommitFiberRoot(rendererID, root);
618
+ options.onPostCommitFiberRoot?.(rendererID, root);
619
+ };
620
+ }
621
+ });
622
+ };
623
+ var getFiberFromHostInstance = (hostInstance) => {
624
+ const rdtHook = getRDTHook();
625
+ for (const renderer of rdtHook.renderers.values()) {
626
+ try {
627
+ const fiber = renderer.findFiberByHostInstance?.(hostInstance);
628
+ if (fiber) return fiber;
629
+ } catch {
630
+ }
631
+ }
632
+ if (typeof hostInstance === "object" && hostInstance != null) {
633
+ if ("_reactRootContainer" in hostInstance) {
634
+ return hostInstance._reactRootContainer?._internalRoot?.current?.child;
635
+ }
636
+ for (const key in hostInstance) {
637
+ if (key.startsWith("__reactInternalInstance$") || key.startsWith("__reactFiber")) {
638
+ return hostInstance[key] || null;
639
+ }
640
+ }
641
+ }
642
+ return null;
643
+ };
644
+ var INSTALL_ERROR = new Error();
645
+ var secure = (options, secureOptions = {}) => {
646
+ const onActive = options.onActive;
647
+ const isRDTHookInstalled = hasRDTHook();
648
+ const isUsingRealReactDevtools = isRealReactDevtools();
649
+ const isUsingReactRefresh = isReactRefresh();
650
+ let timeout;
651
+ let isProduction = secureOptions.isProduction ?? false;
652
+ options.onActive = () => {
653
+ clearTimeout(timeout);
654
+ let isSecure = true;
655
+ try {
656
+ const rdtHook = getRDTHook();
657
+ for (const renderer of rdtHook.renderers.values()) {
658
+ const [majorVersion] = renderer.version.split(".");
659
+ if (Number(majorVersion) < (secureOptions.minReactMajorVersion ?? 17)) {
660
+ isSecure = false;
661
+ }
662
+ const buildType = detectReactBuildType(renderer);
663
+ if (buildType !== "development") {
664
+ isProduction = true;
665
+ if (!secureOptions.dangerouslyRunInProduction) {
666
+ isSecure = false;
667
+ }
668
+ }
669
+ }
670
+ } catch (err) {
671
+ secureOptions.onError?.(err);
672
+ }
673
+ if (!isSecure) {
674
+ options.onCommitFiberRoot = void 0;
675
+ options.onCommitFiberUnmount = void 0;
676
+ options.onPostCommitFiberRoot = void 0;
677
+ options.onActive = void 0;
678
+ return;
679
+ }
680
+ onActive?.();
681
+ try {
682
+ const onCommitFiberRoot2 = options.onCommitFiberRoot;
683
+ if (onCommitFiberRoot2) {
684
+ options.onCommitFiberRoot = (rendererID, root, priority) => {
685
+ try {
686
+ onCommitFiberRoot2(rendererID, root, priority);
687
+ } catch (err) {
688
+ secureOptions.onError?.(err);
689
+ }
690
+ };
691
+ }
692
+ const onCommitFiberUnmount = options.onCommitFiberUnmount;
693
+ if (onCommitFiberUnmount) {
694
+ options.onCommitFiberUnmount = (rendererID, root) => {
695
+ try {
696
+ onCommitFiberUnmount(rendererID, root);
697
+ } catch (err) {
698
+ secureOptions.onError?.(err);
699
+ }
700
+ };
701
+ }
702
+ const onPostCommitFiberRoot = options.onPostCommitFiberRoot;
703
+ if (onPostCommitFiberRoot) {
704
+ options.onPostCommitFiberRoot = (rendererID, root) => {
705
+ try {
706
+ onPostCommitFiberRoot(rendererID, root);
707
+ } catch (err) {
708
+ secureOptions.onError?.(err);
709
+ }
710
+ };
711
+ }
712
+ } catch (err) {
713
+ secureOptions.onError?.(err);
714
+ }
715
+ };
716
+ if (!isRDTHookInstalled && !isUsingRealReactDevtools && !isUsingReactRefresh) {
717
+ timeout = setTimeout(() => {
718
+ if (!isProduction) {
719
+ secureOptions.onError?.(INSTALL_ERROR);
720
+ }
721
+ stop();
722
+ }, secureOptions.installCheckTimeout ?? 100);
723
+ }
724
+ return options;
725
+ };
726
+ var onCommitFiberRoot = (handler) => {
727
+ return instrument(
728
+ secure({
729
+ onCommitFiberRoot: (_, root) => {
730
+ handler(root);
731
+ }
732
+ })
733
+ );
734
+ };
735
+
736
+ export { BIPPY_INSTRUMENTATION_STRING, CONCURRENT_MODE_NUMBER, CONCURRENT_MODE_SYMBOL_STRING, ClassComponentTag, ContextConsumerTag, DEPRECATED_ASYNC_MODE_SYMBOL_STRING, DehydratedSuspenseComponentTag, ELEMENT_TYPE_SYMBOL_STRING, ForwardRefTag, FragmentTag, FunctionComponentTag, HostComponentTag, HostHoistableTag, HostRootTag, HostSingletonTag, HostTextTag, INSTALL_ERROR, INSTALL_HOOK_SCRIPT_STRING, LegacyHiddenComponentTag, MemoComponentTag, OffscreenComponentTag, SimpleMemoComponentTag, SuspenseComponentTag, TRANSITIONAL_ELEMENT_TYPE_SYMBOL_STRING, createFiberVisitor, detectReactBuildType, didFiberCommit, didFiberRender, fiberIdMap, getDisplayName, getFiberFromHostInstance, getFiberId, getFiberStack, getMutatedHostFibers, getNearestHostFiber, getNearestHostFibers, getRDTHook, getTimings, getType, hasMemoCache, hasRDTHook, installRDTHook, instrument, isClientEnvironment, isCompositeFiber, isHostFiber, isInstrumentationActive, isReactRefresh, isRealReactDevtools, isValidElement, isValidFiber, mountFiberRecursively, onCommitFiberRoot, patchRDTHook, secure, setFiberId, shouldFilterFiber, traverseContexts, traverseFiber, traverseProps, traverseRenderedFibers, traverseState, unmountFiber, unmountFiberChildrenRecursively, updateFiberRecursively, version };