@memlab/lens 1.0.1 → 1.0.3

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.
@@ -1,3 +1,28 @@
1
+ /**
2
+ * @license MemLab
3
+ * MIT License
4
+ *
5
+ * Copyright (c) Meta Platforms, Inc. and affiliates.
6
+ *
7
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
8
+ * of this software and associated documentation files (the "Software"), to deal
9
+ * in the Software without restriction, including without limitation the rights
10
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11
+ * copies of the Software, and to permit persons to whom the Software is
12
+ * furnished to do so, subject to the following conditions:
13
+ *
14
+ * The above copyright notice and this permission notice shall be included in all
15
+ * copies or substantial portions of the Software.
16
+ *
17
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23
+ * SOFTWARE.
24
+ *
25
+ */
1
26
  /******/ (() => { // webpackBootstrap
2
27
  /******/ "use strict";
3
28
  /******/ var __webpack_modules__ = ({
@@ -40,15 +65,25 @@ class DOMVisualizationExtension extends basic_extension_1.BasicExtension {
40
65
  }
41
66
  // eslint-disable-next-line @typescript-eslint/no-unused-vars
42
67
  afterScan(_analysisResult) {
68
+ var _a;
43
69
  // const start = Date.now();
44
70
  const scanner = this.scanner;
45
71
  if (scanner.isDevMode()) {
46
72
  const detachedDOMInfo = scanner.getDetachedDOMInfo();
47
- __classPrivateFieldGet(this, _DOMVisualizationExtension_domVirtualizer, "f").repaint(detachedDOMInfo);
73
+ (_a = __classPrivateFieldGet(this, _DOMVisualizationExtension_domVirtualizer, "f")) === null || _a === void 0 ? void 0 : _a.repaint(detachedDOMInfo);
48
74
  }
49
75
  // const end = Date.now();
50
76
  // console.log(`repaint took ${end - start}ms`);
51
77
  }
78
+ cleanup() {
79
+ // Clean up the visualizer to prevent memory leaks
80
+ if (__classPrivateFieldGet(this, _DOMVisualizationExtension_domVirtualizer, "f") &&
81
+ typeof __classPrivateFieldGet(this, _DOMVisualizationExtension_domVirtualizer, "f").cleanup === 'function') {
82
+ __classPrivateFieldGet(this, _DOMVisualizationExtension_domVirtualizer, "f").cleanup();
83
+ }
84
+ // Clear the reference
85
+ __classPrivateFieldSet(this, _DOMVisualizationExtension_domVirtualizer, null, "f");
86
+ }
52
87
  }
53
88
  exports.DOMVisualizationExtension = DOMVisualizationExtension;
54
89
  _DOMVisualizationExtension_domVirtualizer = new WeakMap();
@@ -151,7 +186,7 @@ class DOMObserver {
151
186
  if (document.body) {
152
187
  // observe changes in DOM tree
153
188
  (_a = __classPrivateFieldGet(this, _DOMObserver_mutationObserver, "f")) === null || _a === void 0 ? void 0 : _a.observe(document.body, {
154
- childList: true, // Detect direct additions/removals
189
+ childList: true,
155
190
  subtree: true, // Observe all descendants
156
191
  });
157
192
  }
@@ -275,11 +310,15 @@ class DOMElementVisualizer {
275
310
  _DOMElementVisualizer_canvas.set(this, void 0);
276
311
  __classPrivateFieldSet(this, _DOMElementVisualizer_canvas, null, "f");
277
312
  }
313
+ cleanup() {
314
+ __classPrivateFieldGet(this, _DOMElementVisualizer_instances, "m", _DOMElementVisualizer_cleanup).call(this);
315
+ }
278
316
  repaint(domElementInfoList) {
279
317
  __classPrivateFieldGet(this, _DOMElementVisualizer_instances, "m", _DOMElementVisualizer_cleanup).call(this);
280
318
  __classPrivateFieldGet(this, _DOMElementVisualizer_instances, "m", _DOMElementVisualizer_paint).call(this, domElementInfoList);
281
319
  }
282
320
  }
321
+ exports["default"] = DOMElementVisualizer;
283
322
  _DOMElementVisualizer_canvas = new WeakMap(), _DOMElementVisualizer_instances = new WeakSet(), _DOMElementVisualizer_paint = function _DOMElementVisualizer_paint(domElementInfoList) {
284
323
  if (!__classPrivateFieldGet(this, _DOMElementVisualizer_canvas, "f")) {
285
324
  const canvas = __classPrivateFieldGet(this, _DOMElementVisualizer_instances, "m", _DOMElementVisualizer_createAndAppendCanvas).call(this);
@@ -370,7 +409,6 @@ _DOMElementVisualizer_canvas = new WeakMap(), _DOMElementVisualizer_instances =
370
409
  }
371
410
  __classPrivateFieldSet(this, _DOMElementVisualizer_canvas, null, "f");
372
411
  };
373
- exports["default"] = DOMElementVisualizer;
374
412
 
375
413
 
376
414
  /***/ }),
@@ -433,7 +471,24 @@ class DOMElementVisualizerInteractive extends dom_element_visualizer_1.default {
433
471
  (0, visual_utils_1.tryToAttachOverlay)(__classPrivateFieldGet(this, _DOMElementVisualizerInteractive_visualizationOverlayDiv, "f"));
434
472
  // tryToAttachOverlay(this.#controlWidget);
435
473
  }
474
+ cleanup() {
475
+ // Clean up the visualization overlay
476
+ if (__classPrivateFieldGet(this, _DOMElementVisualizerInteractive_visualizationOverlayDiv, "f")) {
477
+ __classPrivateFieldGet(this, _DOMElementVisualizerInteractive_visualizationOverlayDiv, "f").remove();
478
+ }
479
+ // Clean up the control widget
480
+ if (__classPrivateFieldGet(this, _DOMElementVisualizerInteractive_controlWidget, "f")) {
481
+ __classPrivateFieldGet(this, _DOMElementVisualizerInteractive_controlWidget, "f").remove();
482
+ }
483
+ // Clear all element references
484
+ __classPrivateFieldGet(this, _DOMElementVisualizerInteractive_elementIdToRectangle, "f").clear();
485
+ __classPrivateFieldGet(this, _DOMElementVisualizerInteractive_blockedElementIds, "f").clear();
486
+ __classPrivateFieldSet(this, _DOMElementVisualizerInteractive_updateDataCallbacks, [], "f");
487
+ // Call parent cleanup
488
+ super.cleanup();
489
+ }
436
490
  }
