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