UNPKG

2.24 kBJavaScriptView Raw
1"use strict";
2
3Object.defineProperty(exports, "__esModule", {
4 value: true
5});
6exports.ReactPropsSet = void 0;
7
8var _realm = require("../realm.js");
9
10var _index = require("../values/index.js");
11
12var _invariant = _interopRequireDefault(require("../invariant.js"));
13
14var _ReactEquivalenceSet = require("./ReactEquivalenceSet.js");
15
16function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
17
18/**
19 * Copyright (c) 2017-present, Facebook, Inc.
20 * All rights reserved.
21 *
22 * This source code is licensed under the BSD-style license found in the
23 * LICENSE file in the root directory of this source tree. An additional grant
24 * of patent rights can be found in the PATENTS file in the same directory.
25 */
26class ReactPropsSet {
27 constructor(realm, reactEquivalenceSet) {
28 this.realm = realm;
29 this.reactEquivalenceSet = reactEquivalenceSet;
30 }
31
32 add(props, visitedValues) {
33 if (!visitedValues) visitedValues = new Set();
34 let reactEquivalenceSet = this.reactEquivalenceSet;
35 let currentMap = reactEquivalenceSet.reactPropsRoot;
36 let result;
37
38 for (let [propName] of props.properties) {
39 currentMap = reactEquivalenceSet.getKey(propName, currentMap, visitedValues);
40 result = reactEquivalenceSet.getEquivalentPropertyValue(props, propName, currentMap, visitedValues);
41 currentMap = result.map;
42 }
43
44 let temporalAlias = props.temporalAlias;
45
46 if (temporalAlias !== undefined) {
47 currentMap = reactEquivalenceSet.getKey(_ReactEquivalenceSet.temporalAliasSymbol, currentMap, visitedValues);
48 result = reactEquivalenceSet.getTemporalAliasValue(temporalAlias, currentMap, visitedValues);
49 currentMap = result.map;
50 }
51
52 if (result === undefined) {
53 // If we have a temporalAlias, we can never return an empty object
54 if (temporalAlias === undefined && this.realm.react.emptyObject !== undefined) {
55 return this.realm.react.emptyObject;
56 }
57
58 return props;
59 }
60
61 if (result.value === null) {
62 result.value = props;
63 }
64
65 (0, _invariant.default)(result.value instanceof _index.ObjectValue);
66 return result.value;
67 }
68
69}
70
71exports.ReactPropsSet = ReactPropsSet;
72//# sourceMappingURL=ReactPropsSet.js.map
\No newline at end of file