{"version":3,"names":["jsx","_babelPluginSyntaxJsx","default","_srcClientPreferencesJs","Preferences","_srcClientReactiveRp19JsxRp19JsxJs","reactiveMorphVisitor","execute","hasDirective","path","name","get","find","directive","node","shouldTransform","state","rp19Directive","rp19Preference","inFile","opts","executedIn","createAExprDirective","t","directiveLiteral","ensureAExprDirectiveExistance","pushContainer","_export","types","inherits","visitor","Program","traverse"],"sources":["babel-plugin-rp19-jsx.js"],"sourcesContent":["import jsx from \"babel-plugin-syntax-jsx\";\nimport Preferences from 'src/client/preferences.js';\nimport { reactiveMorphVisitor } from 'src/client/reactive/rp19-jsx/rp19-jsx.js';\n\n/**\n * Resources for JSX Syntax\n * JSX babel Preset: https://github.com/babel/babel/blob/master/packages/babel-preset-react/src/index.js\n * JSX spec draft: https://github.com/facebook/jsx\n * JSX Syntax definition in babel: https://github.com/babel/babel/blob/master/packages/babel-types/src/definitions/jsx.js#L10\n * Babel nodes list: https://babeljs.io/docs/core-packages/babel-types/#api-jsxidentifier\n */\n\nconst hasDirective = (path, name) => \n  !!path.get('directives')\n    .find(directive =>\n      directive.get('value').get('value').node === name);\n\nconst shouldTransform = (path, state) => {\n  const rp19Directive = hasDirective(path, 'enable rp19-jsx');\n  const rp19Preference = Preferences.get('UseRP19JSX');\n  const inFile = state.opts.executedIn === 'file';\n\n  if (inFile) {\n    return rp19Directive;\n  } else {\n    return rp19Preference;\n  }\n}\n\nconst createAExprDirective = t =>\n  t.directive(\n    t.directiveLiteral(\n      'enable aexpr'\n    )\n  );\n\nconst ensureAExprDirectiveExistance = (path, t) => {\n  if (!hasDirective(path, 'enable aexpr'))\n    path.pushContainer('directives', createAExprDirective(t));\n}\n\nexport default ({ types: t }) => ({\n  inherits: jsx,\n  visitor: {\n    Program(path, state) {\n      if (!shouldTransform(path, state)) { return; }\n      ensureAExprDirectiveExistance(path, t);\n      path.traverse(reactiveMorphVisitor(t));\n    }\n  }\n});\n"],"mappings":";;;;;;MAAOA,GAAG,GAAAC,qBAAA,CAAAC,OAAA;IAAA,aAAAC,uBAAA;MACHC,WAAW,GAAAD,uBAAA,CAAAD,OAAA;IAAA,aAAAG,kCAAA;MACTC,oBAAoB,GAAAD,kCAAA,CAApBC,oBAAoB;IAAA;IAAAC,OAAA,WAAAA,CAAA;MAE7B;AACA;AACA;AACA;AACA;AACA;AACA;MAEMC,YAAY,GAAGA,CAACC,IAAI,EAAEC,IAAI,KAC9B,CAAC,CAACD,IAAI,CAACE,GAAG,CAAC,YAAY,CAAC,CACrBC,IAAI,CAACC,SAAS,IACbA,SAAS,CAACF,GAAG,CAAC,OAAO,CAAC,CAACA,GAAG,CAAC,OAAO,CAAC,CAACG,IAAI,KAAKJ,IAAI,CAAC;MAElDK,eAAe,GAAGA,CAACN,IAAI,EAAEO,KAAK,KAAK;QACvC,MAAMC,aAAa,GAAGT,YAAY,CAACC,IAAI,EAAE,iBAAiB,CAAC;QAC3D,MAAMS,cAAc,GAAGd,WAAW,CAACO,GAAG,CAAC,YAAY,CAAC;QACpD,MAAMQ,MAAM,GAAGH,KAAK,CAACI,IAAI,CAACC,UAAU,KAAK,MAAM;QAE/C,IAAIF,MAAM,EAAE;UACV,OAAOF,aAAa;QACtB,CAAC,MAAM;UACL,OAAOC,cAAc;QACvB;MACF,CAAC;MAEKI,oBAAoB,GAAGC,CAAC,IAC5BA,CAAC,CAACV,SAAS,CACTU,CAAC,CAACC,gBAAgB,CAChB,cACF,CACF,CAAC;MAEGC,6BAA6B,GAAGA,CAAChB,IAAI,EAAEc,CAAC,KAAK;QACjD,IAAI,CAACf,YAAY,CAACC,IAAI,EAAE,cAAc,CAAC,EACrCA,IAAI,CAACiB,aAAa,CAAC,YAAY,EAAEJ,oBAAoB,CAACC,CAAC,CAAC,CAAC;MAC7D,CAAC;MAAAI,OAAA,YAEc,CAAC;QAAEC,KAAK,EAAEL;MAAE,CAAC,MAAM;QAChCM,QAAQ,EAAE7B,GAAG;QACb8B,OAAO,EAAE;UACPC,OAAOA,CAACtB,IAAI,EAAEO,KAAK,EAAE;YACnB,IAAI,CAACD,eAAe,CAACN,IAAI,EAAEO,KAAK,CAAC,EAAE;cAAE;YAAQ;YAC7CS,6BAA6B,CAAChB,IAAI,EAAEc,CAAC,CAAC;YACtCd,IAAI,CAACuB,QAAQ,CAAC1B,oBAAoB,CAACiB,CAAC,CAAC,CAAC;UACxC;QACF;MACF,CAAC,CAAC;IAAA;EAAA;AAAA"}