{"version":3,"file":"index.mjs","sources":["../src/index.js"],"sourcesContent":["export default flow => {\n  return function(props) {\n    const state = this.state;\n\n    if (!state.started) {\n      let iter = flow(props);\n\n      const step = (value, rejected) => {\n        const promise = new Promise((resolve, reject) => {\n          let next;\n          new Promise(resolve => {\n            resolve((next = rejected ? iter.throw(value) : iter.next(value)));\n          })\n            .then(result => {\n              if (iter) {\n                if (!result.done) {\n                  let view;\n                  try {\n                    view = result.value(resolve, reject);\n                  } catch (err) {\n                    return step(err, true);\n                  }\n\n                  this.setState({\n                    started: true,\n                    value: view\n                  });\n\n                  if (typeof next.then === \"function\") {\n                    step(promise);\n                  } else {\n                    promise.then(step, err => step(err, true));\n                  }\n                } else if (props.onReturn) {\n                  props.onReturn(result.value);\n                }\n              }\n            })\n            .catch(err => {\n              if (iter) {\n                if (props.onThrow) {\n                  props.onThrow(err);\n                } else {\n                  this.setState({ failed: true, value: err });\n                }\n              }\n            });\n        });\n      };\n\n      this.componentWillUnmount = () => {\n        if (iter) {\n          iter.return();\n          iter = null;\n        }\n      };\n\n      step();\n    }\n\n    if (state.failed) {\n      throw state.value;\n    }\n    return state.value;\n  };\n};\n"],"names":["flow","props","state","this","started","iter","componentWillUnmount","step","value","rejected","promise","Promise","resolve","reject","next","then","result","done","onReturn","view","err","_this","setState","onThrow","failed"],"mappings":"wBAAeA,GACb,gBAAgBC,cACRC,EAAQC,KAAKD,MAEnB,IAAKA,EAAME,QAAS,CAClB,IAAIC,EAAOL,EAAKC,GA6ChBE,KAAKG,qBAAuB,WACtBD,IACFA,WACAA,EAAO,OA9CE,SAAPE,EAAQC,EAAOC,GACnB,IAAMC,EAAU,IAAIC,SAAQ,SAACC,EAASC,GACpC,IAAIC,EACJ,IAAIH,SAAQ,SAAAC,GACVA,EAASE,EAAOL,EAAWJ,QAAWG,GAASH,EAAKS,KAAKN,OAExDO,MAAK,SAAAC,GACJ,GAAIX,EACF,GAAKW,EAAOC,KAkBDhB,EAAMiB,UACfjB,EAAMiB,SAASF,EAAOR,WAnBN,CAChB,IAAIW,EACJ,IACEA,EAAOH,EAAOR,MAAMI,EAASC,GAC7B,MAAOO,GACP,OAAOb,EAAKa,GAAK,GAGnBC,EAAKC,SAAS,CACZlB,SAAS,EACTI,MAAOW,IAGgB,mBAAdL,EAAKC,KACdR,EAAKG,GAELA,EAAQK,KAAKR,GAAM,SAAAa,UAAOb,EAAKa,GAAK,iBAOrC,SAAAA,GACDf,IACEJ,EAAMsB,QACRtB,EAAMsB,QAAQH,GAEdC,EAAKC,SAAS,CAAEE,QAAQ,EAAMhB,MAAOY,WAcjDb,GAGF,GAAIL,EAAMsB,OACR,MAAMtB,EAAMM,MAEd,OAAON,EAAMM"}