Spaces:
Sleeping
Sleeping
| ; | |
| exports.__esModule = true; | |
| exports.default = void 0; | |
| var _util = require("./util"); | |
| function defaultTemplate({ | |
| template | |
| }, opts, { | |
| imports, | |
| interfaces, | |
| componentName, | |
| props, | |
| jsx, | |
| exports | |
| }) { | |
| const plugins = ['jsx']; | |
| if (opts.typescript) { | |
| plugins.push('typescript'); | |
| } | |
| const typeScriptTpl = template.smart({ | |
| plugins | |
| }); | |
| return typeScriptTpl.ast`${imports} | |
| ${interfaces} | |
| function ${componentName}(${props}) { | |
| return ${jsx}; | |
| } | |
| ${exports} | |
| `; | |
| } | |
| const plugin = (api, opts) => ({ | |
| visitor: { | |
| Program(path) { | |
| const { | |
| types: t | |
| } = api; | |
| const template = opts.template || defaultTemplate; | |
| const body = template(api, opts, { | |
| componentName: t.identifier(opts.state.componentName), | |
| interfaces: (0, _util.getInterface)(api, opts), | |
| props: (0, _util.getProps)(api, opts), | |
| imports: (0, _util.getImport)(api, opts), | |
| exports: (0, _util.getExport)(api, opts), | |
| jsx: path.node.body[0].expression | |
| }); | |
| if (Array.isArray(body)) { | |
| path.node.body = body; | |
| } else { | |
| path.node.body = [body]; | |
| } | |
| path.replaceWith(path.node); | |
| } | |
| } | |
| }); | |
| var _default = plugin; | |
| exports.default = _default; |