{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-drawio/src/client/lang/lang-ext.js"],"names":["extend","AExprRegistry","babelDefault","jsx","doExpressions","functionBind","asyncGenerators","boundEval","aexpr","Object","prototype","dependentAExprs","allAsArray","filter","ae","supportsDependencies","dependencies","all","find","dep","desc","getAsDependencyDescription","object","value","scope","babel","SYNTAX_PLUGINS","String","toAST","filename","transform","babelrc","plugins","presets","sourceFileName","moduleIds","sourceMaps","compact","comments","code","ast","resolveModuleSource","undefined","traverseAsAST","fullPluginOrVisitor","iteratorPlugin","Function","visitor","thisReference","targetModule","result","isError","aexprByFunction","WeakMap","asAExpr","getOrCreate","onChange","callback","onBecomeTrue","onBecomeFalse"],"mappings":"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","file":"lang-ext.js","sourcesContent":["import 'lang';\nimport { extend } from './utils.js';\n\n\n/*MD\n## OBJECT\nMD*/\nimport { AExprRegistry } from 'src/client/reactive/active-expression/active-expression.js'\n\nextend(Object.prototype, {\n\n  dependentAExprs() {\n    return AExprRegistry.allAsArray().filter(ae => {\n      if(!ae.supportsDependencies()) { return false; }\n      \n      const dependencies = ae.dependencies().all();\n      return dependencies.find(dep => {\n        const desc = dep.getAsDependencyDescription();\n        return desc.object === this ||\n          desc.value === this ||\n          desc.scope === this;\n      });\n    });\n  }\n});\n\n\n/*MD\n## STRING\nMD*/\nimport babelDefault from 'systemjs-babel-build';\nconst babel = babelDefault.babel;\n\nimport jsx from 'babel-plugin-syntax-jsx';\nimport doExpressions from 'babel-plugin-syntax-do-expressions';\nimport functionBind from 'babel-plugin-syntax-function-bind';\nimport asyncGenerators from 'babel-plugin-syntax-async-generators';\nconst SYNTAX_PLUGINS = [\n  jsx,\n  doExpressions,\n  functionBind,\n  asyncGenerators\n];\n\nimport boundEval from \"src/client/bound-eval.js\";\n\nextend(String.prototype, {\n\n  toAST() {\n    const filename = \"tempfile.js\";\n\n    return babel.transform(this, {\n      babelrc: false,\n      plugins: SYNTAX_PLUGINS,\n      presets: [],\n      filename: filename,\n      sourceFileName: filename,\n      moduleIds: false,\n      sourceMaps: true,\n      // inputSourceMap: load.metadata.sourceMap,\n      compact: false,\n      comments: true,\n      code: true,\n      ast: true,\n      resolveModuleSource: undefined\n    }).ast;\n  },\n  \n  /**\n   * @example providing a visitor object\n   * var ids = [];\n   * `let x = 0, y = x +2;`.traverseAsAST({\n   *   Identifier(path) {\n   *     ids.push(path.node.name);\n   *   }\n   * });\n   * ids;\n   * \n   * @example providing a full-fledged plugin function\n   * var ids = [];\n   * `let x = 0, y = x +2;`.traverseAsAST(({ types: t, template, traverse }) => ({\n   *   visitor: {\n   *     Identifier(path) {\n   *       ids.push(path.node.name);\n   *     }\n   *   }\n   * }));\n   * ids;\n   */\n  // #TODO: eliminate code duplication\n  traverseAsAST(fullPluginOrVisitor) {\n    let iteratorPlugin;\n    if(fullPluginOrVisitor instanceof Function) {\n      iteratorPlugin = fullPluginOrVisitor;\n    } else {\n      // only got the visitor: need to bridge to a plugin function as expected by babel\n      iteratorPlugin = babel => ({ visitor: fullPluginOrVisitor });\n    }\n\n    const filename = \"tempfile.js\";\n    \n    return babel.transform(this, {\n      babelrc: false,\n      plugins: [...SYNTAX_PLUGINS, iteratorPlugin],\n      presets: [],\n      filename: filename,\n      sourceFileName: filename,\n      moduleIds: false,\n      sourceMaps: true,\n      // inputSourceMap: load.metadata.sourceMap,\n      compact: false,\n      comments: true,\n      code: true,\n      ast: true,\n      resolveModuleSource: undefined\n    }).ast;\n  },\n\n  async boundEval(thisReference, targetModule) {\n    const result = await boundEval(this, thisReference, targetModule);\n    if (result.isError) {\n      throw result.value;\n    } else {\n      return result.value;\n    }\n  }\n\n});\n\n\n/*MD\n## FUNCTION\nMD*/\nimport aexpr from 'active-expression-rewriting';\n\nconst aexprByFunction = new WeakMap();\n\nextend(Function.prototype, {\n\n  asAExpr() {\n    return aexprByFunction.getOrCreate(this, () => aexpr(this));\n  },\n  \n  onChange(callback) {\n    return this.asAExpr().onChange(callback);\n  },\n  \n  onBecomeTrue(callback) {\n    return this.asAExpr().onBecomeTrue(callback);\n  },\n  \n  onBecomeFalse(callback) {\n    return this.asAExpr().onBecomeFalse(callback);\n  }\n\n});\n\n"]}