UNPKG

57.5 kBSource Map (JSON)View Raw
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":["let symbolId = 0\nfunction createSymbol(name: string): symbol | string {\n if (typeof Symbol === \"function\") {\n return Symbol(name)\n }\n const symbol = `__$mobx-react ${name} (${symbolId})`\n symbolId++\n return symbol\n}\n\nconst createdSymbols = {}\nexport function newSymbol(name: string): symbol | string {\n if (!createdSymbols[name]) {\n createdSymbols[name] = createSymbol(name)\n }\n return createdSymbols[name]\n}\n\nexport 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)) return true\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) return false\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 = newSymbol(\"patchMixins\")\nconst mobxPatchedDefinition = newSymbol(\"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 [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 } from \"react\"\nimport {\n createAtom,\n _allowStateChanges,\n Reaction,\n $mobx,\n _allowStateReadsStart,\n _allowStateReadsEnd\n} from \"mobx\"\nimport { isUsingStaticRendering } from \"mobx-react-lite\"\n\nimport { newSymbol, shallowEqual, setHiddenProp, patch } from \"./utils/utils\"\n\nconst mobxAdminProperty = $mobx || \"$mobx\"\nconst mobxObserverProperty = newSymbol(\"isMobXReactObserver\")\nconst mobxIsUnmounted = newSymbol(\"isUnmounted\")\nconst skipRenderKey = newSymbol(\"skipRender\")\nconst isForcingUpdateKey = newSymbol(\"isForcingUpdate\")\n\nexport function makeClassComponentObserver(\n componentClass: React.ComponentClass<any, any>\n): React.ComponentClass<any, any> {\n const target = componentClass.prototype\n\n if (componentClass[mobxObserverProperty]) {\n const displayName = getDisplayName(target)\n console.warn(\n `The provided component class (${displayName}) \n has already been declared as an observer component.`\n )\n } else {\n componentClass[mobxObserverProperty] = true\n }\n\n if (target.componentWillReact)\n throw new Error(\"The componentWillReact life-cycle event is no longer supported\")\n if (componentClass[\"__proto__\"] !== PureComponent) {\n if (!target.shouldComponentUpdate) target.shouldComponentUpdate = observerSCU\n else if (target.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 // 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 makeObservableProp(target, \"props\")\n makeObservableProp(target, \"state\")\n\n const baseRender = target.render\n if (typeof baseRender !== 'function') {\n const displayName = getDisplayName(target)\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 target.render = function () {\n return makeComponentReactive.call(this, baseRender)\n }\n patch(target, \"componentWillUnmount\", function () {\n if (isUsingStaticRendering() === true) return\n this.render[mobxAdminProperty]?.dispose()\n this[mobxIsUnmounted] = true\n\n if (!this.render[mobxAdminProperty]) {\n // Render may have been hot-swapped and/or overriden by a subclass.\n const displayName = getDisplayName(this)\n console.warn(\n `The reactive render of an observer class component (${displayName}) \n was overriden after MobX attached. This may result in a memory leak if the \n overriden reactive render was not properly disposed.`\n )\n }\n })\n return componentClass\n}\n\n// Generates a friendly name for debugging\nfunction getDisplayName(comp: any) {\n return (\n comp.displayName ||\n comp.name ||\n (comp.constructor && (comp.constructor.displayName || comp.constructor.name)) ||\n \"<component>\"\n )\n}\n\nfunction makeComponentReactive(render: any) {\n if (isUsingStaticRendering() === true) return render.call(this)\n\n /**\n * If props are shallowly modified, react will render anyway,\n * so atom.reportChanged() should not result in yet another re-render\n */\n setHiddenProp(this, skipRenderKey, false)\n /**\n * forceUpdate will re-assign this.props. We don't want that to cause a loop,\n * so detect these changes\n */\n setHiddenProp(this, isForcingUpdateKey, false)\n\n const initialName = getDisplayName(this)\n const baseRender = render.bind(this)\n\n let isRenderingPending = false\n\n const reaction = new Reaction(`${initialName}.render()`, () => {\n if (!isRenderingPending) {\n // N.B. Getting here *before mounting* means that a component constructor has side effects (see the relevant test in misc.js)\n // This unidiomatic React usage but React will correctly warn about this so we continue as usual\n // See #85 / Pull #44\n isRenderingPending = true\n if (this[mobxIsUnmounted] !== true) {\n let hasError = true\n try {\n setHiddenProp(this, isForcingUpdateKey, true)\n if (!this[skipRenderKey]) Component.prototype.forceUpdate.call(this)\n hasError = false\n } finally {\n setHiddenProp(this, isForcingUpdateKey, false)\n if (hasError) reaction.dispose()\n }\n }\n }\n })\n\n reaction[\"reactComponent\"] = this\n reactiveRender[mobxAdminProperty] = reaction\n this.render = reactiveRender\n\n function reactiveRender() {\n isRenderingPending = false\n let exception = undefined\n let rendering = undefined\n reaction.track(() => {\n try {\n rendering = _allowStateChanges(false, baseRender)\n } catch (e) {\n exception = e\n }\n })\n if (exception) {\n throw exception\n }\n return rendering\n }\n\n return reactiveRender.call(this)\n}\n\nfunction observerSCU(nextProps: React.Props<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 makeObservableProp(target: any, propName: string): void {\n const valueHolderKey = newSymbol(`reactProp_${propName}_valueHolder`)\n const atomHolderKey = newSymbol(`reactProp_${propName}_atomHolder`)\n function getAtom() {\n if (!this[atomHolderKey]) {\n setHiddenProp(this, atomHolderKey, createAtom(\"reactive \" + propName))\n }\n return this[atomHolderKey]\n }\n Object.defineProperty(target, propName, {\n configurable: true,\n enumerable: true,\n get: function () {\n let prevReadState = false\n\n if (_allowStateReadsStart && _allowStateReadsEnd) {\n prevReadState = _allowStateReadsStart(true)\n }\n getAtom.call(this).reportObserved()\n\n if (_allowStateReadsStart && _allowStateReadsEnd) {\n _allowStateReadsEnd(prevReadState)\n }\n\n return this[valueHolderKey]\n },\n set: function set(v) {\n if (!this[isForcingUpdateKey] && !shallowEqual(this[valueHolderKey], v)) {\n setHiddenProp(this, valueHolderKey, v)\n setHiddenProp(this, skipRenderKey, true)\n getAtom.call(this).reportChanged()\n setHiddenProp(this, skipRenderKey, false)\n } else {\n setHiddenProp(this, valueHolderKey, v)\n }\n }\n })\n}\n","import * as React from \"react\"\nimport { observer as observerLite, Observer } from \"mobx-react-lite\"\n\nimport { makeClassComponentObserver } from \"./observerClass\"\nimport { IReactComponent } from \"./types/IReactComponent\"\n\nconst hasSymbol = typeof Symbol === \"function\" && Symbol.for\n\n// Using react-is had some issues (and operates on elements, not on types), see #608 / #609\nconst ReactForwardRefSymbol = hasSymbol\n ? Symbol.for(\"react.forward_ref\")\n : typeof React.forwardRef === \"function\" && React.forwardRef((props: any) => null)[\"$$typeof\"]\n\nconst ReactMemoSymbol = hasSymbol\n ? Symbol.for(\"react.memo\")\n : typeof React.memo === \"function\" && React.memo((props: any) => null)[\"$$typeof\"]\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 (ReactMemoSymbol && component[\"$$typeof\"] === ReactMemoSymbol) {\n throw new Error(\n \"Mobx observer: You are trying to use 'observer' on a function component wrapped in either another observer or 'React.memo'. The observer already applies 'React.memo' for you.\"\n )\n }\n\n // Unwrap forward refs into `<Observer>` component\n // we need to unwrap the render, because it is the inner render that needs to be tracked,\n // not the ForwardRef HoC\n if (ReactForwardRefSymbol && component[\"$$typeof\"] === ReactForwardRefSymbol) {\n const baseRender = component[\"render\"]\n if (typeof baseRender !== \"function\")\n throw new Error(\"render property of ForwardRef was not a function\")\n return React.forwardRef(function ObserverForwardRef() {\n const args = arguments\n return <Observer>{() => baseRender.apply(undefined, args)}</Observer>\n }) as T\n }\n\n // Function component\n if (\n typeof component === \"function\" &&\n (!component.prototype || !component.prototype.render) &&\n !component[\"isReactClass\"] &&\n !Object.prototype.isPrototypeOf.call(React.Component, component)\n ) {\n return observerLite(component as React.StatelessComponent<any>) as T\n }\n\n return makeClassComponentObserver(component as React.ComponentClass<any, any>) as T\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): (baseStores: IValueMap, nextProps: React.Props<any>) => 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, P, I, C>(\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, newSymbol } from \"./utils/utils\"\n\ntype Disposer = () => void\n\nconst protoStoreKey = newSymbol(\"disposeOnUnmountProto\")\nconst instStoreKey = newSymbol(\"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\nexport function disposeOnUnmount(target: React.Component<any, any>, propertyKey: PropertyKey): void\nexport function disposeOnUnmount<TF extends Disposer | Array<Disposer>>(\n target: React.Component<any, any>,\n fn: TF\n): TF\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 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) throw new Error(\"mobx-react requires React to be available\")\nif (!observable) throw new Error(\"mobx-react requires mobx to be available\")\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":["symbolId","createSymbol","name","Symbol","symbol","createdSymbols","newSymbol","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","setHiddenProp","prop","value","enumerable","configurable","writable","mobxMixins","mobxPatchedDefinition","getMixins","methodName","methodMixins","locks","methods","wrapper","realMethod","args","retVal","undefined","apply","mx","wrapFunction","fn","patch","mixinMethod","push","oldDefinition","originalMethod","newDefinition","createDefinition","wrappedFunc","get","set","mobxAdminProperty","$mobx","mobxObserverProperty","mobxIsUnmounted","skipRenderKey","isForcingUpdateKey","makeClassComponentObserver","componentClass","prototype","getDisplayName","console","warn","componentWillReact","Error","PureComponent","shouldComponentUpdate","observerSCU","makeObservableProp","baseRender","makeComponentReactive","isUsingStaticRendering","dispose","comp","constructor","initialName","bind","isRenderingPending","reaction","Reaction","hasError","Component","forceUpdate","reactiveRender","exception","rendering","track","_allowStateChanges","e","nextProps","nextState","state","props","propName","valueHolderKey","atomHolderKey","getAtom","createAtom","prevReadState","_allowStateReadsStart","_allowStateReadsEnd","reportObserved","v","reportChanged","hasSymbol","ReactForwardRefSymbol","React","ReactMemoSymbol","observer","component","ObserverForwardRef","arguments","Observer","isPrototypeOf","observerLite","MobXProviderContext","createContext","Provider","children","stores","parentValue","useContext","mutableProviderRef","useRef","current","newValue","createStoreInjector","grabStoresFn","injectNames","makeReactive","Injector","forwardRef","ref","newProps","context","assign","createElement","getInjectName","componentName","grabStoresByName","storeNames","baseStores","storeName","inject","join","protoStoreKey","instStoreKey","runDisposersOnWillUnmount","propKeyOrFunction","Array","isArray","map","f","disposeOnUnmount","propertyKeyOrFunction","c","c2","c3","isDecorator","componentWasAlreadyModified","store","createChainableTypeChecker","validator","checkType","isRequired","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","error","observableArray","observableArrayOf","observableMap","observableObject","arrayOrObservableArray","arrayOrObservableArrayOf","objectOrObservableObject","PropTypes","observable"],"mappings":"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"}
\No newline at end of file