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