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/custom.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, getDebugName } from 'mobx';
|
|
2
|
+
import React__default, { Component, createElement, PureComponent, forwardRef, Children } from 'react';
|
|
3
3
|
|
|
4
4
|
function _typeof(obj) {
|
|
5
5
|
if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") {
|
|
@@ -111,33 +111,35 @@ function createCommonjsModule(fn, module) {
|
|
|
111
111
|
|
|
112
112
|
var reactIs_production_min = createCommonjsModule(function (module, exports) {
|
|
113
113
|
Object.defineProperty(exports,"__esModule",{value:!0});
|
|
114
|
-
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,
|
|
115
|
-
function
|
|
116
|
-
exports.isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===
|
|
117
|
-
exports.isForwardRef=function(a){return
|
|
114
|
+
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"):
|
|
115
|
+
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;
|
|
116
|
+
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};
|
|
117
|
+
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};
|
|
118
118
|
});
|
|
119
119
|
|
|
120
120
|
unwrapExports(reactIs_production_min);
|
|
121
121
|
var reactIs_production_min_1 = reactIs_production_min.typeOf;
|
|
122
122
|
var reactIs_production_min_2 = reactIs_production_min.AsyncMode;
|
|
123
|
-
var reactIs_production_min_3 = reactIs_production_min.
|
|
124
|
-
var reactIs_production_min_4 = reactIs_production_min.
|
|
125
|
-
var reactIs_production_min_5 = reactIs_production_min.
|
|
126
|
-
var reactIs_production_min_6 = reactIs_production_min.
|
|
127
|
-
var reactIs_production_min_7 = reactIs_production_min.
|
|
128
|
-
var reactIs_production_min_8 = reactIs_production_min.
|
|
129
|
-
var reactIs_production_min_9 = reactIs_production_min.
|
|
130
|
-
var reactIs_production_min_10 = reactIs_production_min.
|
|
131
|
-
var reactIs_production_min_11 = reactIs_production_min.
|
|
132
|
-
var reactIs_production_min_12 = reactIs_production_min.
|
|
133
|
-
var reactIs_production_min_13 = reactIs_production_min.
|
|
134
|
-
var reactIs_production_min_14 = reactIs_production_min.
|
|
135
|
-
var reactIs_production_min_15 = reactIs_production_min.
|
|
136
|
-
var reactIs_production_min_16 = reactIs_production_min.
|
|
137
|
-
var reactIs_production_min_17 = reactIs_production_min.
|
|
138
|
-
var reactIs_production_min_18 = reactIs_production_min.
|
|
139
|
-
var reactIs_production_min_19 = reactIs_production_min.
|
|
140
|
-
var reactIs_production_min_20 = reactIs_production_min.
|
|
123
|
+
var reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;
|
|
124
|
+
var reactIs_production_min_4 = reactIs_production_min.ContextConsumer;
|
|
125
|
+
var reactIs_production_min_5 = reactIs_production_min.ContextProvider;
|
|
126
|
+
var reactIs_production_min_6 = reactIs_production_min.Element;
|
|
127
|
+
var reactIs_production_min_7 = reactIs_production_min.ForwardRef;
|
|
128
|
+
var reactIs_production_min_8 = reactIs_production_min.Fragment;
|
|
129
|
+
var reactIs_production_min_9 = reactIs_production_min.Profiler;
|
|
130
|
+
var reactIs_production_min_10 = reactIs_production_min.Portal;
|
|
131
|
+
var reactIs_production_min_11 = reactIs_production_min.StrictMode;
|
|
132
|
+
var reactIs_production_min_12 = reactIs_production_min.isValidElementType;
|
|
133
|
+
var reactIs_production_min_13 = reactIs_production_min.isAsyncMode;
|
|
134
|
+
var reactIs_production_min_14 = reactIs_production_min.isConcurrentMode;
|
|
135
|
+
var reactIs_production_min_15 = reactIs_production_min.isContextConsumer;
|
|
136
|
+
var reactIs_production_min_16 = reactIs_production_min.isContextProvider;
|
|
137
|
+
var reactIs_production_min_17 = reactIs_production_min.isElement;
|
|
138
|
+
var reactIs_production_min_18 = reactIs_production_min.isForwardRef;
|
|
139
|
+
var reactIs_production_min_19 = reactIs_production_min.isFragment;
|
|
140
|
+
var reactIs_production_min_20 = reactIs_production_min.isProfiler;
|
|
141
|
+
var reactIs_production_min_21 = reactIs_production_min.isPortal;
|
|
142
|
+
var reactIs_production_min_22 = reactIs_production_min.isStrictMode;
|
|
141
143
|
|
|
142
144
|
var reactIs = createCommonjsModule(function (module) {
|
|
143
145
|
|
|
@@ -146,22 +148,19 @@ var reactIs = createCommonjsModule(function (module) {
|
|
|
146
148
|
}
|
|
147
149
|
});
|
|
148
150
|
|
|
149
|
-
var _ReactIs$ForwardRef;
|
|
150
|
-
|
|
151
|
-
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; }
|
|
152
|
-
|
|
153
151
|
/**
|
|
154
152
|
* Copyright 2015, Yahoo! Inc.
|
|
155
153
|
* Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
|
|
156
154
|
*/
|
|
157
155
|
|
|
158
|
-
|
|
159
156
|
var REACT_STATICS = {
|
|
160
157
|
childContextTypes: true,
|
|
158
|
+
contextType: true,
|
|
161
159
|
contextTypes: true,
|
|
162
160
|
defaultProps: true,
|
|
163
161
|
displayName: true,
|
|
164
162
|
getDefaultProps: true,
|
|
163
|
+
getDerivedStateFromError: true,
|
|
165
164
|
getDerivedStateFromProps: true,
|
|
166
165
|
mixins: true,
|
|
167
166
|
propTypes: true,
|
|
@@ -178,7 +177,16 @@ var KNOWN_STATICS = {
|
|
|
178
177
|
arity: true
|
|
179
178
|
};
|
|
180
179
|
|
|
181
|
-
var
|
|
180
|
+
var FORWARD_REF_STATICS = {
|
|
181
|
+
'$$typeof': true,
|
|
182
|
+
render: true,
|
|
183
|
+
defaultProps: true,
|
|
184
|
+
displayName: true,
|
|
185
|
+
propTypes: true
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
var TYPE_STATICS = {};
|
|
189
|
+
TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
|
|
182
190
|
|
|
183
191
|
var defineProperty = Object.defineProperty;
|
|
184
192
|
var getOwnPropertyNames = Object.getOwnPropertyNames;
|
|
@@ -562,8 +570,8 @@ var proxiedInjectorProps = {
|
|
|
562
570
|
configurable: true,
|
|
563
571
|
enumerable: true
|
|
564
572
|
}
|
|
565
|
-
/**
|
|
566
|
-
* Store Injection
|
|
573
|
+
/**
|
|
574
|
+
* Store Injection
|
|
567
575
|
*/
|
|
568
576
|
|
|
569
577
|
};
|
|
@@ -647,11 +655,11 @@ function grabStoresByName(storeNames) {
|
|
|
647
655
|
return nextProps;
|
|
648
656
|
};
|
|
649
657
|
}
|
|
650
|
-
/**
|
|
651
|
-
* higher order component that injects stores to a child.
|
|
652
|
-
* takes either a varargs list of strings, which are stores read from the context,
|
|
653
|
-
* or a function that manually maps the available stores from the context to props:
|
|
654
|
-
* storesToProps(mobxStores, props, context) => newProps
|
|
658
|
+
/**
|
|
659
|
+
* higher order component that injects stores to a child.
|
|
660
|
+
* takes either a varargs list of strings, which are stores read from the context,
|
|
661
|
+
* or a function that manually maps the available stores from the context to props:
|
|
662
|
+
* storesToProps(mobxStores, props, context) => newProps
|
|
655
663
|
*/
|
|
656
664
|
|
|
657
665
|
|
|
@@ -689,8 +697,8 @@ function inject()
|
|
|
689
697
|
|
|
690
698
|
var mobxAdminProperty = $mobx || "$mobx";
|
|
691
699
|
var mobxIsUnmounted = newSymbol("isUnmounted");
|
|
692
|
-
/**
|
|
693
|
-
* dev tool support
|
|
700
|
+
/**
|
|
701
|
+
* dev tool support
|
|
694
702
|
*/
|
|
695
703
|
|
|
696
704
|
var isDevtoolsEnabled = false;
|
|
@@ -700,12 +708,14 @@ var warnedAboutObserverInjectDeprecation = false; // WeakMap<Node, Object>;
|
|
|
700
708
|
var componentByNodeRegistry = typeof WeakMap !== "undefined" ? new WeakMap() : undefined;
|
|
701
709
|
var renderReporter = new EventEmitter();
|
|
702
710
|
var skipRenderKey = newSymbol("skipRender");
|
|
703
|
-
var isForcingUpdateKey = newSymbol("isForcingUpdate");
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
*
|
|
708
|
-
* @param
|
|
711
|
+
var isForcingUpdateKey = newSymbol("isForcingUpdate"); // Using react-is had some issues (and operates on elements, not on types), see #608 / #609
|
|
712
|
+
|
|
713
|
+
var ReactForwardRefSymbol = typeof forwardRef === "function" && forwardRef(function (_props, _ref) {})["$$typeof"];
|
|
714
|
+
/**
|
|
715
|
+
* Helper to set `prop` to `this` as non-enumerable (hidden prop)
|
|
716
|
+
* @param target
|
|
717
|
+
* @param prop
|
|
718
|
+
* @param value
|
|
709
719
|
*/
|
|
710
720
|
|
|
711
721
|
function setHiddenProp(target, prop, value) {
|
|
@@ -745,13 +755,13 @@ function trackComponents() {
|
|
|
745
755
|
function useStaticRendering(useStaticRendering) {
|
|
746
756
|
isUsingStaticRendering = useStaticRendering;
|
|
747
757
|
}
|
|
748
|
-
/**
|
|
749
|
-
* Errors reporter
|
|
758
|
+
/**
|
|
759
|
+
* Errors reporter
|
|
750
760
|
*/
|
|
751
761
|
|
|
752
762
|
var errorsReporter = new EventEmitter();
|
|
753
|
-
/**
|
|
754
|
-
* Utilities
|
|
763
|
+
/**
|
|
764
|
+
* Utilities
|
|
755
765
|
*/
|
|
756
766
|
|
|
757
767
|
function patch$1(target, funcName) {
|
|
@@ -826,15 +836,15 @@ function makeComponentReactive(render) {
|
|
|
826
836
|
|
|
827
837
|
var initialName = this.displayName || this.name || this.constructor && (this.constructor.displayName || this.constructor.name) || "<component>";
|
|
828
838
|
var rootNodeID = this._reactInternalInstance && this._reactInternalInstance._rootNodeID || this._reactInternalInstance && this._reactInternalInstance._debugID || this._reactInternalFiber && this._reactInternalFiber._debugID;
|
|
829
|
-
/**
|
|
830
|
-
* If props are shallowly modified, react will render anyway,
|
|
831
|
-
* so atom.reportChanged() should not result in yet another re-render
|
|
839
|
+
/**
|
|
840
|
+
* If props are shallowly modified, react will render anyway,
|
|
841
|
+
* so atom.reportChanged() should not result in yet another re-render
|
|
832
842
|
*/
|
|
833
843
|
|
|
834
844
|
setHiddenProp(this, skipRenderKey, false);
|
|
835
|
-
/**
|
|
836
|
-
* forceUpdate will re-assign this.props. We don't want that to cause a loop,
|
|
837
|
-
* so detect these changes
|
|
845
|
+
/**
|
|
846
|
+
* forceUpdate will re-assign this.props. We don't want that to cause a loop,
|
|
847
|
+
* so detect these changes
|
|
838
848
|
*/
|
|
839
849
|
|
|
840
850
|
setHiddenProp(this, isForcingUpdateKey, false); // wire up reactive render
|
|
@@ -852,7 +862,7 @@ function makeComponentReactive(render) {
|
|
|
852
862
|
if (_this2[mobxIsUnmounted] !== true) {
|
|
853
863
|
// If we are unmounted at this point, componentWillReact() had a side effect causing the component to unmounted
|
|
854
864
|
// TODO: remove this check? Then react will properly warn about the fact that this should not happen? See #73
|
|
855
|
-
// However, people also claim this
|
|
865
|
+
// However, people also claim this might happen during unit tests..
|
|
856
866
|
var hasError = true;
|
|
857
867
|
|
|
858
868
|
try {
|
|
@@ -871,8 +881,8 @@ function makeComponentReactive(render) {
|
|
|
871
881
|
this.render = reactiveRender;
|
|
872
882
|
return reactiveRender.call(this);
|
|
873
883
|
}
|
|
874
|
-
/**
|
|
875
|
-
* ReactiveMixin
|
|
884
|
+
/**
|
|
885
|
+
* ReactiveMixin
|
|
876
886
|
*/
|
|
877
887
|
|
|
878
888
|
|
|
@@ -955,8 +965,8 @@ function makeObservableProp(target, propName) {
|
|
|
955
965
|
}
|
|
956
966
|
});
|
|
957
967
|
}
|
|
958
|
-
/**
|
|
959
|
-
* Observer function / decorator
|
|
968
|
+
/**
|
|
969
|
+
* Observer function / decorator
|
|
960
970
|
*/
|
|
961
971
|
|
|
962
972
|
|
|
@@ -991,6 +1001,21 @@ function observer(arg1, arg2) {
|
|
|
991
1001
|
|
|
992
1002
|
if (componentClass.__proto__ === PureComponent) {
|
|
993
1003
|
console.warn("Mobx observer: You are using 'observer' on React.PureComponent. These two achieve two opposite goals and should not be used together");
|
|
1004
|
+
} // Unwrap forward refs into `<Observer>` component
|
|
1005
|
+
// we need to unwrap the render, because it is the inner render that needs to be tracked,
|
|
1006
|
+
// not the ForwardRef HoC
|
|
1007
|
+
|
|
1008
|
+
|
|
1009
|
+
if (ReactForwardRefSymbol && componentClass["$$typeof"] === ReactForwardRefSymbol) {
|
|
1010
|
+
var _baseRender = componentClass.render;
|
|
1011
|
+
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?
|
|
1012
|
+
|
|
1013
|
+
return forwardRef(function ObserverForwardRef() {
|
|
1014
|
+
var _arguments = arguments;
|
|
1015
|
+
return React__default.createElement(Observer, null, function () {
|
|
1016
|
+
return _baseRender.apply(undefined, _arguments);
|
|
1017
|
+
});
|
|
1018
|
+
});
|
|
994
1019
|
} // Stateless function component:
|
|
995
1020
|
// If it is function but doesn't seem to be a react class constructor,
|
|
996
1021
|
// wrap it to a react class automatically
|
|
@@ -1056,10 +1081,10 @@ function mixinLifecycleEvents(target) {
|
|
|
1056
1081
|
}
|
|
1057
1082
|
}
|
|
1058
1083
|
|
|
1059
|
-
var Observer = observer(function (
|
|
1060
|
-
var children =
|
|
1061
|
-
observerInject =
|
|
1062
|
-
render =
|
|
1084
|
+
var Observer = observer(function (_ref2) {
|
|
1085
|
+
var children = _ref2.children,
|
|
1086
|
+
observerInject = _ref2.inject,
|
|
1087
|
+
render = _ref2.render;
|
|
1063
1088
|
var component = children || render;
|
|
1064
1089
|
|
|
1065
1090
|
if (typeof component === "undefined") {
|
package/empty.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
// These functions can be stubbed out in specific environments
|
|
2
|
-
export const unstable_batchedUpdates = undefined
|
|
3
|
-
export const findDOMNode = undefined
|
|
1
|
+
// These functions can be stubbed out in specific environments
|
|
2
|
+
export const unstable_batchedUpdates = undefined
|
|
3
|
+
export const findDOMNode = undefined
|
package/index.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
|
+
}
|