{"version":3,"names":["ScriptManager","__SystemJSRewritingHack","functionFromString","funcOrString","eval","toString","isLively4Script","object","tagName","toLocaleLowerCase","type","persistToDOM","funcString","name","DOMScript","_element","_attributes","_attributeStringLiteral","_attributeExpression","_children","_childExpression","file","end","column","line","start","appendChild","removeFromDOM","children","querySelectorAll","length","Error","forEach","ea","remove","prepareFunction","func","_","isString","executable","bindFunctionToObject","options","bind","isScript","initializeScriptsMap","__scripts__","scriptExists","addFunctionToScriptsMap","persistScript","hasOwnProperty","persist","_export","default","setters","_reactiveJsx","childExpression","attributeExpression","attributeStringLiteral","attributes","element","_srcExternalLodashLodashJs","execute","_recorder_","_src_client_script_manager_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","findLively4Script","parent","shadow","shadowRoot","child","scriptName","dataset","initializeScript","textContent","e","lively","notify","openWorkspace","console","error","load","loadScriptsFromDOM","document","attachScriptsFromShadowDOM","root","updateScript","removeScript","addScript","checkExists","callScript","optionalArgs","splice","call","arguments","apply"],"sources":["script-manager.js"],"sourcesContent":["import _ from 'src/external/lodash/lodash.js'\n\nexport function functionFromString(funcOrString) {\n  if (typeof funcOrString === 'function') {\n    return funcOrString;\n  }\n  // this makes sure we always create a function\n  return eval('(' + funcOrString.toString() + ')');\n}\n\nfunction isLively4Script(object) {\n  return object.tagName.toLocaleLowerCase() == \"script\" &&\n    object.type == 'lively4script';\n}\n\nfunction persistToDOM(object, funcString, name) {\n  var DOMScript = <script type='lively4script' data-name={name}>{funcString}</script>\n  object.appendChild(DOMScript);\n}\n\nfunction removeFromDOM(object, name) {\n  var children = object.querySelectorAll('script[type=\"lively4script\"][data-name=\"' + name + '\"]');\n\n  if (children.length > 1) {\n    throw new Error('multiple children detected ' + children);\n  }\n  children.forEach(ea => ea.remove());\n}\n\nfunction prepareFunction(funcOrString, name) {\n  var func = functionFromString(funcOrString);\n  if (typeof func !== 'function') {\n    throw 'no valid function provided!';\n  }\n  name = name || func.name;\n  if (!_.isString(name)) {\n    throw new Error(\"name should be a string, but it is \", name) \n  }\n  if (!name) {\n    throw 'cannot update script without name!';\n  }\n\n  return {\n    executable: func,\n    name: name\n  };\n}\n\nfunction bindFunctionToObject(object, func, options) {\n  object[func.name] = func.executable.bind(object);\n  object[func.name].isScript = true;\n}\n\nfunction initializeScriptsMap(object) {\n  if (typeof object.__scripts__ === 'undefined') {\n    object.__scripts__ = {};\n  }\n}\n\nfunction scriptExists(object, name) {\n  return typeof object.__scripts__ !== 'undefined' &&\n    typeof object.__scripts__[name] !== 'undefined';\n}\n\nfunction addFunctionToScriptsMap(object, name, funcOrString) {\n  object.__scripts__[name] = funcOrString.toString();\n}\n\nfunction persistScript(object, name, funcOrString, options) {\n  if (!options.hasOwnProperty(\"persist\") || options.persist == true) {\n    \n    persistToDOM(object, funcOrString.toString(), name);\n  }\n}\n\nexport default class ScriptManager {\n\n  static findLively4Script(parent, shadow) {\n    // if shadow is set, look for the scripts in the shadow root\n    var children = shadow ? parent.shadowRoot.children : parent.children;\n\n    if (!children) return;\n    for (let child of children) {\n      if (isLively4Script(child)) {\n        var scriptName = child.dataset.name;\n        \n        try {\n          this.initializeScript(parent, child.textContent, false, {\n            name: scriptName,\n            persist: false\n          });\n\n        } catch (e) {\n          lively.notify('Error adding function: ' + scriptName + ' to object: ' + parent,\n            \"\" + e, 20, () => lively.openWorkspace(\"\" + e + \"Source: \" + child.textContent));\n          console.error('Error while adding function ' + scriptName + ' to object:');\n          console.error(parent);\n          console.error(e);\n        }\n      } else {\n        this.findLively4Script(child, false);\n      }\n    }\n  }\n\n\n  static load() {\n    this.loadScriptsFromDOM();\n  }\n\n  static loadScriptsFromDOM() {\n    this.findLively4Script(document);\n  }\n\n  static attachScriptsFromShadowDOM(root) {\n    this.findLively4Script(root, true);\n  }\n\n  static updateScript(object, funcOrString, options = {}) {\n    var func = prepareFunction(funcOrString, options.name);\n    \n    this.removeScript(object, func.name);\n    this.addScript(object, func.executable, options);\n  }\n\n  static initializeScript(object, funcOrString, checkExists, options = {}) {\n    var func = prepareFunction(funcOrString, options.name);\n    if (checkExists && scriptExists(object, func.name)) {\n      throw 'script name \"' + func.name + '\" is already reserved!';\n    }\n    initializeScriptsMap(object);\n    bindFunctionToObject(object, func, options);\n    addFunctionToScriptsMap(object, func.name, funcOrString);    \n    return func\n  }\n  \n  static addScript(object, funcOrString, options = {}) {\n    var func = this.initializeScript(object, funcOrString, true, options) \n\n    persistScript(object, func.name, funcOrString, options);\n  }\n\n  static removeScript(object, name) {\n    if (!scriptExists(object, name)) {\n      throw 'script name \"' + name + '\" does not exist!';\n    }\n    delete object.__scripts__[name];\n    delete object[name];\n    removeFromDOM(object, name);\n  }\n\n  static callScript(object, name) {\n    var optionalArgs = [].splice.call(arguments, 2);\n    if (!scriptExists(object, name)) {\n      throw 'unknown script \"' + name + '\"!';\n    }\n\n    return object[name].apply(object, optionalArgs);\n  }\n}\n\nScriptManager.load()\n"],"mappings":"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"}