{"version":3,"sources":["../src/adapter/index.ts","../src/helper/index.ts","../src/adapter/react.tsx"],"sourcesContent":["export * from 'src/adapter/react'\n","export const importJsVm = (content: string) => `data:text/javascript,${content}`\n\nexport function deepAssign<T>(target: any, ...sources: any): T {\n  for (const source of sources) {\n    for (const k in source) {\n      const vs = source[k],\n        vt = target[k]\n      if (Object(vs) == vs && Object(vt) === vt) {\n        target[k] = deepAssign(vt, vs)\n        continue\n      }\n      target[k] = source[k]\n    }\n  }\n  return target\n}\n\nexport const checkVersion = (version: string) => (version ? Number(version.split('.')[0]) : 0)\nexport const isPromise = (p: any) => p && Object.prototype.toString.call(p) === '[object Promise]'\n\n//\nexport const isDev = process.env.EMPSHARE_ENV === 'dev'\nexport const log = isDev ? console.log.bind(console, '[EMP Share]') : () => {}\n","import {checkVersion, isPromise} from 'src/helper'\nimport type {EMPShareRuntimeAdapterReactType, InitOptionsType} from 'src/types'\nimport {log} from '../helper'\n\n//\nlet globalLib = {}\nconst win: any = window\n//\nlog('process.env.EMPSHARE_ENV', process.env.EMPSHARE_ENV)\n//\nconst {EMPShareGlobalVal} = win || {}\nif (EMPShareGlobalVal && EMPShareGlobalVal.frameworkLib) {\n  globalLib = win[EMPShareGlobalVal.frameworkLib]\n}\n//\nexport class ReactAdapter {\n  libs: EMPShareRuntimeAdapterReactType = {\n    scope: 'default',\n    ...globalLib,\n  }\n  constructor(op?: EMPShareRuntimeAdapterReactType) {\n    if (op) this.setup(op)\n  }\n  public setup(o?: EMPShareRuntimeAdapterReactType | string) {\n    if (o) {\n      if (typeof o === 'string') o = window[o]\n      this.libs = {...this.libs, ...(o as any)}\n    }\n  }\n  get shared(): InitOptionsType['shared'] {\n    const {React, ReactDOM, scope} = this.libs as EMPShareRuntimeAdapterReactType\n    return {\n      react: {\n        lib: () => React,\n        version: React.version,\n        scope,\n        shareConfig: {\n          singleton: true,\n          requiredVersion: `^${React.version}`,\n        },\n      },\n      'react-dom': {\n        lib: () => ReactDOM,\n        version: ReactDOM.version,\n        scope,\n        shareConfig: {\n          singleton: true,\n          requiredVersion: `^${React.version}`,\n        },\n      },\n    }\n  }\n  adapter<P = any>(\n    component: any,\n    scope: string = this.libs.scope,\n    React: any = this.libs.React,\n    ReactDOM: any = this.libs.ReactDOM,\n  ): P {\n    const reactVersion = checkVersion(React.version)\n    const self = this\n    class WrappedComponent extends React.Component {\n      public containerRef: any\n      public root: any\n      constructor(props: P) {\n        super(props as any)\n        this.containerRef = React.createRef()\n      }\n\n      componentDidMount() {\n        log('componentDidMount')\n        this.mountOriginalComponent(true)\n      }\n\n      componentDidUpdate() {\n        log('componentDidUpdate')\n        this.mountOriginalComponent()\n      }\n\n      componentWillUnmount() {\n        log('componentWillUnmount')\n        this.unMountOriginalComponent()\n      }\n      unMountOriginalComponent() {\n        if (!this.containerRef.current) return\n        if (reactVersion < 18) {\n          ReactDOM.unmountComponentAtNode(this.containerRef.current)\n        } else {\n          this.root.unmount()\n        }\n      }\n      async mountOriginalComponent(shouldRender?: boolean) {\n        if (isPromise(component))\n          component = await component.then((m: any) => {\n            return m[scope]\n          })\n        const element = React.createElement(component, this.props)\n\n        if (reactVersion < 18) {\n          const Render = shouldRender ? ReactDOM.render : ReactDOM.hydrate\n          Render(element, this.containerRef.current)\n          log('shouldRender16', shouldRender, reactVersion)\n        } else {\n          log('shouldRender18', shouldRender, reactVersion)\n          if (shouldRender) {\n            const {createRoot} = self.libs\n            this.root = createRoot(this.containerRef.current!)\n            this.root.render(element)\n          } else {\n            // const {hydrateRoot} = self.libs\n            // this.root = hydrateRoot(this.containerRef.current!, element)\n            this.root.render()\n          }\n        }\n      }\n\n      render() {\n        return <div ref={this.containerRef} />\n      }\n    }\n    return WrappedComponent as any\n  }\n}\n\nexport const reactAdapter = new ReactAdapter()\n"],"mappings":"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","names":["adapter_exports","__export","ReactAdapter","reactAdapter","__toCommonJS","checkVersion","version","isPromise","p","isDev","log","globalLib","win","log","EMPShareGlobalVal","ReactAdapter","op","__publicField","__spreadValues","o","React","ReactDOM","scope","component","reactVersion","checkVersion","self","WrappedComponent","props","shouldRender","__async","isPromise","m","element","createRoot","reactAdapter"]}