mobx-react 8.0.0 → 9.0.0
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/CHANGELOG.md +13 -0
- package/README.md +92 -5
- package/dist/mobxreact.cjs.development.js +27 -47
- package/dist/mobxreact.cjs.development.js.map +1 -1
- package/dist/mobxreact.cjs.production.min.js +1 -1
- package/dist/mobxreact.cjs.production.min.js.map +1 -1
- package/dist/mobxreact.esm.development.js +28 -48
- package/dist/mobxreact.esm.development.js.map +1 -1
- package/dist/mobxreact.esm.js +28 -48
- package/dist/mobxreact.esm.js.map +1 -1
- package/dist/mobxreact.esm.production.min.js +1 -1
- package/dist/mobxreact.esm.production.min.js.map +1 -1
- package/dist/mobxreact.umd.development.js +27 -47
- package/dist/mobxreact.umd.development.js.map +1 -1
- package/dist/mobxreact.umd.production.min.js +1 -1
- package/dist/mobxreact.umd.production.min.js.map +1 -1
- package/package.json +3 -3
- package/src/observerClass.ts +39 -65
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# mobx-react
|
|
2
2
|
|
|
3
|
+
## 9.0.0
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- [`473cb3f5`](https://github.com/mobxjs/mobx/commit/473cb3f5fc8bf43abdd1c9c7857fe2820d2291fe) [#3718](https://github.com/mobxjs/mobx/pull/3718) Thanks [@mweststrate](https://github.com/mweststrate)! - - Fixed `observer` in `StrictMode` #3671
|
|
8
|
+
- **[BREAKING CHANGE]** Class component's `props`/`state`/`context` are no longer observable. Attempt to use these in any derivation other than component's `render` throws and error. For details see https://github.com/mobxjs/mobx/blob/main/packages/mobx-react/README.md#note-on-using-props-and-state-in-derivations
|
|
9
|
+
- Extending or applying `observer` classes is now explicitly forbidden
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [[`58bb052c`](https://github.com/mobxjs/mobx/commit/58bb052ca41b8592e5bd5c3003b68ec52da53f33), [`473cb3f5`](https://github.com/mobxjs/mobx/commit/473cb3f5fc8bf43abdd1c9c7857fe2820d2291fe)]:
|
|
14
|
+
- mobx-react-lite@4.0.3
|
|
15
|
+
|
|
3
16
|
## 8.0.0
|
|
4
17
|
|
|
5
18
|
### Major Changes
|
package/README.md
CHANGED
|
@@ -15,10 +15,11 @@ This package supports both React and React Native.
|
|
|
15
15
|
|
|
16
16
|
Only the latest version is actively maintained. If you're missing a fix or a feature in older version, consider upgrading or using [patch-package](https://www.npmjs.com/package/patch-package)
|
|
17
17
|
|
|
18
|
-
| NPM Version | Support MobX version | Supported React versions |
|
|
18
|
+
| NPM Version | Support MobX version | Supported React versions | Added support for: |
|
|
19
19
|
| ----------- | -------------------- | ------------------------ | -------------------------------------------------------------------------------- |
|
|
20
|
-
|
|
|
21
|
-
|
|
|
20
|
+
| v8 | 6.\* | >16.8 | Hooks, React 18.2 in strict mode |
|
|
21
|
+
| v7 | 6.\* | >16.8 < 18.2 | Hooks |
|
|
22
|
+
| v6 | 4.\* / 5.\* | >16.8 <18 | Hooks |
|
|
22
23
|
| v5 | 4.\* / 5.\* | >0.13 <18 | No, but it is possible to use `<Observer>` sections inside hook based components |
|
|
23
24
|
|
|
24
25
|
mobx-react 6 / 7 is a repackage of the smaller [mobx-react-lite](https://github.com/mobxjs/mobx/tree/main/packages/mobx-react-lite) package + following features from the `mobx-react@5` package added:
|
|
@@ -57,10 +58,10 @@ Function (and decorator) that converts a React component definition, React compo
|
|
|
57
58
|
|
|
58
59
|
#### Class Components
|
|
59
60
|
|
|
60
|
-
When using component classes, `this.props` and `this.state` will be made observables, so the component will react to all changes in props and state that are used by `render`.
|
|
61
|
-
|
|
62
61
|
`shouldComponentUpdate` is not supported. As such, it is recommended that class components extend `React.PureComponent`. The `observer` will automatically patch non-pure class components with an internal implementation of `React.PureComponent` if necessary.
|
|
63
62
|
|
|
63
|
+
Extending `observer` class components is not supported. Always apply `observer` only on the last class in the inheritance chain.
|
|
64
|
+
|
|
64
65
|
See the [MobX](https://mobx.js.org/react-integration.html#react-integration) documentation for more details.
|
|
65
66
|
|
|
66
67
|
```javascript
|
|
@@ -87,6 +88,92 @@ class TodoView extends React.Component {
|
|
|
87
88
|
const TodoView = observer(({ todo }) => <div>{todo.title}</div>)
|
|
88
89
|
```
|
|
89
90
|
|
|
91
|
+
##### Note on using props and state in derivations
|
|
92
|
+
|
|
93
|
+
`mobx-react` version 6 and lower would automatically turn `this.state` and `this.props` into observables.
|
|
94
|
+
This has the benefit that computed properties and reactions were able to observe those.
|
|
95
|
+
However, since this pattern is fundamentally incompatible with `StrictMode` in React 18.2 and higher, this behavior has been removed in React 18.
|
|
96
|
+
|
|
97
|
+
As a result, we recommend to no longer mark properties as `@computed` in observer components if they depend on `this.state` or `this.props`.
|
|
98
|
+
|
|
99
|
+
```javascript
|
|
100
|
+
@observer
|
|
101
|
+
class Doubler extends React.Component<{ counter: number }> {
|
|
102
|
+
@computed // BROKEN! <-- @computed should be removed in mobx-react > 7
|
|
103
|
+
get doubleValue() {
|
|
104
|
+
// Changes to this.props will no longer be detected properly, to fix it,
|
|
105
|
+
// remove the @computed annotation.
|
|
106
|
+
return this.props * 2
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
render() {
|
|
110
|
+
return <div>{this.doubleValue}</div>
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
Similarly, reactions will no longer respond to `this.state` / `this.props`. This can be overcome by creating an observable copy:
|
|
116
|
+
|
|
117
|
+
```javascript
|
|
118
|
+
@observer
|
|
119
|
+
class Alerter extends React.Component<{ counter: number }> {
|
|
120
|
+
@observable observableCounter: number
|
|
121
|
+
reactionDisposer
|
|
122
|
+
|
|
123
|
+
constructor(props) {
|
|
124
|
+
this.observableCounter = counter
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
componentDidMount() {
|
|
128
|
+
// set up a reaction, by observing the observable,
|
|
129
|
+
// rather than the prop which is non-reactive:
|
|
130
|
+
this.reactionDisposer = autorun(() => {
|
|
131
|
+
if (this.observableCounter > 10) {
|
|
132
|
+
alert("Reached 10!")
|
|
133
|
+
}
|
|
134
|
+
})
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
componentDidUpdate() {
|
|
138
|
+
// sync the observable from props
|
|
139
|
+
this.observableCounter = this.props.counter
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
componentWillUnmount() {
|
|
143
|
+
this.reactionDisposer()
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
render() {
|
|
147
|
+
return <div>{this.props.counter}</div>
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
MobX-react will try to detect cases where `this.props`, `this.state` or `this.context` are used by any other derivation than the `render` method of the owning component and throw.
|
|
153
|
+
This is to make sure that neither computed properties, nor reactions, nor other components accidentally rely on those fields to be reactive.
|
|
154
|
+
|
|
155
|
+
This includes cases where a render callback is passed to a child, that will read from the props or state of a parent component.
|
|
156
|
+
As a result, passing a function that might later read a property of a parent in a reactive context will throw as well.
|
|
157
|
+
Instead, when using a callback function that is being passed to an `observer` based child, the capture should be captured locally first:
|
|
158
|
+
|
|
159
|
+
```javascript
|
|
160
|
+
@observer
|
|
161
|
+
class ChildWrapper extends React.Component<{ counter: number }> {
|
|
162
|
+
render() {
|
|
163
|
+
// Collapsible is an observer component that should respond to this.counter,
|
|
164
|
+
// if it is expanded
|
|
165
|
+
|
|
166
|
+
// BAD:
|
|
167
|
+
return <Collapsible onRenderContent={() => <h1>{this.props.counter}</h1>} />
|
|
168
|
+
|
|
169
|
+
// GOOD: (causes to pass down a fresh callback whenever counter changes,
|
|
170
|
+
// that doesn't depend on its parents props)
|
|
171
|
+
const counter = this.props.counter
|
|
172
|
+
return <Collapsible onRenderContent={() => <h1>{counter}</h1>} />
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
90
177
|
### `Observer`
|
|
91
178
|
|
|
92
179
|
`Observer` is a React component, which applies `observer` to an anonymous region in your component.
|
|
@@ -141,6 +141,14 @@ function createDefinition(target, methodName, enumerable, mixins, originalMethod
|
|
|
141
141
|
|
|
142
142
|
var administrationSymbol = /*#__PURE__*/Symbol("ObserverAdministration");
|
|
143
143
|
var isMobXReactObserverSymbol = /*#__PURE__*/Symbol("isMobXReactObserver");
|
|
144
|
+
var observablePropDescriptors;
|
|
145
|
+
{
|
|
146
|
+
observablePropDescriptors = {
|
|
147
|
+
props: /*#__PURE__*/createObservablePropDescriptor("props"),
|
|
148
|
+
state: /*#__PURE__*/createObservablePropDescriptor("state"),
|
|
149
|
+
context: /*#__PURE__*/createObservablePropDescriptor("context")
|
|
150
|
+
};
|
|
151
|
+
}
|
|
144
152
|
function getAdministration(component) {
|
|
145
153
|
var _component$administra;
|
|
146
154
|
// We create administration lazily, because we can't patch constructor
|
|
@@ -153,18 +161,14 @@ function getAdministration(component) {
|
|
|
153
161
|
name: getDisplayName(component.constructor),
|
|
154
162
|
state: undefined,
|
|
155
163
|
props: undefined,
|
|
156
|
-
context: undefined
|
|
157
|
-
propsAtom: mobx.createAtom("props"),
|
|
158
|
-
stateAtom: mobx.createAtom("state"),
|
|
159
|
-
contextAtom: mobx.createAtom("context"),
|
|
160
|
-
isUpdating: false
|
|
164
|
+
context: undefined
|
|
161
165
|
};
|
|
162
166
|
}
|
|
163
167
|
function makeClassComponentObserver(componentClass) {
|
|
164
168
|
var prototype = componentClass.prototype;
|
|
165
169
|
if (componentClass[isMobXReactObserverSymbol]) {
|
|
166
170
|
var displayName = getDisplayName(componentClass);
|
|
167
|
-
|
|
171
|
+
throw new Error("The provided component class (" + displayName + ") has already been declared as an observer component.");
|
|
168
172
|
} else {
|
|
169
173
|
componentClass[isMobXReactObserverSymbol] = true;
|
|
170
174
|
}
|
|
@@ -179,15 +183,9 @@ function makeClassComponentObserver(componentClass) {
|
|
|
179
183
|
throw new Error("It is not allowed to use shouldComponentUpdate in observer based components.");
|
|
180
184
|
}
|
|
181
185
|
}
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
// However, this solution is not without it's own problems: https://github.com/mobxjs/mobx-react/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aobservable-props-or-not+
|
|
186
|
-
Object.defineProperties(prototype, {
|
|
187
|
-
props: observablePropsDescriptor,
|
|
188
|
-
state: observableStateDescriptor,
|
|
189
|
-
context: observableContextDescriptor
|
|
190
|
-
});
|
|
186
|
+
{
|
|
187
|
+
Object.defineProperties(prototype, observablePropDescriptors);
|
|
188
|
+
}
|
|
191
189
|
var originalRender = prototype.render;
|
|
192
190
|
if (typeof originalRender !== "function") {
|
|
193
191
|
var _displayName = getDisplayName(componentClass);
|
|
@@ -202,8 +200,13 @@ function makeClassComponentObserver(componentClass) {
|
|
|
202
200
|
});
|
|
203
201
|
return this.render();
|
|
204
202
|
};
|
|
205
|
-
|
|
203
|
+
var originalComponentDidMount = prototype.componentDidMount;
|
|
204
|
+
prototype.componentDidMount = function () {
|
|
206
205
|
var _this = this;
|
|
206
|
+
if ( this.componentDidMount !== Object.getPrototypeOf(this).componentDidMount) {
|
|
207
|
+
var _displayName2 = getDisplayName(componentClass);
|
|
208
|
+
throw new Error("[mobx-react] `observer(" + _displayName2 + ").componentDidMount` must be defined on prototype." + "\n`componentDidMount = () => {}` or `componentDidMount = function() {}` is not supported.");
|
|
209
|
+
}
|
|
207
210
|
// `componentDidMount` may not be called at all. React can abandon the instance after `render`.
|
|
208
211
|
// That's why we use finalization registry to dispose reaction created during render.
|
|
209
212
|
// Happens with `<Suspend>` see #3492
|
|
@@ -234,7 +237,9 @@ function makeClassComponentObserver(componentClass) {
|
|
|
234
237
|
// The reaction will be created lazily by following render.
|
|
235
238
|
admin.forceUpdate();
|
|
236
239
|
}
|
|
237
|
-
|
|
240
|
+
return originalComponentDidMount == null ? void 0 : originalComponentDidMount.apply(this, arguments);
|
|
241
|
+
};
|
|
242
|
+
// TODO@major Overly complicated "patch" is only needed to support the deprecated @disposeOnUnmount
|
|
238
243
|
patch(prototype, "componentWillUnmount", function () {
|
|
239
244
|
var _admin$reaction;
|
|
240
245
|
if (mobxReactLite.isUsingStaticRendering()) {
|
|
@@ -285,11 +290,6 @@ function createReactiveRender(originalRender) {
|
|
|
285
290
|
}
|
|
286
291
|
function createReaction(admin) {
|
|
287
292
|
return new mobx.Reaction(admin.name + ".render()", function () {
|
|
288
|
-
if (admin.isUpdating) {
|
|
289
|
-
// Reaction is suppressed when setting new state/props/context,
|
|
290
|
-
// this is when component is already being updated.
|
|
291
|
-
return;
|
|
292
|
-
}
|
|
293
293
|
if (!admin.mounted) {
|
|
294
294
|
// This is neccessary to avoid react warning about calling forceUpdate on component that isn't mounted yet.
|
|
295
295
|
// This happens when component is abandoned after render - our reaction is already created and reacts to changes.
|
|
@@ -297,15 +297,11 @@ function createReaction(admin) {
|
|
|
297
297
|
return;
|
|
298
298
|
}
|
|
299
299
|
try {
|
|
300
|
-
// forceUpdate sets new `props`, since we made it observable, it would `reportChanged`, causing a loop.
|
|
301
|
-
admin.isUpdating = true;
|
|
302
300
|
admin.forceUpdate == null ? void 0 : admin.forceUpdate();
|
|
303
301
|
} catch (error) {
|
|
304
302
|
var _admin$reaction2;
|
|
305
303
|
(_admin$reaction2 = admin.reaction) == null ? void 0 : _admin$reaction2.dispose();
|
|
306
304
|
admin.reaction = null;
|
|
307
|
-
} finally {
|
|
308
|
-
admin.isUpdating = false;
|
|
309
305
|
}
|
|
310
306
|
});
|
|
311
307
|
}
|
|
@@ -324,38 +320,22 @@ function observerSCU(nextProps, nextState) {
|
|
|
324
320
|
return !shallowEqual(this.props, nextProps);
|
|
325
321
|
}
|
|
326
322
|
function createObservablePropDescriptor(key) {
|
|
327
|
-
var atomKey = key + "Atom";
|
|
328
323
|
return {
|
|
329
324
|
configurable: true,
|
|
330
325
|
enumerable: true,
|
|
331
326
|
get: function get() {
|
|
332
327
|
var admin = getAdministration(this);
|
|
333
|
-
var
|
|
334
|
-
admin
|
|
335
|
-
|
|
328
|
+
var derivation = mobx._getGlobalState().trackingDerivation;
|
|
329
|
+
if (derivation && derivation !== admin.reaction) {
|
|
330
|
+
throw new Error("[mobx-react] Cannot read \"" + admin.name + "." + key + "\" in a reactive context, as it isn't observable.\n Please use component lifecycle method to copy the value into a local observable first.\n See https://github.com/mobxjs/mobx/blob/main/packages/mobx-react/README.md#note-on-using-props-and-state-in-derivations");
|
|
331
|
+
}
|
|
336
332
|
return admin[key];
|
|
337
333
|
},
|
|
338
334
|
set: function set(value) {
|
|
339
|
-
|
|
340
|
-
// forceUpdate issued by reaction sets new props.
|
|
341
|
-
// It sets isUpdating to true to prevent loop.
|
|
342
|
-
if (!admin.isUpdating && !shallowEqual(admin[key], value)) {
|
|
343
|
-
admin[key] = value;
|
|
344
|
-
// This notifies all observers including our component,
|
|
345
|
-
// but we don't want to cause `forceUpdate`, because component is already updating,
|
|
346
|
-
// therefore supress component reaction.
|
|
347
|
-
admin.isUpdating = true;
|
|
348
|
-
admin[atomKey].reportChanged();
|
|
349
|
-
admin.isUpdating = false;
|
|
350
|
-
} else {
|
|
351
|
-
admin[key] = value;
|
|
352
|
-
}
|
|
335
|
+
getAdministration(this)[key] = value;
|
|
353
336
|
}
|
|
354
337
|
};
|
|
355
338
|
}
|
|
356
|
-
var observablePropsDescriptor = /*#__PURE__*/createObservablePropDescriptor("props");
|
|
357
|
-
var observableStateDescriptor = /*#__PURE__*/createObservablePropDescriptor("state");
|
|
358
|
-
var observableContextDescriptor = /*#__PURE__*/createObservablePropDescriptor("context");
|
|
359
339
|
|
|
360
340
|
/**
|
|
361
341
|
* Observer function / decorator
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mobxreact.cjs.development.js","sources":["../src/utils/utils.ts","../src/observerClass.ts","../src/observer.tsx","../src/Provider.tsx","../src/inject.ts","../src/disposeOnUnmount.ts","../src/propTypes.ts","../src/index.ts"],"sourcesContent":["export function shallowEqual(objA: any, objB: any): boolean {\n //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (is(objA, objB)) {\n return true\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false\n }\n const keysA = Object.keys(objA)\n const keysB = Object.keys(objB)\n if (keysA.length !== keysB.length) {\n return false\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false\n }\n }\n return true\n}\n\nfunction is(x: any, y: any): boolean {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y\n } else {\n return x !== x && y !== y\n }\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList = {\n $$typeof: 1,\n render: 1,\n compare: 1,\n type: 1,\n childContextTypes: 1,\n contextType: 1,\n contextTypes: 1,\n defaultProps: 1,\n getDefaultProps: 1,\n getDerivedStateFromError: 1,\n getDerivedStateFromProps: 1,\n mixins: 1,\n displayName: 1,\n propTypes: 1\n}\n\nexport function copyStaticProperties(base: object, target: object): void {\n const protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base))\n Object.getOwnPropertyNames(base).forEach(key => {\n if (!hoistBlackList[key] && protoProps.indexOf(key) === -1) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n }\n })\n}\n\n/**\n * Helper to set `prop` to `this` as non-enumerable (hidden prop)\n * @param target\n * @param prop\n * @param value\n */\nexport function setHiddenProp(target: object, prop: any, value: any): void {\n if (!Object.hasOwnProperty.call(target, prop)) {\n Object.defineProperty(target, prop, {\n enumerable: false,\n configurable: true,\n writable: true,\n value\n })\n } else {\n target[prop] = value\n }\n}\n\n/**\n * Utilities for patching componentWillUnmount, to make sure @disposeOnUnmount works correctly icm with user defined hooks\n * and the handler provided by mobx-react\n */\nconst mobxMixins = Symbol(\"patchMixins\")\nconst mobxPatchedDefinition = Symbol(\"patchedDefinition\")\n\nexport interface Mixins extends Record<string, any> {\n locks: number\n methods: Array<Function>\n}\n\nfunction getMixins(target: object, methodName: string): Mixins {\n const mixins = (target[mobxMixins] = target[mobxMixins] || {})\n const methodMixins = (mixins[methodName] = mixins[methodName] || {})\n methodMixins.locks = methodMixins.locks || 0\n methodMixins.methods = methodMixins.methods || []\n return methodMixins\n}\n\nfunction wrapper(realMethod: Function, mixins: Mixins, ...args: Array<any>) {\n // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls\n mixins.locks++\n\n try {\n let retVal\n if (realMethod !== undefined && realMethod !== null) {\n retVal = realMethod.apply(this, args)\n }\n\n return retVal\n } finally {\n mixins.locks--\n if (mixins.locks === 0) {\n mixins.methods.forEach(mx => {\n mx.apply(this, args)\n })\n }\n }\n}\n\nfunction wrapFunction(realMethod: Function, mixins: Mixins): (...args: Array<any>) => any {\n const fn = function (...args: Array<any>) {\n wrapper.call(this, realMethod, mixins, ...args)\n }\n return fn\n}\n\nexport function patch(target: object, methodName: string, mixinMethod: Function): void {\n const mixins = getMixins(target, methodName)\n\n if (mixins.methods.indexOf(mixinMethod) < 0) {\n mixins.methods.push(mixinMethod)\n }\n\n const oldDefinition = Object.getOwnPropertyDescriptor(target, methodName)\n if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {\n // already patched definition, do not repatch\n return\n }\n\n const originalMethod = target[methodName]\n const newDefinition = createDefinition(\n target,\n methodName,\n oldDefinition ? oldDefinition.enumerable : undefined,\n mixins,\n originalMethod\n )\n\n Object.defineProperty(target, methodName, newDefinition)\n}\n\nfunction createDefinition(\n target: object,\n methodName: string,\n enumerable: any,\n mixins: Mixins,\n originalMethod: Function\n): PropertyDescriptor {\n let wrappedFunc = wrapFunction(originalMethod, mixins)\n\n return {\n // @ts-ignore\n [mobxPatchedDefinition]: true,\n get: function () {\n return wrappedFunc\n },\n set: function (value) {\n if (this === target) {\n wrappedFunc = wrapFunction(value, mixins)\n } else {\n // when it is an instance of the prototype/a child prototype patch that particular case again separately\n // since we need to store separate values depending on wether it is the actual instance, the prototype, etc\n // e.g. the method for super might not be the same as the method for the prototype which might be not the same\n // as the method for the instance\n const newDefinition = createDefinition(this, methodName, enumerable, mixins, value)\n Object.defineProperty(this, methodName, newDefinition)\n }\n },\n configurable: true,\n enumerable: enumerable\n }\n}\n","import { PureComponent, Component, ComponentClass, ClassAttributes } from \"react\"\nimport {\n createAtom,\n _allowStateChanges,\n Reaction,\n _allowStateReadsStart,\n _allowStateReadsEnd,\n _getGlobalState,\n IAtom\n} from \"mobx\"\nimport {\n isUsingStaticRendering,\n _observerFinalizationRegistry as observerFinalizationRegistry\n} from \"mobx-react-lite\"\nimport { shallowEqual, patch } from \"./utils/utils\"\n\nconst administrationSymbol = Symbol(\"ObserverAdministration\")\nconst isMobXReactObserverSymbol = Symbol(\"isMobXReactObserver\")\n\ntype ObserverAdministration = {\n reaction: Reaction | null // also serves as disposed flag\n forceUpdate: Function | null\n mounted: boolean // we could use forceUpdate as mounted flag\n name: string\n propsAtom: IAtom\n stateAtom: IAtom\n contextAtom: IAtom\n props: any\n state: any\n context: any\n // Setting this.props causes forceUpdate, because this.props is observable.\n // forceUpdate sets this.props.\n // This flag is used to avoid the loop.\n isUpdating: boolean\n}\n\nfunction getAdministration(component: Component): ObserverAdministration {\n // We create administration lazily, because we can't patch constructor\n // and the exact moment of initialization partially depends on React internals.\n // At the time of writing this, the first thing invoked is one of the observable getter/setter (state/props/context).\n return (component[administrationSymbol] ??= {\n reaction: null,\n mounted: false,\n forceUpdate: null,\n name: getDisplayName(component.constructor as ComponentClass),\n state: undefined,\n props: undefined,\n context: undefined,\n propsAtom: createAtom(\"props\"),\n stateAtom: createAtom(\"state\"),\n contextAtom: createAtom(\"context\"),\n isUpdating: false\n })\n}\n\nexport function makeClassComponentObserver(\n componentClass: ComponentClass<any, any>\n): ComponentClass<any, any> {\n const { prototype } = componentClass\n\n if (componentClass[isMobXReactObserverSymbol]) {\n const displayName = getDisplayName(componentClass)\n console.warn(\n `The provided component class (${displayName})\n has already been declared as an observer component.`\n )\n } else {\n componentClass[isMobXReactObserverSymbol] = true\n }\n\n if (prototype.componentWillReact) {\n throw new Error(\"The componentWillReact life-cycle event is no longer supported\")\n }\n if (componentClass[\"__proto__\"] !== PureComponent) {\n if (!prototype.shouldComponentUpdate) {\n prototype.shouldComponentUpdate = observerSCU\n } else if (prototype.shouldComponentUpdate !== observerSCU) {\n // n.b. unequal check, instead of existence check, as @observer might be on superclass as well\n throw new Error(\n \"It is not allowed to use shouldComponentUpdate in observer based components.\"\n )\n }\n }\n\n // this.props and this.state are made observable, just to make sure @computed fields that\n // are defined inside the component, and which rely on state or props, re-compute if state or props change\n // (otherwise the computed wouldn't update and become stale on props change, since props are not observable)\n // However, this solution is not without it's own problems: https://github.com/mobxjs/mobx-react/issues?utf8=%E2%9C%93&q=is%3Aissue+label%3Aobservable-props-or-not+\n Object.defineProperties(prototype, {\n props: observablePropsDescriptor,\n state: observableStateDescriptor,\n context: observableContextDescriptor\n })\n\n const originalRender = prototype.render\n if (typeof originalRender !== \"function\") {\n const displayName = getDisplayName(componentClass)\n throw new Error(\n `[mobx-react] class component (${displayName}) is missing \\`render\\` method.` +\n `\\n\\`observer\\` requires \\`render\\` being a function defined on prototype.` +\n `\\n\\`render = () => {}\\` or \\`render = function() {}\\` is not supported.`\n )\n }\n\n prototype.render = function () {\n Object.defineProperty(this, \"render\", {\n // There is no safe way to replace render, therefore it's forbidden.\n configurable: false,\n writable: false,\n value: isUsingStaticRendering()\n ? originalRender\n : createReactiveRender.call(this, originalRender)\n })\n return this.render()\n }\n\n patch(prototype, \"componentDidMount\", function () {\n // `componentDidMount` may not be called at all. React can abandon the instance after `render`.\n // That's why we use finalization registry to dispose reaction created during render.\n // Happens with `<Suspend>` see #3492\n //\n // `componentDidMount` can be called immediately after `componentWillUnmount` without calling `render` in between.\n // Happens with `<StrictMode>`see #3395.\n //\n // If `componentDidMount` is called, it's guaranteed to run synchronously with render (similary to `useLayoutEffect`).\n // Therefore we don't have to worry about external (observable) state being updated before mount (no state version checking).\n //\n // Things may change: \"In the future, React will provide a feature that lets components preserve state between unmounts\"\n\n const admin = getAdministration(this)\n\n admin.mounted = true\n\n // Component instance committed, prevent reaction disposal.\n observerFinalizationRegistry.unregister(admin)\n\n // We don't set forceUpdate before mount because it requires a reference to `this`,\n // therefore `this` could NOT be garbage collected before mount,\n // preventing reaction disposal by FinalizationRegistry and leading to memory leak.\n // As an alternative we could have `admin.instanceRef = new WeakRef(this)`, but lets avoid it if possible.\n admin.forceUpdate = () => this.forceUpdate()\n\n if (!admin.reaction) {\n // 1. Instance was unmounted (reaction disposed) and immediately remounted without running render #3395.\n // 2. Reaction was disposed by finalization registry before mount. Shouldn't ever happen for class components:\n // `componentDidMount` runs synchronously after render, but our registry are deferred (can't run in between).\n // In any case we lost subscriptions to observables, so we have to create new reaction and re-render to resubscribe.\n // The reaction will be created lazily by following render.\n admin.forceUpdate()\n }\n })\n\n patch(prototype, \"componentWillUnmount\", function () {\n if (isUsingStaticRendering()) {\n return\n }\n const admin = getAdministration(this)\n admin.reaction?.dispose()\n admin.reaction = null\n admin.forceUpdate = null\n admin.mounted = false\n })\n\n return componentClass\n}\n\n// Generates a friendly name for debugging\nfunction getDisplayName(componentClass: ComponentClass) {\n return componentClass.displayName || componentClass.name || \"<component>\"\n}\n\nfunction createReactiveRender(originalRender: any) {\n const boundOriginalRender = originalRender.bind(this)\n\n const admin = getAdministration(this)\n\n function reactiveRender() {\n if (!admin.reaction) {\n // Create reaction lazily to support re-mounting #3395\n admin.reaction = createReaction(admin)\n if (!admin.mounted) {\n // React can abandon this instance and never call `componentDidMount`/`componentWillUnmount`,\n // we have to make sure reaction will be disposed.\n observerFinalizationRegistry.register(this, admin, this)\n }\n }\n\n let error: unknown = undefined\n let renderResult = undefined\n admin.reaction.track(() => {\n try {\n // TODO@major\n // Optimization: replace with _allowStateChangesStart/End (not available in mobx@6.0.0)\n renderResult = _allowStateChanges(false, boundOriginalRender)\n } catch (e) {\n error = e\n }\n })\n if (error) {\n throw error\n }\n return renderResult\n }\n\n return reactiveRender\n}\n\nfunction createReaction(admin: ObserverAdministration) {\n return new Reaction(`${admin.name}.render()`, () => {\n if (admin.isUpdating) {\n // Reaction is suppressed when setting new state/props/context,\n // this is when component is already being updated.\n return\n }\n\n if (!admin.mounted) {\n // This is neccessary to avoid react warning about calling forceUpdate on component that isn't mounted yet.\n // This happens when component is abandoned after render - our reaction is already created and reacts to changes.\n // Due to the synchronous nature of `componenDidMount`, we don't have to worry that component could eventually mount and require update.\n return\n }\n\n try {\n // forceUpdate sets new `props`, since we made it observable, it would `reportChanged`, causing a loop.\n admin.isUpdating = true\n admin.forceUpdate?.()\n } catch (error) {\n admin.reaction?.dispose()\n admin.reaction = null\n } finally {\n admin.isUpdating = false\n }\n })\n}\n\nfunction observerSCU(nextProps: ClassAttributes<any>, nextState: any): boolean {\n if (isUsingStaticRendering()) {\n console.warn(\n \"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\"\n )\n }\n // update on any state changes (as is the default)\n if (this.state !== nextState) {\n return true\n }\n // update if props are shallowly not equal, inspired by PureRenderMixin\n // we could return just 'false' here, and avoid the `skipRender` checks etc\n // however, it is nicer if lifecycle events are triggered like usually,\n // so we return true here if props are shallowly modified.\n return !shallowEqual(this.props, nextProps)\n}\n\nfunction createObservablePropDescriptor(key: \"props\" | \"state\" | \"context\") {\n const atomKey = `${key}Atom`\n return {\n configurable: true,\n enumerable: true,\n get() {\n const admin = getAdministration(this)\n\n let prevReadState = _allowStateReadsStart(true)\n\n admin[atomKey].reportObserved()\n\n _allowStateReadsEnd(prevReadState)\n\n return admin[key]\n },\n set(value) {\n const admin = getAdministration(this)\n // forceUpdate issued by reaction sets new props.\n // It sets isUpdating to true to prevent loop.\n if (!admin.isUpdating && !shallowEqual(admin[key], value)) {\n admin[key] = value\n // This notifies all observers including our component,\n // but we don't want to cause `forceUpdate`, because component is already updating,\n // therefore supress component reaction.\n admin.isUpdating = true\n admin[atomKey].reportChanged()\n admin.isUpdating = false\n } else {\n admin[key] = value\n }\n }\n }\n}\n\nconst observablePropsDescriptor = createObservablePropDescriptor(\"props\")\nconst observableStateDescriptor = createObservablePropDescriptor(\"state\")\nconst observableContextDescriptor = createObservablePropDescriptor(\"context\")\n","import * as React from \"react\"\nimport { observer as observerLite } from \"mobx-react-lite\"\n\nimport { makeClassComponentObserver } from \"./observerClass\"\nimport { IReactComponent } from \"./types/IReactComponent\"\n\n/**\n * Observer function / decorator\n */\nexport function observer<T extends IReactComponent>(component: T): T {\n if (component[\"isMobxInjector\"] === true) {\n console.warn(\n \"Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`\"\n )\n }\n\n if (\n Object.prototype.isPrototypeOf.call(React.Component, component) ||\n Object.prototype.isPrototypeOf.call(React.PureComponent, component)\n ) {\n // Class component\n return makeClassComponentObserver(component as React.ComponentClass<any, any>) as T\n } else {\n // Function component\n return observerLite(component as React.FunctionComponent<any>) as T\n }\n}\n","import React from \"react\"\nimport { shallowEqual } from \"./utils/utils\"\nimport { IValueMap } from \"./types/IValueMap\"\n\nexport const MobXProviderContext = React.createContext<IValueMap>({})\n\nexport interface ProviderProps extends IValueMap {\n children: React.ReactNode\n}\n\nexport function Provider(props: ProviderProps) {\n const { children, ...stores } = props\n const parentValue = React.useContext(MobXProviderContext)\n const mutableProviderRef = React.useRef({ ...parentValue, ...stores })\n const value = mutableProviderRef.current\n\n if (__DEV__) {\n const newValue = { ...value, ...stores } // spread in previous state for the context based stores\n if (!shallowEqual(value, newValue)) {\n throw new Error(\n \"MobX Provider: The set of provided stores has changed. See: https://github.com/mobxjs/mobx-react#the-set-of-provided-stores-has-changed-error.\"\n )\n }\n }\n\n return <MobXProviderContext.Provider value={value}>{children}</MobXProviderContext.Provider>\n}\n\nProvider.displayName = \"MobXProvider\"\n","import React from \"react\"\nimport { observer } from \"./observer\"\nimport { copyStaticProperties } from \"./utils/utils\"\nimport { MobXProviderContext } from \"./Provider\"\nimport { IReactComponent } from \"./types/IReactComponent\"\nimport { IValueMap } from \"./types/IValueMap\"\nimport { IWrappedComponent } from \"./types/IWrappedComponent\"\nimport { IStoresToProps } from \"./types/IStoresToProps\"\n\n/**\n * Store Injection\n */\nfunction createStoreInjector(\n grabStoresFn: IStoresToProps,\n component: IReactComponent<any>,\n injectNames: string,\n makeReactive: boolean\n): IReactComponent<any> {\n // Support forward refs\n let Injector: IReactComponent<any> = React.forwardRef((props, ref) => {\n const newProps = { ...props }\n const context = React.useContext(MobXProviderContext)\n Object.assign(newProps, grabStoresFn(context || {}, newProps) || {})\n\n if (ref) {\n newProps.ref = ref\n }\n\n return React.createElement(component, newProps)\n })\n\n if (makeReactive) Injector = observer(Injector)\n Injector[\"isMobxInjector\"] = true // assigned late to suppress observer warning\n\n // Static fields from component should be visible on the generated Injector\n copyStaticProperties(component, Injector)\n Injector[\"wrappedComponent\"] = component\n Injector.displayName = getInjectName(component, injectNames)\n return Injector\n}\n\nfunction getInjectName(component: IReactComponent<any>, injectNames: string): string {\n let displayName\n const componentName =\n component.displayName ||\n component.name ||\n (component.constructor && component.constructor.name) ||\n \"Component\"\n if (injectNames) displayName = \"inject-with-\" + injectNames + \"(\" + componentName + \")\"\n else displayName = \"inject(\" + componentName + \")\"\n return displayName\n}\n\nfunction grabStoresByName(\n storeNames: Array<string>\n): (\n baseStores: IValueMap,\n nextProps: React.ClassAttributes<any>\n) => React.PropsWithRef<any> | undefined {\n return function (baseStores, nextProps) {\n storeNames.forEach(function (storeName) {\n if (\n storeName in nextProps // prefer props over stores\n )\n return\n if (!(storeName in baseStores))\n throw new Error(\n \"MobX injector: Store '\" +\n storeName +\n \"' is not available! Make sure it is provided by some Provider\"\n )\n nextProps[storeName] = baseStores[storeName]\n })\n return nextProps\n }\n}\n\nexport function inject(\n ...stores: Array<string>\n): <T extends IReactComponent<any>>(\n target: T\n) => T & (T extends IReactComponent<infer P> ? IWrappedComponent<P> : never)\nexport function inject<S extends IValueMap = {}, P extends IValueMap = {}, I extends IValueMap = {}, C extends IValueMap = {}>(\n fn: IStoresToProps<S, P, I, C>\n): <T extends IReactComponent>(target: T) => T & IWrappedComponent<P>\n\n/**\n * higher order component that injects stores to a child.\n * takes either a varargs list of strings, which are stores read from the context,\n * or a function that manually maps the available stores from the context to props:\n * storesToProps(mobxStores, props, context) => newProps\n */\nexport function inject(/* fn(stores, nextProps) or ...storeNames */ ...storeNames: Array<any>) {\n if (typeof arguments[0] === \"function\") {\n let grabStoresFn = arguments[0]\n return (componentClass: React.ComponentClass<any, any>) =>\n createStoreInjector(grabStoresFn, componentClass, grabStoresFn.name, true)\n } else {\n return (componentClass: React.ComponentClass<any, any>) =>\n createStoreInjector(\n grabStoresByName(storeNames),\n componentClass,\n storeNames.join(\"-\"),\n false\n )\n }\n}\n","import React from \"react\"\nimport { patch } from \"./utils/utils\"\n\nconst reactMajorVersion = Number.parseInt(React.version.split(\".\")[0])\nlet warnedAboutDisposeOnUnmountDeprecated = false\n\ntype Disposer = () => void\n\nconst protoStoreKey = Symbol(\"disposeOnUnmountProto\")\nconst instStoreKey = Symbol(\"disposeOnUnmountInst\")\n\nfunction runDisposersOnWillUnmount() {\n ;[...(this[protoStoreKey] || []), ...(this[instStoreKey] || [])].forEach(propKeyOrFunction => {\n const prop =\n typeof propKeyOrFunction === \"string\" ? this[propKeyOrFunction] : propKeyOrFunction\n if (prop !== undefined && prop !== null) {\n if (Array.isArray(prop)) prop.map(f => f())\n else prop()\n }\n })\n}\n\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nexport function disposeOnUnmount(target: React.Component<any, any>, propertyKey: PropertyKey): void\n\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nexport function disposeOnUnmount<TF extends Disposer | Array<Disposer>>(\n target: React.Component<any, any>,\n fn: TF\n): TF\n\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nexport function disposeOnUnmount(\n target: React.Component<any, any>,\n propertyKeyOrFunction: PropertyKey | Disposer | Array<Disposer>\n): PropertyKey | Disposer | Array<Disposer> | void {\n if (Array.isArray(propertyKeyOrFunction)) {\n return propertyKeyOrFunction.map(fn => disposeOnUnmount(target, fn))\n }\n\n if (!warnedAboutDisposeOnUnmountDeprecated) {\n if (reactMajorVersion >= 18) {\n console.error(\n \"[mobx-react] disposeOnUnmount is not compatible with React 18 and higher. Don't use it.\"\n )\n } else {\n console.warn(\n \"[mobx-react] disposeOnUnmount is deprecated. It won't work correctly with React 18 and higher.\"\n )\n }\n warnedAboutDisposeOnUnmountDeprecated = true\n }\n\n const c = Object.getPrototypeOf(target).constructor\n const c2 = Object.getPrototypeOf(target.constructor)\n // Special case for react-hot-loader\n const c3 = Object.getPrototypeOf(Object.getPrototypeOf(target))\n if (\n !(\n c === React.Component ||\n c === React.PureComponent ||\n c2 === React.Component ||\n c2 === React.PureComponent ||\n c3 === React.Component ||\n c3 === React.PureComponent\n )\n ) {\n throw new Error(\n \"[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.\"\n )\n }\n\n if (\n typeof propertyKeyOrFunction !== \"string\" &&\n typeof propertyKeyOrFunction !== \"function\" &&\n !Array.isArray(propertyKeyOrFunction)\n ) {\n throw new Error(\n \"[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.\"\n )\n }\n\n // decorator's target is the prototype, so it doesn't have any instance properties like props\n const isDecorator = typeof propertyKeyOrFunction === \"string\"\n\n // add property key / function we want run (disposed) to the store\n const componentWasAlreadyModified = !!target[protoStoreKey] || !!target[instStoreKey]\n const store = isDecorator\n ? // decorators are added to the prototype store\n target[protoStoreKey] || (target[protoStoreKey] = [])\n : // functions are added to the instance store\n target[instStoreKey] || (target[instStoreKey] = [])\n\n store.push(propertyKeyOrFunction)\n\n // tweak the component class componentWillUnmount if not done already\n if (!componentWasAlreadyModified) {\n patch(target, \"componentWillUnmount\", runDisposersOnWillUnmount)\n }\n\n // return the disposer as is if invoked as a non decorator\n if (typeof propertyKeyOrFunction !== \"string\") {\n return propertyKeyOrFunction\n }\n}\n","import { isObservableArray, isObservableObject, isObservableMap, untracked } from \"mobx\"\n\n// Copied from React.PropTypes\nfunction createChainableTypeChecker(validator: React.Validator<any>): React.Requireable<any> {\n function checkType(\n isRequired: boolean,\n props: any,\n propName: string,\n componentName: string,\n location: string,\n propFullName: string,\n ...rest: any[]\n ) {\n return untracked(() => {\n componentName = componentName || \"<<anonymous>>\"\n propFullName = propFullName || propName\n if (props[propName] == null) {\n if (isRequired) {\n const actual = props[propName] === null ? \"null\" : \"undefined\"\n return new Error(\n \"The \" +\n location +\n \" `\" +\n propFullName +\n \"` is marked as required \" +\n \"in `\" +\n componentName +\n \"`, but its value is `\" +\n actual +\n \"`.\"\n )\n }\n return null\n } else {\n // @ts-ignore rest arg is necessary for some React internals - fails tests otherwise\n return validator(props, propName, componentName, location, propFullName, ...rest)\n }\n })\n }\n\n const chainedCheckType: any = checkType.bind(null, false)\n // Add isRequired to satisfy Requirable\n chainedCheckType.isRequired = checkType.bind(null, true)\n return chainedCheckType\n}\n\n// Copied from React.PropTypes\nfunction isSymbol(propType: any, propValue: any): boolean {\n // Native Symbol.\n if (propType === \"symbol\") {\n return true\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue[\"@@toStringTag\"] === \"Symbol\") {\n return true\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === \"function\" && propValue instanceof Symbol) {\n return true\n }\n\n return false\n}\n\n// Copied from React.PropTypes\nfunction getPropType(propValue: any): string {\n const propType = typeof propValue\n if (Array.isArray(propValue)) {\n return \"array\"\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\"\n }\n if (isSymbol(propType, propValue)) {\n return \"symbol\"\n }\n return propType\n}\n\n// This handles more types than `getPropType`. Only used for error messages.\n// Copied from React.PropTypes\nfunction getPreciseType(propValue: any): string {\n const propType = getPropType(propValue)\n if (propType === \"object\") {\n if (propValue instanceof Date) {\n return \"date\"\n } else if (propValue instanceof RegExp) {\n return \"regexp\"\n }\n }\n return propType\n}\n\nfunction createObservableTypeCheckerCreator(\n allowNativeType: any,\n mobxType: any\n): React.Requireable<any> {\n return createChainableTypeChecker((props, propName, componentName, location, propFullName) => {\n return untracked(() => {\n if (allowNativeType) {\n if (getPropType(props[propName]) === mobxType.toLowerCase()) return null\n }\n let mobxChecker\n switch (mobxType) {\n case \"Array\":\n mobxChecker = isObservableArray\n break\n case \"Object\":\n mobxChecker = isObservableObject\n break\n case \"Map\":\n mobxChecker = isObservableMap\n break\n default:\n throw new Error(`Unexpected mobxType: ${mobxType}`)\n }\n const propValue = props[propName]\n if (!mobxChecker(propValue)) {\n const preciseType = getPreciseType(propValue)\n const nativeTypeExpectationMessage = allowNativeType\n ? \" or javascript `\" + mobxType.toLowerCase() + \"`\"\n : \"\"\n return new Error(\n \"Invalid prop `\" +\n propFullName +\n \"` of type `\" +\n preciseType +\n \"` supplied to\" +\n \" `\" +\n componentName +\n \"`, expected `mobx.Observable\" +\n mobxType +\n \"`\" +\n nativeTypeExpectationMessage +\n \".\"\n )\n }\n return null\n })\n })\n}\n\nfunction createObservableArrayOfTypeChecker(\n allowNativeType: boolean,\n typeChecker: React.Validator<any>\n) {\n return createChainableTypeChecker(\n (props, propName, componentName, location, propFullName, ...rest) => {\n return untracked(() => {\n if (typeof typeChecker !== \"function\") {\n return new Error(\n \"Property `\" +\n propFullName +\n \"` of component `\" +\n componentName +\n \"` has \" +\n \"invalid PropType notation.\"\n )\n } else {\n let error = createObservableTypeCheckerCreator(allowNativeType, \"Array\")(\n props,\n propName,\n componentName,\n location,\n propFullName\n )\n\n if (error instanceof Error) return error\n const propValue = props[propName]\n for (let i = 0; i < propValue.length; i++) {\n error = (typeChecker as React.Validator<any>)(\n propValue,\n i as any,\n componentName,\n location,\n propFullName + \"[\" + i + \"]\",\n ...rest\n )\n if (error instanceof Error) return error\n }\n\n return null\n }\n })\n }\n )\n}\n\nconst observableArray = createObservableTypeCheckerCreator(false, \"Array\")\nconst observableArrayOf = createObservableArrayOfTypeChecker.bind(null, false)\nconst observableMap = createObservableTypeCheckerCreator(false, \"Map\")\nconst observableObject = createObservableTypeCheckerCreator(false, \"Object\")\nconst arrayOrObservableArray = createObservableTypeCheckerCreator(true, \"Array\")\nconst arrayOrObservableArrayOf = createObservableArrayOfTypeChecker.bind(null, true)\nconst objectOrObservableObject = createObservableTypeCheckerCreator(true, \"Object\")\n\nexport const PropTypes = {\n observableArray,\n observableArrayOf,\n observableMap,\n observableObject,\n arrayOrObservableArray,\n arrayOrObservableArrayOf,\n objectOrObservableObject\n}\n","import { observable } from \"mobx\"\nimport { Component } from \"react\"\n\nif (!Component) {\n throw new Error(\"mobx-react requires React to be available\")\n}\n\nif (!observable) {\n throw new Error(\"mobx-react requires mobx to be available\")\n}\n\nexport {\n Observer,\n useObserver,\n useAsObservableSource,\n useLocalStore,\n isUsingStaticRendering,\n useStaticRendering,\n enableStaticRendering,\n observerBatching,\n useLocalObservable\n} from \"mobx-react-lite\"\n\nexport { observer } from \"./observer\"\n\nexport { MobXProviderContext, Provider, ProviderProps } from \"./Provider\"\nexport { inject } from \"./inject\"\nexport { disposeOnUnmount } from \"./disposeOnUnmount\"\nexport { PropTypes } from \"./propTypes\"\nexport { IWrappedComponent } from \"./types/IWrappedComponent\"\n"],"names":["shallowEqual","objA","objB","is","keysA","Object","keys","keysB","length","i","hasOwnProperty","call","x","y","hoistBlackList","$$typeof","render","compare","type","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","displayName","propTypes","copyStaticProperties","base","target","protoProps","getOwnPropertyNames","getPrototypeOf","forEach","key","indexOf","defineProperty","getOwnPropertyDescriptor","mobxMixins","Symbol","mobxPatchedDefinition","getMixins","methodName","methodMixins","locks","methods","wrapper","realMethod","args","retVal","undefined","apply","mx","wrapFunction","fn","patch","mixinMethod","push","oldDefinition","originalMethod","newDefinition","createDefinition","enumerable","wrappedFunc","get","set","value","configurable","administrationSymbol","isMobXReactObserverSymbol","getAdministration","component","reaction","mounted","forceUpdate","name","getDisplayName","constructor","state","props","context","propsAtom","createAtom","stateAtom","contextAtom","isUpdating","makeClassComponentObserver","componentClass","prototype","console","warn","componentWillReact","Error","PureComponent","shouldComponentUpdate","observerSCU","defineProperties","observablePropsDescriptor","observableStateDescriptor","observableContextDescriptor","originalRender","writable","isUsingStaticRendering","createReactiveRender","admin","observerFinalizationRegistry","unregister","dispose","boundOriginalRender","bind","reactiveRender","createReaction","register","error","renderResult","track","_allowStateChanges","e","Reaction","nextProps","nextState","createObservablePropDescriptor","atomKey","prevReadState","_allowStateReadsStart","reportObserved","_allowStateReadsEnd","reportChanged","observer","isPrototypeOf","React","observerLite","MobXProviderContext","createContext","Provider","children","stores","parentValue","useContext","mutableProviderRef","useRef","current","newValue","createStoreInjector","grabStoresFn","injectNames","makeReactive","Injector","forwardRef","ref","newProps","assign","createElement","getInjectName","componentName","grabStoresByName","storeNames","baseStores","storeName","inject","arguments","join","reactMajorVersion","Number","parseInt","version","split","warnedAboutDisposeOnUnmountDeprecated","protoStoreKey","instStoreKey","runDisposersOnWillUnmount","propKeyOrFunction","prop","Array","isArray","map","f","disposeOnUnmount","propertyKeyOrFunction","c","c2","c3","Component","isDecorator","componentWasAlreadyModified","store","createChainableTypeChecker","validator","checkType","isRequired","propName","location","propFullName","rest","untracked","actual","chainedCheckType","isSymbol","propType","propValue","getPropType","RegExp","getPreciseType","Date","createObservableTypeCheckerCreator","allowNativeType","mobxType","toLowerCase","mobxChecker","isObservableArray","isObservableObject","isObservableMap","preciseType","nativeTypeExpectationMessage","createObservableArrayOfTypeChecker","typeChecker","observableArray","observableArrayOf","observableMap","observableObject","arrayOrObservableArray","arrayOrObservableArrayOf","objectOrObservableObject","PropTypes","observable"],"mappings":";;;;;;;;;;;SAAgBA,YAAY,CAACC,IAAS,EAAEC,IAAS;;EAE7C,IAAIC,EAAE,CAACF,IAAI,EAAEC,IAAI,CAAC,EAAE;IAChB,OAAO,IAAI;;EAEf,IAAI,OAAOD,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,IAAI,IAAI,OAAOC,IAAI,KAAK,QAAQ,IAAIA,IAAI,KAAK,IAAI,EAAE;IACxF,OAAO,KAAK;;EAEhB,IAAME,KAAK,GAAGC,MAAM,CAACC,IAAI,CAACL,IAAI,CAAC;EAC/B,IAAMM,KAAK,GAAGF,MAAM,CAACC,IAAI,CAACJ,IAAI,CAAC;EAC/B,IAAIE,KAAK,CAACI,MAAM,KAAKD,KAAK,CAACC,MAAM,EAAE;IAC/B,OAAO,KAAK;;EAEhB,KAAK,IAAIC,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGL,KAAK,CAACI,MAAM,EAAEC,CAAC,EAAE,EAAE;IACnC,IAAI,CAACJ,MAAM,CAACK,cAAc,CAACC,IAAI,CAACT,IAAI,EAAEE,KAAK,CAACK,CAAC,CAAC,CAAC,IAAI,CAACN,EAAE,CAACF,IAAI,CAACG,KAAK,CAACK,CAAC,CAAC,CAAC,EAAEP,IAAI,CAACE,KAAK,CAACK,CAAC,CAAC,CAAC,CAAC,EAAE;MACpF,OAAO,KAAK;;;EAGpB,OAAO,IAAI;AACf;AAEA,SAASN,EAAE,CAACS,CAAM,EAAEC,CAAM;;EAEtB,IAAID,CAAC,KAAKC,CAAC,EAAE;IACT,OAAOD,CAAC,KAAK,CAAC,IAAI,CAAC,GAAGA,CAAC,KAAK,CAAC,GAAGC,CAAC;GACpC,MAAM;IACH,OAAOD,CAAC,KAAKA,CAAC,IAAIC,CAAC,KAAKA,CAAC;;AAEjC;AAEA;AACA,IAAMC,cAAc,GAAG;EACnBC,QAAQ,EAAE,CAAC;EACXC,MAAM,EAAE,CAAC;EACTC,OAAO,EAAE,CAAC;EACVC,IAAI,EAAE,CAAC;EACPC,iBAAiB,EAAE,CAAC;EACpBC,WAAW,EAAE,CAAC;EACdC,YAAY,EAAE,CAAC;EACfC,YAAY,EAAE,CAAC;EACfC,eAAe,EAAE,CAAC;EAClBC,wBAAwB,EAAE,CAAC;EAC3BC,wBAAwB,EAAE,CAAC;EAC3BC,MAAM,EAAE,CAAC;EACTC,WAAW,EAAE,CAAC;EACdC,SAAS,EAAE;CACd;SAEeC,oBAAoB,CAACC,IAAY,EAAEC,MAAc;EAC7D,IAAMC,UAAU,GAAG3B,MAAM,CAAC4B,mBAAmB,CAAC5B,MAAM,CAAC6B,cAAc,CAACJ,IAAI,CAAC,CAAC;EAC1EzB,MAAM,CAAC4B,mBAAmB,CAACH,IAAI,CAAC,CAACK,OAAO,CAAC,UAAAC,GAAG;IACxC,IAAI,CAACtB,cAAc,CAACsB,GAAG,CAAC,IAAIJ,UAAU,CAACK,OAAO,CAACD,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE;MACxD/B,MAAM,CAACiC,cAAc,CAACP,MAAM,EAAEK,GAAG,EAAE/B,MAAM,CAACkC,wBAAwB,CAACT,IAAI,EAAEM,GAAG,CAAE,CAAC;;GAEtF,CAAC;AACN;AAqBA;;;;AAIA,IAAMI,UAAU,gBAAGC,MAAM,CAAC,aAAa,CAAC;AACxC,IAAMC,qBAAqB,gBAAGD,MAAM,CAAC,mBAAmB,CAAC;AAOzD,SAASE,SAAS,CAACZ,MAAc,EAAEa,UAAkB;EACjD,IAAMlB,MAAM,GAAIK,MAAM,CAACS,UAAU,CAAC,GAAGT,MAAM,CAACS,UAAU,CAAC,IAAI,EAAG;EAC9D,IAAMK,YAAY,GAAInB,MAAM,CAACkB,UAAU,CAAC,GAAGlB,MAAM,CAACkB,UAAU,CAAC,IAAI,EAAG;EACpEC,YAAY,CAACC,KAAK,GAAGD,YAAY,CAACC,KAAK,IAAI,CAAC;EAC5CD,YAAY,CAACE,OAAO,GAAGF,YAAY,CAACE,OAAO,IAAI,EAAE;EACjD,OAAOF,YAAY;AACvB;AAEA,SAASG,OAAO,CAACC,UAAoB,EAAEvB,MAAc;;oCAAKwB,IAAgB;IAAhBA,IAAgB;;;EAEtExB,MAAM,CAACoB,KAAK,EAAE;EAEd,IAAI;IACA,IAAIK,MAAM;IACV,IAAIF,UAAU,KAAKG,SAAS,IAAIH,UAAU,KAAK,IAAI,EAAE;MACjDE,MAAM,GAAGF,UAAU,CAACI,KAAK,CAAC,IAAI,EAAEH,IAAI,CAAC;;IAGzC,OAAOC,MAAM;GAChB,SAAS;IACNzB,MAAM,CAACoB,KAAK,EAAE;IACd,IAAIpB,MAAM,CAACoB,KAAK,KAAK,CAAC,EAAE;MACpBpB,MAAM,CAACqB,OAAO,CAACZ,OAAO,CAAC,UAAAmB,EAAE;QACrBA,EAAE,CAACD,KAAK,CAAC,KAAI,EAAEH,IAAI,CAAC;OACvB,CAAC;;;AAGd;AAEA,SAASK,YAAY,CAACN,UAAoB,EAAEvB,MAAc;EACtD,IAAM8B,EAAE,GAAG,SAALA,EAAE;uCAAgBN,IAAgB;MAAhBA,IAAgB;;IACpCF,OAAO,CAACrC,IAAI,OAAZqC,OAAO,GAAM,IAAI,EAAEC,UAAU,EAAEvB,MAAM,SAAKwB,IAAI,EAAC;GAClD;EACD,OAAOM,EAAE;AACb;SAEgBC,KAAK,CAAC1B,MAAc,EAAEa,UAAkB,EAAEc,WAAqB;EAC3E,IAAMhC,MAAM,GAAGiB,SAAS,CAACZ,MAAM,EAAEa,UAAU,CAAC;EAE5C,IAAIlB,MAAM,CAACqB,OAAO,CAACV,OAAO,CAACqB,WAAW,CAAC,GAAG,CAAC,EAAE;IACzChC,MAAM,CAACqB,OAAO,CAACY,IAAI,CAACD,WAAW,CAAC;;EAGpC,IAAME,aAAa,GAAGvD,MAAM,CAACkC,wBAAwB,CAACR,MAAM,EAAEa,UAAU,CAAC;EACzE,IAAIgB,aAAa,IAAIA,aAAa,CAAClB,qBAAqB,CAAC,EAAE;;IAEvD;;EAGJ,IAAMmB,cAAc,GAAG9B,MAAM,CAACa,UAAU,CAAC;EACzC,IAAMkB,aAAa,GAAGC,gBAAgB,CAClChC,MAAM,EACNa,UAAU,EACVgB,aAAa,GAAGA,aAAa,CAACI,UAAU,GAAGZ,SAAS,EACpD1B,MAAM,EACNmC,cAAc,CACjB;EAEDxD,MAAM,CAACiC,cAAc,CAACP,MAAM,EAAEa,UAAU,EAAEkB,aAAa,CAAC;AAC5D;AAEA,SAASC,gBAAgB,CACrBhC,MAAc,EACda,UAAkB,EAClBoB,UAAe,EACftC,MAAc,EACdmC,cAAwB;;EAExB,IAAII,WAAW,GAAGV,YAAY,CAACM,cAAc,EAAEnC,MAAM,CAAC;EAEtD,uBAEKgB,qBAAqB,IAAG,IAAI,OAC7BwB,GAAG,GAAE;IACD,OAAOD,WAAW;GACrB,OACDE,GAAG,GAAE,aAAUC,KAAK;IAChB,IAAI,IAAI,KAAKrC,MAAM,EAAE;MACjBkC,WAAW,GAAGV,YAAY,CAACa,KAAK,EAAE1C,MAAM,CAAC;KAC5C,MAAM;;;;;MAKH,IAAMoC,aAAa,GAAGC,gBAAgB,CAAC,IAAI,EAAEnB,UAAU,EAAEoB,UAAU,EAAEtC,MAAM,EAAE0C,KAAK,CAAC;MACnF/D,MAAM,CAACiC,cAAc,CAAC,IAAI,EAAEM,UAAU,EAAEkB,aAAa,CAAC;;GAE7D,OACDO,YAAY,GAAE,IAAI,OAClBL,UAAU,GAAEA,UAAU;AAE9B;;ACnKA,IAAMM,oBAAoB,gBAAG7B,MAAM,CAAC,wBAAwB,CAAC;AAC7D,IAAM8B,yBAAyB,gBAAG9B,MAAM,CAAC,qBAAqB,CAAC;AAmB/D,SAAS+B,iBAAiB,CAACC,SAAoB;;;;;EAI3C,gCAAQA,SAAS,CAACH,oBAAoB,CAAC,oCAA/BG,SAAS,CAACH,oBAAoB,CAAC,GAAK;IACxCI,QAAQ,EAAE,IAAI;IACdC,OAAO,EAAE,KAAK;IACdC,WAAW,EAAE,IAAI;IACjBC,IAAI,EAAEC,cAAc,CAACL,SAAS,CAACM,WAA6B,CAAC;IAC7DC,KAAK,EAAE5B,SAAS;IAChB6B,KAAK,EAAE7B,SAAS;IAChB8B,OAAO,EAAE9B,SAAS;IAClB+B,SAAS,EAAEC,eAAU,CAAC,OAAO,CAAC;IAC9BC,SAAS,EAAED,eAAU,CAAC,OAAO,CAAC;IAC9BE,WAAW,EAAEF,eAAU,CAAC,SAAS,CAAC;IAClCG,UAAU,EAAE;GACf;AACL;AAEA,SAAgBC,0BAA0B,CACtCC,cAAwC;EAExC,IAAQC,SAAS,GAAKD,cAAc,CAA5BC,SAAS;EAEjB,IAAID,cAAc,CAAClB,yBAAyB,CAAC,EAAE;IAC3C,IAAM5C,WAAW,GAAGmD,cAAc,CAACW,cAAc,CAAC;IAClDE,OAAO,CAACC,IAAI,oCACyBjE,WAAW,4EAE/C;GACJ,MAAM;IACH8D,cAAc,CAAClB,yBAAyB,CAAC,GAAG,IAAI;;EAGpD,IAAImB,SAAS,CAACG,kBAAkB,EAAE;IAC9B,MAAM,IAAIC,KAAK,CAAC,gEAAgE,CAAC;;EAErF,IAAIL,cAAc,CAAC,WAAW,CAAC,KAAKM,mBAAa,EAAE;IAC/C,IAAI,CAACL,SAAS,CAACM,qBAAqB,EAAE;MAClCN,SAAS,CAACM,qBAAqB,GAAGC,WAAW;KAChD,MAAM,IAAIP,SAAS,CAACM,qBAAqB,KAAKC,WAAW,EAAE;;MAExD,MAAM,IAAIH,KAAK,CACX,8EAA8E,CACjF;;;;;;;EAQTzF,MAAM,CAAC6F,gBAAgB,CAACR,SAAS,EAAE;IAC/BT,KAAK,EAAEkB,yBAAyB;IAChCnB,KAAK,EAAEoB,yBAAyB;IAChClB,OAAO,EAAEmB;GACZ,CAAC;EAEF,IAAMC,cAAc,GAAGZ,SAAS,CAAC1E,MAAM;EACvC,IAAI,OAAOsF,cAAc,KAAK,UAAU,EAAE;IACtC,IAAM3E,YAAW,GAAGmD,cAAc,CAACW,cAAc,CAAC;IAClD,MAAM,IAAIK,KAAK,CACX,mCAAiCnE,YAAW,4GACmC,wEACF,CAChF;;EAGL+D,SAAS,CAAC1E,MAAM,GAAG;IACfX,MAAM,CAACiC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;;MAElC+B,YAAY,EAAE,KAAK;MACnBkC,QAAQ,EAAE,KAAK;MACfnC,KAAK,EAAEoC,oCAAsB,EAAE,GACzBF,cAAc,GACdG,oBAAoB,CAAC9F,IAAI,CAAC,IAAI,EAAE2F,cAAc;KACvD,CAAC;IACF,OAAO,IAAI,CAACtF,MAAM,EAAE;GACvB;EAEDyC,KAAK,CAACiC,SAAS,EAAE,mBAAmB,EAAE;;;;;;;;;;;;;IAalC,IAAMgB,KAAK,GAAGlC,iBAAiB,CAAC,IAAI,CAAC;IAErCkC,KAAK,CAAC/B,OAAO,GAAG,IAAI;;IAGpBgC,2CAA4B,CAACC,UAAU,CAACF,KAAK,CAAC;;;;;IAM9CA,KAAK,CAAC9B,WAAW,GAAG;MAAA,OAAM,KAAI,CAACA,WAAW,EAAE;;IAE5C,IAAI,CAAC8B,KAAK,CAAChC,QAAQ,EAAE;;;;;;MAMjBgC,KAAK,CAAC9B,WAAW,EAAE;;GAE1B,CAAC;EAEFnB,KAAK,CAACiC,SAAS,EAAE,sBAAsB,EAAE;;IACrC,IAAIc,oCAAsB,EAAE,EAAE;MAC1B;;IAEJ,IAAME,KAAK,GAAGlC,iBAAiB,CAAC,IAAI,CAAC;IACrC,mBAAAkC,KAAK,CAAChC,QAAQ,qBAAd,gBAAgBmC,OAAO,EAAE;IACzBH,KAAK,CAAChC,QAAQ,GAAG,IAAI;IACrBgC,KAAK,CAAC9B,WAAW,GAAG,IAAI;IACxB8B,KAAK,CAAC/B,OAAO,GAAG,KAAK;GACxB,CAAC;EAEF,OAAOc,cAAc;AACzB;AAEA;AACA,SAASX,cAAc,CAACW,cAA8B;EAClD,OAAOA,cAAc,CAAC9D,WAAW,IAAI8D,cAAc,CAACZ,IAAI,IAAI,aAAa;AAC7E;AAEA,SAAS4B,oBAAoB,CAACH,cAAmB;EAC7C,IAAMQ,mBAAmB,GAAGR,cAAc,CAACS,IAAI,CAAC,IAAI,CAAC;EAErD,IAAML,KAAK,GAAGlC,iBAAiB,CAAC,IAAI,CAAC;EAErC,SAASwC,cAAc;IACnB,IAAI,CAACN,KAAK,CAAChC,QAAQ,EAAE;;MAEjBgC,KAAK,CAAChC,QAAQ,GAAGuC,cAAc,CAACP,KAAK,CAAC;MACtC,IAAI,CAACA,KAAK,CAAC/B,OAAO,EAAE;;;QAGhBgC,2CAA4B,CAACO,QAAQ,CAAC,IAAI,EAAER,KAAK,EAAE,IAAI,CAAC;;;IAIhE,IAAIS,KAAK,GAAY/D,SAAS;IAC9B,IAAIgE,YAAY,GAAGhE,SAAS;IAC5BsD,KAAK,CAAChC,QAAQ,CAAC2C,KAAK,CAAC;MACjB,IAAI;;;QAGAD,YAAY,GAAGE,uBAAkB,CAAC,KAAK,EAAER,mBAAmB,CAAC;OAChE,CAAC,OAAOS,CAAC,EAAE;QACRJ,KAAK,GAAGI,CAAC;;KAEhB,CAAC;IACF,IAAIJ,KAAK,EAAE;MACP,MAAMA,KAAK;;IAEf,OAAOC,YAAY;;EAGvB,OAAOJ,cAAc;AACzB;AAEA,SAASC,cAAc,CAACP,KAA6B;EACjD,OAAO,IAAIc,aAAQ,CAAId,KAAK,CAAC7B,IAAI,gBAAa;IAC1C,IAAI6B,KAAK,CAACnB,UAAU,EAAE;;;MAGlB;;IAGJ,IAAI,CAACmB,KAAK,CAAC/B,OAAO,EAAE;;;;MAIhB;;IAGJ,IAAI;;MAEA+B,KAAK,CAACnB,UAAU,GAAG,IAAI;MACvBmB,KAAK,CAAC9B,WAAW,oBAAjB8B,KAAK,CAAC9B,WAAW,EAAI;KACxB,CAAC,OAAOuC,KAAK,EAAE;MAAA;MACZ,oBAAAT,KAAK,CAAChC,QAAQ,qBAAd,iBAAgBmC,OAAO,EAAE;MACzBH,KAAK,CAAChC,QAAQ,GAAG,IAAI;KACxB,SAAS;MACNgC,KAAK,CAACnB,UAAU,GAAG,KAAK;;GAE/B,CAAC;AACN;AAEA,SAASU,WAAW,CAACwB,SAA+B,EAAEC,SAAc;EAChE,IAAIlB,oCAAsB,EAAE,EAAE;IAC1Bb,OAAO,CAACC,IAAI,CACR,iLAAiL,CACpL;;;EAGL,IAAI,IAAI,CAACZ,KAAK,KAAK0C,SAAS,EAAE;IAC1B,OAAO,IAAI;;;;;;EAMf,OAAO,CAAC1H,YAAY,CAAC,IAAI,CAACiF,KAAK,EAAEwC,SAAS,CAAC;AAC/C;AAEA,SAASE,8BAA8B,CAACvF,GAAkC;EACtE,IAAMwF,OAAO,GAAMxF,GAAG,SAAM;EAC5B,OAAO;IACHiC,YAAY,EAAE,IAAI;IAClBL,UAAU,EAAE,IAAI;IAChBE,GAAG;MACC,IAAMwC,KAAK,GAAGlC,iBAAiB,CAAC,IAAI,CAAC;MAErC,IAAIqD,aAAa,GAAGC,0BAAqB,CAAC,IAAI,CAAC;MAE/CpB,KAAK,CAACkB,OAAO,CAAC,CAACG,cAAc,EAAE;MAE/BC,wBAAmB,CAACH,aAAa,CAAC;MAElC,OAAOnB,KAAK,CAACtE,GAAG,CAAC;KACpB;IACD+B,GAAG,eAACC,KAAK;MACL,IAAMsC,KAAK,GAAGlC,iBAAiB,CAAC,IAAI,CAAC;;;MAGrC,IAAI,CAACkC,KAAK,CAACnB,UAAU,IAAI,CAACvF,YAAY,CAAC0G,KAAK,CAACtE,GAAG,CAAC,EAAEgC,KAAK,CAAC,EAAE;QACvDsC,KAAK,CAACtE,GAAG,CAAC,GAAGgC,KAAK;;;;QAIlBsC,KAAK,CAACnB,UAAU,GAAG,IAAI;QACvBmB,KAAK,CAACkB,OAAO,CAAC,CAACK,aAAa,EAAE;QAC9BvB,KAAK,CAACnB,UAAU,GAAG,KAAK;OAC3B,MAAM;QACHmB,KAAK,CAACtE,GAAG,CAAC,GAAGgC,KAAK;;;GAG7B;AACL;AAEA,IAAM+B,yBAAyB,gBAAGwB,8BAA8B,CAAC,OAAO,CAAC;AACzE,IAAMvB,yBAAyB,gBAAGuB,8BAA8B,CAAC,OAAO,CAAC;AACzE,IAAMtB,2BAA2B,gBAAGsB,8BAA8B,CAAC,SAAS,CAAC;;AC3R7E;;;AAGA,SAAgBO,QAAQ,CAA4BzD,SAAY;EAC5D,IAAIA,SAAS,CAAC,gBAAgB,CAAC,KAAK,IAAI,EAAE;IACtCkB,OAAO,CAACC,IAAI,CACR,4IAA4I,CAC/I;;EAGL,IACIvF,MAAM,CAACqF,SAAS,CAACyC,aAAa,CAACxH,IAAI,CAACyH,eAAe,EAAE3D,SAAS,CAAC,IAC/DpE,MAAM,CAACqF,SAAS,CAACyC,aAAa,CAACxH,IAAI,CAACyH,mBAAmB,EAAE3D,SAAS,CAAC,EACrE;;IAEE,OAAOe,0BAA0B,CAACf,SAA2C,CAAM;GACtF,MAAM;;IAEH,OAAO4D,sBAAY,CAAC5D,SAAyC,CAAM;;AAE3E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1BA,IAIa6D,mBAAmB,gBAAGF,cAAK,CAACG,aAAa,CAAY,EAAE,CAAC;AAMrE,SAAgBC,QAAQ,CAACvD,KAAoB;EACzC,IAAQwD,QAAQ,GAAgBxD,KAAK,CAA7BwD,QAAQ;IAAKC,MAAM,iCAAKzD,KAAK;EACrC,IAAM0D,WAAW,GAAGP,cAAK,CAACQ,UAAU,CAACN,mBAAmB,CAAC;EACzD,IAAMO,kBAAkB,GAAGT,cAAK,CAACU,MAAM,cAAMH,WAAW,EAAKD,MAAM,EAAG;EACtE,IAAMtE,KAAK,GAAGyE,kBAAkB,CAACE,OAAO;EAExC,AAAa;IACT,IAAMC,QAAQ,gBAAQ5E,KAAK,EAAKsE,MAAM,CAAE,CAAA;IACxC,IAAI,CAAC1I,YAAY,CAACoE,KAAK,EAAE4E,QAAQ,CAAC,EAAE;MAChC,MAAM,IAAIlD,KAAK,CACX,gJAAgJ,CACnJ;;;EAIT,OAAOsC,6BAACE,mBAAmB,CAACE,QAAQ;IAACpE,KAAK,EAAEA;KAAQqE,QAAQ,CAAgC;AAChG;AAEAD,QAAQ,CAAC7G,WAAW,GAAG,cAAc;;ACnBrC;;;AAGA,SAASsH,mBAAmB,CACxBC,YAA4B,EAC5BzE,SAA+B,EAC/B0E,WAAmB,EACnBC,YAAqB;;EAGrB,IAAIC,QAAQ,GAAyBjB,cAAK,CAACkB,UAAU,CAAC,UAACrE,KAAK,EAAEsE,GAAG;IAC7D,IAAMC,QAAQ,gBAAQvE,KAAK,CAAE;IAC7B,IAAMC,OAAO,GAAGkD,cAAK,CAACQ,UAAU,CAACN,mBAAmB,CAAC;IACrDjI,MAAM,CAACoJ,MAAM,CAACD,QAAQ,EAAEN,YAAY,CAAChE,OAAO,IAAI,EAAE,EAAEsE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAEpE,IAAID,GAAG,EAAE;MACLC,QAAQ,CAACD,GAAG,GAAGA,GAAG;;IAGtB,OAAOnB,cAAK,CAACsB,aAAa,CAACjF,SAAS,EAAE+E,QAAQ,CAAC;GAClD,CAAC;EAEF,IAAIJ,YAAY,EAAEC,QAAQ,GAAGnB,QAAQ,CAACmB,QAAQ,CAAC;EAC/CA,QAAQ,CAAC,gBAAgB,CAAC,GAAG,IAAI,CAAA;;EAGjCxH,oBAAoB,CAAC4C,SAAS,EAAE4E,QAAQ,CAAC;EACzCA,QAAQ,CAAC,kBAAkB,CAAC,GAAG5E,SAAS;EACxC4E,QAAQ,CAAC1H,WAAW,GAAGgI,aAAa,CAAClF,SAAS,EAAE0E,WAAW,CAAC;EAC5D,OAAOE,QAAQ;AACnB;AAEA,SAASM,aAAa,CAAClF,SAA+B,EAAE0E,WAAmB;EACvE,IAAIxH,WAAW;EACf,IAAMiI,aAAa,GACfnF,SAAS,CAAC9C,WAAW,IACrB8C,SAAS,CAACI,IAAI,IACbJ,SAAS,CAACM,WAAW,IAAIN,SAAS,CAACM,WAAW,CAACF,IAAK,IACrD,WAAW;EACf,IAAIsE,WAAW,EAAExH,WAAW,GAAG,cAAc,GAAGwH,WAAW,GAAG,GAAG,GAAGS,aAAa,GAAG,GAAG,CAAA,KAClFjI,WAAW,GAAG,SAAS,GAAGiI,aAAa,GAAG,GAAG;EAClD,OAAOjI,WAAW;AACtB;AAEA,SAASkI,gBAAgB,CACrBC,UAAyB;EAKzB,OAAO,UAAUC,UAAU,EAAEtC,SAAS;IAClCqC,UAAU,CAAC3H,OAAO,CAAC,UAAU6H,SAAS;MAClC,IACIA,SAAS,IAAIvC,SAAS;QAEtB;MACJ,IAAI,EAAEuC,SAAS,IAAID,UAAU,CAAC,EAC1B,MAAM,IAAIjE,KAAK,CACX,wBAAwB,GACpBkE,SAAS,GACT,+DAA+D,CACtE;MACLvC,SAAS,CAACuC,SAAS,CAAC,GAAGD,UAAU,CAACC,SAAS,CAAC;KAC/C,CAAC;IACF,OAAOvC,SAAS;GACnB;AACL;AAWA;;;;;;AAMA,SAAgBwC,MAAM;oCAAiDH,UAAsB;IAAtBA,UAAsB;;EACzF,IAAI,OAAOI,SAAS,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;IACpC,IAAIhB,YAAY,GAAGgB,SAAS,CAAC,CAAC,CAAC;IAC/B,OAAO,UAACzE,cAA8C;MAAA,OAClDwD,mBAAmB,CAACC,YAAY,EAAEzD,cAAc,EAAEyD,YAAY,CAACrE,IAAI,EAAE,IAAI,CAAC;;GACjF,MAAM;IACH,OAAO,UAACY,cAA8C;MAAA,OAClDwD,mBAAmB,CACfY,gBAAgB,CAACC,UAAU,CAAC,EAC5BrE,cAAc,EACdqE,UAAU,CAACK,IAAI,CAAC,GAAG,CAAC,EACpB,KAAK,CACR;;;AAEb;;ACvGA,IAAMC,iBAAiB,gBAAGC,MAAM,CAACC,QAAQ,eAAClC,cAAK,CAACmC,OAAO,CAACC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACtE,IAAIC,qCAAqC,GAAG,KAAK;AAIjD,IAAMC,aAAa,gBAAGjI,MAAM,CAAC,uBAAuB,CAAC;AACrD,IAAMkI,YAAY,gBAAGlI,MAAM,CAAC,sBAAsB,CAAC;AAEnD,SAASmI,yBAAyB;;EAC7B,UAAK,IAAI,CAACF,aAAa,CAAC,IAAI,EAAE,EAAO,IAAI,CAACC,YAAY,CAAC,IAAI,EAAE,EAAGxI,OAAO,CAAC,UAAA0I,iBAAiB;IACtF,IAAMC,IAAI,GACN,OAAOD,iBAAiB,KAAK,QAAQ,GAAG,KAAI,CAACA,iBAAiB,CAAC,GAAGA,iBAAiB;IACvF,IAAIC,IAAI,KAAK1H,SAAS,IAAI0H,IAAI,KAAK,IAAI,EAAE;MACrC,IAAIC,KAAK,CAACC,OAAO,CAACF,IAAI,CAAC,EAAEA,IAAI,CAACG,GAAG,CAAC,UAAAC,CAAC;QAAA,OAAIA,CAAC,EAAE;QAAC,CAAA,KACtCJ,IAAI,EAAE;;GAElB,CAAC;AACN;AAeA;;;AAGA,SAAgBK,gBAAgB,CAC5BpJ,MAAiC,EACjCqJ,qBAA+D;EAE/D,IAAIL,KAAK,CAACC,OAAO,CAACI,qBAAqB,CAAC,EAAE;IACtC,OAAOA,qBAAqB,CAACH,GAAG,CAAC,UAAAzH,EAAE;MAAA,OAAI2H,gBAAgB,CAACpJ,MAAM,EAAEyB,EAAE,CAAC;MAAC;;EAGxE,IAAI,CAACiH,qCAAqC,EAAE;IACxC,IAAIL,iBAAiB,IAAI,EAAE,EAAE;MACzBzE,OAAO,CAACwB,KAAK,CACT,yFAAyF,CAC5F;KACJ,MAAM;MACHxB,OAAO,CAACC,IAAI,CACR,gGAAgG,CACnG;;IAEL6E,qCAAqC,GAAG,IAAI;;EAGhD,IAAMY,CAAC,GAAGhL,MAAM,CAAC6B,cAAc,CAACH,MAAM,CAAC,CAACgD,WAAW;EACnD,IAAMuG,EAAE,GAAGjL,MAAM,CAAC6B,cAAc,CAACH,MAAM,CAACgD,WAAW,CAAC;;EAEpD,IAAMwG,EAAE,GAAGlL,MAAM,CAAC6B,cAAc,CAAC7B,MAAM,CAAC6B,cAAc,CAACH,MAAM,CAAC,CAAC;EAC/D,IACI,EACIsJ,CAAC,KAAKjD,cAAK,CAACoD,SAAS,IACrBH,CAAC,KAAKjD,cAAK,CAACrC,aAAa,IACzBuF,EAAE,KAAKlD,cAAK,CAACoD,SAAS,IACtBF,EAAE,KAAKlD,cAAK,CAACrC,aAAa,IAC1BwF,EAAE,KAAKnD,cAAK,CAACoD,SAAS,IACtBD,EAAE,KAAKnD,cAAK,CAACrC,aAAa,CAC7B,EACH;IACE,MAAM,IAAID,KAAK,CACX,0GAA0G,CAC7G;;EAGL,IACI,OAAOsF,qBAAqB,KAAK,QAAQ,IACzC,OAAOA,qBAAqB,KAAK,UAAU,IAC3C,CAACL,KAAK,CAACC,OAAO,CAACI,qBAAqB,CAAC,EACvC;IACE,MAAM,IAAItF,KAAK,CACX,mGAAmG,CACtG;;;EAIL,IAAM2F,WAAW,GAAG,OAAOL,qBAAqB,KAAK,QAAQ;;EAG7D,IAAMM,2BAA2B,GAAG,CAAC,CAAC3J,MAAM,CAAC2I,aAAa,CAAC,IAAI,CAAC,CAAC3I,MAAM,CAAC4I,YAAY,CAAC;EACrF,IAAMgB,KAAK,GAAGF,WAAW;;EAEnB1J,MAAM,CAAC2I,aAAa,CAAC,KAAK3I,MAAM,CAAC2I,aAAa,CAAC,GAAG,EAAE,CAAC;;EAErD3I,MAAM,CAAC4I,YAAY,CAAC,KAAK5I,MAAM,CAAC4I,YAAY,CAAC,GAAG,EAAE,CAAC;EAEzDgB,KAAK,CAAChI,IAAI,CAACyH,qBAAqB,CAAC;;EAGjC,IAAI,CAACM,2BAA2B,EAAE;IAC9BjI,KAAK,CAAC1B,MAAM,EAAE,sBAAsB,EAAE6I,yBAAyB,CAAC;;;EAIpE,IAAI,OAAOQ,qBAAqB,KAAK,QAAQ,EAAE;IAC3C,OAAOA,qBAAqB;;AAEpC;;AC5GA;AACA,SAASQ,0BAA0B,CAACC,SAA+B;EAC/D,SAASC,SAAS,CACdC,UAAmB,EACnB9G,KAAU,EACV+G,QAAgB,EAChBpC,aAAqB,EACrBqC,QAAgB,EAChBC,YAAoB;sCACjBC,IAAW;MAAXA,IAAW;;IAEd,OAAOC,cAAS,CAAC;MACbxC,aAAa,GAAGA,aAAa,IAAI,eAAe;MAChDsC,YAAY,GAAGA,YAAY,IAAIF,QAAQ;MACvC,IAAI/G,KAAK,CAAC+G,QAAQ,CAAC,IAAI,IAAI,EAAE;QACzB,IAAID,UAAU,EAAE;UACZ,IAAMM,MAAM,GAAGpH,KAAK,CAAC+G,QAAQ,CAAC,KAAK,IAAI,GAAG,MAAM,GAAG,WAAW;UAC9D,OAAO,IAAIlG,KAAK,CACZ,MAAM,GACFmG,QAAQ,GACR,IAAI,GACJC,YAAY,GACZ,0BAA0B,GAC1B,MAAM,GACNtC,aAAa,GACb,uBAAuB,GACvByC,MAAM,GACN,IAAI,CACX;;QAEL,OAAO,IAAI;OACd,MAAM;;QAEH,OAAOR,SAAS,gBAAC5G,KAAK,EAAE+G,QAAQ,EAAEpC,aAAa,EAAEqC,QAAQ,EAAEC,YAAY,SAAKC,IAAI,EAAC;;KAExF,CAAC;;EAGN,IAAMG,gBAAgB,GAAQR,SAAS,CAAC/E,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;;EAEzDuF,gBAAgB,CAACP,UAAU,GAAGD,SAAS,CAAC/E,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;EACxD,OAAOuF,gBAAgB;AAC3B;AAEA;AACA,SAASC,QAAQ,CAACC,QAAa,EAAEC,SAAc;;EAE3C,IAAID,QAAQ,KAAK,QAAQ,EAAE;IACvB,OAAO,IAAI;;;EAIf,IAAIC,SAAS,CAAC,eAAe,CAAC,KAAK,QAAQ,EAAE;IACzC,OAAO,IAAI;;;EAIf,IAAI,OAAOhK,MAAM,KAAK,UAAU,IAAIgK,SAAS,YAAYhK,MAAM,EAAE;IAC7D,OAAO,IAAI;;EAGf,OAAO,KAAK;AAChB;AAEA;AACA,SAASiK,WAAW,CAACD,SAAc;EAC/B,IAAMD,QAAQ,GAAG,OAAOC,SAAS;EACjC,IAAI1B,KAAK,CAACC,OAAO,CAACyB,SAAS,CAAC,EAAE;IAC1B,OAAO,OAAO;;EAElB,IAAIA,SAAS,YAAYE,MAAM,EAAE;;;;IAI7B,OAAO,QAAQ;;EAEnB,IAAIJ,QAAQ,CAACC,QAAQ,EAAEC,SAAS,CAAC,EAAE;IAC/B,OAAO,QAAQ;;EAEnB,OAAOD,QAAQ;AACnB;AAEA;AACA;AACA,SAASI,cAAc,CAACH,SAAc;EAClC,IAAMD,QAAQ,GAAGE,WAAW,CAACD,SAAS,CAAC;EACvC,IAAID,QAAQ,KAAK,QAAQ,EAAE;IACvB,IAAIC,SAAS,YAAYI,IAAI,EAAE;MAC3B,OAAO,MAAM;KAChB,MAAM,IAAIJ,SAAS,YAAYE,MAAM,EAAE;MACpC,OAAO,QAAQ;;;EAGvB,OAAOH,QAAQ;AACnB;AAEA,SAASM,kCAAkC,CACvCC,eAAoB,EACpBC,QAAa;EAEb,OAAOpB,0BAA0B,CAAC,UAAC3G,KAAK,EAAE+G,QAAQ,EAAEpC,aAAa,EAAEqC,QAAQ,EAAEC,YAAY;IACrF,OAAOE,cAAS,CAAC;MACb,IAAIW,eAAe,EAAE;QACjB,IAAIL,WAAW,CAACzH,KAAK,CAAC+G,QAAQ,CAAC,CAAC,KAAKgB,QAAQ,CAACC,WAAW,EAAE,EAAE,OAAO,IAAI;;MAE5E,IAAIC,WAAW;MACf,QAAQF,QAAQ;QACZ,KAAK,OAAO;UACRE,WAAW,GAAGC,sBAAiB;UAC/B;QACJ,KAAK,QAAQ;UACTD,WAAW,GAAGE,uBAAkB;UAChC;QACJ,KAAK,KAAK;UACNF,WAAW,GAAGG,oBAAe;UAC7B;QACJ;UACI,MAAM,IAAIvH,KAAK,2BAAyBkH,QAAQ,CAAG;;MAE3D,IAAMP,SAAS,GAAGxH,KAAK,CAAC+G,QAAQ,CAAC;MACjC,IAAI,CAACkB,WAAW,CAACT,SAAS,CAAC,EAAE;QACzB,IAAMa,WAAW,GAAGV,cAAc,CAACH,SAAS,CAAC;QAC7C,IAAMc,4BAA4B,GAAGR,eAAe,GAC9C,kBAAkB,GAAGC,QAAQ,CAACC,WAAW,EAAE,GAAG,GAAG,GACjD,EAAE;QACR,OAAO,IAAInH,KAAK,CACZ,gBAAgB,GACZoG,YAAY,GACZ,aAAa,GACboB,WAAW,GACX,eAAe,GACf,IAAI,GACJ1D,aAAa,GACb,8BAA8B,GAC9BoD,QAAQ,GACR,GAAG,GACHO,4BAA4B,GAC5B,GAAG,CACV;;MAEL,OAAO,IAAI;KACd,CAAC;GACL,CAAC;AACN;AAEA,SAASC,kCAAkC,CACvCT,eAAwB,EACxBU,WAAiC;EAEjC,OAAO7B,0BAA0B,CAC7B,UAAC3G,KAAK,EAAE+G,QAAQ,EAAEpC,aAAa,EAAEqC,QAAQ,EAAEC,YAAY;uCAAKC,IAAI;MAAJA,IAAI;;IAC5D,OAAOC,cAAS,CAAC;MACb,IAAI,OAAOqB,WAAW,KAAK,UAAU,EAAE;QACnC,OAAO,IAAI3H,KAAK,CACZ,YAAY,GACRoG,YAAY,GACZ,kBAAkB,GAClBtC,aAAa,GACb,QAAQ,GACR,4BAA4B,CACnC;OACJ,MAAM;QACH,IAAIzC,KAAK,GAAG2F,kCAAkC,CAACC,eAAe,EAAE,OAAO,CAAC,CACpE9H,KAAK,EACL+G,QAAQ,EACRpC,aAAa,EACbqC,QAAQ,EACRC,YAAY,CACf;QAED,IAAI/E,KAAK,YAAYrB,KAAK,EAAE,OAAOqB,KAAK;QACxC,IAAMsF,SAAS,GAAGxH,KAAK,CAAC+G,QAAQ,CAAC;QACjC,KAAK,IAAIvL,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGgM,SAAS,CAACjM,MAAM,EAAEC,CAAC,EAAE,EAAE;UACvC0G,KAAK,GAAIsG,WAAoC,gBACzChB,SAAS,EACThM,CAAQ,EACRmJ,aAAa,EACbqC,QAAQ,EACRC,YAAY,GAAG,GAAG,GAAGzL,CAAC,GAAG,GAAG,SACzB0L,IAAI,EACV;UACD,IAAIhF,KAAK,YAAYrB,KAAK,EAAE,OAAOqB,KAAK;;QAG5C,OAAO,IAAI;;KAElB,CAAC;GACL,CACJ;AACL;AAEA,IAAMuG,eAAe,gBAAGZ,kCAAkC,CAAC,KAAK,EAAE,OAAO,CAAC;AAC1E,IAAMa,iBAAiB,gBAAGH,kCAAkC,CAACzG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC;AAC9E,IAAM6G,aAAa,gBAAGd,kCAAkC,CAAC,KAAK,EAAE,KAAK,CAAC;AACtE,IAAMe,gBAAgB,gBAAGf,kCAAkC,CAAC,KAAK,EAAE,QAAQ,CAAC;AAC5E,IAAMgB,sBAAsB,gBAAGhB,kCAAkC,CAAC,IAAI,EAAE,OAAO,CAAC;AAChF,IAAMiB,wBAAwB,gBAAGP,kCAAkC,CAACzG,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC;AACpF,IAAMiH,wBAAwB,gBAAGlB,kCAAkC,CAAC,IAAI,EAAE,QAAQ,CAAC;AAEnF,IAAamB,SAAS,GAAG;EACrBP,eAAe,EAAfA,eAAe;EACfC,iBAAiB,EAAjBA,iBAAiB;EACjBC,aAAa,EAAbA,aAAa;EACbC,gBAAgB,EAAhBA,gBAAgB;EAChBC,sBAAsB,EAAtBA,sBAAsB;EACtBC,wBAAwB,EAAxBA,wBAAwB;EACxBC,wBAAwB,EAAxBA;CACH;;AC9MD,IAAI,CAACxC,eAAS,EAAE;EACZ,MAAM,IAAI1F,KAAK,CAAC,2CAA2C,CAAC;;AAGhE,IAAI,CAACoI,eAAU,EAAE;EACb,MAAM,IAAIpI,KAAK,CAAC,0CAA0C,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
1
|
+
{"version":3,"file":"mobxreact.cjs.development.js","sources":["../src/utils/utils.ts","../src/observerClass.ts","../src/observer.tsx","../src/Provider.tsx","../src/inject.ts","../src/disposeOnUnmount.ts","../src/propTypes.ts","../src/index.ts"],"sourcesContent":["export function shallowEqual(objA: any, objB: any): boolean {\n //From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (is(objA, objB)) {\n return true\n }\n if (typeof objA !== \"object\" || objA === null || typeof objB !== \"object\" || objB === null) {\n return false\n }\n const keysA = Object.keys(objA)\n const keysB = Object.keys(objB)\n if (keysA.length !== keysB.length) {\n return false\n }\n for (let i = 0; i < keysA.length; i++) {\n if (!Object.hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false\n }\n }\n return true\n}\n\nfunction is(x: any, y: any): boolean {\n // From: https://github.com/facebook/fbjs/blob/c69904a511b900266935168223063dd8772dfc40/packages/fbjs/src/core/shallowEqual.js\n if (x === y) {\n return x !== 0 || 1 / x === 1 / y\n } else {\n return x !== x && y !== y\n }\n}\n\n// based on https://github.com/mridgway/hoist-non-react-statics/blob/master/src/index.js\nconst hoistBlackList = {\n $$typeof: 1,\n render: 1,\n compare: 1,\n type: 1,\n childContextTypes: 1,\n contextType: 1,\n contextTypes: 1,\n defaultProps: 1,\n getDefaultProps: 1,\n getDerivedStateFromError: 1,\n getDerivedStateFromProps: 1,\n mixins: 1,\n displayName: 1,\n propTypes: 1\n}\n\nexport function copyStaticProperties(base: object, target: object): void {\n const protoProps = Object.getOwnPropertyNames(Object.getPrototypeOf(base))\n Object.getOwnPropertyNames(base).forEach(key => {\n if (!hoistBlackList[key] && protoProps.indexOf(key) === -1) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(base, key)!)\n }\n })\n}\n\n/**\n * Helper to set `prop` to `this` as non-enumerable (hidden prop)\n * @param target\n * @param prop\n * @param value\n */\nexport function setHiddenProp(target: object, prop: any, value: any): void {\n if (!Object.hasOwnProperty.call(target, prop)) {\n Object.defineProperty(target, prop, {\n enumerable: false,\n configurable: true,\n writable: true,\n value\n })\n } else {\n target[prop] = value\n }\n}\n\n/**\n * Utilities for patching componentWillUnmount, to make sure @disposeOnUnmount works correctly icm with user defined hooks\n * and the handler provided by mobx-react\n */\nconst mobxMixins = Symbol(\"patchMixins\")\nconst mobxPatchedDefinition = Symbol(\"patchedDefinition\")\n\nexport interface Mixins extends Record<string, any> {\n locks: number\n methods: Array<Function>\n}\n\nfunction getMixins(target: object, methodName: string): Mixins {\n const mixins = (target[mobxMixins] = target[mobxMixins] || {})\n const methodMixins = (mixins[methodName] = mixins[methodName] || {})\n methodMixins.locks = methodMixins.locks || 0\n methodMixins.methods = methodMixins.methods || []\n return methodMixins\n}\n\nfunction wrapper(realMethod: Function, mixins: Mixins, ...args: Array<any>) {\n // locks are used to ensure that mixins are invoked only once per invocation, even on recursive calls\n mixins.locks++\n\n try {\n let retVal\n if (realMethod !== undefined && realMethod !== null) {\n retVal = realMethod.apply(this, args)\n }\n\n return retVal\n } finally {\n mixins.locks--\n if (mixins.locks === 0) {\n mixins.methods.forEach(mx => {\n mx.apply(this, args)\n })\n }\n }\n}\n\nfunction wrapFunction(realMethod: Function, mixins: Mixins): (...args: Array<any>) => any {\n const fn = function (...args: Array<any>) {\n wrapper.call(this, realMethod, mixins, ...args)\n }\n return fn\n}\n\nexport function patch(target: object, methodName: string, mixinMethod: Function): void {\n const mixins = getMixins(target, methodName)\n\n if (mixins.methods.indexOf(mixinMethod) < 0) {\n mixins.methods.push(mixinMethod)\n }\n\n const oldDefinition = Object.getOwnPropertyDescriptor(target, methodName)\n if (oldDefinition && oldDefinition[mobxPatchedDefinition]) {\n // already patched definition, do not repatch\n return\n }\n\n const originalMethod = target[methodName]\n const newDefinition = createDefinition(\n target,\n methodName,\n oldDefinition ? oldDefinition.enumerable : undefined,\n mixins,\n originalMethod\n )\n\n Object.defineProperty(target, methodName, newDefinition)\n}\n\nfunction createDefinition(\n target: object,\n methodName: string,\n enumerable: any,\n mixins: Mixins,\n originalMethod: Function\n): PropertyDescriptor {\n let wrappedFunc = wrapFunction(originalMethod, mixins)\n\n return {\n // @ts-ignore\n [mobxPatchedDefinition]: true,\n get: function () {\n return wrappedFunc\n },\n set: function (value) {\n if (this === target) {\n wrappedFunc = wrapFunction(value, mixins)\n } else {\n // when it is an instance of the prototype/a child prototype patch that particular case again separately\n // since we need to store separate values depending on wether it is the actual instance, the prototype, etc\n // e.g. the method for super might not be the same as the method for the prototype which might be not the same\n // as the method for the instance\n const newDefinition = createDefinition(this, methodName, enumerable, mixins, value)\n Object.defineProperty(this, methodName, newDefinition)\n }\n },\n configurable: true,\n enumerable: enumerable\n }\n}\n","import { PureComponent, Component, ComponentClass, ClassAttributes } from \"react\"\nimport {\n _allowStateChanges,\n Reaction,\n _allowStateReadsStart,\n _allowStateReadsEnd,\n _getGlobalState\n} from \"mobx\"\nimport {\n isUsingStaticRendering,\n _observerFinalizationRegistry as observerFinalizationRegistry\n} from \"mobx-react-lite\"\nimport { shallowEqual, patch } from \"./utils/utils\"\n\nconst administrationSymbol = Symbol(\"ObserverAdministration\")\nconst isMobXReactObserverSymbol = Symbol(\"isMobXReactObserver\")\n\nlet observablePropDescriptors: PropertyDescriptorMap\nif (__DEV__) {\n observablePropDescriptors = {\n props: createObservablePropDescriptor(\"props\"),\n state: createObservablePropDescriptor(\"state\"),\n context: createObservablePropDescriptor(\"context\")\n }\n}\n\ntype ObserverAdministration = {\n reaction: Reaction | null // also serves as disposed flag\n forceUpdate: Function | null\n mounted: boolean // we could use forceUpdate as mounted flag\n name: string\n // Used only on __DEV__\n props: any\n state: any\n context: any\n}\n\nfunction getAdministration(component: Component): ObserverAdministration {\n // We create administration lazily, because we can't patch constructor\n // and the exact moment of initialization partially depends on React internals.\n // At the time of writing this, the first thing invoked is one of the observable getter/setter (state/props/context).\n return (component[administrationSymbol] ??= {\n reaction: null,\n mounted: false,\n forceUpdate: null,\n name: getDisplayName(component.constructor as ComponentClass),\n state: undefined,\n props: undefined,\n context: undefined\n })\n}\n\nexport function makeClassComponentObserver(\n componentClass: ComponentClass<any, any>\n): ComponentClass<any, any> {\n const { prototype } = componentClass\n\n if (componentClass[isMobXReactObserverSymbol]) {\n const displayName = getDisplayName(componentClass)\n throw new Error(\n `The provided component class (${displayName}) has already been declared as an observer component.`\n )\n } else {\n componentClass[isMobXReactObserverSymbol] = true\n }\n\n if (prototype.componentWillReact) {\n throw new Error(\"The componentWillReact life-cycle event is no longer supported\")\n }\n if (componentClass[\"__proto__\"] !== PureComponent) {\n if (!prototype.shouldComponentUpdate) {\n prototype.shouldComponentUpdate = observerSCU\n } else if (prototype.shouldComponentUpdate !== observerSCU) {\n // n.b. unequal check, instead of existence check, as @observer might be on superclass as well\n throw new Error(\n \"It is not allowed to use shouldComponentUpdate in observer based components.\"\n )\n }\n }\n\n if (__DEV__) {\n Object.defineProperties(prototype, observablePropDescriptors)\n }\n\n const originalRender = prototype.render\n if (typeof originalRender !== \"function\") {\n const displayName = getDisplayName(componentClass)\n throw new Error(\n `[mobx-react] class component (${displayName}) is missing \\`render\\` method.` +\n `\\n\\`observer\\` requires \\`render\\` being a function defined on prototype.` +\n `\\n\\`render = () => {}\\` or \\`render = function() {}\\` is not supported.`\n )\n }\n\n prototype.render = function () {\n Object.defineProperty(this, \"render\", {\n // There is no safe way to replace render, therefore it's forbidden.\n configurable: false,\n writable: false,\n value: isUsingStaticRendering()\n ? originalRender\n : createReactiveRender.call(this, originalRender)\n })\n return this.render()\n }\n\n const originalComponentDidMount = prototype.componentDidMount\n prototype.componentDidMount = function () {\n if (__DEV__ && this.componentDidMount !== Object.getPrototypeOf(this).componentDidMount) {\n const displayName = getDisplayName(componentClass)\n throw new Error(\n `[mobx-react] \\`observer(${displayName}).componentDidMount\\` must be defined on prototype.` +\n `\\n\\`componentDidMount = () => {}\\` or \\`componentDidMount = function() {}\\` is not supported.`\n )\n }\n\n // `componentDidMount` may not be called at all. React can abandon the instance after `render`.\n // That's why we use finalization registry to dispose reaction created during render.\n // Happens with `<Suspend>` see #3492\n //\n // `componentDidMount` can be called immediately after `componentWillUnmount` without calling `render` in between.\n // Happens with `<StrictMode>`see #3395.\n //\n // If `componentDidMount` is called, it's guaranteed to run synchronously with render (similary to `useLayoutEffect`).\n // Therefore we don't have to worry about external (observable) state being updated before mount (no state version checking).\n //\n // Things may change: \"In the future, React will provide a feature that lets components preserve state between unmounts\"\n\n const admin = getAdministration(this)\n\n admin.mounted = true\n\n // Component instance committed, prevent reaction disposal.\n observerFinalizationRegistry.unregister(admin)\n\n // We don't set forceUpdate before mount because it requires a reference to `this`,\n // therefore `this` could NOT be garbage collected before mount,\n // preventing reaction disposal by FinalizationRegistry and leading to memory leak.\n // As an alternative we could have `admin.instanceRef = new WeakRef(this)`, but lets avoid it if possible.\n admin.forceUpdate = () => this.forceUpdate()\n\n if (!admin.reaction) {\n // 1. Instance was unmounted (reaction disposed) and immediately remounted without running render #3395.\n // 2. Reaction was disposed by finalization registry before mount. Shouldn't ever happen for class components:\n // `componentDidMount` runs synchronously after render, but our registry are deferred (can't run in between).\n // In any case we lost subscriptions to observables, so we have to create new reaction and re-render to resubscribe.\n // The reaction will be created lazily by following render.\n admin.forceUpdate()\n }\n return originalComponentDidMount?.apply(this, arguments)\n }\n\n // TODO@major Overly complicated \"patch\" is only needed to support the deprecated @disposeOnUnmount\n patch(prototype, \"componentWillUnmount\", function () {\n if (isUsingStaticRendering()) {\n return\n }\n const admin = getAdministration(this)\n admin.reaction?.dispose()\n admin.reaction = null\n admin.forceUpdate = null\n admin.mounted = false\n })\n\n return componentClass\n}\n\n// Generates a friendly name for debugging\nfunction getDisplayName(componentClass: ComponentClass) {\n return componentClass.displayName || componentClass.name || \"<component>\"\n}\n\nfunction createReactiveRender(originalRender: any) {\n const boundOriginalRender = originalRender.bind(this)\n\n const admin = getAdministration(this)\n\n function reactiveRender() {\n if (!admin.reaction) {\n // Create reaction lazily to support re-mounting #3395\n admin.reaction = createReaction(admin)\n if (!admin.mounted) {\n // React can abandon this instance and never call `componentDidMount`/`componentWillUnmount`,\n // we have to make sure reaction will be disposed.\n observerFinalizationRegistry.register(this, admin, this)\n }\n }\n\n let error: unknown = undefined\n let renderResult = undefined\n admin.reaction.track(() => {\n try {\n // TODO@major\n // Optimization: replace with _allowStateChangesStart/End (not available in mobx@6.0.0)\n renderResult = _allowStateChanges(false, boundOriginalRender)\n } catch (e) {\n error = e\n }\n })\n if (error) {\n throw error\n }\n return renderResult\n }\n\n return reactiveRender\n}\n\nfunction createReaction(admin: ObserverAdministration) {\n return new Reaction(`${admin.name}.render()`, () => {\n if (!admin.mounted) {\n // This is neccessary to avoid react warning about calling forceUpdate on component that isn't mounted yet.\n // This happens when component is abandoned after render - our reaction is already created and reacts to changes.\n // Due to the synchronous nature of `componenDidMount`, we don't have to worry that component could eventually mount and require update.\n return\n }\n\n try {\n admin.forceUpdate?.()\n } catch (error) {\n admin.reaction?.dispose()\n admin.reaction = null\n }\n })\n}\n\nfunction observerSCU(nextProps: ClassAttributes<any>, nextState: any): boolean {\n if (isUsingStaticRendering()) {\n console.warn(\n \"[mobx-react] It seems that a re-rendering of a React component is triggered while in static (server-side) mode. Please make sure components are rendered only once server-side.\"\n )\n }\n // update on any state changes (as is the default)\n if (this.state !== nextState) {\n return true\n }\n // update if props are shallowly not equal, inspired by PureRenderMixin\n // we could return just 'false' here, and avoid the `skipRender` checks etc\n // however, it is nicer if lifecycle events are triggered like usually,\n // so we return true here if props are shallowly modified.\n return !shallowEqual(this.props, nextProps)\n}\n\nfunction createObservablePropDescriptor(key: \"props\" | \"state\" | \"context\") {\n return {\n configurable: true,\n enumerable: true,\n get() {\n const admin = getAdministration(this)\n const derivation = _getGlobalState().trackingDerivation\n if (derivation && derivation !== admin.reaction) {\n throw new Error(\n `[mobx-react] Cannot read \"${admin.name}.${key}\" in a reactive context, as it isn't observable.\n Please use component lifecycle method to copy the value into a local observable first.\n See https://github.com/mobxjs/mobx/blob/main/packages/mobx-react/README.md#note-on-using-props-and-state-in-derivations`\n )\n }\n return admin[key]\n },\n set(value) {\n getAdministration(this)[key] = value\n }\n }\n}\n","import * as React from \"react\"\nimport { observer as observerLite } from \"mobx-react-lite\"\n\nimport { makeClassComponentObserver } from \"./observerClass\"\nimport { IReactComponent } from \"./types/IReactComponent\"\n\n/**\n * Observer function / decorator\n */\nexport function observer<T extends IReactComponent>(component: T): T {\n if (component[\"isMobxInjector\"] === true) {\n console.warn(\n \"Mobx observer: You are trying to use `observer` on a component that already has `inject`. Please apply `observer` before applying `inject`\"\n )\n }\n\n if (\n Object.prototype.isPrototypeOf.call(React.Component, component) ||\n Object.prototype.isPrototypeOf.call(React.PureComponent, component)\n ) {\n // Class component\n return makeClassComponentObserver(component as React.ComponentClass<any, any>) as T\n } else {\n // Function component\n return observerLite(component as React.FunctionComponent<any>) as T\n }\n}\n","import React from \"react\"\nimport { shallowEqual } from \"./utils/utils\"\nimport { IValueMap } from \"./types/IValueMap\"\n\nexport const MobXProviderContext = React.createContext<IValueMap>({})\n\nexport interface ProviderProps extends IValueMap {\n children: React.ReactNode\n}\n\nexport function Provider(props: ProviderProps) {\n const { children, ...stores } = props\n const parentValue = React.useContext(MobXProviderContext)\n const mutableProviderRef = React.useRef({ ...parentValue, ...stores })\n const value = mutableProviderRef.current\n\n if (__DEV__) {\n const newValue = { ...value, ...stores } // spread in previous state for the context based stores\n if (!shallowEqual(value, newValue)) {\n throw new Error(\n \"MobX Provider: The set of provided stores has changed. See: https://github.com/mobxjs/mobx-react#the-set-of-provided-stores-has-changed-error.\"\n )\n }\n }\n\n return <MobXProviderContext.Provider value={value}>{children}</MobXProviderContext.Provider>\n}\n\nProvider.displayName = \"MobXProvider\"\n","import React from \"react\"\nimport { observer } from \"./observer\"\nimport { copyStaticProperties } from \"./utils/utils\"\nimport { MobXProviderContext } from \"./Provider\"\nimport { IReactComponent } from \"./types/IReactComponent\"\nimport { IValueMap } from \"./types/IValueMap\"\nimport { IWrappedComponent } from \"./types/IWrappedComponent\"\nimport { IStoresToProps } from \"./types/IStoresToProps\"\n\n/**\n * Store Injection\n */\nfunction createStoreInjector(\n grabStoresFn: IStoresToProps,\n component: IReactComponent<any>,\n injectNames: string,\n makeReactive: boolean\n): IReactComponent<any> {\n // Support forward refs\n let Injector: IReactComponent<any> = React.forwardRef((props, ref) => {\n const newProps = { ...props }\n const context = React.useContext(MobXProviderContext)\n Object.assign(newProps, grabStoresFn(context || {}, newProps) || {})\n\n if (ref) {\n newProps.ref = ref\n }\n\n return React.createElement(component, newProps)\n })\n\n if (makeReactive) Injector = observer(Injector)\n Injector[\"isMobxInjector\"] = true // assigned late to suppress observer warning\n\n // Static fields from component should be visible on the generated Injector\n copyStaticProperties(component, Injector)\n Injector[\"wrappedComponent\"] = component\n Injector.displayName = getInjectName(component, injectNames)\n return Injector\n}\n\nfunction getInjectName(component: IReactComponent<any>, injectNames: string): string {\n let displayName\n const componentName =\n component.displayName ||\n component.name ||\n (component.constructor && component.constructor.name) ||\n \"Component\"\n if (injectNames) displayName = \"inject-with-\" + injectNames + \"(\" + componentName + \")\"\n else displayName = \"inject(\" + componentName + \")\"\n return displayName\n}\n\nfunction grabStoresByName(\n storeNames: Array<string>\n): (\n baseStores: IValueMap,\n nextProps: React.ClassAttributes<any>\n) => React.PropsWithRef<any> | undefined {\n return function (baseStores, nextProps) {\n storeNames.forEach(function (storeName) {\n if (\n storeName in nextProps // prefer props over stores\n )\n return\n if (!(storeName in baseStores))\n throw new Error(\n \"MobX injector: Store '\" +\n storeName +\n \"' is not available! Make sure it is provided by some Provider\"\n )\n nextProps[storeName] = baseStores[storeName]\n })\n return nextProps\n }\n}\n\nexport function inject(\n ...stores: Array<string>\n): <T extends IReactComponent<any>>(\n target: T\n) => T & (T extends IReactComponent<infer P> ? IWrappedComponent<P> : never)\nexport function inject<S extends IValueMap = {}, P extends IValueMap = {}, I extends IValueMap = {}, C extends IValueMap = {}>(\n fn: IStoresToProps<S, P, I, C>\n): <T extends IReactComponent>(target: T) => T & IWrappedComponent<P>\n\n/**\n * higher order component that injects stores to a child.\n * takes either a varargs list of strings, which are stores read from the context,\n * or a function that manually maps the available stores from the context to props:\n * storesToProps(mobxStores, props, context) => newProps\n */\nexport function inject(/* fn(stores, nextProps) or ...storeNames */ ...storeNames: Array<any>) {\n if (typeof arguments[0] === \"function\") {\n let grabStoresFn = arguments[0]\n return (componentClass: React.ComponentClass<any, any>) =>\n createStoreInjector(grabStoresFn, componentClass, grabStoresFn.name, true)\n } else {\n return (componentClass: React.ComponentClass<any, any>) =>\n createStoreInjector(\n grabStoresByName(storeNames),\n componentClass,\n storeNames.join(\"-\"),\n false\n )\n }\n}\n","import React from \"react\"\nimport { patch } from \"./utils/utils\"\n\nconst reactMajorVersion = Number.parseInt(React.version.split(\".\")[0])\nlet warnedAboutDisposeOnUnmountDeprecated = false\n\ntype Disposer = () => void\n\nconst protoStoreKey = Symbol(\"disposeOnUnmountProto\")\nconst instStoreKey = Symbol(\"disposeOnUnmountInst\")\n\nfunction runDisposersOnWillUnmount() {\n ;[...(this[protoStoreKey] || []), ...(this[instStoreKey] || [])].forEach(propKeyOrFunction => {\n const prop =\n typeof propKeyOrFunction === \"string\" ? this[propKeyOrFunction] : propKeyOrFunction\n if (prop !== undefined && prop !== null) {\n if (Array.isArray(prop)) prop.map(f => f())\n else prop()\n }\n })\n}\n\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nexport function disposeOnUnmount(target: React.Component<any, any>, propertyKey: PropertyKey): void\n\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nexport function disposeOnUnmount<TF extends Disposer | Array<Disposer>>(\n target: React.Component<any, any>,\n fn: TF\n): TF\n\n/**\n * @deprecated `disposeOnUnmount` is not compatible with React 18 and higher.\n */\nexport function disposeOnUnmount(\n target: React.Component<any, any>,\n propertyKeyOrFunction: PropertyKey | Disposer | Array<Disposer>\n): PropertyKey | Disposer | Array<Disposer> | void {\n if (Array.isArray(propertyKeyOrFunction)) {\n return propertyKeyOrFunction.map(fn => disposeOnUnmount(target, fn))\n }\n\n if (!warnedAboutDisposeOnUnmountDeprecated) {\n if (reactMajorVersion >= 18) {\n console.error(\n \"[mobx-react] disposeOnUnmount is not compatible with React 18 and higher. Don't use it.\"\n )\n } else {\n console.warn(\n \"[mobx-react] disposeOnUnmount is deprecated. It won't work correctly with React 18 and higher.\"\n )\n }\n warnedAboutDisposeOnUnmountDeprecated = true\n }\n\n const c = Object.getPrototypeOf(target).constructor\n const c2 = Object.getPrototypeOf(target.constructor)\n // Special case for react-hot-loader\n const c3 = Object.getPrototypeOf(Object.getPrototypeOf(target))\n if (\n !(\n c === React.Component ||\n c === React.PureComponent ||\n c2 === React.Component ||\n c2 === React.PureComponent ||\n c3 === React.Component ||\n c3 === React.PureComponent\n )\n ) {\n throw new Error(\n \"[mobx-react] disposeOnUnmount only supports direct subclasses of React.Component or React.PureComponent.\"\n )\n }\n\n if (\n typeof propertyKeyOrFunction !== \"string\" &&\n typeof propertyKeyOrFunction !== \"function\" &&\n !Array.isArray(propertyKeyOrFunction)\n ) {\n throw new Error(\n \"[mobx-react] disposeOnUnmount only works if the parameter is either a property key or a function.\"\n )\n }\n\n // decorator's target is the prototype, so it doesn't have any instance properties like props\n const isDecorator = typeof propertyKeyOrFunction === \"string\"\n\n // add property key / function we want run (disposed) to the store\n const componentWasAlreadyModified = !!target[protoStoreKey] || !!target[instStoreKey]\n const store = isDecorator\n ? // decorators are added to the prototype store\n target[protoStoreKey] || (target[protoStoreKey] = [])\n : // functions are added to the instance store\n target[instStoreKey] || (target[instStoreKey] = [])\n\n store.push(propertyKeyOrFunction)\n\n // tweak the component class componentWillUnmount if not done already\n if (!componentWasAlreadyModified) {\n patch(target, \"componentWillUnmount\", runDisposersOnWillUnmount)\n }\n\n // return the disposer as is if invoked as a non decorator\n if (typeof propertyKeyOrFunction !== \"string\") {\n return propertyKeyOrFunction\n }\n}\n","import { isObservableArray, isObservableObject, isObservableMap, untracked } from \"mobx\"\n\n// Copied from React.PropTypes\nfunction createChainableTypeChecker(validator: React.Validator<any>): React.Requireable<any> {\n function checkType(\n isRequired: boolean,\n props: any,\n propName: string,\n componentName: string,\n location: string,\n propFullName: string,\n ...rest: any[]\n ) {\n return untracked(() => {\n componentName = componentName || \"<<anonymous>>\"\n propFullName = propFullName || propName\n if (props[propName] == null) {\n if (isRequired) {\n const actual = props[propName] === null ? \"null\" : \"undefined\"\n return new Error(\n \"The \" +\n location +\n \" `\" +\n propFullName +\n \"` is marked as required \" +\n \"in `\" +\n componentName +\n \"`, but its value is `\" +\n actual +\n \"`.\"\n )\n }\n return null\n } else {\n // @ts-ignore rest arg is necessary for some React internals - fails tests otherwise\n return validator(props, propName, componentName, location, propFullName, ...rest)\n }\n })\n }\n\n const chainedCheckType: any = checkType.bind(null, false)\n // Add isRequired to satisfy Requirable\n chainedCheckType.isRequired = checkType.bind(null, true)\n return chainedCheckType\n}\n\n// Copied from React.PropTypes\nfunction isSymbol(propType: any, propValue: any): boolean {\n // Native Symbol.\n if (propType === \"symbol\") {\n return true\n }\n\n // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'\n if (propValue[\"@@toStringTag\"] === \"Symbol\") {\n return true\n }\n\n // Fallback for non-spec compliant Symbols which are polyfilled.\n if (typeof Symbol === \"function\" && propValue instanceof Symbol) {\n return true\n }\n\n return false\n}\n\n// Copied from React.PropTypes\nfunction getPropType(propValue: any): string {\n const propType = typeof propValue\n if (Array.isArray(propValue)) {\n return \"array\"\n }\n if (propValue instanceof RegExp) {\n // Old webkits (at least until Android 4.0) return 'function' rather than\n // 'object' for typeof a RegExp. We'll normalize this here so that /bla/\n // passes PropTypes.object.\n return \"object\"\n }\n if (isSymbol(propType, propValue)) {\n return \"symbol\"\n }\n return propType\n}\n\n// This handles more types than `getPropType`. Only used for error messages.\n// Copied from React.PropTypes\nfunction getPreciseType(propValue: any): string {\n const propType = getPropType(propValue)\n if (propType === \"object\") {\n if (propValue instanceof Date) {\n return \"date\"\n } else if (propValue instanceof RegExp) {\n return \"regexp\"\n }\n }\n return propType\n}\n\nfunction createObservableTypeCheckerCreator(\n allowNativeType: any,\n mobxType: any\n): React.Requireable<any> {\n return createChainableTypeChecker((props, propName, componentName, location, propFullName) => {\n return untracked(() => {\n if (allowNativeType) {\n if (getPropType(props[propName]) === mobxType.toLowerCase()) return null\n }\n let mobxChecker\n switch (mobxType) {\n case \"Array\":\n mobxChecker = isObservableArray\n break\n case \"Object\":\n mobxChecker = isObservableObject\n break\n case \"Map\":\n mobxChecker = isObservableMap\n break\n default:\n throw new Error(`Unexpected mobxType: ${mobxType}`)\n }\n const propValue = props[propName]\n if (!mobxChecker(propValue)) {\n const preciseType = getPreciseType(propValue)\n const nativeTypeExpectationMessage = allowNativeType\n ? \" or javascript `\" + mobxType.toLowerCase() + \"`\"\n : \"\"\n return new Error(\n \"Invalid prop `\" +\n propFullName +\n \"` of type `\" +\n preciseType +\n \"` supplied to\" +\n \" `\" +\n componentName +\n \"`, expected `mobx.Observable\" +\n mobxType +\n \"`\" +\n nativeTypeExpectationMessage +\n \".\"\n )\n }\n return null\n })\n })\n}\n\nfunction createObservableArrayOfTypeChecker(\n allowNativeType: boolean,\n typeChecker: React.Validator<any>\n) {\n return createChainableTypeChecker(\n (props, propName, componentName, location, propFullName, ...rest) => {\n return untracked(() => {\n if (typeof typeChecker !== \"function\") {\n return new Error(\n \"Property `\" +\n propFullName +\n \"` of component `\" +\n componentName +\n \"` has \" +\n \"invalid PropType notation.\"\n )\n } else {\n let error = createObservableTypeCheckerCreator(allowNativeType, \"Array\")(\n props,\n propName,\n componentName,\n location,\n propFullName\n )\n\n if (error instanceof Error) return error\n const propValue = props[propName]\n for (let i = 0; i < propValue.length; i++) {\n error = (typeChecker as React.Validator<any>)(\n propValue,\n i as any,\n componentName,\n location,\n propFullName + \"[\" + i + \"]\",\n ...rest\n )\n if (error instanceof Error) return error\n }\n\n return null\n }\n })\n }\n )\n}\n\nconst observableArray = createObservableTypeCheckerCreator(false, \"Array\")\nconst observableArrayOf = createObservableArrayOfTypeChecker.bind(null, false)\nconst observableMap = createObservableTypeCheckerCreator(false, \"Map\")\nconst observableObject = createObservableTypeCheckerCreator(false, \"Object\")\nconst arrayOrObservableArray = createObservableTypeCheckerCreator(true, \"Array\")\nconst arrayOrObservableArrayOf = createObservableArrayOfTypeChecker.bind(null, true)\nconst objectOrObservableObject = createObservableTypeCheckerCreator(true, \"Object\")\n\nexport const PropTypes = {\n observableArray,\n observableArrayOf,\n observableMap,\n observableObject,\n arrayOrObservableArray,\n arrayOrObservableArrayOf,\n objectOrObservableObject\n}\n","import { observable } from \"mobx\"\nimport { Component } from \"react\"\n\nif (!Component) {\n throw new Error(\"mobx-react requires React to be available\")\n}\n\nif (!observable) {\n throw new Error(\"mobx-react requires mobx to be available\")\n}\n\nexport {\n Observer,\n useObserver,\n useAsObservableSource,\n useLocalStore,\n isUsingStaticRendering,\n useStaticRendering,\n enableStaticRendering,\n observerBatching,\n useLocalObservable\n} from \"mobx-react-lite\"\n\nexport { observer } from \"./observer\"\n\nexport { MobXProviderContext, Provider, ProviderProps } from \"./Provider\"\nexport { inject } from \"./inject\"\nexport { disposeOnUnmount } from \"./disposeOnUnmount\"\nexport { PropTypes } from \"./propTypes\"\nexport { IWrappedComponent } from \"./types/IWrappedComponent\"\n"],"names":["shallowEqual","objA","objB","is","keysA","Object","keys","keysB","length","i","hasOwnProperty","call","x","y","hoistBlackList","$$typeof","render","compare","type","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","displayName","propTypes","copyStaticProperties","base","target","protoProps","getOwnPropertyNames","getPrototypeOf","forEach","key","indexOf","defineProperty","getOwnPropertyDescriptor","mobxMixins","Symbol","mobxPatchedDefinition","getMixins","methodName","methodMixins","locks","methods","wrapper","realMethod","args","retVal","undefined","apply","mx","wrapFunction","fn","patch","mixinMethod","push","oldDefinition","originalMethod","newDefinition","createDefinition","enumerable","wrappedFunc","get","set","value","configurable","administrationSymbol","isMobXReactObserverSymbol","observablePropDescriptors","props","createObservablePropDescriptor","state","context","getAdministration","component","reaction","mounted","forceUpdate","name","getDisplayName","constructor","makeClassComponentObserver","componentClass","prototype","Error","componentWillReact","PureComponent","shouldComponentUpdate","observerSCU","defineProperties","originalRender","writable","isUsingStaticRendering","createReactiveRender","originalComponentDidMount","componentDidMount","admin","observerFinalizationRegistry","unregister","arguments","dispose","boundOriginalRender","bind","reactiveRender","createReaction","register","error","renderResult","track","_allowStateChanges","e","Reaction","nextProps","nextState","console","warn","derivation","_getGlobalState","trackingDerivation","observer","isPrototypeOf","React","observerLite","MobXProviderContext","createContext","Provider","children","stores","parentValue","useContext","mutableProviderRef","useRef","current","newValue","createStoreInjector","grabStoresFn","injectNames","makeReactive","Injector","forwardRef","ref","newProps","assign","createElement","getInjectName","componentName","grabStoresByName","storeNames","baseStores","storeName","inject","join","reactMajorVersion","Number","parseInt","version","split","warnedAboutDisposeOnUnmountDeprecated","protoStoreKey","instStoreKey","runDisposersOnWillUnmount","propKeyOrFunction","prop","Array","isArray","map","f","disposeOnUnmount","propertyKeyOrFunction","c","c2","c3","Component","isDecorator","componentWasAlreadyModified","store","createChainableTypeChecker","validator","checkType","isRequired","propName","location","propFullName","rest","untracked","actual","chainedCheckType","isSymbol","propType","propValue","getPropType","RegExp","getPreciseType","Date","createObservableTypeCheckerCreator","allowNativeType","mobxType","toLowerCase","mobxChecker","isObservableArray","isObservableObject","isObservableMap","preciseType","nativeTypeExpectationMessage","createObservableArrayOfTypeChecker","typeChecker","observableArray","observableArrayOf","observableMap","observableObject","arrayOrObservableArray","arrayOrObservableArrayOf","objectOrObservableObject","PropTypes","observable"],"mappings":"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"}
|