491
+ exports["default"] = DOMElementVisualizerInteractive;
437
492
  _DOMElementVisualizerInteractive_elementIdToRectangle = new WeakMap(), _DOMElementVisualizerInteractive_visualizationOverlayDiv = new WeakMap(), _DOMElementVisualizerInteractive_controlWidget = new WeakMap(), _DOMElementVisualizerInteractive_blockedElementIds = new WeakMap(), _DOMElementVisualizerInteractive_currentVisualData = new WeakMap(), _DOMElementVisualizerInteractive_hideAllRef = new WeakMap(), _DOMElementVisualizerInteractive_updateDataCallbacks = new WeakMap(), _DOMElementVisualizerInteractive_instances = new WeakSet(), _DOMElementVisualizerInteractive_listenToKeyboardEvent = function _DOMElementVisualizerInteractive_listenToKeyboardEvent() {
438
493
  document.addEventListener('keydown', event => {
439
494
  if (event.key === 'd' || event.key === 'D') {
@@ -678,7 +733,6 @@ _DOMElementVisualizerInteractive_elementIdToRectangle = new WeakMap(), _DOMEleme
678
733
  cb(Object.assign({}, __classPrivateFieldGet(this, _DOMElementVisualizerInteractive_currentVisualData, "f")));
679
734
  }
680
735
  };
681
- exports["default"] = DOMElementVisualizerInteractive;
682
736
 
683
737
 
684
738
  /***/ }),
@@ -703,23 +757,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
703
757
  }) : function(o, v) {
704
758
  o["default"] = v;
705
759
  });
706
- var __importStar = (this && this.__importStar) || (function () {
707
- var ownKeys = function(o) {
708
- ownKeys = Object.getOwnPropertyNames || function (o) {
709
- var ar = [];
710
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
711
- return ar;
712
- };
713
- return ownKeys(o);
714
- };
715
- return function (mod) {
716
- if (mod && mod.__esModule) return mod;
717
- var result = {};
718
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
719
- __setModuleDefault(result, mod);
720
- return result;
721
- };
722
- })();
760
+ var __importStar = (this && this.__importStar) || function (mod) {
761
+ if (mod && mod.__esModule) return mod;
762
+ var result = {};
763
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
764
+ __setModuleDefault(result, mod);
765
+ return result;
766
+ };
723
767
  var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
724
768
  if (kind === "m") throw new TypeError("Private method is not writable");
725
769
  if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
