{"version":3,"file":"index.mjs","sources":["../src/index.js","../src/react.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","import { Component } from \"react\";\nimport flowponent from \".\";\n\nexport default flow => {\n  return class extends Component {\n    constructor(props) {\n      super(props);\n      this.state = {};\n\n      const render = flowponent(flow);\n      this.render = function() {\n        const result = render.call(this, this.props);\n        return result == null ? null : result;\n      };\n    }\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","render","flowponent","call","Component"],"mappings":"kCAAA,eAAeA,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,gCC5DFR,GACb,2BACE,WAAYC,UACVoB,cAAMpB,UACDC,MAAQ,GAEb,IAAMuB,EAASC,EAAW1B,GAJT,OAKjBqB,EAAKI,OAAS,WACZ,IAAMT,EAASS,EAAOE,KAAKxB,KAAMA,KAAKF,OACtC,OAAiB,MAAVe,EAAiB,KAAOA,KARrC,iGAAqBY"}