{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-function-completion/src/external/babel-plugin-locals.js"],"names":["LOCALS_NAME","types","t","visitor","Identifier","path","node","name","isReferencedIdentifier","scope","hasBinding","vars","Object","keys","getAllBindings","map","label","objectProperty","identifier","undefined","replaceWith","objectExpression"],"mappings":";;;;;;AAAA,kBAAMA,cAAc,QAApB;;+BAEe,UAAS,EAAEC,OAAOC,CAAT,EAAT,EAAuB;AAClC,uBAAO;AACHC,6BAAS;AACLC,mCAAWC,IAAX,EAAiB;AACb;AACA,gCAAIA,KAAKC,IAAL,CAAUC,IAAV,KAAmBP,WAAvB,EAAoC;AAAE;AAAS;AAC/C;AACA,gCAAI,CAACK,KAAKG,sBAAL,EAAL,EAAoC;AAAE;AAAS;AAC/C;AACA,gCAAIH,KAAKI,KAAL,CAAWC,UAAX,CAAsBV,WAAtB,CAAJ,EAAwC;AAAE;AAAS;;AAEnD;;;AAGA,gCAAIW,OAAOC,OAAOC,IAAP,CAAYR,KAAKI,KAAL,CAAWK,cAAX,EAAZ,EACFC,GADE,CACEC,SAASd,EAAEe,cAAF,CACdf,EAAEgB,UAAF,CAAaF,KAAb,CADc,EACO;AACrBd,8BAAEgB,UAAF,CAAaF,KAAb,CAFc,EAEO;AACrBG,qCAHc,EAGH;AACX,gCAJc,EAIR;AACNA,qCALc,CAKJ;AALI,6BADX,CAAX;;AASAd,iCAAKe,WAAL,CACIlB,EAAEmB,gBAAF,CAAmBV,IAAnB,CADJ;AAGH;AAxBI;AADN,iBAAP;AA4BH,a","file":"babel-plugin-locals.js","sourcesContent":["const LOCALS_NAME = \"locals\";\n\nexport default function({ types: t }) {\n    return {\n        visitor: {\n            Identifier(path) {\n                // The identifier should have the expected name\n                if (path.node.name !== LOCALS_NAME) { return; }\n                // The identifier should not be part of a declaration\n                if (!path.isReferencedIdentifier()) { return; }\n                // The identifier should not reference a variable in current scope\n                if (path.scope.hasBinding(LOCALS_NAME)) { return; }\n\n                // console.log('locals expanded to', Object.keys(path.scope.getAllBindings()));\n\n\n                let vars = Object.keys(path.scope.getAllBindings())\n                        .map(label => t.objectProperty(\n                        t.identifier(label), // key\n                        t.identifier(label), // value\n                        undefined, // computed?\n                        true, // shorthand?\n                        undefined // decorators array\n                    ));\n\n                path.replaceWith(\n                    t.objectExpression(vars)\n                );\n            }\n        }\n    };\n}"]}