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/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,n=b?Symbol.for("react.placeholder"):60113;
116
- function q(a){if("object"===typeof a&&null!==a){var p=a.$$typeof;switch(p){case c:switch(a=a.type,a){case l:case e:case g:case f:return a;default:switch(a=a&&a.$$typeof,a){case k:case m:case h:return a;default:return p}}case d:return p}}}exports.typeOf=q;exports.AsyncMode=l;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=m;exports.Fragment=e;exports.Profiler=g;exports.Portal=d;exports.StrictMode=f;
117
- exports.isValidElementType=function(a){return "string"===typeof a||"function"===typeof a||a===e||a===l||a===g||a===f||a===n||"object"===typeof a&&null!==a&&("function"===typeof a.then||a.$$typeof===h||a.$$typeof===k||a.$$typeof===m)};exports.isAsyncMode=function(a){return q(a)===l};exports.isContextConsumer=function(a){return q(a)===k};exports.isContextProvider=function(a){return q(a)===h};exports.isElement=function(a){return "object"===typeof a&&null!==a&&a.$$typeof===c};
118
- exports.isForwardRef=function(a){return q(a)===m};exports.isFragment=function(a){return q(a)===e};exports.isProfiler=function(a){return q(a)===g};exports.isPortal=function(a){return q(a)===d};exports.isStrictMode=function(a){return q(a)===f};
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.ContextConsumer;
125
- var reactIs_production_min_4 = reactIs_production_min.ContextProvider;
126
- var reactIs_production_min_5 = reactIs_production_min.Element;
127
- var reactIs_production_min_6 = reactIs_production_min.ForwardRef;
128
- var reactIs_production_min_7 = reactIs_production_min.Fragment;
129
- var reactIs_production_min_8 = reactIs_production_min.Profiler;
130
- var reactIs_production_min_9 = reactIs_production_min.Portal;
131
- var reactIs_production_min_10 = reactIs_production_min.StrictMode;
132
- var reactIs_production_min_11 = reactIs_production_min.isValidElementType;
133
- var reactIs_production_min_12 = reactIs_production_min.isAsyncMode;
134
- var reactIs_production_min_13 = reactIs_production_min.isContextConsumer;
135
- var reactIs_production_min_14 = reactIs_production_min.isContextProvider;
136
- var reactIs_production_min_15 = reactIs_production_min.isElement;
137
- var reactIs_production_min_16 = reactIs_production_min.isForwardRef;
138
- var reactIs_production_min_17 = reactIs_production_min.isFragment;
139
- var reactIs_production_min_18 = reactIs_production_min.isProfiler;
140
- var reactIs_production_min_19 = reactIs_production_min.isPortal;
141
- var reactIs_production_min_20 = reactIs_production_min.isStrictMode;
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 TYPE_STATICS = _defineProperty$1({}, reactIs.ForwardRef, (_ReactIs$ForwardRef = {}, _defineProperty$1(_ReactIs$ForwardRef, '$$typeof', true), _defineProperty$1(_ReactIs$ForwardRef, 'render', true), _ReactIs$ForwardRef));
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
- * Helper to set `prop` to `this` as non-enumerable (hidden prop)
707
- * @param target
708
- * @param prop
709
- * @param value
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 migth happen during unit tests..
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 (_ref) {
1071
- var children = _ref.children,
1072
- observerInject = _ref.inject,
1073
- render = _ref.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
+ }