prepack
Version:
Execute a JS bundle, serialize global state and side effects to a snapshot that can be quickly restored.
63 lines (47 loc) • 2.24 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.ReactElementSet = void 0;
var _realm = require("../realm.js");
var _index = require("../values/index.js");
var _invariant = _interopRequireDefault(require("../invariant.js"));
var _ReactEquivalenceSet = require("./ReactEquivalenceSet.js");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
class ReactElementSet {
constructor(realm, reactEquivalenceSet) {
this.realm = realm;
this.reactEquivalenceSet = reactEquivalenceSet;
}
add(reactElement, visitedValues) {
if (!visitedValues) visitedValues = new Set();
let reactEquivalenceSet = this.reactEquivalenceSet;
let currentMap = reactEquivalenceSet.reactElementRoot; // type
currentMap = reactEquivalenceSet.getKey("type", currentMap, visitedValues);
let result = reactEquivalenceSet.getEquivalentPropertyValue(reactElement, "type", currentMap, visitedValues);
currentMap = result.map; // key
currentMap = reactEquivalenceSet.getKey("key", currentMap, visitedValues);
result = reactEquivalenceSet.getEquivalentPropertyValue(reactElement, "key", currentMap, visitedValues);
currentMap = result.map; // ref
currentMap = reactEquivalenceSet.getKey("ref", currentMap, visitedValues);
result = reactEquivalenceSet.getEquivalentPropertyValue(reactElement, "ref", currentMap, visitedValues);
currentMap = result.map; // props
currentMap = reactEquivalenceSet.getKey("props", currentMap, visitedValues);
result = reactEquivalenceSet.getEquivalentPropertyValue(reactElement, "props", currentMap, visitedValues);
if (result.value === null) {
result.value = reactElement;
}
(0, _invariant.default)(result.value instanceof _index.ObjectValue);
return result.value;
}
}
exports.ReactElementSet = ReactElementSet;
//# sourceMappingURL=ReactElementSet.js.map