mobx-react 6.1.7 → 6.1.8
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.
- package/dist/mobx-react.umd.js +1 -1
- package/dist/mobxreact.cjs.development.js +210 -147
- package/dist/mobxreact.cjs.development.js.map +1 -1
- package/dist/mobxreact.cjs.production.min.js +1 -1
- package/dist/mobxreact.esm.js +210 -147
- package/dist/mobxreact.esm.js.map +1 -1
- package/dist/mobxreact.rn.module.js +210 -147
- package/dist/mobxreact.umd.development.js +210 -147
- package/dist/mobxreact.umd.development.js.map +1 -1
- package/dist/mobxreact.umd.production.min.js +1 -1
- package/dist/test/propTypes.test.d.ts +1 -0
- package/dist/test/utils/withConsole.d.ts +4 -1
- package/package.json +11 -10
|
@@ -10,19 +10,19 @@ var React__default = _interopDefault(React);
|
|
|
10
10
|
var reactDom = require('react-dom');
|
|
11
11
|
var mobxReactLite = require('mobx-react-lite');
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
var symbolId = 0;
|
|
14
14
|
|
|
15
15
|
function createSymbol(name) {
|
|
16
16
|
if (typeof Symbol === "function") {
|
|
17
17
|
return Symbol(name);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
-
|
|
20
|
+
var symbol = "__$mobx-react " + name + " (" + symbolId + ")";
|
|
21
21
|
symbolId++;
|
|
22
22
|
return symbol;
|
|
23
23
|
}
|
|
24
24
|
|
|
25
|
-
|
|
25
|
+
var createdSymbols = {};
|
|
26
26
|
function newSymbol(name) {
|
|
27
27
|
if (!createdSymbols[name]) {
|
|
28
28
|
createdSymbols[name] = createSymbol(name);
|
|
@@ -38,11 +38,11 @@ function shallowEqual(objA, objB) {
|
|
|
38
38
|
return false;
|
|
39
39
|
}
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
var keysA = Object.keys(objA);
|
|
42
|
+
var keysB = Object.keys(objB);
|
|
43
43
|
if (keysA.length !== keysB.length) return false;
|
|
44
44
|
|
|
45
|
-
for (
|
|
45
|
+
for (var i = 0; i < keysA.length; i++) {
|
|
46
46
|
if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {
|
|
47
47
|
return false;
|
|
48
48
|
}
|
|
@@ -61,7 +61,7 @@ function is(x, y) {
|
|
|
61
61
|
} // based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js
|
|
62
62
|
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
var hoistBlackList = {
|
|
65
65
|
$$typeof: 1,
|
|
66
66
|
render: 1,
|
|
67
67
|
compare: 1,
|
|
@@ -77,8 +77,8 @@ const hoistBlackList = {
|
|
|
77
77
|
propTypes: 1
|
|
78
78
|
};
|
|
79
79
|
function copyStaticProperties(base, target) {
|
|
80
|
-
|
|
81
|
-
Object.getOwnPropertyNames(base).forEach(key
|
|
80
|
+
var protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base));
|
|
81
|
+
Object.getOwnPropertyNames(base).forEach(function (key) {
|
|
82
82
|
if (!hoistBlackList[key] && protoProps.indexOf(key) === -1) {
|
|
83
83
|
Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key));
|
|
84
84
|
}
|
|
@@ -97,7 +97,7 @@ function setHiddenProp(target, prop, value) {
|
|
|
97
97
|
enumerable: false,
|
|
98
98
|
configurable: true,
|
|
99
99
|
writable: true,
|
|
100
|
-
value
|
|
100
|
+
value: value
|
|
101
101
|
});
|
|
102
102
|
} else {
|
|
103
103
|
target[prop] = value;
|
|
@@ -108,27 +108,33 @@ function setHiddenProp(target, prop, value) {
|
|
|
108
108
|
* and the handler provided by mobx-react
|
|
109
109
|
*/
|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
var mobxMixins =
|
|
112
112
|
/*#__PURE__*/
|
|
113
113
|
newSymbol("patchMixins");
|
|
114
|
-
|
|
114
|
+
var mobxPatchedDefinition =
|
|
115
115
|
/*#__PURE__*/
|
|
116
116
|
newSymbol("patchedDefinition");
|
|
117
117
|
|
|
118
118
|
function getMixins(target, methodName) {
|
|
119
|
-
|
|
120
|
-
|
|
119
|
+
var mixins = target[mobxMixins] = target[mobxMixins] || {};
|
|
120
|
+
var methodMixins = mixins[methodName] = mixins[methodName] || {};
|
|
121
121
|
methodMixins.locks = methodMixins.locks || 0;
|
|
122
122
|
methodMixins.methods = methodMixins.methods || [];
|
|
123
123
|
return methodMixins;
|
|
124
124
|
}
|
|
125
125
|
|
|
126
|
-
function wrapper(realMethod, mixins
|
|
126
|
+
function wrapper(realMethod, mixins) {
|
|
127
|
+
var _this = this;
|
|
128
|
+
|
|
129
|
+
for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
|
|
130
|
+
args[_key - 2] = arguments[_key];
|
|
131
|
+
}
|
|
132
|
+
|
|
127
133
|
// locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls
|
|
128
134
|
mixins.locks++;
|
|
129
135
|
|
|
130
136
|
try {
|
|
131
|
-
|
|
137
|
+
var retVal;
|
|
132
138
|
|
|
133
139
|
if (realMethod !== undefined && realMethod !== null) {
|
|
134
140
|
retVal = realMethod.apply(this, args);
|
|
@@ -139,76 +145,76 @@ function wrapper(realMethod, mixins, ...args) {
|
|
|
139
145
|
mixins.locks--;
|
|
140
146
|
|
|
141
147
|
if (mixins.locks === 0) {
|
|
142
|
-
mixins.methods.forEach(mx
|
|
143
|
-
mx.apply(
|
|
148
|
+
mixins.methods.forEach(function (mx) {
|
|
149
|
+
mx.apply(_this, args);
|
|
144
150
|
});
|
|
145
151
|
}
|
|
146
152
|
}
|
|
147
153
|
}
|
|
148
154
|
|
|
149
155
|
function wrapFunction(realMethod, mixins) {
|
|
150
|
-
|
|
151
|
-
|
|
156
|
+
var fn = function fn() {
|
|
157
|
+
for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
|
|
158
|
+
args[_key2] = arguments[_key2];
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
wrapper.call.apply(wrapper, [this, realMethod, mixins].concat(args));
|
|
152
162
|
};
|
|
153
163
|
|
|
154
164
|
return fn;
|
|
155
165
|
}
|
|
156
166
|
|
|
157
167
|
function patch(target, methodName, mixinMethod) {
|
|
158
|
-
|
|
168
|
+
var mixins = getMixins(target, methodName);
|
|
159
169
|
|
|
160
170
|
if (mixins.methods.indexOf(mixinMethod) < 0) {
|
|
161
171
|
mixins.methods.push(mixinMethod);
|
|
162
172
|
}
|
|
163
173
|
|
|
164
|
-
|
|
174
|
+
var oldDefinition = Object.getOwnPropertyDescriptor(target, methodName);
|
|
165
175
|
|
|
166
176
|
if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {
|
|
167
177
|
// already patched definition, do not repatch
|
|
168
178
|
return;
|
|
169
179
|
}
|
|
170
180
|
|
|
171
|
-
|
|
172
|
-
|
|
181
|
+
var originalMethod = target[methodName];
|
|
182
|
+
var newDefinition = createDefinition(target, methodName, oldDefinition ? oldDefinition.enumerable : undefined, mixins, originalMethod);
|
|
173
183
|
Object.defineProperty(target, methodName, newDefinition);
|
|
174
184
|
}
|
|
175
185
|
|
|
176
186
|
function createDefinition(target, methodName, enumerable, mixins, originalMethod) {
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
},
|
|
195
|
-
configurable: true,
|
|
196
|
-
enumerable: enumerable
|
|
197
|
-
};
|
|
187
|
+
var _ref;
|
|
188
|
+
|
|
189
|
+
var wrappedFunc = wrapFunction(originalMethod, mixins);
|
|
190
|
+
return _ref = {}, _ref[mobxPatchedDefinition] = true, _ref.get = function get() {
|
|
191
|
+
return wrappedFunc;
|
|
192
|
+
}, _ref.set = function set(value) {
|
|
193
|
+
if (this === target) {
|
|
194
|
+
wrappedFunc = wrapFunction(value, mixins);
|
|
195
|
+
} else {
|
|
196
|
+
// when it is an instance of the prototype/a child prototype patch that particular case again separately
|
|
197
|
+
// since we need to store separate values depending on wether it is the actual instance, the prototype, etc
|
|
198
|
+
// e.g. the method for super might not be the same as the method for the prototype which might be not the same
|
|
199
|
+
// as the method for the instance
|
|
200
|
+
var newDefinition = createDefinition(this, methodName, enumerable, mixins, value);
|
|
201
|
+
Object.defineProperty(this, methodName, newDefinition);
|
|
202
|
+
}
|
|
203
|
+
}, _ref.configurable = true, _ref.enumerable = enumerable, _ref;
|
|
198
204
|
}
|
|
199
205
|
|
|
200
|
-
|
|
201
|
-
|
|
206
|
+
var mobxAdminProperty = mobx.$mobx || "$mobx";
|
|
207
|
+
var mobxIsUnmounted =
|
|
202
208
|
/*#__PURE__*/
|
|
203
209
|
newSymbol("isUnmounted");
|
|
204
|
-
|
|
210
|
+
var skipRenderKey =
|
|
205
211
|
/*#__PURE__*/
|
|
206
212
|
newSymbol("skipRender");
|
|
207
|
-
|
|
213
|
+
var isForcingUpdateKey =
|
|
208
214
|
/*#__PURE__*/
|
|
209
215
|
newSymbol("isForcingUpdate");
|
|
210
216
|
function makeClassComponentObserver(componentClass) {
|
|
211
|
-
|
|
217
|
+
var target = componentClass.prototype;
|
|
212
218
|
if (target.componentWillReact) throw new Error("The componentWillReact life-cycle event is no longer supported");
|
|
213
219
|
|
|
214
220
|
if (componentClass["__proto__"] !== React.PureComponent) {
|
|
@@ -222,7 +228,7 @@ function makeClassComponentObserver(componentClass) {
|
|
|
222
228
|
|
|
223
229
|
makeObservableProp(target, "props");
|
|
224
230
|
makeObservableProp(target, "state");
|
|
225
|
-
|
|
231
|
+
var baseRender = target.render;
|
|
226
232
|
|
|
227
233
|
target.render = function () {
|
|
228
234
|
return makeComponentReactive.call(this, baseRender);
|
|
@@ -234,8 +240,8 @@ function makeClassComponentObserver(componentClass) {
|
|
|
234
240
|
if (this.render[mobxAdminProperty]) {
|
|
235
241
|
this.render[mobxAdminProperty].dispose();
|
|
236
242
|
} else {
|
|
237
|
-
|
|
238
|
-
console.warn(
|
|
243
|
+
var displayName = getDisplayName(this);
|
|
244
|
+
console.warn("The render function for an observer component (" + displayName + ") was modified after MobX attached. This is not supported, since the new function can't be triggered by MobX.");
|
|
239
245
|
}
|
|
240
246
|
|
|
241
247
|
this[mobxIsUnmounted] = true;
|
|
@@ -248,6 +254,8 @@ function getDisplayName(comp) {
|
|
|
248
254
|
}
|
|
249
255
|
|
|
250
256
|
function makeComponentReactive(render) {
|
|
257
|
+
var _this = this;
|
|
258
|
+
|
|
251
259
|
if (mobxReactLite.isUsingStaticRendering() === true) return render.call(this);
|
|
252
260
|
/**
|
|
253
261
|
* If props are shallowly modified, react will render anyway,
|
|
@@ -261,25 +269,25 @@ function makeComponentReactive(render) {
|
|
|
261
269
|
*/
|
|
262
270
|
|
|
263
271
|
setHiddenProp(this, isForcingUpdateKey, false);
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
272
|
+
var initialName = getDisplayName(this);
|
|
273
|
+
var baseRender = render.bind(this);
|
|
274
|
+
var isRenderingPending = false;
|
|
275
|
+
var reaction = new mobx.Reaction(initialName + ".render()", function () {
|
|
268
276
|
if (!isRenderingPending) {
|
|
269
277
|
// N.B. Getting here *before mounting* means that a component constructor has side effects (see the relevant test in misc.js)
|
|
270
278
|
// This unidiomatic React usage but React will correctly warn about this so we continue as usual
|
|
271
279
|
// See #85 / Pull #44
|
|
272
280
|
isRenderingPending = true;
|
|
273
281
|
|
|
274
|
-
if (
|
|
275
|
-
|
|
282
|
+
if (_this[mobxIsUnmounted] !== true) {
|
|
283
|
+
var hasError = true;
|
|
276
284
|
|
|
277
285
|
try {
|
|
278
|
-
setHiddenProp(
|
|
279
|
-
if (!
|
|
286
|
+
setHiddenProp(_this, isForcingUpdateKey, true);
|
|
287
|
+
if (!_this[skipRenderKey]) React.Component.prototype.forceUpdate.call(_this);
|
|
280
288
|
hasError = false;
|
|
281
289
|
} finally {
|
|
282
|
-
setHiddenProp(
|
|
290
|
+
setHiddenProp(_this, isForcingUpdateKey, false);
|
|
283
291
|
if (hasError) reaction.dispose();
|
|
284
292
|
}
|
|
285
293
|
}
|
|
@@ -291,9 +299,9 @@ function makeComponentReactive(render) {
|
|
|
291
299
|
|
|
292
300
|
function reactiveRender() {
|
|
293
301
|
isRenderingPending = false;
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
reaction.track(()
|
|
302
|
+
var exception = undefined;
|
|
303
|
+
var rendering = undefined;
|
|
304
|
+
reaction.track(function () {
|
|
297
305
|
try {
|
|
298
306
|
rendering = mobx._allowStateChanges(false, baseRender);
|
|
299
307
|
} catch (e) {
|
|
@@ -329,8 +337,8 @@ function observerSCU(nextProps, nextState) {
|
|
|
329
337
|
}
|
|
330
338
|
|
|
331
339
|
function makeObservableProp(target, propName) {
|
|
332
|
-
|
|
333
|
-
|
|
340
|
+
var valueHolderKey = newSymbol("reactProp_" + propName + "_valueHolder");
|
|
341
|
+
var atomHolderKey = newSymbol("reactProp_" + propName + "_atomHolder");
|
|
334
342
|
|
|
335
343
|
function getAtom() {
|
|
336
344
|
if (!this[atomHolderKey]) {
|
|
@@ -343,8 +351,8 @@ function makeObservableProp(target, propName) {
|
|
|
343
351
|
Object.defineProperty(target, propName, {
|
|
344
352
|
configurable: true,
|
|
345
353
|
enumerable: true,
|
|
346
|
-
get: function () {
|
|
347
|
-
|
|
354
|
+
get: function get() {
|
|
355
|
+
var prevReadState = false;
|
|
348
356
|
|
|
349
357
|
if (mobx._allowStateReadsStart && mobx._allowStateReadsEnd) {
|
|
350
358
|
prevReadState = mobx._allowStateReadsStart(true);
|
|
@@ -371,18 +379,22 @@ function makeObservableProp(target, propName) {
|
|
|
371
379
|
});
|
|
372
380
|
}
|
|
373
381
|
|
|
374
|
-
|
|
382
|
+
var hasSymbol = typeof Symbol === "function" && Symbol.for; // Using react-is had some issues (and operates on elements, not on types), see #608 / #609
|
|
375
383
|
|
|
376
|
-
|
|
384
|
+
var ReactForwardRefSymbol = hasSymbol ?
|
|
377
385
|
/*#__PURE__*/
|
|
378
386
|
Symbol.for("react.forward_ref") : typeof React.forwardRef === "function" &&
|
|
379
387
|
/*#__PURE__*/
|
|
380
|
-
React.forwardRef(props
|
|
381
|
-
|
|
388
|
+
React.forwardRef(function (props) {
|
|
389
|
+
return null;
|
|
390
|
+
})["$$typeof"];
|
|
391
|
+
var ReactMemoSymbol = hasSymbol ?
|
|
382
392
|
/*#__PURE__*/
|
|
383
393
|
Symbol.for("react.memo") : typeof React.memo === "function" &&
|
|
384
394
|
/*#__PURE__*/
|
|
385
|
-
React.memo(props
|
|
395
|
+
React.memo(function (props) {
|
|
396
|
+
return null;
|
|
397
|
+
})["$$typeof"];
|
|
386
398
|
/**
|
|
387
399
|
* Observer function / decorator
|
|
388
400
|
*/
|
|
@@ -400,10 +412,13 @@ function observer(component) {
|
|
|
400
412
|
|
|
401
413
|
|
|
402
414
|
if (ReactForwardRefSymbol && component["$$typeof"] === ReactForwardRefSymbol) {
|
|
403
|
-
|
|
415
|
+
var baseRender = component["render"];
|
|
404
416
|
if (typeof baseRender !== "function") throw new Error("render property of ForwardRef was not a function");
|
|
405
417
|
return React.forwardRef(function ObserverForwardRef() {
|
|
406
|
-
|
|
418
|
+
var args = arguments;
|
|
419
|
+
return React.createElement(mobxReactLite.Observer, null, function () {
|
|
420
|
+
return baseRender.apply(undefined, args);
|
|
421
|
+
});
|
|
407
422
|
});
|
|
408
423
|
} // Function component
|
|
409
424
|
|
|
@@ -415,24 +430,53 @@ function observer(component) {
|
|
|
415
430
|
return makeClassComponentObserver(component);
|
|
416
431
|
}
|
|
417
432
|
|
|
418
|
-
|
|
433
|
+
function _extends() {
|
|
434
|
+
_extends = Object.assign || function (target) {
|
|
435
|
+
for (var i = 1; i < arguments.length; i++) {
|
|
436
|
+
var source = arguments[i];
|
|
437
|
+
|
|
438
|
+
for (var key in source) {
|
|
439
|
+
if (Object.prototype.hasOwnProperty.call(source, key)) {
|
|
440
|
+
target[key] = source[key];
|
|
441
|
+
}
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
|
|
445
|
+
return target;
|
|
446
|
+
};
|
|
447
|
+
|
|
448
|
+
return _extends.apply(this, arguments);
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
function _objectWithoutPropertiesLoose(source, excluded) {
|
|
452
|
+
if (source == null) return {};
|
|
453
|
+
var target = {};
|
|
454
|
+
var sourceKeys = Object.keys(source);
|
|
455
|
+
var key, i;
|
|
456
|
+
|
|
457
|
+
for (i = 0; i < sourceKeys.length; i++) {
|
|
458
|
+
key = sourceKeys[i];
|
|
459
|
+
if (excluded.indexOf(key) >= 0) continue;
|
|
460
|
+
target[key] = source[key];
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
return target;
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
var MobXProviderContext =
|
|
419
467
|
/*#__PURE__*/
|
|
420
468
|
React__default.createContext({});
|
|
421
469
|
function Provider(props) {
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
...stores
|
|
429
|
-
});
|
|
430
|
-
const value = mutableProviderRef.current;
|
|
470
|
+
var children = props.children,
|
|
471
|
+
stores = _objectWithoutPropertiesLoose(props, ["children"]);
|
|
472
|
+
|
|
473
|
+
var parentValue = React__default.useContext(MobXProviderContext);
|
|
474
|
+
var mutableProviderRef = React__default.useRef(_extends({}, parentValue, {}, stores));
|
|
475
|
+
var value = mutableProviderRef.current;
|
|
431
476
|
|
|
432
477
|
{
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
}; // spread in previous state for the context based stores
|
|
478
|
+
var newValue = _extends({}, value, {}, stores); // spread in previous state for the context based stores
|
|
479
|
+
|
|
436
480
|
|
|
437
481
|
if (!shallowEqual(value, newValue)) {
|
|
438
482
|
throw new Error("MobX Provider: The set of provided stores has changed. See: https://github.com/mobxjs/mobx-react#the-set-of-provided-stores-has-changed-error.");
|
|
@@ -451,10 +495,10 @@ Provider.displayName = "MobXProvider";
|
|
|
451
495
|
|
|
452
496
|
function createStoreInjector(grabStoresFn, component, injectNames, makeReactive) {
|
|
453
497
|
// Support forward refs
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
498
|
+
var Injector = React__default.forwardRef(function (props, ref) {
|
|
499
|
+
var newProps = _extends({}, props);
|
|
500
|
+
|
|
501
|
+
var context = React__default.useContext(MobXProviderContext);
|
|
458
502
|
Object.assign(newProps, grabStoresFn(context || {}, newProps) || {});
|
|
459
503
|
|
|
460
504
|
if (ref) {
|
|
@@ -474,8 +518,8 @@ function createStoreInjector(grabStoresFn, component, injectNames, makeReactive)
|
|
|
474
518
|
}
|
|
475
519
|
|
|
476
520
|
function getInjectName(component, injectNames) {
|
|
477
|
-
|
|
478
|
-
|
|
521
|
+
var displayName;
|
|
522
|
+
var componentName = component.displayName || component.name || component.constructor && component.constructor.name || "Component";
|
|
479
523
|
if (injectNames) displayName = "inject-with-" + injectNames + "(" + componentName + ")";else displayName = "inject(" + componentName + ")";
|
|
480
524
|
return displayName;
|
|
481
525
|
}
|
|
@@ -499,41 +543,52 @@ function grabStoresByName(storeNames) {
|
|
|
499
543
|
*/
|
|
500
544
|
|
|
501
545
|
|
|
502
|
-
function inject(
|
|
503
|
-
|
|
504
|
-
|
|
546
|
+
function inject() {
|
|
547
|
+
for (var _len = arguments.length, storeNames = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
548
|
+
storeNames[_key] = arguments[_key];
|
|
549
|
+
}
|
|
550
|
+
|
|
505
551
|
if (typeof arguments[0] === "function") {
|
|
506
|
-
|
|
507
|
-
return
|
|
552
|
+
var grabStoresFn = arguments[0];
|
|
553
|
+
return function (componentClass) {
|
|
554
|
+
return createStoreInjector(grabStoresFn, componentClass, grabStoresFn.name, true);
|
|
555
|
+
};
|
|
508
556
|
} else {
|
|
509
|
-
return
|
|
557
|
+
return function (componentClass) {
|
|
558
|
+
return createStoreInjector(grabStoresByName(storeNames), componentClass, storeNames.join("-"), false);
|
|
559
|
+
};
|
|
510
560
|
}
|
|
511
561
|
}
|
|
512
562
|
|
|
513
|
-
|
|
563
|
+
var protoStoreKey =
|
|
514
564
|
/*#__PURE__*/
|
|
515
565
|
newSymbol("disposeOnUnmountProto");
|
|
516
|
-
|
|
566
|
+
var instStoreKey =
|
|
517
567
|
/*#__PURE__*/
|
|
518
568
|
newSymbol("disposeOnUnmountInst");
|
|
519
569
|
|
|
520
570
|
function runDisposersOnWillUnmount() {
|
|
521
|
-
|
|
522
|
-
|
|
571
|
+
var _this = this;
|
|
572
|
+
[].concat(this[protoStoreKey] || [], this[instStoreKey] || []).forEach(function (propKeyOrFunction) {
|
|
573
|
+
var prop = typeof propKeyOrFunction === "string" ? _this[propKeyOrFunction] : propKeyOrFunction;
|
|
523
574
|
|
|
524
575
|
if (prop !== undefined && prop !== null) {
|
|
525
|
-
if (Array.isArray(prop)) prop.map(
|
|
576
|
+
if (Array.isArray(prop)) prop.map(function (f) {
|
|
577
|
+
return f();
|
|
578
|
+
});else prop();
|
|
526
579
|
}
|
|
527
580
|
});
|
|
528
581
|
}
|
|
529
582
|
|
|
530
583
|
function disposeOnUnmount(target, propertyKeyOrFunction) {
|
|
531
584
|
if (Array.isArray(propertyKeyOrFunction)) {
|
|
532
|
-
return propertyKeyOrFunction.map(
|
|
585
|
+
return propertyKeyOrFunction.map(function (fn) {
|
|
586
|
+
return disposeOnUnmount(target, fn);
|
|
587
|
+
});
|
|
533
588
|
}
|
|
534
589
|
|
|
535
|
-
|
|
536
|
-
|
|
590
|
+
var c = Object.getPrototypeOf(target).constructor || Object.getPrototypeOf(target.constructor);
|
|
591
|
+
var c2 = Object.getPrototypeOf(target.constructor);
|
|
537
592
|
|
|
538
593
|
if (!(c === React__default.Component || c === React__default.PureComponent || c2 === React__default.Component || c2 === React__default.PureComponent)) {
|
|
539
594
|
throw new Error("[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.");
|
|
@@ -544,10 +599,10 @@ function disposeOnUnmount(target, propertyKeyOrFunction) {
|
|
|
544
599
|
} // decorator's target is the prototype, so it doesn't have any instance properties like props
|
|
545
600
|
|
|
546
601
|
|
|
547
|
-
|
|
602
|
+
var isDecorator = typeof propertyKeyOrFunction === "string"; // add property key / function we want run (disposed) to the store
|
|
548
603
|
|
|
549
|
-
|
|
550
|
-
|
|
604
|
+
var componentWasAlreadyModified = !!target[protoStoreKey] || !!target[instStoreKey];
|
|
605
|
+
var store = isDecorator ? // decorators are added to the prototype store
|
|
551
606
|
target[protoStoreKey] || (target[protoStoreKey] = []) : // functions are added to the instance store
|
|
552
607
|
target[instStoreKey] || (target[instStoreKey] = []);
|
|
553
608
|
store.push(propertyKeyOrFunction); // tweak the component class componentWillUnmount if not done already
|
|
@@ -563,26 +618,30 @@ function disposeOnUnmount(target, propertyKeyOrFunction) {
|
|
|
563
618
|
}
|
|
564
619
|
|
|
565
620
|
function createChainableTypeChecker(validator) {
|
|
566
|
-
function checkType(isRequired, props, propName, componentName, location, propFullName
|
|
567
|
-
|
|
621
|
+
function checkType(isRequired, props, propName, componentName, location, propFullName) {
|
|
622
|
+
for (var _len = arguments.length, rest = new Array(_len > 6 ? _len - 6 : 0), _key = 6; _key < _len; _key++) {
|
|
623
|
+
rest[_key - 6] = arguments[_key];
|
|
624
|
+
}
|
|
625
|
+
|
|
626
|
+
return mobx.untracked(function () {
|
|
568
627
|
componentName = componentName || "<<anonymous>>";
|
|
569
628
|
propFullName = propFullName || propName;
|
|
570
629
|
|
|
571
630
|
if (props[propName] == null) {
|
|
572
631
|
if (isRequired) {
|
|
573
|
-
|
|
632
|
+
var actual = props[propName] === null ? "null" : "undefined";
|
|
574
633
|
return new Error("The " + location + " `" + propFullName + "` is marked as required " + "in `" + componentName + "`, but its value is `" + actual + "`.");
|
|
575
634
|
}
|
|
576
635
|
|
|
577
636
|
return null;
|
|
578
637
|
} else {
|
|
579
638
|
// @ts-ignore rest arg is necessary for some React internals - fails tests otherwise
|
|
580
|
-
return validator(props, propName, componentName, location, propFullName
|
|
639
|
+
return validator.apply(void 0, [props, propName, componentName, location, propFullName].concat(rest));
|
|
581
640
|
}
|
|
582
641
|
});
|
|
583
642
|
}
|
|
584
643
|
|
|
585
|
-
|
|
644
|
+
var chainedCheckType = checkType.bind(null, false); // Add isRequired to satisfy Requirable
|
|
586
645
|
|
|
587
646
|
chainedCheckType.isRequired = checkType.bind(null, true);
|
|
588
647
|
return chainedCheckType;
|
|
@@ -610,7 +669,7 @@ function isSymbol(propType, propValue) {
|
|
|
610
669
|
|
|
611
670
|
|
|
612
671
|
function getPropType(propValue) {
|
|
613
|
-
|
|
672
|
+
var propType = typeof propValue;
|
|
614
673
|
|
|
615
674
|
if (Array.isArray(propValue)) {
|
|
616
675
|
return "array";
|
|
@@ -633,7 +692,7 @@ function getPropType(propValue) {
|
|
|
633
692
|
|
|
634
693
|
|
|
635
694
|
function getPreciseType(propValue) {
|
|
636
|
-
|
|
695
|
+
var propType = getPropType(propValue);
|
|
637
696
|
|
|
638
697
|
if (propType === "object") {
|
|
639
698
|
if (propValue instanceof Date) {
|
|
@@ -647,13 +706,13 @@ function getPreciseType(propValue) {
|
|
|
647
706
|
}
|
|
648
707
|
|
|
649
708
|
function createObservableTypeCheckerCreator(allowNativeType, mobxType) {
|
|
650
|
-
return createChainableTypeChecker((props, propName, componentName, location, propFullName)
|
|
651
|
-
return mobx.untracked(()
|
|
709
|
+
return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {
|
|
710
|
+
return mobx.untracked(function () {
|
|
652
711
|
if (allowNativeType) {
|
|
653
712
|
if (getPropType(props[propName]) === mobxType.toLowerCase()) return null;
|
|
654
713
|
}
|
|
655
714
|
|
|
656
|
-
|
|
715
|
+
var mobxChecker;
|
|
657
716
|
|
|
658
717
|
switch (mobxType) {
|
|
659
718
|
case "Array":
|
|
@@ -669,14 +728,14 @@ function createObservableTypeCheckerCreator(allowNativeType, mobxType) {
|
|
|
669
728
|
break;
|
|
670
729
|
|
|
671
730
|
default:
|
|
672
|
-
throw new Error(
|
|
731
|
+
throw new Error("Unexpected mobxType: " + mobxType);
|
|
673
732
|
}
|
|
674
733
|
|
|
675
|
-
|
|
734
|
+
var propValue = props[propName];
|
|
676
735
|
|
|
677
736
|
if (!mobxChecker(propValue)) {
|
|
678
|
-
|
|
679
|
-
|
|
737
|
+
var preciseType = getPreciseType(propValue);
|
|
738
|
+
var nativeTypeExpectationMessage = allowNativeType ? " or javascript `" + mobxType.toLowerCase() + "`" : "";
|
|
680
739
|
return new Error("Invalid prop `" + propFullName + "` of type `" + preciseType + "` supplied to" + " `" + componentName + "`, expected `mobx.Observable" + mobxType + "`" + nativeTypeExpectationMessage + ".");
|
|
681
740
|
}
|
|
682
741
|
|
|
@@ -686,17 +745,21 @@ function createObservableTypeCheckerCreator(allowNativeType, mobxType) {
|
|
|
686
745
|
}
|
|
687
746
|
|
|
688
747
|
function createObservableArrayOfTypeChecker(allowNativeType, typeChecker) {
|
|
689
|
-
return createChainableTypeChecker((props, propName, componentName, location, propFullName
|
|
690
|
-
|
|
748
|
+
return createChainableTypeChecker(function (props, propName, componentName, location, propFullName) {
|
|
749
|
+
for (var _len2 = arguments.length, rest = new Array(_len2 > 5 ? _len2 - 5 : 0), _key2 = 5; _key2 < _len2; _key2++) {
|
|
750
|
+
rest[_key2 - 5] = arguments[_key2];
|
|
751
|
+
}
|
|
752
|
+
|
|
753
|
+
return mobx.untracked(function () {
|
|
691
754
|
if (typeof typeChecker !== "function") {
|
|
692
755
|
return new Error("Property `" + propFullName + "` of component `" + componentName + "` has " + "invalid PropType notation.");
|
|
693
756
|
} else {
|
|
694
|
-
|
|
757
|
+
var error = createObservableTypeCheckerCreator(allowNativeType, "Array")(props, propName, componentName, location, propFullName);
|
|
695
758
|
if (error instanceof Error) return error;
|
|
696
|
-
|
|
759
|
+
var propValue = props[propName];
|
|
697
760
|
|
|
698
|
-
for (
|
|
699
|
-
error = typeChecker(propValue, i, componentName, location, propFullName + "[" + i + "]"
|
|
761
|
+
for (var i = 0; i < propValue.length; i++) {
|
|
762
|
+
error = typeChecker.apply(void 0, [propValue, i, componentName, location, propFullName + "[" + i + "]"].concat(rest));
|
|
700
763
|
if (error instanceof Error) return error;
|
|
701
764
|
}
|
|
702
765
|
|
|
@@ -706,35 +769,35 @@ function createObservableArrayOfTypeChecker(allowNativeType, typeChecker) {
|
|
|
706
769
|
});
|
|
707
770
|
}
|
|
708
771
|
|
|
709
|
-
|
|
772
|
+
var observableArray =
|
|
710
773
|
/*#__PURE__*/
|
|
711
774
|
createObservableTypeCheckerCreator(false, "Array");
|
|
712
|
-
|
|
775
|
+
var observableArrayOf =
|
|
713
776
|
/*#__PURE__*/
|
|
714
777
|
createObservableArrayOfTypeChecker.bind(null, false);
|
|
715
|
-
|
|
778
|
+
var observableMap =
|
|
716
779
|
/*#__PURE__*/
|
|
717
780
|
createObservableTypeCheckerCreator(false, "Map");
|
|
718
|
-
|
|
781
|
+
var observableObject =
|
|
719
782
|
/*#__PURE__*/
|
|
720
783
|
createObservableTypeCheckerCreator(false, "Object");
|
|
721
|
-
|
|
784
|
+
var arrayOrObservableArray =
|
|
722
785
|
/*#__PURE__*/
|
|
723
786
|
createObservableTypeCheckerCreator(true, "Array");
|
|
724
|
-
|
|
787
|
+
var arrayOrObservableArrayOf =
|
|
725
788
|
/*#__PURE__*/
|
|
726
789
|
createObservableArrayOfTypeChecker.bind(null, true);
|
|
727
|
-
|
|
790
|
+
var objectOrObservableObject =
|
|
728
791
|
/*#__PURE__*/
|
|
729
792
|
createObservableTypeCheckerCreator(true, "Object");
|
|
730
|
-
|
|
731
|
-
observableArray,
|
|
732
|
-
observableArrayOf,
|
|
733
|
-
observableMap,
|
|
734
|
-
observableObject,
|
|
735
|
-
arrayOrObservableArray,
|
|
736
|
-
arrayOrObservableArrayOf,
|
|
737
|
-
objectOrObservableObject
|
|
793
|
+
var PropTypes = {
|
|
794
|
+
observableArray: observableArray,
|
|
795
|
+
observableArrayOf: observableArrayOf,
|
|
796
|
+
observableMap: observableMap,
|
|
797
|
+
observableObject: observableObject,
|
|
798
|
+
arrayOrObservableArray: arrayOrObservableArray,
|
|
799
|
+
arrayOrObservableArrayOf: arrayOrObservableArrayOf,
|
|
800
|
+
objectOrObservableObject: objectOrObservableObject
|
|
738
801
|
};
|
|
739
802
|
|
|
740
803
|
if (!React.Component) throw new Error("mobx-react requires React to be available");
|