UNPKG

9.03 kBSource Map (JSON)View Raw
1{"version":3,"file":"inject.js","names":["isDebug","hoistBlackList","$$typeof","render","compare","type","childContextTypes","contextType","contextTypes","defaultProps","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","copyStaticProperties","base","target","protoProps","Object","getOwnPropertyNames","getPrototypeOf","forEach","key","indexOf","defineProperty","getOwnPropertyDescriptor","createStoreInjector","grabStoresFn","component","injectNames","makeReactive","Injector","React","forwardRef","props","ref","newProps","context","useContext","MobXProviderContext","assign","createElement","observer","displayName","getInjectName","componentName","name","constructor","grabStoresByName","storeNames","baseStores","nextProps","storeName","err","Error","console","error","inject","arguments","componentClass","join"],"sources":["../../src/mobx-react/inject.ts"],"sourcesContent":["/* eslint-disable */\n// @ts-ignore\nimport React from \"react\"\n// @ts-ignore\nimport { observer, MobXProviderContext } from \"mobx-react\"\n// import { observer } from \"mobx-react/dist/observer\"\n// import { copyStaticProperties } from \"mobx-react/dist/utils/utils\"\n// import { MobXProviderContext } from \"mobx-react/dist/Provider\"\nimport { IReactComponent } from \"mobx-react/dist/types/IReactComponent\"\nimport { IValueMap } from \"mobx-react/dist/types/IValueMap\"\nimport { IWrappedComponent } from \"mobx-react/dist/types/IWrappedComponent\"\nimport { IStoresToProps } from \"mobx-react/dist/types/IStoresToProps\"\n\nconst isDebug = false;\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 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 * 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: any, ref: any) => {\n const newProps = { ...props }\n const context = React.useContext(MobXProviderContext)\n // @ts-ignore\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 const err = new Error(\n \"MobX injector: Store '\" +\n storeName +\n \"' is not available! Make sure it is provided by some Provider\"\n );\n if (isDebug) console.error('Mobx @inject', err);\n nextProps[storeName] = null;\n return;\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}"],"mappings":"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"}
\No newline at end of file