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