{"version":3,"file":"single-spa-react.cjs","sources":["../../node_modules/.pnpm/dom-element-getter-helpers@1.1.1/node_modules/dom-element-getter-helpers/lib/dom-element-getter-helpers.js","../../src/single-spa-react.js"],"sourcesContent":["function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nexport function chooseDomElementGetter(opts, props) {\n  var domElementGetter;\n\n  if (props.domElement) {\n    domElementGetter = function domElementGetter() {\n      return props.domElement;\n    };\n  } else if (props.domElementGetter) {\n    domElementGetter = props.domElementGetter;\n  } else if (opts.domElementGetter) {\n    domElementGetter = opts.domElementGetter;\n  } else {\n    domElementGetter = defaultDomElementGetter(props);\n  }\n\n  if (typeof domElementGetter !== \"function\") {\n    throw Error(\"single-spa's dom-element-getter-helpers was given an invalid domElementGetter for application or parcel '\".concat(props.name, \"'. Expected a function, received \").concat(_typeof(domElementGetter)));\n  }\n\n  return function () {\n    var domElement = domElementGetter(props);\n\n    if (!(domElement instanceof HTMLElement)) {\n      throw Error(\"single-spa's dom-element-getter-helpers: domElementGetter returned an invalid dom element for application or parcel '\".concat(props.name, \"'. Expected HTMLElement, received \").concat(_typeof(domElement)));\n    }\n\n    return domElement;\n  };\n}\n\nfunction defaultDomElementGetter(props) {\n  var appName = props.appName || props.name;\n\n  if (!appName) {\n    throw Error(\"single-spa's dom-element-getter-helpers was not given an application name as a prop, so it can't make a unique dom element container for the react application\");\n  }\n\n  var htmlId = \"single-spa-application:\".concat(appName);\n  return function defaultDomEl() {\n    var domElement = document.getElementById(htmlId);\n\n    if (!domElement) {\n      domElement = document.createElement(\"div\");\n      domElement.id = htmlId;\n      document.body.appendChild(domElement);\n    }\n\n    return domElement;\n  };\n}\n","/* We don't import parcel.component.js from this file intentionally. See comment\n * in that file for why\n */\n\nimport { chooseDomElementGetter } from \"dom-element-getter-helpers\";\n\n// React context that gives any react component the single-spa props\nexport let SingleSpaContext = null;\n\n// This try/catch exists mostly to prevent rollup from thinking that SingleSpaContext\n// is null and then doing optimizations in parcel.js that cause bugs.\n// See https://github.com/single-spa/single-spa-react/issues/105\n\ntry {\n  // single-spa-react is usable as a global script, as a systemjs module, and other\n  // situations where require() is unavailable. This is why we require the user to\n  // pass in opts.React and opts.ReactDOM - to avoid the mess of \"how do i properly load react\".\n  // However, in situations where require() is available, we can use it this way to create\n  // the react context. The try/catch defensiveness keeps single-spa-react working in\n  // as many situations as possible.\n  SingleSpaContext = require(\"react\").createContext();\n} catch {\n  // ignore\n}\n\nconst defaultOpts = {\n  // required opts\n  React: null,\n\n  // required - one or the other\n  ReactDOM: null,\n  ReactDOMClient: null,\n\n  // required - one or the other\n  rootComponent: null,\n  loadRootComponent: null,\n\n  // optional opts\n  errorBoundary: null,\n  errorBoundaryClass: null,\n  domElementGetter: null,\n  parcelCanUpdate: true, // by default, allow parcels created with single-spa-react to be updated\n  suppressComponentDidCatchWarning: false,\n  domElements: {},\n  renderResults: {},\n  updateResolves: {},\n  unmountResolves: {},\n};\n\nfunction singleSpaReact(userOpts) {\n  if (typeof userOpts !== \"object\") {\n    throw new Error(`single-spa-react requires a configuration object`);\n  }\n\n  const opts = {\n    ...defaultOpts,\n    ...userOpts,\n  };\n\n  if (!opts.React) {\n    throw new Error(`single-spa-react must be passed opts.React`);\n  }\n\n  if (!opts.ReactDOM && !opts.ReactDOMClient) {\n    throw new Error(\n      `single-spa-react must be passed opts.ReactDOM or opts.ReactDOMClient`\n    );\n  }\n\n  if (!opts.renderType) {\n    // https://github.com/single-spa/single-spa-react/issues/202\n    if (opts.ReactDOMClient?.createRoot) {\n      opts.renderType = \"createRoot\";\n    } else {\n      opts.renderType = \"render\";\n    }\n  }\n\n  if (!opts.rootComponent && !opts.loadRootComponent) {\n    throw new Error(\n      `single-spa-react must be passed opts.rootComponent or opts.loadRootComponent`\n    );\n  }\n\n  if (opts.errorBoundary && typeof opts.errorBoundary !== \"function\") {\n    throw Error(\n      `The errorBoundary opt for single-spa-react must either be omitted or be a function that returns React elements`\n    );\n  }\n\n  if (!SingleSpaContext && opts.React.createContext) {\n    SingleSpaContext = opts.React.createContext();\n  }\n\n  opts.SingleSpaRoot = createSingleSpaRoot(opts);\n\n  const lifecycles = {\n    bootstrap: bootstrap.bind(null, opts),\n    mount: mount.bind(null, opts),\n    unmount: unmount.bind(null, opts),\n  };\n\n  if (opts.parcelCanUpdate) {\n    lifecycles.update = update.bind(null, opts);\n  }\n\n  return lifecycles;\n}\n\nfunction bootstrap(opts, props) {\n  if (opts.rootComponent) {\n    // This is a class or stateless function component\n    return Promise.resolve();\n  } else {\n    // They passed a promise that resolves with the react component. Wait for it to resolve before mounting\n    return opts.loadRootComponent(props).then((resolvedComponent) => {\n      opts.rootComponent = resolvedComponent;\n    });\n  }\n}\n\nfunction mount(opts, props) {\n  return new Promise((resolve, reject) => {\n    if (\n      !opts.suppressComponentDidCatchWarning &&\n      atLeastReact16(opts.React) &&\n      !opts.errorBoundary &&\n      !opts.errorBoundaryClass\n    ) {\n      if (!opts.rootComponent.prototype) {\n        console.warn(\n          `single-spa-react: ${\n            props.name || props.appName || props.childAppName\n          }'s rootComponent does not implement an error boundary.  If using a functional component, consider providing an opts.errorBoundary to singleSpaReact(opts).`\n        );\n      } else if (!opts.rootComponent.prototype.componentDidCatch) {\n        console.warn(\n          `single-spa-react: ${\n            props.name || props.appName || props.childAppName\n          }'s rootComponent should implement componentDidCatch to avoid accidentally unmounting the entire single-spa application.`\n        );\n      }\n    }\n\n    const whenMounted = function () {\n      resolve(this);\n    };\n\n    const elementToRender = getElementToRender(opts, props, whenMounted);\n    const domElement = chooseDomElementGetter(opts, props)();\n    const renderResult = reactDomRender({\n      elementToRender,\n      domElement,\n      reactDom: getReactDom(opts),\n      renderType: getRenderType(opts),\n    });\n\n    opts.domElements[props.name] = domElement;\n    opts.renderResults[props.name] = renderResult;\n  });\n}\n\nfunction unmount(opts, props) {\n  return new Promise((resolve) => {\n    opts.unmountResolves[props.name] = resolve;\n\n    const root = opts.renderResults[props.name];\n\n    if (root && root.unmount) {\n      // React >= 18\n      const unmountResult = root.unmount();\n    } else {\n      // React < 18\n      getReactDom(opts).unmountComponentAtNode(opts.domElements[props.name]);\n    }\n    delete opts.domElements[props.name];\n    delete opts.renderResults[props.name];\n  });\n}\n\nfunction update(opts, props) {\n  return new Promise((resolve) => {\n    if (!opts.updateResolves[props.name]) {\n      opts.updateResolves[props.name] = [];\n    }\n\n    opts.updateResolves[props.name].push(resolve);\n\n    const elementToRender = getElementToRender(opts, props, null);\n    const renderRoot = opts.renderResults[props.name];\n    if (renderRoot && renderRoot.render) {\n      // React 18 with ReactDOM.createRoot()\n      renderRoot.render(elementToRender);\n    } else {\n      // React 16 / 17 with ReactDOM.render()\n      const domElement = chooseDomElementGetter(opts, props)();\n      // This is the old way to update a react application - just call render() again\n      getReactDom(opts).render(elementToRender, domElement);\n    }\n  });\n}\n\nfunction atLeastReact16(React) {\n  if (\n    React &&\n    typeof React.version === \"string\" &&\n    React.version.indexOf(\".\") >= 0\n  ) {\n    const majorVersionString = React.version.slice(\n      0,\n      React.version.indexOf(\".\")\n    );\n    try {\n      return Number(majorVersionString) >= 16;\n    } catch (err) {\n      return false;\n    }\n  } else {\n    return false;\n  }\n}\n\nfunction getReactDom(opts) {\n  return opts.ReactDOMClient || opts.ReactDOM;\n}\n\nfunction getRenderType(opts) {\n  return typeof opts.renderType === \"function\"\n    ? opts.renderType()\n    : opts.renderType;\n}\n\nfunction reactDomRender({ reactDom, renderType, elementToRender, domElement }) {\n  const renderFn = reactDom[renderType];\n  if (typeof renderFn !== \"function\")\n    throw new Error(`renderType \"${renderType}\" did not return a function.`);\n\n  switch (renderType) {\n    case \"createRoot\":\n    case \"unstable_createRoot\":\n    case \"createBlockingRoot\":\n    case \"unstable_createBlockingRoot\": {\n      const root = renderFn(domElement);\n      root.render(elementToRender);\n      return root;\n    }\n    case \"hydrateRoot\": {\n      const root = renderFn(domElement, elementToRender);\n      return root;\n    }\n    case \"hydrate\":\n    default: {\n      renderFn(elementToRender, domElement);\n      // The renderRoot function should return a react root, but ReactDOM.hydrate() and ReactDOM.render()\n      // do not return a react root. So instead, we return null which indicates that there is no react root\n      // that can be used for updates or unmounting\n      return null;\n    }\n  }\n}\n\nfunction getElementToRender(opts, props, mountFinished) {\n  const rootComponentElement = opts.React.createElement(\n    opts.rootComponent,\n    props\n  );\n\n  let elementToRender = SingleSpaContext\n    ? opts.React.createElement(\n        SingleSpaContext.Provider,\n        { value: props },\n        rootComponentElement\n      )\n    : rootComponentElement;\n\n  if (\n    opts.errorBoundary ||\n    props.errorBoundary ||\n    opts.errorBoundaryClass ||\n    props.errorBoundaryClass\n  ) {\n    opts.errorBoundaryClass =\n      opts.errorBoundaryClass ||\n      props.errorBoundaryClass ||\n      createErrorBoundary(opts, props);\n    elementToRender = opts.React.createElement(\n      opts.errorBoundaryClass,\n      props,\n      elementToRender\n    );\n  }\n\n  // https://github.com/single-spa/single-spa-react/issues/112\n  elementToRender = opts.React.createElement(\n    opts.SingleSpaRoot,\n    {\n      ...props,\n      mountFinished,\n      updateFinished() {\n        if (opts.updateResolves[props.name]) {\n          opts.updateResolves[props.name].forEach((r) => r());\n          delete opts.updateResolves[props.name];\n        }\n      },\n      unmountFinished() {\n        if (opts.unmountResolves[props.name]) {\n          opts.unmountResolves[props.name]();\n          delete opts.unmountResolves[props.name];\n        }\n      },\n    },\n    elementToRender\n  );\n\n  return elementToRender;\n}\n\nfunction createErrorBoundary(opts, props) {\n  // Avoiding babel output for class syntax and super()\n  // to avoid bloat\n  function SingleSpaReactErrorBoundary(props) {\n    // super\n    opts.React.Component.apply(this, arguments);\n\n    this.state = {\n      caughtError: null,\n      caughtErrorInfo: null,\n    };\n\n    SingleSpaReactErrorBoundary.displayName = `SingleSpaReactErrorBoundary(${props.name})`;\n  }\n\n  SingleSpaReactErrorBoundary.prototype = Object.create(\n    opts.React.Component.prototype\n  );\n\n  SingleSpaReactErrorBoundary.prototype.render = function () {\n    if (this.state.caughtError) {\n      const errorBoundary = opts.errorBoundary || props.errorBoundary;\n\n      return errorBoundary(\n        this.state.caughtError,\n        this.state.caughtErrorInfo,\n        this.props\n      );\n    } else {\n      return this.props.children;\n    }\n  };\n\n  SingleSpaReactErrorBoundary.prototype.componentDidCatch = function (\n    err,\n    info\n  ) {\n    this.setState({\n      caughtError: err,\n      caughtErrorInfo: info,\n    });\n  };\n\n  return SingleSpaReactErrorBoundary;\n}\n\nfunction createSingleSpaRoot(opts) {\n  // This is a class component, since we need a mount hook and single-spa-react supports React@15 (no useEffect available)\n  function SingleSpaRoot(_props) {\n    SingleSpaRoot.displayName = `SingleSpaRoot(${_props.name})`;\n  }\n\n  SingleSpaRoot.prototype = Object.create(opts.React.Component.prototype);\n  SingleSpaRoot.prototype.componentDidMount = function () {\n    setTimeout(this.props.mountFinished);\n  };\n  SingleSpaRoot.prototype.componentWillUnmount = function () {\n    setTimeout(this.props.unmountFinished);\n  };\n  SingleSpaRoot.prototype.render = function () {\n    // componentDidUpdate doesn't seem to be called during root.render() for updates\n    setTimeout(this.props.updateFinished);\n\n    return this.props.children;\n  };\n\n  return SingleSpaRoot;\n}\n\nexport default singleSpaReact;\n"],"names":["_typeof","obj","Symbol","iterator","constructor","prototype","chooseDomElementGetter","opts","props","domElementGetter","domElement","appName","name","Error","htmlId","concat","document","getElementById","createElement","id","body","appendChild","defaultDomElementGetter","HTMLElement","SingleSpaContext","require","createContext","defaultOpts","React","ReactDOM","ReactDOMClient","rootComponent","loadRootComponent","errorBoundary","errorBoundaryClass","parcelCanUpdate","suppressComponentDidCatchWarning","domElements","renderResults","updateResolves","unmountResolves","bootstrap","Promise","resolve","then","resolvedComponent","mount","reject","version","indexOf","majorVersionString","slice","Number","err","atLeastReact16","componentDidCatch","console","warn","childAppName","elementToRender","getElementToRender","this","renderResult","reactDom","renderType","renderFn","root","render","reactDomRender","getReactDom","getRenderType","unmount","unmountComponentAtNode","update","push","renderRoot","mountFinished","rootComponentElement","Provider","value","SingleSpaReactErrorBoundary","Component","apply","arguments","state","caughtError","caughtErrorInfo","displayName","Object","create","children","info","setState","createErrorBoundary","SingleSpaRoot","updateFinished","forEach","r","unmountFinished","userOpts","_opts$ReactDOMClient","createRoot","_props","componentDidMount","setTimeout","componentWillUnmount","createSingleSpaRoot","lifecycles","bind"],"mappings":"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"}