{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-drawio/src/external/babel-plugin-transform-function-bind.js"],"names":["types","t","getTempId","scope","id","path","getData","generateDeclaredUidIdentifier","setData","getStaticContext","bind","object","callee","isStatic","inferBindContext","staticContext","tempId","sequenceExpression","assignmentExpression","inherits","functionBindSyntax","visitor","CallExpression","node","isBindExpression","context","memberExpression","identifier","arguments","unshift","BindExpression","replaceWith","callExpression"],"mappings":";;;;;qBAEe,UAAU,EAAEA,OAAOC,CAAT,EAAV,EAAwB;AACrC,aAASC,SAAT,CAAmBC,KAAnB,EAA0B;AACxB,UAAIC,KAAKD,MAAME,IAAN,CAAWC,OAAX,CAAmB,cAAnB,CAAT;AACA,UAAIF,EAAJ,EAAQ,OAAOA,EAAP;;AAERA,WAAKD,MAAMI,6BAAN,CAAoC,SAApC,CAAL;AACA,aAAOJ,MAAME,IAAN,CAAWG,OAAX,CAAmB,cAAnB,EAAmCJ,EAAnC,CAAP;AACD;;AAED,aAASK,gBAAT,CAA0BC,IAA1B,EAAgCP,KAAhC,EAAuC;AACrC,YAAMQ,SAASD,KAAKC,MAAL,IAAeD,KAAKE,MAAL,CAAYD,MAA1C;AACA,aAAOR,MAAMU,QAAN,CAAeF,MAAf,KAA0BA,MAAjC;AACD;;AAED,aAASG,gBAAT,CAA0BJ,IAA1B,EAAgCP,KAAhC,EAAuC;AACrC,YAAMY,gBAAgBN,iBAAiBC,IAAjB,EAAuBP,KAAvB,CAAtB;AACA,UAAIY,aAAJ,EAAmB,OAAOA,aAAP;;AAEnB,YAAMC,SAASd,UAAUC,KAAV,CAAf;AACA,UAAIO,KAAKC,MAAT,EAAiB;AACfD,aAAKE,MAAL,GAAcX,EAAEgB,kBAAF,CAAqB,CACjChB,EAAEiB,oBAAF,CAAuB,GAAvB,EAA4BF,MAA5B,EAAoCN,KAAKC,MAAzC,CADiC,EAEjCD,KAAKE,MAF4B,CAArB,CAAd;AAID,OALD,MAKO;AACLF,aAAKE,MAAL,CAAYD,MAAZ,GAAqBV,EAAEiB,oBAAF,CAAuB,GAAvB,EAA4BF,MAA5B,EAAoCN,KAAKE,MAAL,CAAYD,MAAhD,CAArB;AACD;AACD,aAAOK,MAAP;AACD;;AAED,WAAO;AACLG,gBAAUC,kBADL;;AAGLC,eAAS;AACPC,uBAAe,EAAEC,IAAF,EAAQpB,KAAR,EAAf,EAAgC;AAC9B,gBAAMO,OAAOa,KAAKX,MAAlB;AACA,cAAI,CAACX,EAAEuB,gBAAF,CAAmBd,IAAnB,CAAL,EAA+B;;AAE/B,gBAAMe,UAAUX,iBAAiBJ,IAAjB,EAAuBP,KAAvB,CAAhB;AACAoB,eAAKX,MAAL,GAAcX,EAAEyB,gBAAF,CAAmBhB,KAAKE,MAAxB,EAAgCX,EAAE0B,UAAF,CAAa,MAAb,CAAhC,CAAd;AACAJ,eAAKK,SAAL,CAAeC,OAAf,CAAuBJ,OAAvB;AACD,SARM;;AAUPK,uBAAezB,IAAf,EAAqB;AACnB,gBAAM,EAAEkB,IAAF,EAAQpB,KAAR,KAAkBE,IAAxB;AACA,gBAAMoB,UAAUX,iBAAiBS,IAAjB,EAAuBpB,KAAvB,CAAhB;AACAE,eAAK0B,WAAL,CAAiB9B,EAAE+B,cAAF,CAAiB/B,EAAEyB,gBAAF,CAAmBH,KAAKX,MAAxB,EAAgCX,EAAE0B,UAAF,CAAa,MAAb,CAAhC,CAAjB,EAAwE,CAACF,OAAD,CAAxE,CAAjB;AACD;AAdM;AAHJ,KAAP;AAoBD,G;;;;AApDML,wB","file":"babel-plugin-transform-function-bind.js","sourcesContent":["import functionBindSyntax from \"babel-plugin-syntax-function-bind\";\r\n\r\nexport default function ({ types: t }) {\r\n  function getTempId(scope) {\r\n    let id = scope.path.getData(\"functionBind\");\r\n    if (id) return id;\r\n\r\n    id = scope.generateDeclaredUidIdentifier(\"context\");\r\n    return scope.path.setData(\"functionBind\", id);\r\n  }\r\n\r\n  function getStaticContext(bind, scope) {\r\n    const object = bind.object || bind.callee.object;\r\n    return scope.isStatic(object) && object;\r\n  }\r\n\r\n  function inferBindContext(bind, scope) {\r\n    const staticContext = getStaticContext(bind, scope);\r\n    if (staticContext) return staticContext;\r\n\r\n    const tempId = getTempId(scope);\r\n    if (bind.object) {\r\n      bind.callee = t.sequenceExpression([\r\n        t.assignmentExpression(\"=\", tempId, bind.object),\r\n        bind.callee\r\n      ]);\r\n    } else {\r\n      bind.callee.object = t.assignmentExpression(\"=\", tempId, bind.callee.object);\r\n    }\r\n    return tempId;\r\n  }\r\n\r\n  return {\r\n    inherits: functionBindSyntax,\r\n\r\n    visitor: {\r\n      CallExpression({ node, scope }) {\r\n        const bind = node.callee;\r\n        if (!t.isBindExpression(bind)) return;\r\n\r\n        const context = inferBindContext(bind, scope);\r\n        node.callee = t.memberExpression(bind.callee, t.identifier(\"call\"));\r\n        node.arguments.unshift(context);\r\n      },\r\n\r\n      BindExpression(path) {\r\n        const { node, scope } = path;\r\n        const context = inferBindContext(node, scope);\r\n        path.replaceWith(t.callExpression(t.memberExpression(node.callee, t.identifier(\"bind\")), [context]));\r\n      }\r\n    }\r\n  };\r\n}\r\n"]}