mobx-react 5.4.2 → 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/custom.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
+ }
package/custom.js CHANGED
@@ -1,8 +1,8 @@
1
1
  (function (global, factory) {
2
- typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('react'), require('mobx')) :
3
- typeof define === 'function' && define.amd ? define(['exports', 'react', 'mobx'], factory) :
4
- (factory((global.mobxReact = {}),global.React,global.mobx));
5
- }(this, (function (exports,React,mobx) { 'use strict';
2
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('mobx'), require('react')) :
3
+ typeof define === 'function' && define.amd ? define(['exports', 'mobx', 'react'], factory) :
4
+ (factory((global.mobxReact = {}),global.mobx,global.React));
5
+ }(this, (function (exports,mobx,React) { 'use strict';
6
6
 
7
7
  var React__default = 'default' in React ? React['default'] : React;
8
8
 
@@ -57,25 +57,6 @@
57
57
  return obj;
58
58
  }
59
59
 
60
- function _objectSpread(target) {
61
- for (var i = 1; i < arguments.length; i++) {
62
- var source = arguments[i] != null ? arguments[i] : {};
63
- var ownKeys = Object.keys(source);
64
-
65
- if (typeof Object.getOwnPropertySymbols === 'function') {
66
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
67
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
68
- }));
69
- }
70
-
71
- ownKeys.forEach(function (key) {
72
- _defineProperty(target, key, source[key]);
73
- });
74
- }
75
-
76
- return target;
77
- }
78
-
79
60
  function _inherits(subClass, superClass) {
80
61
  if (typeof superClass !== "function" && superClass !== null) {
81
62
  throw new TypeError("Super expression must either be null or a function");
@@ -135,33 +116,35 @@
135
116
 
136
117
  var reactIs_production_min = createCommonjsModule(function (module, exports) {
137
118
  Object.defineProperty(exports,"__esModule",{value:!0});
138
- 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;
139
- 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;
140
- 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};
141
- 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};
119
+ 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"):
120
+ 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;
121
+ 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};
122
+ 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};
142
123
  });
143
124
 
144
125
  unwrapExports(reactIs_production_min);
145
126
  var reactIs_production_min_1 = reactIs_production_min.typeOf;
146
127
  var reactIs_production_min_2 = reactIs_production_min.AsyncMode;
147
- var reactIs_production_min_3 = reactIs_production_min.ContextConsumer;
148
- var reactIs_production_min_4 = reactIs_production_min.ContextProvider;
149
- var reactIs_production_min_5 = reactIs_production_min.Element;
150
- var reactIs_production_min_6 = reactIs_production_min.ForwardRef;
151
- var reactIs_production_min_7 = reactIs_production_min.Fragment;
152
- var reactIs_production_min_8 = reactIs_production_min.Profiler;
153
- var reactIs_production_min_9 = reactIs_production_min.Portal;
154
- var reactIs_production_min_10 = reactIs_production_min.StrictMode;
155
- var reactIs_production_min_11 = reactIs_production_min.isValidElementType;
156
- var reactIs_production_min_12 = reactIs_production_min.isAsyncMode;
157
- var reactIs_production_min_13 = reactIs_production_min.isContextConsumer;
158
- var reactIs_production_min_14 = reactIs_production_min.isContextProvider;
159
- var reactIs_production_min_15 = reactIs_production_min.isElement;
160
- var reactIs_production_min_16 = reactIs_production_min.isForwardRef;
161
- var reactIs_production_min_17 = reactIs_production_min.isFragment;
162
- var reactIs_production_min_18 = reactIs_production_min.isProfiler;
163
- var reactIs_production_min_19 = reactIs_production_min.isPortal;
164
- var reactIs_production_min_20 = reactIs_production_min.isStrictMode;
128
+ var reactIs_production_min_3 = reactIs_production_min.ConcurrentMode;
129
+ var reactIs_production_min_4 = reactIs_production_min.ContextConsumer;
130
+ var reactIs_production_min_5 = reactIs_production_min.ContextProvider;
131
+ var reactIs_production_min_6 = reactIs_production_min.Element;
132
+ var reactIs_production_min_7 = reactIs_production_min.ForwardRef;
133
+ var reactIs_production_min_8 = reactIs_production_min.Fragment;
134
+ var reactIs_production_min_9 = reactIs_production_min.Profiler;
135
+ var reactIs_production_min_10 = reactIs_production_min.Portal;
136
+ var reactIs_production_min_11 = reactIs_production_min.StrictMode;
137
+ var reactIs_production_min_12 = reactIs_production_min.isValidElementType;
138
+ var reactIs_production_min_13 = reactIs_production_min.isAsyncMode;
139
+ var reactIs_production_min_14 = reactIs_production_min.isConcurrentMode;
140
+ var reactIs_production_min_15 = reactIs_production_min.isContextConsumer;
141
+ var reactIs_production_min_16 = reactIs_production_min.isContextProvider;
142
+ var reactIs_production_min_17 = reactIs_production_min.isElement;
143
+ var reactIs_production_min_18 = reactIs_production_min.isForwardRef;
144
+ var reactIs_production_min_19 = reactIs_production_min.isFragment;
145
+ var reactIs_production_min_20 = reactIs_production_min.isProfiler;
146
+ var reactIs_production_min_21 = reactIs_production_min.isPortal;
147
+ var reactIs_production_min_22 = reactIs_production_min.isStrictMode;
165
148
 
