{"version":3,"names":["types","t","template","globalThis","systemActivity","name","visitor","Program","enter","path","state","addCustomTemplate","file","declar","declarations","identifier","addNamed","SHARED_FLAG_GENERATED_IMPORT_IDENTIFIER","hasDirective","foundDirective","traverse","Directive","get","node","value","shouldTransform","opts","executedIn","TaggedTemplateExpression","visitedByPI","tagTemplate","tagPath","replaceWith","MAKE_REF","TAG_NODE","memberExpression","parentPath","isBinaryExpression","parentKey","operator","right","preStatementAncestor","find","p","parent","isStatement","isArrowFunctionExpression","assignment","assignmentExpression","loc","setters","execute","__SystemJSRewritingHack","_recorder_","_src_client_reactive_babel_plugin_polymorphic_identifiers_babel_plugin_polymorphic_identifiers_js","Object","defineProperty","set","thisIsVererySecretVariableName","enumerable","configurable","lively4babel","babelHelperModuleImports"],"sources":["babel-plugin-polymorphic-identifiers.js"],"sourcesContent":["\nconst SHARED_FLAG_GENERATED_IMPORT_IDENTIFIER = 'SHARED_FLAG_GENERATED_IMPORT_IDENTIFIER';\nvar addNamed = lively4babel.babelHelperModuleImports.addNamed;\n\nexport default function ({ types: t, template }) {\n  return {\n    name: 'polymorphic-identifiers',\n    visitor: {\n      Program: {\n        enter(path, state) {\n          function addCustomTemplate(file, name) {\n            const declar = file.declarations[name];\n            if (declar) {\n              return declar;\n            }\n\n            // const identifier = file.declarations[name] = file.addImport(\"polymorphic-identifiers\", name, name);\n            const identifier = file.declarations[name] = addNamed(path, name, \"polymorphic-identifiers\");\n            \n            identifier[SHARED_FLAG_GENERATED_IMPORT_IDENTIFIER] = true;\n            return identifier;\n          }\n\n          function hasDirective(path, name) {\n            let foundDirective = false;\n            path.traverse({\n              Directive(path) {\n                if (path.get(\"value\").node.value === name) {\n                  foundDirective = true;\n                }\n              }\n            });\n            return foundDirective;\n          }\n\n          const shouldTransform = state.opts.executedIn === 'workspace' || hasDirective(path, \"pi\");\n          if (!shouldTransform) {\n            return;\n          }\n\n          path.traverse({\n            TaggedTemplateExpression(path) {\n              if (path.node.visitedByPI) {\n                return;\n              }\n              path.node.visitedByPI = true;\n\n              const tagTemplate = template(`MAKE_REF(TAG_NODE, {\n                thisReference: this,\n                evalFunction: str => eval(str)\n              })`);\n              const tagPath = path.get('tag');\n              tagPath.replaceWith(tagTemplate({\n                MAKE_REF: addCustomTemplate(state.file, 'makeRef'),\n                TAG_NODE: tagPath.node\n              }));\n\n              path.replaceWith(t.memberExpression(path.node, t.identifier('access')));\n\n              const parentPath = path.parentPath;\n              if (parentPath.isBinaryExpression() && path.parentKey === 'left' && parentPath.node.operator === \"<<\") {\n                parentPath.replaceWith(parentPath.node.right);\n\n                // find something we can embed an assignment expression in\n                const preStatementAncestor = parentPath.find(p => {\n                  const parent = p.parentPath;\n                  return parent && (parent.isStatement() || parent.isArrowFunctionExpression() && p.parentKey === \"body\");\n                });\n                const assignment = t.assignmentExpression('=', path.node, preStatementAncestor.node);\n                assignment.loc = preStatementAncestor.node.loc;\n                preStatementAncestor.replaceWith(assignment);\n              }\n            }\n          });\n        }\n      }\n    }\n  };\n}"],"mappings":"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"}