@@ -745,7 +789,7 @@ var __rest = (this && this.__rest) || function (s, e) {
745
789
  var __importDefault = (this && this.__importDefault) || function (mod) {
746
790
  return (mod && mod.__esModule) ? mod : { "default": mod };
747
791
  };
748
- var _ReactMemoryScan_instances, _ReactMemoryScan_elementWeakRefs, _ReactMemoryScan_isActivated, _ReactMemoryScan_intervalId, _ReactMemoryScan_elementToBoundingRects, _ReactMemoryScan_elementToComponentStack, _ReactMemoryScan_knownFiberNodes, _ReactMemoryScan_fiberAnalyzer, _ReactMemoryScan_isDevMode, _ReactMemoryScan_subscribers, _ReactMemoryScan_extensions, _ReactMemoryScan_scanIntervalMs, _ReactMemoryScan_domObserver, _ReactMemoryScan_eventListenerTracker, _ReactMemoryScan_log, _ReactMemoryScan_notifySubscribers, _ReactMemoryScan_notifyExtensionsBeforeScan, _ReactMemoryScan_notifyExtensionsAfterScan, _ReactMemoryScan_scanCycle, _ReactMemoryScan_updateElementToComponentInfo, _ReactMemoryScan_getTrackedDOMRefs, _ReactMemoryScan_runGC, _ReactMemoryScan_scanEventListenerLeaks;
792
+ var _ReactMemoryScan_instances, _ReactMemoryScan_elementWeakRefs, _ReactMemoryScan_isActivated, _ReactMemoryScan_intervalId, _ReactMemoryScan_elementToBoundingRects, _ReactMemoryScan_elementToComponentStack, _ReactMemoryScan_knownFiberNodes, _ReactMemoryScan_fiberAnalyzer, _ReactMemoryScan_isDevMode, _ReactMemoryScan_subscribers, _ReactMemoryScan_extensions, _ReactMemoryScan_scanIntervalMs, _ReactMemoryScan_domObserver, _ReactMemoryScan_eventListenerTracker, _ReactMemoryScan_isDisposed, _ReactMemoryScan_log, _ReactMemoryScan_notifySubscribers, _ReactMemoryScan_notifyExtensionsBeforeScan, _ReactMemoryScan_notifyExtensionsAfterScan, _ReactMemoryScan_scanCycle, _ReactMemoryScan_updateElementToComponentInfo, _ReactMemoryScan_getTrackedDOMRefs, _ReactMemoryScan_runGC, _ReactMemoryScan_scanEventListenerLeaks;
749
793
  Object.defineProperty(exports, "__esModule", ({ value: true }));
750
794
  const utils = __importStar(__webpack_require__(476));
751
795
  const react_fiber_analysis_1 = __importDefault(__webpack_require__(302));
@@ -770,6 +814,7 @@ class ReactMemoryScan {
770
814
  _ReactMemoryScan_scanIntervalMs.set(this, void 0);
771
815
  _ReactMemoryScan_domObserver.set(this, void 0);
772
816
  _ReactMemoryScan_eventListenerTracker.set(this, void 0);
817
+ _ReactMemoryScan_isDisposed.set(this, void 0);
773
818
  __classPrivateFieldSet(this, _ReactMemoryScan_elementWeakRefs, [], "f");
774
819
  __classPrivateFieldSet(this, _ReactMemoryScan_isActivated, false, "f");
775
820
  __classPrivateFieldSet(this, _ReactMemoryScan_elementToBoundingRects, new WeakMap(), "f");
@@ -778,8 +823,9 @@ class ReactMemoryScan {
778
823
  __classPrivateFieldSet(this, _ReactMemoryScan_eventListenerTracker, options.trackEventListenerLeaks
779
824
  ? event_listener_tracker_1.EventListenerTracker.getInstance()
780
825
  : null, "f");
826
+ __classPrivateFieldSet(this, _ReactMemoryScan_intervalId, null, "f");
827
+ __classPrivateFieldSet(this, _ReactMemoryScan_isDisposed, false, "f");
781
828
  __classPrivateFieldSet(this, _ReactMemoryScan_fiberAnalyzer, new react_fiber_analysis_1.default(), "f");
782
- __classPrivateFieldSet(this, _ReactMemoryScan_intervalId, 0, "f");
783
829
  __classPrivateFieldSet(this, _ReactMemoryScan_isDevMode, (_a = options.isDevMode) !== null && _a !== void 0 ? _a : false, "f");
784
830
  __classPrivateFieldSet(this, _ReactMemoryScan_subscribers, (_b = options.subscribers) !== null && _b !== void 0 ? _b : [], "f");
785
831
  __classPrivateFieldSet(this, _ReactMemoryScan_extensions, (_c = options.extensions) !== null && _c !== void 0 ? _c : [], "f");
@@ -800,6 +846,10 @@ class ReactMemoryScan {
800
846
  __classPrivateFieldSet(this, _ReactMemoryScan_extensions, __classPrivateFieldGet(this, _ReactMemoryScan_extensions, "f").filter(e => e !== extension), "f");
801
847
  }
802
848
  start() {
849
+ if (__classPrivateFieldGet(this, _ReactMemoryScan_isDisposed, "f")) {
850
+ console.warn('[Memory] ReactMemoryScan has been disposed and cannot be started again');
851
+ return;
852
+ }
803
853
  __classPrivateFieldSet(this, _ReactMemoryScan_isActivated, true, "f");
804
854
  __classPrivateFieldSet(this, _ReactMemoryScan_intervalId, setInterval(__classPrivateFieldGet(this, _ReactMemoryScan_instances, "m", _ReactMemoryScan_scanCycle).bind(this), __classPrivateFieldGet(this, _ReactMemoryScan_scanIntervalMs, "f")), "f");
805
855
  if (config_1.config.features.enableMutationObserver) {
@@ -818,11 +868,45 @@ class ReactMemoryScan {
818
868
  __classPrivateFieldSet(this, _ReactMemoryScan_isActivated, false, "f");
819
869
  }
820
870
  stop() {
821
- var _a;
822
871
  __classPrivateFieldSet(this, _ReactMemoryScan_isActivated, false, "f");
823
- clearInterval(__classPrivateFieldGet(this, _ReactMemoryScan_intervalId, "f"));
872
+ // Clear the interval
873
+ if (__classPrivateFieldGet(this, _ReactMemoryScan_intervalId, "f") !== null) {
874
+ clearInterval(__classPrivateFieldGet(this, _ReactMemoryScan_intervalId, "f"));
875
+ __classPrivateFieldSet(this, _ReactMemoryScan_intervalId, null, "f");
876
+ }
877
+ // Clear element references to allow garbage collection
824
878
  __classPrivateFieldSet(this, _ReactMemoryScan_elementWeakRefs, [], "f");
825
- (_a = __classPrivateFieldGet(this, _ReactMemoryScan_domObserver, "f")) === null || _a === void 0 ? void 0 : _a.stopMonitoring();
879
+ __classPrivateFieldSet(this, _ReactMemoryScan_knownFiberNodes, [], "f");
880
+ // Stop DOM observer
881
+ if (__classPrivateFieldGet(this, _ReactMemoryScan_domObserver, "f")) {
882
+ __classPrivateFieldGet(this, _ReactMemoryScan_domObserver, "f").stopMonitoring();
883
+ __classPrivateFieldSet(this, _ReactMemoryScan_domObserver, null, "f");
884
+ }
885
+ // Clear WeakMaps to allow garbage collection
886
+ __classPrivateFieldSet(this, _ReactMemoryScan_elementToBoundingRects, new WeakMap(), "f");
887
+ __classPrivateFieldSet(this, _ReactMemoryScan_elementToComponentStack, new WeakMap(), "f");
888
+ console.log('[Memory] ReactMemoryScan stopped');
889
+ }
890
+ dispose() {
891
+ // Stop all monitoring
892
+ this.stop();
893
+ // Clear all subscribers
894
+ __classPrivateFieldSet(this, _ReactMemoryScan_subscribers, [], "f");
895
+ // Clean up all extensions
896
+ for (const extension of __classPrivateFieldGet(this, _ReactMemoryScan_extensions, "f")) {
897
+ if (extension && typeof extension.cleanup === 'function') {
898
+ extension.cleanup();
899
+ }
900
+ }
901
+ __classPrivateFieldSet(this, _ReactMemoryScan_extensions, [], "f");
902
+ // Dispose event listener tracker if it exists
903
+ if (__classPrivateFieldGet(this, _ReactMemoryScan_eventListenerTracker, "f")) {
904
+ __classPrivateFieldGet(this, _ReactMemoryScan_eventListenerTracker, "f").destroy();
905
+ __classPrivateFieldSet(this, _ReactMemoryScan_eventListenerTracker, null, "f");
906
+ }
907
+ // Mark as disposed to prevent reuse
908
+ __classPrivateFieldSet(this, _ReactMemoryScan_isDisposed, true, "f");
909
+ console.log('[Memory] ReactMemoryScan disposed');
826
910
  }
827
911
  recordBoundingRectangles(elementRefs) {
828
912
  for (const elemRef of elementRefs) {
@@ -952,7 +1036,8 @@ class ReactMemoryScan {
952
1036
  return scanResult;
953
1037
  }
954
1038
  }
955
- _ReactMemoryScan_elementWeakRefs = new WeakMap(), _ReactMemoryScan_isActivated = new WeakMap(), _ReactMemoryScan_intervalId = new WeakMap(), _ReactMemoryScan_elementToBoundingRects = new WeakMap(), _ReactMemoryScan_elementToComponentStack = new WeakMap(), _ReactMemoryScan_knownFiberNodes = new WeakMap(), _ReactMemoryScan_fiberAnalyzer = new WeakMap(), _ReactMemoryScan_isDevMode = new WeakMap(), _ReactMemoryScan_subscribers = new WeakMap(), _ReactMemoryScan_extensions = new WeakMap(), _ReactMemoryScan_scanIntervalMs = new WeakMap(), _ReactMemoryScan_domObserver = new WeakMap(), _ReactMemoryScan_eventListenerTracker = new WeakMap(), _ReactMemoryScan_instances = new WeakSet(), _ReactMemoryScan_log = function _ReactMemoryScan_log(...args) {
1039
+ exports["default"] = ReactMemoryScan;
1040
+ _ReactMemoryScan_elementWeakRefs = new WeakMap(), _ReactMemoryScan_isActivated = new WeakMap(), _ReactMemoryScan_intervalId = new WeakMap(), _ReactMemoryScan_elementToBoundingRects = new WeakMap(), _ReactMemoryScan_elementToComponentStack = new WeakMap(), _ReactMemoryScan_knownFiberNodes = new WeakMap(), _ReactMemoryScan_fiberAnalyzer = new WeakMap(), _ReactMemoryScan_isDevMode = new WeakMap(), _ReactMemoryScan_subscribers = new WeakMap(), _ReactMemoryScan_extensions = new WeakMap(), _ReactMemoryScan_scanIntervalMs = new WeakMap(), _ReactMemoryScan_domObserver = new WeakMap(), _ReactMemoryScan_eventListenerTracker = new WeakMap(), _ReactMemoryScan_isDisposed = new WeakMap(), _ReactMemoryScan_instances = new WeakSet(), _ReactMemoryScan_log = function _ReactMemoryScan_log(...args) {
956
1041
  if (__classPrivateFieldGet(this, _ReactMemoryScan_isDevMode, "f") && config_1.config.features.enableConsoleLogs) {
957
1042
  utils.consoleLog(...args);
958
1043
  }
@@ -1032,7 +1117,6 @@ _ReactMemoryScan_elementWeakRefs = new WeakMap(), _ReactMemoryScan_isActivated =
1032
1117
  return eventListenerLeaks;
1033
1118
  };
1034
1119
  ReactMemoryScan.nextElementId = 0;
1035
- exports["default"] = ReactMemoryScan;
1036
1120
  class LeakedFiber {
1037
1121
  constructor(fiber) {
1038
1122
  this.leakedFiber = fiber;
@@ -1062,23 +1146,13 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
1062
1146
  }) : function(o, v) {
1063
1147
  o["default"] = v;
1064
1148
  });
1065
- var __importStar = (this && this.__importStar) || (function () {
1066
- var ownKeys = function(o) {
1067
- ownKeys = Object.getOwnPropertyNames || function (o) {
1068
- var ar = [];
1069
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
1070
- return ar;
1071
- };
1072
- return ownKeys(o);
1073
- };
1074
- return function (mod) {
1075
- if (mod && mod.__esModule) return mod;
1076
- var result = {};
1077
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
1078
- __setModuleDefault(result, mod);
1079
- return result;
1080
- };
1081
- })();
1149
+ var __importStar = (this && this.__importStar) || function (mod) {
1150
+ if (mod && mod.__esModule) return mod;
1151
+ var result = {};
1152
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
1153
+ __setModuleDefault(result, mod);
1154
+ return result;
1155
+ };
1082
1156
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1083
1157
  /**
1084
1158
  * Copyright (c) Meta Platforms, Inc. and affiliates.
@@ -1197,17 +1271,7 @@ exports["default"] = ReactFiberAnalyzer;
1197
1271
  */
1198
1272
  var _a, _b, _c;
1199
1273
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1200
- exports.WeakMapPlus = exports.WeakMapNoOp = exports.WeakSetNoOp = exports.WeakRefNoOp = void 0;
1201
- exports.getNativeWeakMap = getNativeWeakMap;
1202
- exports.getNativeWeakMapOrFallback = getNativeWeakMapOrFallback;
1203
- exports.getNativeWeakSet = getNativeWeakSet;
1204
- exports.getNativeWeakSetOrFallback = getNativeWeakSetOrFallback;
1205
- exports.getNativeWeakRef = getNativeWeakRef;
1206
- exports.getNativeWeakRefOrFallback = getNativeWeakRefOrFallback;
1207
- exports.isWeakMapNative = isWeakMapNative;
1208
- exports.isWeakSetNative = isWeakSetNative;
1209
- exports.isWeakRefNative = isWeakRefNative;
1210
- exports.isWeakAPINative = isWeakAPINative;
1274
+ exports.WeakMapPlus = exports.isWeakAPINative = exports.isWeakRefNative = exports.isWeakSetNative = exports.isWeakMapNative = exports.getNativeWeakRefOrFallback = exports.getNativeWeakRef = exports.getNativeWeakSetOrFallback = exports.getNativeWeakSet = exports.getNativeWeakMapOrFallback = exports.getNativeWeakMap = exports.WeakMapNoOp = exports.WeakSetNoOp = exports.WeakRefNoOp = void 0;
1211
1275
  const globalScope = typeof window !== 'undefined' ? window : self;
1212
1276
  const _weakMap = (_a = globalScope.WeakMap) !== null && _a !== void 0 ? _a : null;
1213
1277
  const _weakMapIsNative = isWeakMapNative();
@@ -1271,21 +1335,27 @@ exports.WeakMapNoOp = WeakMapNoOp;
1271
1335
  function getNativeWeakMap() {
1272
1336
  return _weakMapIsNative ? _weakMap : null;
1273
1337
  }
1338
+ exports.getNativeWeakMap = getNativeWeakMap;
1274
1339
  function getNativeWeakMapOrFallback() {
1275
1340
  return _weakMapIsNative && _weakMap ? _weakMap : WeakMapNoOp;
1276
1341
  }
1342
+ exports.getNativeWeakMapOrFallback = getNativeWeakMapOrFallback;
1277
1343
  function getNativeWeakSet() {
1278
1344
  return _weakSetIsNative ? _weakSet : null;
1279
1345
  }
1346
+ exports.getNativeWeakSet = getNativeWeakSet;
1280
1347
  function getNativeWeakSetOrFallback() {
1281
1348
  return _weakSetIsNative && _weakSet ? _weakSet : WeakSetNoOp;
1282
1349
  }
1350
+ exports.getNativeWeakSetOrFallback = getNativeWeakSetOrFallback;
1283
1351
  function getNativeWeakRef() {
1284
1352
  return _weakRefIsNative ? _weakRef : null;
1285
1353
  }
1354
+ exports.getNativeWeakRef = getNativeWeakRef;
1286
1355
  function getNativeWeakRefOrFallback() {
1287
1356
  return _weakRefIsNative && _weakRef ? _weakRef : WeakRefNoOp;
1288
1357
  }
1358
+ exports.getNativeWeakRefOrFallback = getNativeWeakRefOrFallback;
1289
1359
  function normalize(input) {
1290
1360
  return typeof input.replace === 'function'
1291
1361
  ? input.replace(/\n/g, ' ').replace(/\s+/g, ' ')
@@ -1296,19 +1366,23 @@ function isWeakMapNative() {
1296
1366
  typeof _weakMap.toString === 'function' &&
1297
1367
  normalize(_weakMap.toString()) === 'function WeakMap() { [native code] }');
1298
1368
  }
1369
+ exports.isWeakMapNative = isWeakMapNative;
1299
1370
  function isWeakSetNative() {
1300
1371
  return (_weakSet !== null &&
1301
1372
  typeof _weakSet.toString === 'function' &&
1302
1373
  normalize(_weakSet.toString()) === 'function WeakSet() { [native code] }');
1303
1374
  }
1375
+ exports.isWeakSetNative = isWeakSetNative;
1304
1376
  function isWeakRefNative() {
1305
1377
  return (_weakRef !== null &&
1306
1378
  typeof _weakRef.toString === 'function' &&
1307
1379
  normalize(_weakRef.toString()) === 'function WeakRef() { [native code] }');
1308
1380
  }
1381
+ exports.isWeakRefNative = isWeakRefNative;
1309
1382
  function isWeakAPINative() {
1310
1383
  return _weakAPIsAreNative;
1311
1384
  }
1385
+ exports.isWeakAPINative = isWeakAPINative;
1312
1386
  class WeakMapPlus {
1313
1387
  constructor(options = {}) {
1314
1388
  this.strongMap = null;
@@ -1465,7 +1539,7 @@ exports.WeakMapPlus = WeakMapPlus;
1465
1539
 
1466
1540
 
1467
1541
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1468
- exports.createControlWidget = createControlWidget;
1542
+ exports.createControlWidget = void 0;
1469
1543
  const visual_utils_1 = __webpack_require__(498);
1470
1544
  const status_text_1 = __webpack_require__(775);
1471
1545
  const toggle_button_1 = __webpack_require__(946);
@@ -1505,6 +1579,7 @@ function createControlWidget(overlayDiv, hideAllRef, registerDataUpdateCallback)
1505
1579
  header.appendChild(statusText);
1506
1580
  return controlWidget;
1507
1581
  }
1582
+ exports.createControlWidget = createControlWidget;
1508
1583
  function supportDragging(controlWidget) {
1509
1584
  let isDragging = false;
1510
1585
  let offsetX = 0;
@@ -1577,7 +1652,7 @@ exports.config = {
1577
1652
 
1578
1653
 
1579
1654
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1580
- exports.createOverlayDiv = createOverlayDiv;
1655
+ exports.createOverlayDiv = void 0;
1581
1656
  /**
1582
1657
  * Copyright (c) Meta Platforms, Inc. and affiliates.
1583
1658
  *
@@ -1596,6 +1671,7 @@ function createOverlayDiv() {
1596
1671
  overlayDiv.id = 'memory-visualization-overlay';
1597
1672
  return overlayDiv;
1598
1673
  }
1674
+ exports.createOverlayDiv = createOverlayDiv;
1599
1675
 
1600
1676
 
1601
1677
  /***/ }),
@@ -1605,16 +1681,7 @@ function createOverlayDiv() {
1605
1681
 
1606
1682
 
1607
1683
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1608
- exports.getDOMElements = getDOMElements;
1609
- exports.getDOMElementCount = getDOMElementCount;
1610
- exports.getMeaningfulName = getMeaningfulName;
1611
- exports.isMinifiedName = isMinifiedName;
1612
- exports.addCountbyKey = addCountbyKey;
1613
- exports.updateWeakRefList = updateWeakRefList;
1614
- exports.getBoundingClientRect = getBoundingClientRect;
1615
- exports.consoleLog = consoleLog;
1616
- exports.hasRunInSession = hasRunInSession;
1617
- exports.setRunInSession = setRunInSession;
1684
+ exports.setRunInSession = exports.hasRunInSession = exports.consoleLog = exports.getBoundingClientRect = exports.updateWeakRefList = exports.addCountbyKey = exports.isMinifiedName = exports.getMeaningfulName = exports.getDOMElementCount = exports.getDOMElements = void 0;
1618
1685
  const visual_utils_1 = __webpack_require__(498);
1619
1686
  function getDOMElements() {
1620
1687
  const elements = Array.from(document.querySelectorAll('*'));
@@ -1627,6 +1694,7 @@ function getDOMElements() {
1627
1694
  }
1628
1695
  return ret;
1629
1696
  }
1697
+ exports.getDOMElements = getDOMElements;
1630
1698
  function getDOMElementCount() {
1631
1699
  const elements = Array.from(document.querySelectorAll('*'));
1632
1700
  let ret = 0;
@@ -1638,6 +1706,7 @@ function getDOMElementCount() {
1638
1706
  }
1639
1707
  return ret;
1640
1708
  }
1709
+ exports.getDOMElementCount = getDOMElementCount;
1641
1710
  function getMeaningfulName(name) {
1642
1711
  if (name == null) {
1643
1712
  return null;
@@ -1645,6 +1714,7 @@ function getMeaningfulName(name) {
1645
1714
  const isMinified = isMinifiedName(name);
1646
1715
  return isMinified ? null : name;
1647
1716
  }
1717
+ exports.getMeaningfulName = getMeaningfulName;
1648
1718
  /**
1649
1719
  * Determines if a given function or class name is minified.
1650
1720
  *
@@ -1667,10 +1737,12 @@ function isMinifiedName(name) {
1667
1737
  const hasMeaningfulPattern = /^[A-Z][a-z]+([A-Z][a-z]*)*$|^[a-z]+([A-Z][a-z]*)*$/.test(name);
1668
1738
  return !hasMeaningfulPattern;
1669
1739
  }
1740
+ exports.isMinifiedName = isMinifiedName;
1670
1741
  function addCountbyKey(map, key, count) {
1671
1742
  var _a;
1672
1743
  map.set(key, ((_a = map.get(key)) !== null && _a !== void 0 ? _a : 0) + count);
1673
1744
  }
1745
+ exports.addCountbyKey = addCountbyKey;
1674
1746
  function updateWeakRefList(weakRefList, elementRefs) {
1675
1747
  consolidateWeakRefList(weakRefList);
1676
1748
  const set = getElementsSet(weakRefList);
@@ -1684,6 +1756,7 @@ function updateWeakRefList(weakRefList, elementRefs) {
1684
1756
  }
1685
1757
  return weakRefList;
1686
1758
  }
1759
+ exports.updateWeakRefList = updateWeakRefList;
1687
1760
  function getElementsSet(weakRefList) {
1688
1761
  const set = new Set();
1689
1762
  for (const weakRef of weakRefList) {
@@ -1740,11 +1813,13 @@ function getBoundingClientRect(element) {
1740
1813
  ret.scrollTop = scrollTop;
1741
1814
  return ret;
1742
1815
  }
1816
+ exports.getBoundingClientRect = getBoundingClientRect;
1743
1817
  const _console = console;
1744
1818
  const _consoleLog = _console.log;
1745
1819
  function consoleLog(...args) {
1746
1820
  _consoleLog.apply(_console, args);
1747
1821
  }
1822
+ exports.consoleLog = consoleLog;
1748
1823
  const SESSION_STORAGE_KEY = 'memory_lens_session';
1749
1824
  function isSessionStorageAvailable() {
1750
1825
  try {
@@ -1768,6 +1843,7 @@ function hasRunInSession() {
1768
1843
  return false;
1769
1844
  }
1770
1845
  }
1846
+ exports.hasRunInSession = hasRunInSession;
1771
1847
  function setRunInSession() {
1772
1848
  if (!isSessionStorageAvailable()) {
1773
1849
  return;
@@ -1779,6 +1855,7 @@ function setRunInSession() {
1779
1855
  // do nothing
1780
1856
  }
1781
1857
  }
1858
+ exports.setRunInSession = setRunInSession;
1782
1859
 
1783
1860
 
1784
1861
  /***/ }),
@@ -1788,12 +1865,7 @@ function setRunInSession() {
1788
1865
 
1789
1866
 
1790
1867
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1791
- exports.isVisualizerElement = isVisualizerElement;
1792
- exports.createVisualizerElement = createVisualizerElement;
1793
- exports.tryToAttachOverlay = tryToAttachOverlay;
1794
- exports.addTrackedListener = addTrackedListener;
1795
- exports.removeAllListeners = removeAllListeners;
1796
- exports.debounce = debounce;
1868
+ exports.debounce = exports.removeAllListeners = exports.addTrackedListener = exports.tryToAttachOverlay = exports.createVisualizerElement = exports.isVisualizerElement = void 0;
1797
1869
  const VISUALIZER_DATA_ATTR = 'data-visualizer';
1798
1870
  function setVisualizerElement(element) {
1799
1871
  element.setAttribute(VISUALIZER_DATA_ATTR, 'true');
@@ -1802,16 +1874,19 @@ function setVisualizerElement(element) {
1802
1874
  function isVisualizerElement(element) {
1803
1875
  return element.getAttribute(VISUALIZER_DATA_ATTR) === 'true';
1804
1876
  }
1877
+ exports.isVisualizerElement = isVisualizerElement;
1805
1878
  function createVisualizerElement(tag) {
1806
1879
  const element = document.createElement(tag);
1807
1880
  setVisualizerElement(element);
1808
1881
  return element;
1809
1882
  }
1883
+ exports.createVisualizerElement = createVisualizerElement;
1810
1884
  function tryToAttachOverlay(overlayDiv) {
1811
1885
  if (document.body) {
1812
1886
  document.body.appendChild(overlayDiv);
1813
1887
  }
1814
1888
  }
1889
+ exports.tryToAttachOverlay = tryToAttachOverlay;
1815
1890
  const listenerMap = new WeakMap();
1816
1891
  function addTrackedListener(elRef, type, cb, options) {
1817
1892
  var _a;
@@ -1824,6 +1899,7 @@ function addTrackedListener(elRef, type, cb, options) {
1824
1899
  }
1825
1900
  (_a = listenerMap.get(el)) === null || _a === void 0 ? void 0 : _a.push({ type, cb, options });
1826
1901
  }
1902
+ exports.addTrackedListener = addTrackedListener;
1827
1903
  function removeAllListeners(elRef) {
1828
1904
  const el = elRef.deref();
1829
1905
  if (!el)
@@ -1836,6 +1912,7 @@ function removeAllListeners(elRef) {
1836
1912
  }
1837
1913
  listenerMap.delete(el);
1838
1914
  }
1915
+ exports.removeAllListeners = removeAllListeners;
1839
1916
  function debounce(callback, delay) {
1840
1917
  let timer = null;
1841
1918
  return (...args) => {
@@ -1847,6 +1924,7 @@ function debounce(callback, delay) {
1847
1924
  }, delay);
1848
1925
  };
1849
1926
  }
1927
+ exports.debounce = debounce;
1850
1928
 
1851
1929
 
1852
1930
  /***/ }),
@@ -1856,7 +1934,7 @@ function debounce(callback, delay) {
1856
1934
 
1857
1935
 
1858
1936
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1859
- exports.createOverlayRectangle = createOverlayRectangle;
1937
+ exports.createOverlayRectangle = void 0;
1860
1938
  const intersection_observer_1 = __webpack_require__(979);
1861
1939
  const visual_utils_1 = __webpack_require__(498);
1862
1940
  const MAX_Z_INDEX = `${Math.pow(2, 30) - 1}`;
@@ -1959,6 +2037,7 @@ function createOverlayRectangle(elementId, info, container, setSelectedId, setUn
1959
2037
  container.appendChild(div);
1960
2038
  return divRef;
1961
2039
  }
2040
+ exports.createOverlayRectangle = createOverlayRectangle;
1962
2041
  function styleOnInteraction(divRef, state) {
1963
2042
  const div = divRef.deref();
1964
2043
  if (div == null) {
@@ -1990,12 +2069,7 @@ function styleOnInteraction(divRef, state) {
1990
2069
 
1991
2070
 
1992
2071
  Object.defineProperty(exports, "__esModule", ({ value: true }));
1993
- exports.traverseFiber = exports.getTopMostFiberWithChild = exports.getTopMostHostFiber = exports.getNearestHostFiber = exports.isHostFiber = exports.MutationMask = exports.Visibility = exports.Snapshot = exports.Ref = exports.ContentReset = exports.ChildDeletion = exports.Cloned = exports.Update = exports.Hydrating = exports.DidCapture = exports.Placement = exports.PerformedWork = exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING = exports.CONCURRENT_MODE_SYMBOL_STRING = exports.CONCURRENT_MODE_NUMBER = exports.HostRoot = exports.OffscreenComponent = exports.LegacyHiddenComponent = exports.Fragment = exports.HostText = exports.DehydratedSuspenseComponent = exports.HostSingletonTag = exports.HostHoistableTag = exports.HostComponentTag = exports.SimpleMemoComponentTag = exports.MemoComponentTag = exports.ForwardRefTag = exports.OffscreenComponentTag = exports.SuspenseComponentTag = exports.ContextConsumerTag = exports.FunctionComponentTag = exports.ClassComponentTag = void 0;
1994
- exports.getFiberNodeFromElement = getFiberNodeFromElement;
1995
- exports.getReactComponentStack = getReactComponentStack;
1996
- exports.getDisplayNameOfFiberNode = getDisplayNameOfFiberNode;
1997
- exports.isFunctionalComponent = isFunctionalComponent;
1998
- exports.extractReactComponentName = extractReactComponentName;
2072
+ exports.extractReactComponentName = exports.isFunctionalComponent = exports.getDisplayNameOfFiberNode = exports.getReactComponentStack = exports.getFiberNodeFromElement = exports.traverseFiber = exports.getTopMostFiberWithChild = exports.getTopMostHostFiber = exports.getNearestHostFiber = exports.isHostFiber = exports.MutationMask = exports.Visibility = exports.Snapshot = exports.Ref = exports.ContentReset = exports.ChildDeletion = exports.Cloned = exports.Update = exports.Hydrating = exports.DidCapture = exports.Placement = exports.PerformedWork = exports.DEPRECATED_ASYNC_MODE_SYMBOL_STRING = exports.CONCURRENT_MODE_SYMBOL_STRING = exports.CONCURRENT_MODE_NUMBER = exports.HostRoot = exports.OffscreenComponent = exports.LegacyHiddenComponent = exports.Fragment = exports.HostText = exports.DehydratedSuspenseComponent = exports.HostSingletonTag = exports.HostHoistableTag = exports.HostComponentTag = exports.SimpleMemoComponentTag = exports.MemoComponentTag = exports.ForwardRefTag = exports.OffscreenComponentTag = exports.SuspenseComponentTag = exports.ContextConsumerTag = exports.FunctionComponentTag = exports.ClassComponentTag = void 0;
1999
2073
  const utils_1 = __webpack_require__(476);
2000
2074
  const valid_component_name_1 = __webpack_require__(847);
2001
2075
  exports.ClassComponentTag = 1;
@@ -2097,8 +2171,8 @@ const traverseFiber = (fiber, selector, ascending = false) => {
2097
2171
  exports.traverseFiber = traverseFiber;
2098
2172
  // React internal property keys
2099
2173
  const internalKeys = [
2100
- '__reactFiber$', // React 17+
2101
- '__reactInternalInstance$', // React 16
2174
+ '__reactFiber$',
2175
+ '__reactInternalInstance$',
2102
2176
  '_reactRootContainer', // React Root
2103
2177
  ];
2104
2178
  const getOwnPropertyNames = Object.getOwnPropertyNames.bind(Object);
@@ -2112,6 +2186,7 @@ function getFiberNodeFromElement(element) {
2112
2186
  }
2113
2187
  return null;
2114
2188
  }
2189
+ exports.getFiberNodeFromElement = getFiberNodeFromElement;
2115
2190
  function getReactComponentStack(node) {
2116
2191
  const stack = [];
2117
2192
  const visited = new Set();
@@ -2129,6 +2204,7 @@ function getReactComponentStack(node) {
2129
2204
  }
2130
2205
  return stack;
2131
2206
  }
2207
+ exports.getReactComponentStack = getReactComponentStack;
2132
2208
  function getDisplayNameOfFiberNode(node) {
2133
2209
  var _a, _b, _c, _d;
2134
2210
  const elementType = (_a = node.type) !== null && _a !== void 0 ? _a : node.elementType;
@@ -2153,10 +2229,12 @@ function getDisplayNameOfFiberNode(node) {
2153
2229
  const ret = (0, utils_1.getMeaningfulName)(extractReactComponentName(displayName));
2154
2230
  return (0, valid_component_name_1.isValidComponentName)(ret) ? ret : null;
2155
2231
  }
2232
+ exports.getDisplayNameOfFiberNode = getDisplayNameOfFiberNode;
2156
2233
  function isFunctionalComponent(node) {
2157
2234
  const elementType = node === null || node === void 0 ? void 0 : node.elementType;
2158
2235
  return typeof elementType === 'function';
2159
2236
  }
2237
+ exports.isFunctionalComponent = isFunctionalComponent;
2160
2238
  // dom-element [from component.react] --> component.react
2161
2239
  function extractReactComponentName(displayName) {
2162
2240
  if (typeof displayName !== 'string') {
@@ -2176,6 +2254,7 @@ function extractReactComponentName(displayName) {
2176
2254
  }
2177
2255
  return name;
2178
2256
  }
2257
+ exports.extractReactComponentName = extractReactComponentName;
2179
2258
 
2180
2259
 
2181
2260
  /***/ }),
@@ -2185,7 +2264,7 @@ function extractReactComponentName(displayName) {
2185
2264
 
2186
2265
 
2187
2266
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2188
- exports.createStatusText = createStatusText;
2267
+ exports.createStatusText = void 0;
2189
2268
  const visual_utils_1 = __webpack_require__(498);
2190
2269
  function formatBytes(bytes) {
2191
2270
  if (bytes === 0)
@@ -2219,6 +2298,7 @@ function createStatusText(registerDataUpdateCallback) {
2219
2298
  });
2220
2299
  return statusWidget;
2221
2300
  }
2301
+ exports.createStatusText = createStatusText;
2222
2302
 
2223
2303
 
2224
2304
  /***/ }),
@@ -2237,11 +2317,12 @@ function createStatusText(registerDataUpdateCallback) {
2237
2317
  * @oncall memory_lab
2238
2318
  */
2239
2319
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2240
- exports.isValidComponentName = isValidComponentName;
2320
+ exports.isValidComponentName = void 0;
2241
2321
  const displayNameBlockList = new Set();
2242
2322
  function isValidComponentName(name) {
2243
2323
  return name != null && !displayNameBlockList.has(name);
2244
2324
  }
2325
+ exports.isValidComponentName = isValidComponentName;
2245
2326
 
2246
2327
 
2247
2328
  /***/ }),
@@ -2287,7 +2368,7 @@ exports.BasicExtension = BasicExtension;
2287
2368
 
2288
2369
 
2289
2370
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2290
- exports.createComponentStackPanel = createComponentStackPanel;
2371
+ exports.createComponentStackPanel = void 0;
2291
2372
  const visual_utils_1 = __webpack_require__(498);
2292
2373
  function createComponentStackPanel(registerDataUpdateCallback) {
2293
2374
  const panel = (0, visual_utils_1.createVisualizerElement)('div');
@@ -2320,12 +2401,13 @@ function createComponentStackPanel(registerDataUpdateCallback) {
2320
2401
  if (pinned) {
2321
2402
  return;
2322
2403
  }
2323
- panel.style.display = data.selectedElementId != null ? 'flex' : 'none';
2324
2404
  panel.innerHTML = '';
2325
2405
  if (data.selectedElementId == null ||
2326
2406
  !((_a = data.selectedReactComponentStack) === null || _a === void 0 ? void 0 : _a.length)) {
2407
+ panel.style.display = 'none';
2327
2408
  return;
2328
2409
  }
2410
+ panel.style.display = 'flex';
2329
2411
  const title = (0, visual_utils_1.createVisualizerElement)('div');
2330
2412
  title.textContent = 'Component Stack:';
2331
2413
  title.style.fontWeight = 'bold';
@@ -2345,6 +2427,7 @@ function createComponentStackPanel(registerDataUpdateCallback) {
2345
2427
  }, 1));
2346
2428
  return panel;
2347
2429
  }
2430
+ exports.createComponentStackPanel = createComponentStackPanel;
2348
2431
 
2349
2432
 
2350
2433
  /***/ }),
@@ -2385,7 +2468,7 @@ if (!(0, utils_1.hasRunInSession)()) {
2385
2468
 
2386
2469
 
2387
2470
  Object.defineProperty(exports, "__esModule", ({ value: true }));
2388
- exports.createToggleButton = createToggleButton;
2471
+ exports.createToggleButton = void 0;
2389
2472
  /**
2390
2473
  * Copyright (c) Meta Platforms, Inc. and affiliates.
2391
2474
  *
@@ -2436,6 +2519,7 @@ function createToggleButton(overlayDiv, hideAllRef) {
2436
2519
  });
2437
2520
  return toggleWrapper;
2438
2521
  }
2522
+ exports.createToggleButton = createToggleButton;
2439
2523
 
2440
2524
 
2441
2525
  /***/ }),