166
149
  var reactIs = createCommonjsModule(function (module) {
167
150
 
@@ -170,22 +153,19 @@
170
153
  }
171
154
  });
172
155
 
173
- var _ReactIs$ForwardRef;
174
-
175
- 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; }
176
-
177
156
  /**
178
157
  * Copyright 2015, Yahoo! Inc.
179
158
  * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.
180
159
  */
181
160
 
182
-
183
161
  var REACT_STATICS = {
184
162
  childContextTypes: true,
163
+ contextType: true,
185
164
  contextTypes: true,
186
165
  defaultProps: true,
187
166
  displayName: true,
188
167
  getDefaultProps: true,
168
+ getDerivedStateFromError: true,
189
169
  getDerivedStateFromProps: true,
190
170
  mixins: true,
191
171
  propTypes: true,
@@ -202,7 +182,16 @@
202
182
  arity: true
203
183
  };
204
184
 
205
- var TYPE_STATICS = _defineProperty$1({}, reactIs.ForwardRef, (_ReactIs$ForwardRef = {}, _defineProperty$1(_ReactIs$ForwardRef, '$$typeof', true), _defineProperty$1(_ReactIs$ForwardRef, 'render', true), _ReactIs$ForwardRef));
185
+ var FORWARD_REF_STATICS = {
186
+ '$$typeof': true,
187
+ render: true,
188
+ defaultProps: true,
189
+ displayName: true,
190
+ propTypes: true
191
+ };
192
+
193
+ var TYPE_STATICS = {};
194
+ TYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;
206
195
 
207
196
  var defineProperty = Object.defineProperty;
208
197
  var getOwnPropertyNames = Object.getOwnPropertyNames;
@@ -586,8 +575,8 @@
586
575
  configurable: true,
587
576
  enumerable: true
588
577
  }
589
- /**
590
- * Store Injection
578
+ /**
579
+ * Store Injection
591
580
  */
592
581
 
593
582
  };
@@ -671,11 +660,11 @@
671
660
  return nextProps;
672
661
  };
673
662
  }
674
- /**
675
- * higher order component that injects stores to a child.
676
- * takes either a varargs list of strings, which are stores read from the context,
677
- * or a function that manually maps the available stores from the context to props:
678
- * storesToProps(mobxStores, props, context) => newProps
663
+ /**
664
+ * higher order component that injects stores to a child.
665
+ * takes either a varargs list of strings, which are stores read from the context,
666
+ * or a function that manually maps the available stores from the context to props:
667
+ * storesToProps(mobxStores, props, context) => newProps
679
668
  */
680
669
 
681
670
 
@@ -713,8 +702,8 @@
713
702
 
714
703
  var mobxAdminProperty = mobx.$mobx || "$mobx";
715
704
  var mobxIsUnmounted = newSymbol("isUnmounted");
716
- /**
717
- * dev tool support
705
+ /**
706
+ * dev tool support
718
707
  */
