Spaces:
Running
Running
| ; | |
| Object.defineProperty(exports, "__esModule", { | |
| value: true | |
| }); | |
| Object.defineProperty(exports, "default", { | |
| enumerable: true, | |
| get: function() { | |
| return _default; | |
| } | |
| }); | |
| const _pluginsyntaxjsx = /*#__PURE__*/ _interop_require_default(require("next/dist/compiled/babel/plugin-syntax-jsx")); | |
| function _interop_require_default(obj) { | |
| return obj && obj.__esModule ? obj : { | |
| default: obj | |
| }; | |
| } | |
| function _default({ types: t }) { | |
| return { | |
| inherits: _pluginsyntaxjsx.default, | |
| visitor: { | |
| JSXElement (_path, state) { | |
| state.set('jsx', true); | |
| }, | |
| // Fragment syntax is still JSX since it compiles to createElement(), | |
| // but JSXFragment is not a JSXElement | |
| JSXFragment (_path, state) { | |
| state.set('jsx', true); | |
| }, | |
| Program: { | |
| exit (path, state) { | |
| if (state.get('jsx')) { | |
| const pragma = t.identifier(state.opts.pragma); | |
| let importAs = pragma; | |
| // if there's already a React in scope, use that instead of adding an import | |
| const existingBinding = state.opts.reuseImport !== false && state.opts.importAs && path.scope.getBinding(state.opts.importAs); | |
| // var _jsx = _pragma.createElement; | |
| if (state.opts.property) { | |
| if (state.opts.importAs) { | |
| importAs = t.identifier(state.opts.importAs); | |
| } else { | |
| importAs = path.scope.generateUidIdentifier('pragma'); | |
| } | |
| const mapping = t.variableDeclaration('var', [ | |
| t.variableDeclarator(pragma, t.memberExpression(importAs, t.identifier(state.opts.property))) | |
| ]); | |
| // if the React binding came from a require('react'), | |
| // make sure that our usage comes after it. | |
| let newPath; | |
| if (existingBinding && t.isVariableDeclarator(existingBinding.path.node) && t.isCallExpression(existingBinding.path.node.init) && t.isIdentifier(existingBinding.path.node.init.callee) && existingBinding.path.node.init.callee.name === 'require') { | |
| ; | |
| [newPath] = existingBinding.path.parentPath.insertAfter(mapping); | |
| } else { | |
| ; | |
| [newPath] = path.unshiftContainer('body', mapping); | |
| } | |
| path.scope.registerDeclaration(newPath); | |
| } | |
| if (!existingBinding) { | |
| const importSpecifier = t.importDeclaration([ | |
| state.opts.import ? t.importSpecifier(importAs, t.identifier(state.opts.import)) : state.opts.importNamespace ? t.importNamespaceSpecifier(importAs) : t.importDefaultSpecifier(importAs) | |
| ], t.stringLiteral(state.opts.module || 'react')); | |
| const [newPath] = path.unshiftContainer('body', importSpecifier); | |
| for (const specifier of newPath.get('specifiers')){ | |
| path.scope.registerBinding('module', specifier); | |
| } | |
| } | |
| } | |
| } | |
| } | |
| } | |
| }; | |
| } | |
| //# sourceMappingURL=jsx-pragma.js.map |