mobx-react 5.3.6 → 5.4.3
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/.browserlistrc +6 -6
- package/.editorconfig +6 -6
- package/.prettierrc +4 -4
- package/.travis.yml +9 -9
- package/CHANGELOG.md +518 -505
- package/LICENSE +21 -21
- package/README.md +517 -515
- package/custom.d.ts +140 -140
- package/custom.js +91 -66
- package/custom.module.js +88 -63
- package/empty.js +3 -3
- package/index.d.ts +140 -140
- package/index.js +91 -66
- package/index.min.js +1 -1
- package/index.module.js +88 -63
- package/native.d.ts +140 -140
- package/native.js +88 -63
- package/package.json +7 -5
- package/yarn.lock +5886 -5863
package/index.module.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import React__default, { Component, createElement, PureComponent, Children } from 'react';
|
|
2
1
|
import { isObservableArray, isObservableObject, isObservableMap, untracked, createAtom, Reaction, _allowStateChanges, $mobx, spy, configure, getDebugName } from 'mobx';
|
|
2
|
+
import React__default, { Component, createElement, PureComponent, forwardRef, Children } from 'react';
|
|
3
3
|
import { findDOMNode, unstable_batchedUpdates } from 'react-dom';
|
|
4
4
|
|
|
5
5
|
function _typeof(obj) {
|
|
@@ -112,33 +112,35 @@ function createCommonjsModule(fn, module) {
|
|
|
112
112
|
|
|
113
113
|
var reactIs_production_min = createCommonjsModule(function (module, exports) {
|
|
114
114
|
Object.defineProperty(exports,"__esModule",{value:!0});
|
|
115
|
-
var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.forward_ref"):60112,
|
|
116
|
-
function
|
|
117
|
-
exports.isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===
|
|
118
|
-
exports.isForwardRef=function(a){return
|
|
115
|
+
var b="function"===typeof Symbol&&Symbol.for,c=b?Symbol.for("react.element"):60103,d=b?Symbol.for("react.portal"):60106,e=b?Symbol.for("react.fragment"):60107,f=b?Symbol.for("react.strict_mode"):60108,g=b?Symbol.for("react.profiler"):60114,h=b?Symbol.for("react.provider"):60109,k=b?Symbol.for("react.context"):60110,l=b?Symbol.for("react.async_mode"):60111,m=b?Symbol.for("react.concurrent_mode"):60111,n=b?Symbol.for("react.forward_ref"):60112,p=b?Symbol.for("react.suspense"):60113,r=b?Symbol.for("react.memo"):
|
|
116
|
+
60115,t=b?Symbol.for("react.lazy"):60116;function u(a){if("object"===typeof a&&null!==a){var q=a.$$typeof;switch(q){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case h:return a;default:return q}}case d:return q}}}function v(a){return u(a)===m}exports.typeOf=u;exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;
|
|
117
|
+
exports.Profiler=g;exports.Portal=d;exports.StrictMode=f;exports.isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===m||a===g||a===f||a===p||"object"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n)};exports.isAsyncMode=function(a){return v(a)||u(a)===l};exports.isConcurrentMode=v;exports.isContextConsumer=function(a){return u(a)===k};exports.isContextProvider=function(a){return u(a)===h};
|
|
118
|
+
exports.isElement=function(a){return "object"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return u(a)===n};exports.isFragment=function(a){return u(a)===e};exports.isProfiler=function(a){return u(a)===g};exports.isPortal=function(a){return u(a)===d};exports.isStrictMode=function(a){return u(a)===f};
|
|
119
119
|
});
|
|
120
120
|
|
|
121
121
|
unwrapExports(reactIs_production_min);
|
|
122
122
|
var reactIs_production_min_1 = reactIs_production_min.typeOf;
|
|
123
123
|
var reactIs_production_min_2 = reactIs_production_min.AsyncMode;
|
|
124
|
-
var reactIs_production_min_3 = reactIs_production_min.
|
|
125
|
-
var reactIs_production_min_4 = reactIs_production_min.
|
|
126
|
-
var reactIs_production_min_5 = reactIs_production_min.
|
|
127
|
-
var reactIs_production_min_6 = reactIs_production_min.
|
|
128
|
-
var reactIs_production_min_7 = reactIs_production_min.
|
|
129
|
-
var reactIs_production_min_8 = reactIs_production_min.
|
|
130
|
-
var reactIs_production_min_9 = reactIs_production_min.
|
|
131
|
-
var reactIs_production_min_10 = reactIs_production_min.
|
|
132
|
-
var reactIs_production_min_11 = reactIs_production_min.
|
|
133
|
-
var reactIs_production_min_12 = reactIs_production_min.
|
|
134
|
-
var reactIs_production_min_13 = reactIs_production_min.
|
|
135
|
-
var reactIs_production_min_14 = reactIs_production_min.
|
|
136
|
-
var reactIs_production_min_15 = reactIs_production_min.
|
|
137
|
-
var reactIs_production_min_16 = reactIs_production_min.
|
|
138
|
-
var reactIs_production_min_17 = reactIs_production_min.
|
|
139
|
-
var reactIs_production_min_18 = reactIs_production_min.
|
|
140
|
-
var reactIs_production_min_19 = reactIs_production_min.
|
|
141
|
-
var reactIs_production_min_20 = reactIs_production_min.
|
|
124
|
+
var reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;
|
|
125
|
+
var reactIs_production_min_4 = reactIs_production_min.ContextConsumer;
|
|
126
|
+
var reactIs_production_min_5 = reactIs_production_min.ContextProvider;
|
|
127
|
+
var reactIs_production_min_6 = reactIs_production_min.Element;
|
|
128
|
+
var reactIs_production_min_7 = reactIs_production_min.ForwardRef;
|
|
129
|
+
var reactIs_production_min_8 = reactIs_production_min.Fragment;
|
|
130
|
+
var reactIs_production_min_9 = reactIs_production_min.Profiler;
|
|
131
|
+
var reactIs_production_min_10 = reactIs_production_min.Portal;
|
|
132
|
+
var reactIs_production_min_11 = reactIs_production_min.StrictMode;
|
|
133
|
+
var reactIs_production_min_12 = reactIs_production_min.isValidElementType;
|
|
134
|
+
var reactIs_production_min_13 = reactIs_production_min.isAsyncMode;
|
|
135
|
+
var reactIs_production_min_14 = reactIs_production_min.isConcurrentMode;
|
|
136
|
+
var reactIs_production_min_15 = reactIs_production_min.isContextConsumer;
|
|
137
|
+
var reactIs_production_min_16 = reactIs_production_min.isContextProvider;
|
|
138
|
+
var reactIs_production_min_17 = reactIs_production_min.isElement;
|
|
139
|
+
var reactIs_production_min_18 = reactIs_production_min.isForwardRef;
|
|
140
|
+
var reactIs_production_min_19 = reactIs_production_min.isFragment;
|
|
141
|
+
var reactIs_production_min_20 = reactIs_production_min.isProfiler;
|
|
142
|
+
var reactIs_production_min_21 = reactIs_production_min.isPortal;
|
|
143
|
+
var reactIs_production_min_22 = reactIs_production_min.isStrictMode;
|
|
142
144
|
|
|
143
145
|
var reactIs = createCommonjsModule(function (module) {
|
|
144
146
|
|
|
@@ -147,22 +149,19 @@ var reactIs = createCommonjsModule(function (module) {
|
|
|
147
149
|
}
|
|
148
150
|
});
|
|
149
151
|
|
|
150
|
-
var _ReactIs$ForwardRef;
|
|
151
|
-
|
|
152
|
-
function _defineProperty$1(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
153
|
-
|
|
154
152
|
/**
|
|
155
153
|
* Copyright 2015, Yahoo! Inc.
|
|
156
154
|
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
|
|
157
155
|
*/
|
|
158
156
|
|
|
159
|
-
|
|
160
157
|
var REACT_STATICS = {
|
|
161
158
|
childContextTypes: true,
|
|
159
|
+
contextType: true,
|
|
162
160
|
contextTypes: true,
|
|
163
161
|
defaultProps: true,
|
|
164
162
|
displayName: true,
|
|
165
163
|
getDefaultProps: true,
|
|
164
|
+
getDerivedStateFromError: true,
|
|
166
165
|
getDerivedStateFromProps: true,
|
|
167
166
|
mixins: true,
|
|
168
167
|
propTypes: true,
|
|
@@ -179,7 +178,16 @@ var KNOWN_STATICS = {
|
|
|
179
178
|
arity: true
|
|
180
179
|
};
|
|
181
180
|
|
|
182
|
-
var
|
|
181
|
+
var FORWARD_REF_STATICS = {
|
|
182
|
+
'$$typeof': true,
|
|
183
|
+
render: true,
|
|
184
|
+
defaultProps: true,
|
|
185
|
+
displayName: true,
|
|
186
|
+
propTypes: true
|
|
187
|
+
};
|
|
188
|
+
|
|
189
|
+
var TYPE_STATICS = {};
|
|
190
|
+
TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
|
|
183
191
|
|
|
184
192
|
var defineProperty = Object.defineProperty;
|
|
185
193
|
var getOwnPropertyNames = Object.getOwnPropertyNames;
|
|
@@ -563,8 +571,8 @@ var proxiedInjectorProps = {
|
|
|
563
571
|
configurable: true,
|
|
564
572
|
enumerable: true
|
|
565
573
|
}
|
|
566
|
-
/**
|
|
567
|
-
* Store Injection
|
|
574
|
+
/**
|
|
575
|
+
* Store Injection
|
|
568
576
|
*/
|
|
569
577
|
|
|
570
578
|
};
|
|
@@ -648,11 +656,11 @@ function grabStoresByName(storeNames) {
|
|
|
648
656
|
return nextProps;
|
|
649
657
|
};
|
|
650
658
|
}
|
|
651
|
-
/**
|
|
652
|
-
* higher order component that injects stores to a child.
|
|
653
|
-
* takes either a varargs list of strings, which are stores read from the context,
|
|
654
|
-
* or a function that manually maps the available stores from the context to props:
|
|
655
|
-
* storesToProps(mobxStores, props, context) => newProps
|
|
659
|
+
/**
|
|
660
|
+
* higher order component that injects stores to a child.
|
|
661
|
+
* takes either a varargs list of strings, which are stores read from the context,
|
|
662
|
+
* or a function that manually maps the available stores from the context to props:
|
|
663
|
+
* storesToProps(mobxStores, props, context) => newProps
|
|
656
664
|
*/
|
|
657
665
|
|
|
658
666
|
|
|
@@ -690,8 +698,8 @@ function inject()
|
|
|
690
698
|
|
|
691
699
|
var mobxAdminProperty = $mobx || "$mobx";
|
|
692
700
|
var mobxIsUnmounted = newSymbol("isUnmounted");
|
|
693
|
-
/**
|
|
694
|
-
* dev tool support
|
|
701
|
+
/**
|
|
702
|
+
* dev tool support
|
|
695
703
|
*/
|
|
696
704
|
|
|
697
705
|
var isDevtoolsEnabled = false;
|
|
@@ -701,12 +709,14 @@ var warnedAboutObserverInjectDeprecation = false; // WeakMap<Node, Object>;
|
|
|
701
709
|
var componentByNodeRegistry = typeof WeakMap !== "undefined" ? new WeakMap() : undefined;
|
|
702
710
|
var renderReporter = new EventEmitter();
|
|
703
711
|
var skipRenderKey = newSymbol("skipRender");
|
|
704
|
-
var isForcingUpdateKey = newSymbol("isForcingUpdate");
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
*
|
|
709
|
-
* @param
|
|
712
|
+
var isForcingUpdateKey = newSymbol("isForcingUpdate"); // Using react-is had some issues (and operates on elements, not on types), see #608 / #609
|
|
713
|
+
|
|
714
|
+
var ReactForwardRefSymbol = typeof forwardRef === "function" && forwardRef(function (_props, _ref) {})["$$typeof"];
|
|
715
|
+
/**
|
|
716
|
+
* Helper to set `prop` to `this` as non-enumerable (hidden prop)
|
|
717
|
+
* @param target
|
|
718
|
+
* @param prop
|
|
719
|
+
* @param value
|
|
710
720
|
*/
|
|
711
721
|
|
|
712
722
|
function setHiddenProp(target, prop, value) {
|
|
@@ -756,13 +766,13 @@ function trackComponents() {
|
|
|
756
766
|
function useStaticRendering(useStaticRendering) {
|
|
757
767
|
isUsingStaticRendering = useStaticRendering;
|
|
758
768
|
}
|
|
759
|
-
/**
|
|
760
|
-
* Errors reporter
|
|
769
|
+
/**
|
|
770
|
+
* Errors reporter
|
|
761
771
|
*/
|
|
762
772
|
|
|
763
773
|
var errorsReporter = new EventEmitter();
|
|
764
|
-
/**
|
|
765
|
-
* Utilities
|
|
774
|
+
/**
|
|
775
|
+
* Utilities
|
|
766
776
|
*/
|
|
767
777
|
|
|
768
778
|
function patch$1(target, funcName) {
|
|
@@ -837,15 +847,15 @@ function makeComponentReactive(render) {
|
|
|
837
847
|
|
|
838
848
|
var initialName = this.displayName || this.name || this.constructor && (this.constructor.displayName || this.constructor.name) || "<component>";
|
|
839
849
|
var rootNodeID = this._reactInternalInstance && this._reactInternalInstance._rootNodeID || this._reactInternalInstance && this._reactInternalInstance._debugID || this._reactInternalFiber && this._reactInternalFiber._debugID;
|
|
840
|
-
/**
|
|
841
|
-
* If props are shallowly modified, react will render anyway,
|
|
842
|
-
* so atom.reportChanged() should not result in yet another re-render
|
|
850
|
+
/**
|
|
851
|
+
* If props are shallowly modified, react will render anyway,
|
|
852
|
+
* so atom.reportChanged() should not result in yet another re-render
|
|
843
853
|
*/
|
|
844
854
|
|
|
845
855
|
setHiddenProp(this, skipRenderKey, false);
|
|
846
|
-
/**
|
|
847
|
-
* forceUpdate will re-assign this.props. We don't want that to cause a loop,
|
|
848
|
-
* so detect these changes
|
|
856
|
+
/**
|
|
857
|
+
* forceUpdate will re-assign this.props. We don't want that to cause a loop,
|
|
858
|
+
* so detect these changes
|
|
849
859
|
*/
|
|
850
860
|
|
|
851
861
|
setHiddenProp(this, isForcingUpdateKey, false); // wire up reactive render
|
|
@@ -863,7 +873,7 @@ function makeComponentReactive(render) {
|
|
|
863
873
|
if (_this2[mobxIsUnmounted] !== true) {
|
|
864
874
|
// If we are unmounted at this point, componentWillReact() had a side effect causing the component to unmounted
|
|
865
875
|
// TODO: remove this check? Then react will properly warn about the fact that this should not happen? See #73
|
|
866
|
-
// However, people also claim this
|
|
876
|
+
// However, people also claim this might happen during unit tests..
|
|
867
877
|
var hasError = true;
|
|
868
878
|
|
|
869
879
|
try {
|
|
@@ -882,8 +892,8 @@ function makeComponentReactive(render) {
|
|
|
882
892
|
this.render = reactiveRender;
|
|
883
893
|
return reactiveRender.call(this);
|
|
884
894
|
}
|
|
885
|
-
/**
|
|
886
|
-
* ReactiveMixin
|
|
895
|
+
/**
|
|
896
|
+
* ReactiveMixin
|
|
887
897
|
*/
|
|
888
898
|
|
|
889
899
|
|
|
@@ -966,8 +976,8 @@ function makeObservableProp(target, propName) {
|
|
|
966
976
|
}
|
|
967
977
|
});
|
|
968
978
|
}
|
|
969
|
-
/**
|
|
970
|
-
* Observer function / decorator
|
|
979
|
+
/**
|
|
980
|
+
* Observer function / decorator
|
|
971
981
|
*/
|
|
972
982
|
|
|
973
983
|
|
|
@@ -1002,6 +1012,21 @@ function observer(arg1, arg2) {
|
|
|
1002
1012
|
|
|
1003
1013
|
if (componentClass.__proto__ === PureComponent) {
|
|
1004
1014
|
console.warn("Mobx observer: You are using 'observer' on React.PureComponent. These two achieve two opposite goals and should not be used together");
|
|
1015
|
+
} // Unwrap forward refs into `<Observer>` component
|
|
1016
|
+
// we need to unwrap the render, because it is the inner render that needs to be tracked,
|
|
1017
|
+
// not the ForwardRef HoC
|
|
1018
|
+
|
|
1019
|
+
|
|
1020
|
+
if (ReactForwardRefSymbol && componentClass["$$typeof"] === ReactForwardRefSymbol) {
|
|
1021
|
+
var _baseRender = componentClass.render;
|
|
1022
|
+
if (typeof _baseRender !== "function") throw new Error("render property of ForwardRef was not a function"); // TODO: do we need to hoist statics from baseRender to the forward ref?
|
|
1023
|
+
|
|
1024
|
+
return forwardRef(function ObserverForwardRef() {
|
|
1025
|
+
var _arguments = arguments;
|
|
1026
|
+
return React__default.createElement(Observer, null, function () {
|
|
1027
|
+
return _baseRender.apply(undefined, _arguments);
|
|
1028
|
+
});
|
|
1029
|
+
});
|
|
1005
1030
|
} // Stateless function component:
|
|
1006
1031
|
// If it is function but doesn't seem to be a react class constructor,
|
|
1007
1032
|
// wrap it to a react class automatically
|
|
@@ -1067,10 +1092,10 @@ function mixinLifecycleEvents(target) {
|
|
|
1067
1092
|
}
|
|
1068
1093
|
}
|
|
1069
1094
|
|
|
1070
|
-
var Observer = observer(function (
|
|
1071
|
-
var children =
|
|
1072
|
-
observerInject =
|
|
1073
|
-
render =
|
|
1095
|
+
var Observer = observer(function (_ref2) {
|
|
1096
|
+
var children = _ref2.children,
|
|
1097
|
+
observerInject = _ref2.inject,
|
|
1098
|
+
render = _ref2.render;
|
|
1074
1099
|
var component = children || render;
|
|
1075
1100
|
|
|
1076
1101
|
if (typeof component === "undefined") {
|
package/native.d.ts
CHANGED
|
@@ -1,140 +1,140 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Turns a React component or stateless render function into a reactive component.
|
|
3
|
-
*/
|
|
4
|
-
import * as React from "react"
|
|
5
|
-
|
|
6
|
-
export type IReactComponent<P = any> =
|
|
7
|
-
| React.StatelessComponent<P>
|
|
8
|
-
| React.ComponentClass<P>
|
|
9
|
-
| React.ClassicComponentClass<P>
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Observer
|
|
13
|
-
*/
|
|
14
|
-
|
|
15
|
-
// Deprecated: observer with with stores (as decorator)
|
|
16
|
-
export function observer(stores: string[]): <T extends IReactComponent>(clazz: T) => void
|
|
17
|
-
// Deprecated: observer with with stores
|
|
18
|
-
export function observer<T extends IReactComponent>(stores: string[], clazz: T): T
|
|
19
|
-
export function observer<T extends IReactComponent>(target: T): T
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Inject
|
|
23
|
-
*/
|
|
24
|
-
export type IValueMap = { [key: string]: any }
|
|
25
|
-
export type IStoresToProps<
|
|
26
|
-
S extends IValueMap = {},
|
|
27
|
-
P extends IValueMap = {},
|
|
28
|
-
I extends IValueMap = {},
|
|
29
|
-
C extends IValueMap = {}
|
|
30
|
-
> = (stores: S, nextProps: P, context: C) => I
|
|
31
|
-
|
|
32
|
-
export type IWrappedComponent<P> = {
|
|
33
|
-
wrappedComponent: IReactComponent<P>
|
|
34
|
-
wrappedInstance: React.ReactInstance | undefined
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
// Ideally we would want to return React.ComponentClass<Partial<P>>,
|
|
38
|
-
// but TS doesn't allow such things in decorators, like we do in the non-decorator version
|
|
39
|
-
// See also #256
|
|
40
|
-
export function inject(
|
|
41
|
-
...stores: string[]
|
|
42
|
-
): <T extends IReactComponent<any>>(
|
|
43
|
-
target: T
|
|
44
|
-
) => T & (T extends IReactComponent<infer P> ? IWrappedComponent<P> : never)
|
|
45
|
-
export function inject<S, P, I, C>(
|
|
46
|
-
fn: IStoresToProps<S, P, I, C>
|
|
47
|
-
): <T extends IReactComponent>(target: T) => T & IWrappedComponent<P>
|
|
48
|
-
|
|
49
|
-
// Ideal implementation:
|
|
50
|
-
// export function inject
|
|
51
|
-
// (
|
|
52
|
-
// fn: IStoresToProps
|
|
53
|
-
// ):
|
|
54
|
-
// <P>(target: IReactComponent<P>) => IReactComponent<Partial<P>> & IWrappedComponent<IReactComponent<Partial<P>>>
|
|
55
|
-
//
|
|
56
|
-
// Or even better: (but that would require type inference to work other way around)
|
|
57
|
-
// export function inject<P, I>
|
|
58
|
-
// (
|
|
59
|
-
// fn: IStoresToProps<any, P, I>
|
|
60
|
-
// ):
|
|
61
|
-
// <T extends IReactComponent<P & S>(target: T) => IReactComponent<P> & IWrappedComponent<T>
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* disposeOnUnmount
|
|
65
|
-
*/
|
|
66
|
-
type Disposer = () => void
|
|
67
|
-
export function disposeOnUnmount(target: React.Component<any, any>, propertyKey: string): void
|
|
68
|
-
export function disposeOnUnmount<TF extends Disposer | Disposer[]>(
|
|
69
|
-
target: React.Component<any, any>,
|
|
70
|
-
fn: TF
|
|
71
|
-
): TF
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Utilities
|
|
75
|
-
*/
|
|
76
|
-
export function onError(cb: (error: Error) => void): () => void
|
|
77
|
-
|
|
78
|
-
export class Provider extends React.Component<any, {}> {}
|
|
79
|
-
|
|
80
|
-
export class Observer extends React.Component<
|
|
81
|
-
{
|
|
82
|
-
children?: () => React.ReactNode
|
|
83
|
-
render?: () => React.ReactNode
|
|
84
|
-
},
|
|
85
|
-
{}
|
|
86
|
-
> {}
|
|
87
|
-
|
|
88
|
-
export function useStaticRendering(value: boolean): void
|
|
89
|
-
|
|
90
|
-
/**
|
|
91
|
-
* Enable dev tool support, makes sure that renderReport emits events.
|
|
92
|
-
*/
|
|
93
|
-
export function trackComponents(): void
|
|
94
|
-
|
|
95
|
-
export const renderReporter: RenderReporter
|
|
96
|
-
|
|
97
|
-
export interface RenderReporter {
|
|
98
|
-
on(handler: (data: IRenderEvent) => void): void
|
|
99
|
-
}
|
|
100
|
-
|
|
101
|
-
export interface IRenderEvent {
|
|
102
|
-
event: "render" | "destroy"
|
|
103
|
-
renderTime?: number
|
|
104
|
-
totalTime?: number
|
|
105
|
-
component: React.ReactElement<any> // Component instance
|
|
106
|
-
node: any // DOMNode
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
/**
|
|
110
|
-
* WeakMap DOMNode -> Component instance
|
|
111
|
-
* @deprecated
|
|
112
|
-
*/
|
|
113
|
-
export const componentByNodeRegistery: any
|
|
114
|
-
/**
|
|
115
|
-
* WeakMap DOMNode -> Component instance
|
|
116
|
-
*/
|
|
117
|
-
export const componentByNodeRegistry: any
|
|
118
|
-
|
|
119
|
-
/**
|
|
120
|
-
* @deprecated, use PropTypes instead
|
|
121
|
-
*/
|
|
122
|
-
export const propTypes: {
|
|
123
|
-
observableArray: React.Requireable<any>
|
|
124
|
-
observableArrayOf: (type: React.Validator<any>) => React.Requireable<any>
|
|
125
|
-
observableMap: React.Requireable<any>
|
|
126
|
-
observableObject: React.Requireable<any>
|
|
127
|
-
arrayOrObservableArray: React.Requireable<any>
|
|
128
|
-
arrayOrObservableArrayOf: (type: React.Validator<any>) => React.Requireable<any>
|
|
129
|
-
objectOrObservableObject: React.Requireable<any>
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
export const PropTypes: {
|
|
133
|
-
observableArray: React.Requireable<any>
|
|
134
|
-
observableArrayOf: (type: React.Validator<any>) => React.Requireable<any>
|
|
135
|
-
observableMap: React.Requireable<any>
|
|
136
|
-
observableObject: React.Requireable<any>
|
|
137
|
-
arrayOrObservableArray: React.Requireable<any>
|
|
138
|
-
arrayOrObservableArrayOf: (type: React.Validator<any>) => React.Requireable<any>
|
|
139
|
-
objectOrObservableObject: React.Requireable<any>
|
|
140
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Turns a React component or stateless render function into a reactive component.
|
|
3
|
+
*/
|
|
4
|
+
import * as React from "react"
|
|
5
|
+
|
|
6
|
+
export type IReactComponent<P = any> =
|
|
7
|
+
| React.StatelessComponent<P>
|
|
8
|
+
| React.ComponentClass<P>
|
|
9
|
+
| React.ClassicComponentClass<P>
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Observer
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
// Deprecated: observer with with stores (as decorator)
|
|
16
|
+
export function observer(stores: string[]): <T extends IReactComponent>(clazz: T) => void
|
|
17
|
+
// Deprecated: observer with with stores
|
|
18
|
+
export function observer<T extends IReactComponent>(stores: string[], clazz: T): T
|
|
19
|
+
export function observer<T extends IReactComponent>(target: T): T
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Inject
|
|
23
|
+
*/
|
|
24
|
+
export type IValueMap = { [key: string]: any }
|
|
25
|
+
export type IStoresToProps<
|
|
26
|
+
S extends IValueMap = {},
|
|
27
|
+
P extends IValueMap = {},
|
|
28
|
+
I extends IValueMap = {},
|
|
29
|
+
C extends IValueMap = {}
|
|
30
|
+
> = (stores: S, nextProps: P, context: C) => I
|
|
31
|
+
|
|
32
|
+
export type IWrappedComponent<P> = {
|
|
33
|
+
wrappedComponent: IReactComponent<P>
|
|
34
|
+
wrappedInstance: React.ReactInstance | undefined
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
// Ideally we would want to return React.ComponentClass<Partial<P>>,
|
|
38
|
+
// but TS doesn't allow such things in decorators, like we do in the non-decorator version
|
|
39
|
+
// See also #256
|
|
40
|
+
export function inject(
|
|
41
|
+
...stores: string[]
|
|
42
|
+
): <T extends IReactComponent<any>>(
|
|
43
|
+
target: T
|
|
44
|
+
) => T & (T extends IReactComponent<infer P> ? IWrappedComponent<P> : never)
|
|
45
|
+
export function inject<S, P, I, C>(
|
|
46
|
+
fn: IStoresToProps<S, P, I, C>
|
|
47
|
+
): <T extends IReactComponent>(target: T) => T & IWrappedComponent<P>
|
|
48
|
+
|
|
49
|
+
// Ideal implementation:
|
|
50
|
+
// export function inject
|
|
51
|
+
// (
|
|
52
|
+
// fn: IStoresToProps
|
|
53
|
+
// ):
|
|
54
|
+
// <P>(target: IReactComponent<P>) => IReactComponent<Partial<P>> & IWrappedComponent<IReactComponent<Partial<P>>>
|
|
55
|
+
//
|
|
56
|
+
// Or even better: (but that would require type inference to work other way around)
|
|
57
|
+
// export function inject<P, I>
|
|
58
|
+
// (
|
|
59
|
+
// fn: IStoresToProps<any, P, I>
|
|
60
|
+
// ):
|
|
61
|
+
// <T extends IReactComponent<P & S>(target: T) => IReactComponent<P> & IWrappedComponent<T>
|
|
62
|
+
|
|
63
|
+
/**
|
|
64
|
+
* disposeOnUnmount
|
|
65
|
+
*/
|
|
66
|
+
type Disposer = () => void
|
|
67
|
+
export function disposeOnUnmount(target: React.Component<any, any>, propertyKey: string): void
|
|
68
|
+
export function disposeOnUnmount<TF extends Disposer | Disposer[]>(
|
|
69
|
+
target: React.Component<any, any>,
|
|
70
|
+
fn: TF
|
|
71
|
+
): TF
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* Utilities
|
|
75
|
+
*/
|
|
76
|
+
export function onError(cb: (error: Error) => void): () => void
|
|
77
|
+
|
|
78
|
+
export class Provider extends React.Component<any, {}> {}
|
|
79
|
+
|
|
80
|
+
export class Observer extends React.Component<
|
|
81
|
+
{
|
|
82
|
+
children?: () => React.ReactNode
|
|
83
|
+
render?: () => React.ReactNode
|
|
84
|
+
},
|
|
85
|
+
{}
|
|
86
|
+
> {}
|
|
87
|
+
|
|
88
|
+
export function useStaticRendering(value: boolean): void
|
|
89
|
+
|
|
90
|
+
/**
|
|
91
|
+
* Enable dev tool support, makes sure that renderReport emits events.
|
|
92
|
+
*/
|
|
93
|
+
export function trackComponents(): void
|
|
94
|
+
|
|
95
|
+
export const renderReporter: RenderReporter
|
|
96
|
+
|
|
97
|
+
export interface RenderReporter {
|
|
98
|
+
on(handler: (data: IRenderEvent) => void): void
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export interface IRenderEvent {
|
|
102
|
+
event: "render" | "destroy"
|
|
103
|
+
renderTime?: number
|
|
104
|
+
totalTime?: number
|
|
105
|
+
component: React.ReactElement<any> // Component instance
|
|
106
|
+
node: any // DOMNode
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
/**
|
|
110
|
+
* WeakMap DOMNode -> Component instance
|
|
111
|
+
* @deprecated
|
|
112
|
+
*/
|
|
113
|
+
export const componentByNodeRegistery: any
|
|
114
|
+
/**
|
|
115
|
+
* WeakMap DOMNode -> Component instance
|
|
116
|
+
*/
|
|
117
|
+
export const componentByNodeRegistry: any
|
|
118
|
+
|
|
119
|
+
/**
|
|
120
|
+
* @deprecated, use PropTypes instead
|
|
121
|
+
*/
|
|
122
|
+
export const propTypes: {
|
|
123
|
+
observableArray: React.Requireable<any>
|
|
124
|
+
observableArrayOf: (type: React.Validator<any>) => React.Requireable<any>
|
|
125
|
+
observableMap: React.Requireable<any>
|
|
126
|
+
observableObject: React.Requireable<any>
|
|
127
|
+
arrayOrObservableArray: React.Requireable<any>
|
|
128
|
+
arrayOrObservableArrayOf: (type: React.Validator<any>) => React.Requireable<any>
|
|
129
|
+
objectOrObservableObject: React.Requireable<any>
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
export const PropTypes: {
|
|
133
|
+
observableArray: React.Requireable<any>
|
|
134
|
+
observableArrayOf: (type: React.Validator<any>) => React.Requireable<any>
|
|
135
|
+
observableMap: React.Requireable<any>
|
|
136
|
+
observableObject: React.Requireable<any>
|
|
137
|
+
arrayOrObservableArray: React.Requireable<any>
|
|
138
|
+
arrayOrObservableArrayOf: (type: React.Validator<any>) => React.Requireable<any>
|
|
139
|
+
objectOrObservableObject: React.Requireable<any>
|
|
140
|
+
}
|