719
708
 
720
709
  var isDevtoolsEnabled = false;
@@ -727,11 +716,11 @@
727
716
  var isForcingUpdateKey = newSymbol("isForcingUpdate"); // Using react-is had some issues (and operates on elements, not on types), see #608 / #609
728
717
 
729
718
  var ReactForwardRefSymbol = typeof React.forwardRef === "function" && React.forwardRef(function (_props, _ref) {})["$$typeof"];
730
- /**
731
- * Helper to set `prop` to `this` as non-enumerable (hidden prop)
732
- * @param target
733
- * @param prop
734
- * @param value
719
+ /**
720
+ * Helper to set `prop` to `this` as non-enumerable (hidden prop)
721
+ * @param target
722
+ * @param prop
723
+ * @param value
735
724
  */
736
725
 
737
726
  function setHiddenProp(target, prop, value) {
@@ -771,13 +760,13 @@
771
760
  function useStaticRendering(useStaticRendering) {
772
761
  isUsingStaticRendering = useStaticRendering;
773
762
  }
774
- /**
775
- * Errors reporter
763
+ /**
764
+ * Errors reporter
776
765
  */
777
766
 
778
767
  var errorsReporter = new EventEmitter();
779
- /**
780
- * Utilities
768
+ /**
769
+ * Utilities
781
770
  */
782
771
 
783
772
  function patch$1(target, funcName) {
@@ -852,15 +841,15 @@
852
841
 
853
842
  var initialName = this.displayName || this.name || this.constructor && (this.constructor.displayName || this.constructor.name) || "<component>";
854
843
  var rootNodeID = this._reactInternalInstance && this._reactInternalInstance._rootNodeID || this._reactInternalInstance && this._reactInternalInstance._debugID || this._reactInternalFiber && this._reactInternalFiber._debugID;
855
- /**
856
- * If props are shallowly modified, react will render anyway,
857
- * so atom.reportChanged() should not result in yet another re-render
844
+ /**
845
+ * If props are shallowly modified, react will render anyway,
846
+ * so atom.reportChanged() should not result in yet another re-render
858
847
  */
859
848
 
860
849
  setHiddenProp(this, skipRenderKey, false);
861
- /**
862
- * forceUpdate will re-assign this.props. We don't want that to cause a loop,
863
- * so detect these changes
850
+ /**
851
+ * forceUpdate will re-assign this.props. We don't want that to cause a loop,
852
+ * so detect these changes
864
853
  */
865
854
 
866
855
  setHiddenProp(this, isForcingUpdateKey, false); // wire up reactive render
@@ -897,8 +886,8 @@
897
886
  this.render = reactiveRender;
898
887
  return reactiveRender.call(this);
899
888
  }
900
- /**
901
- * ReactiveMixin
889
+ /**
890
+ * ReactiveMixin
902
891
  */
903
892
 
904
893
 
@@ -981,8 +970,8 @@
981
970
  }
982
971
  });
983
972
  }
984
- /**
985
- * Observer function / decorator
973
+ /**
974
+ * Observer function / decorator
986
975
  */
987
976
 
988
977
 
@@ -1024,14 +1013,13 @@
1024
1013
 
1025
1014
  if (ReactForwardRefSymbol && componentClass["$$typeof"] === ReactForwardRefSymbol) {
1026
1015
  var _baseRender = componentClass.render;
1027
- if (typeof _baseRender !== "function") throw new Error("render property of ForwardRef was not a function");
1028
- return _objectSpread({}, componentClass, {
1029
- render: function render() {
1030
- var _arguments = arguments;
1031
- return React__default.createElement(Observer, null, function () {
1032
- return _baseRender.apply(undefined, _arguments);
1033
- });
1034
- }
1016
+ 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?
1017
+
1018
+ return React.forwardRef(function ObserverForwardRef() {
1019
+ var _arguments = arguments;
1020
+ return React__default.createElement(Observer, null, function () {
1021
+ return _baseRender.apply(undefined, _arguments);
1022
+ });
1035
1023
  });
1036
1024
  } // Stateless function component:
1037
1025
  // If it is function but doesn't seem to be a react class constructor,