{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-stephelm/src/client/morphic/component-creator.js"],"names":["componentLoader","preferences","moment","Strings","htmlBeautify","System","import","lively4url","then","obj","html_beautify","handle","el","info","window","prompt","replace","toLowerCase","now","Date","getFullYear","getMonth","getDate","categories","split","map","cat","trim","tags","tag","createTemplate","rootElement","template","document","createElement","id","fragment","content","combinedStyle","collectAppliedCssRules","styleElement","innerHTML","appendChild","clone","cloneNode","saveTemplate","serializer","XMLSerializer","templateString","serializeToString","completeHTML","RegExp","templateEditor","createComponent","openInWindow","w","setURL","setText","style","left","top","jsonEditor","JSON","stringify","packShadowDOM","subtreeRoot","shadow","shadowRoot","Array","from","childNodes","forEach","ea","removeChild","createShadowRoot","children","i","length","unpackShadowDOM","filter","localName","styles","styleSheets","styleSheet","cssRules","j","rule","selector","selectorText","selectorMatchesTree","indexOf","cssText","push","join","matches","ComponentCreator","visitURL","container","url","followPath","editFile","focus","copyTemplate","dir","component","type","filename","classname","toUpperCaseFirst","lively","files","existFile","notify","templatejs_src","loadFile","saveFile","createEntry","input","path","getPath","value","leght","Error","match","components","resetTemplatePathCache","createUI","div","placeholder","button","addEventListener","e","errorMsg","message","color","select","listComponentsUI","opts","parse","statFile","testdir","tests","contents","name","list","_","sortBy","li","span","textContent","a","href","onclick","evt","preventDefault","classFile","find","classLink","testFile","testLink","updateComponentsUI","context","querySelectorAll","html","fixLinks","imgFile","img","src","result"],"mappings":"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","file":"component-creator.js","sourcesContent":["import * as componentLoader from \"./component-loader.js\";\nimport preferences from '../preferences.js';\nimport moment from \"src/external/moment.js\";\nimport Strings from \"src/client/strings.js\"\n\nvar htmlBeautify;\nSystem.import(lively4url + \"/src/external/beautify-html.js\").then(function(obj){\n    htmlBeautify = obj.html_beautify;\n});\n\nexport function handle(el) {\n  // collect information about the component\n  var info = {};\n  info[\"name\"] = window.prompt(\"unique name (may contain spaces):\");\n  if (!info[\"name\"]) {\n    return;\n  }\n\n  // create html-tag by replacing spaces with '-' and lowercasing\n  info[\"html-tag\"] = \"lively-\" + info[\"name\"].replace(/\\s/g, \"-\").toLowerCase();\n  info[\"description\"] = window.prompt(\"Description:\") || \"\";\n  info[\"author\"] = window.prompt(\"Author:\") || \"\";\n  var now = new Date();\n  // note that getMonth() returns value [0..11]\n  info[\"date-changed\"] = now.getFullYear() + \"-\" + (now.getMonth() + 1) + \"-\" + now.getDate();\n\n  var categories = window.prompt(\"Categories (comma separated):\") || \"\";\n  // split by ',' and remove leading and trailing white-spaces\n  info[\"categories\"] = categories.split(\",\").map((cat) => { return cat.trim().toLowerCase(); });\n\n  var tags = window.prompt(\"Tags (comma separated):\") || \"\";\n  // split by ',' and remove leading and trailing white-spaces\n  info[\"tags\"] = tags.split(\",\").map((tag) => { return tag.trim().toLowerCase(); });\n\n  info[\"template\"] = info[\"html-tag\"] + \".html\";\n\n  createTemplate(el, info);\n}\n\nexport  function createTemplate(rootElement, info) {\n  var template = document.createElement(\"template\");\n  template.id = info[\"html-tag\"];\n\n  var fragment = template.content;\n\n  // collect styles\n  // Maybe we should not filter rules due to dynamically\n  // assigned classes?\n  var combinedStyle = collectAppliedCssRules(rootElement);\n\n  // the host should be displayed as inline-block to have the correct width and height\n  combinedStyle += \"\\n:host {display: inline-block;}\"\n\n  // apply style\n  var styleElement = document.createElement(\"style\");\n  styleElement.innerHTML = combinedStyle;\n  fragment.appendChild(styleElement);\n\n  // clone root\n  var clone = rootElement.cloneNode(true);\n  fragment.appendChild(clone);\n\n  return saveTemplate(template, info);\n}\n\nfunction saveTemplate(template, info) {\n  var serializer = new XMLSerializer();\n\n  var templateString = serializer.serializeToString(template);\n  // fix some bad escaping\n  var completeHTML = (templateString).replace(new RegExp(\"&lt;\", \"g\"),\"<\").replace(new RegExp(\"&gt;\", \"g\") ,\">\");\n\n  // beautify\n  if (typeof htmlBeautify === \"function\") {\n    completeHTML = htmlBeautify(completeHTML);\n  }\n\n  var templateEditor = componentLoader.createComponent(\"lively-editor\");\n  componentLoader.openInWindow(templateEditor).then((w) => {\n    templateEditor.setURL(lively4url + \"/templates/\" + template.id + \".html\");\n    templateEditor.setText(completeHTML);\n    w.style.left = \"0px\";\n    w.style.top = \"0px\";\n  });\n\n  var jsonEditor = componentLoader.createComponent(\"lively-editor\");\n  componentLoader.openInWindow(jsonEditor).then((w) => {\n    jsonEditor.setURL(lively4url + \"/templates/\" + template.id + \".json\");\n    jsonEditor.setText(JSON.stringify(info, null, 2));\n    w.style.left = \"100px\";\n    w.style.top =  \"100px\";\n  });\n\n  return completeHTML;\n}\n\n// #Depricated #NotUsed\nexport function packShadowDOM(subtreeRoot) {\n  var shadow;\n  // if there is a shadow root already,\n  // we clean it up, since we cannot create a new one\n  if (subtreeRoot.shadowRoot) {\n    shadow = subtreeRoot.shadowRoot;\n    Array.from(shadow.childNodes).forEach(function(ea) {\n      shadow.removeChild(ea);\n    });\n  } else {\n    shadow = subtreeRoot.createShadowRoot();\n  }\n\n  // We need to bring the styles into the shadow root,\n  // because otherwise they will not be applied to the\n  // shadow dom elements.\n\n  // collect styles\n  // Maybe we should not filter rules due to dynamically\n  // assigned classes?\n  var combinedStyle = collectAppliedCssRules(subtreeRoot);\n\n  // apply style\n  var styleElement = document.createElement(\"style\");\n  styleElement.innerHTML = combinedStyle;\n  shadow.appendChild(styleElement);\n\n  // make a shallow copy of the children object,\n  // since subtreeRoot.children changes in the following loop\n  var children = Array.from(subtreeRoot.children);\n  \n  // append all children to the shadow dom\n  for (var i = 0; i < children.length; i++) {\n    shadow.appendChild(children[i]);\n  }\n}\n\n// #Depricated #NotUsed\nexport function unpackShadowDOM(subtreeRoot) {\n  var shadow = subtreeRoot.shadowRoot;\n  if (!shadow) {\n    return;\n  }\n\n  // move all elements but style out of the shadow dom\n  Array.from(shadow.childNodes).filter(ea => ea.localName !== \"style\").forEach(function(ea) {\n    subtreeRoot.appendChild(ea);\n  });\n\n  // We cannot remove the shadow root, so to make the content visible,\n  // add a content node to the shadow dom. This should be equivalent to having\n  // no shadow dom at all.\n  shadow.appendChild(document.createElement(\"content\"));\n}\n\nfunction collectAppliedCssRules(rootElement) {\n  var combinedStyle = [];\n  var styles = document.styleSheets;\n  for (var i = 0; i < styles.length; i++) {\n    var styleSheet = styles[i];\n    if (!styleSheet.cssRules) {\n      continue;\n    }\n    for (var j = 0; j < styleSheet.cssRules.length; j++) {\n      var rule = styleSheet.cssRules[j];\n      var selector = rule.selectorText;\n      // just add those rule that match an element in the subtree\n      if (selectorMatchesTree(selector, rootElement)) {\n        if (combinedStyle.indexOf(rule.cssText) == -1) {\n          combinedStyle.push(rule.cssText);\n        }\n      }\n    }\n  }\n\n  return combinedStyle.join(\"\\n\");\n}\n\nfunction selectorMatchesTree(selector, rootElement) {\n  // conservative css rule collection for now\n\n  // if root matches selector, we are done\n  if (rootElement.matches(selector)) {\n    return true;\n  }\n\n  // if not, check all children\n  for (var i = 0; i < rootElement.children.length; i++) {\n    if (selectorMatchesTree(selector, rootElement.children[i])) {\n      return true;\n    }\n  }\n\n  // if we reach this, none of the tree nodes matches the selector\n  return false;\n}\n\nexport default class ComponentCreator {\n\n  static async visitURL(container, url) {\n    container.followPath(url)\n    await container.editFile(url)\n    container.focus()\n  }\n\n  static async copyTemplate(dir, component, type) {\n    var filename = component + \".\" + type\n    var classname = component.split(/-/).map(ea => Strings.toUpperCaseFirst(ea)).join(\"\")\n    var url = dir  + \"/\" + filename\n    if (await lively.files.existFile(url)) {\n      lively.notify(\"Could not create \" + url + \", beacuse it already exists!\")\n    } else {\n      var templatejs_src = await lively.files.loadFile(lively4url + \"/templates/template.\" + type)\n      templatejs_src = templatejs_src.replace(/\\$\\$TEMPLATE_CLASS/g, classname)\n      templatejs_src = templatejs_src.replace(/\\$\\$TEMPLATE_ID/g, component)\n      await lively.files.saveFile(url, templatejs_src)\n    }\n  }\n\n  static async createEntry(container, input) {\n    var path = \"\" + container.getPath();\n    var dir = path.replace(/[^/]*$/,\"\");\n    var component = input.value\n    if (!component || component.leght == 0) {\n      throw new Error(\"please specify a web component name\")      \n      return\n    }\n    if (!component.match(/-/)) {\n      throw new Error(\"we components must have a '-' (dash) in it's name\")\n    }\n  \n    \n    await this.copyTemplate(dir, component, \"js\")\n    await this.copyTemplate(dir, component, \"html\")\n    lively.components.resetTemplatePathCache()\n\n    this.visitURL(container, dir + \"/\" + component + \".js\")\n  }\n\n  static  async createUI(container) { \n    var div  = document.createElement(\"div\");\n    var input = document.createElement(\"input\");\n    input.placeholder = \"lively-new-component\";\n    div.appendChild(input);\n    var button = document.createElement(\"button\");\n    button.addEventListener(\"click\", async () => {\n      try {\n        await this.createEntry(container, input)\n      } catch(e) {\n        errorMsg.innerHTML = \"\" + e.message\n      }\n    });\n    button.innerHTML = \"create\";\n    div.appendChild(button);\n\n    var errorMsg = document.createElement(\"div\")\n    errorMsg.style.color = \"red\"\n    div.appendChild(errorMsg)\n    \n    input.focus();\n    input.select();\n    return div;\n  }\n  \n  static async listComponentsUI(container) {\n    if(!container || !container.getPath) {\n      return \"no container as parentPath\";\n    }\n    var path = \"\" + container.getPath();\n    var dir = path.replace(/[^/]*$/,\"\")\n    var opts = JSON.parse(await lively.files.statFile(dir))\n    var testdir = lively4url + \"/test/templates/\"\n    var tests = JSON.parse(await lively.files.statFile(testdir)).contents.map(ea => ea.name)\n\n    var list = document.createElement(\"ul\")\n    _.sortBy(opts.contents, ea => ea.name)\n      .filter(ea => ea.name.match(/html$/) && ea.name !== \"index.html\")\n      .forEach(ea => {\n        var li = document.createElement(\"li\")\n\n        var span = document.createElement(\"span\")\n        span.textContent = ea.name.replace(/\\.html/,\" \")\n        li.appendChild(span)\n\n        var a = document.createElement(\"a\")\n        a.innerHTML = \"html\"\n        a.href = ea.name\n        a.onclick = (evt) => {\n          evt.preventDefault()\n          container.followPath(dir + \"/\" + ea.name)\n          return true\n        }\n        li.appendChild(a)\n\n        var span = document.createElement(\"span\")\n        span.textContent = \" \"\n        li.appendChild(span)\n\n        var classFile =  ea.name.replace(/\\.html/,\".js\")\n        if (opts.contents.find(ea => ea.name == classFile)) {\n          var classLink = document.createElement(\"a\")\n          classLink.innerHTML = \"js\"\n          classLink.href = classFile\n          classLink.onclick = (evt) => {\n            evt.preventDefault()\n            container.followPath(dir + \"/\" + classFile)\n            return true\n          }\n          li.appendChild(classLink)\n        }\n\n        var span = document.createElement(\"span\")\n        span.textContent = \" \"\n        li.appendChild(span)\n\n        var testFile =  ea.name.replace(/\\.html/,\"-test.js\")\n        if (tests.indexOf(testFile) !== -1) {\n          var testLink = document.createElement(\"a\")\n          testLink.innerHTML = \"test\"\n          testLink.href = testFile\n          testLink.onclick = (evt) => {\n            evt.preventDefault()\n            container.followPath(testdir + \"/\" + testFile)\n            return true\n          }\n          li.appendChild(testLink)\n        }\n\n        list.appendChild(li)\n      })\n    return list\n  }\n  \n  static async  updateComponentsUI(container, context) {\n    if (!container || !container.getPath) {\n      return \"no container as parentPath\";\n    }\n    var path = \"\" + container.getPath();\n    var dir = path.replace(/[^/]*$/, \"\");\n    var opts = JSON.parse((await lively.files.statFile(dir)));\n    var testdir = lively4url + \"/test/templates/\";\n    var tests = JSON.parse((await lively.files.statFile(testdir))).contents.map(ea => ea.name);\n\n    var list = document.createElement(\"pre\")\n    _.sortBy(opts.contents, ea => ea.name).filter(ea => ea.name.match(/html$/) && ea.name !== \"index.html\").forEach(ea => {\n\n      var name = ea.name.replace(/\\.html/,\"\")\n\n      var li = Array.from(context.querySelectorAll(\"li.component\")).find(ea => ea.textContent.match(new RegExp(name + \"( |$)\")))\n      if (!li) {\n        // and here we go.... return markdown source... to be added manually \n        list.textContent += \" - \" +ea.name.replace(/\\.html/, \" \") + ' {.component}\\n'\n        return\n      } else {\n        // console.log(\"INDEX Markdown: found \" + name)\n      }\n\n      li.appendChild((<span> </span>));\n\n      li.appendChild((<a href={\"open://\" + name}>open</a>));\n      li.appendChild((<span> </span>));\n\n      var a = <a href={ea.name}>html</a>;\n      a.onclick = evt => {\n        evt.preventDefault();\n        container.followPath(dir + \"/\" + ea.name);\n        return true;\n      };\n      li.appendChild(a);\n\n      li.appendChild((<span> </span>));\n\n      var classFile = ea.name.replace(/\\.html/, \".js\");\n      if (opts.contents.find(ea => ea.name == classFile)) {\n        var classLink = document.createElement(\"a\");\n        classLink.innerHTML = \"js\";\n        classLink.href = classFile;\n        // classLink.onclick = evt => {\n        //   evt.preventDefault();\n        //   container.followPath(dir + \"/\" + classFile);\n        //   return true;\n        // };\n        li.appendChild(classLink);\n      }\n\n      lively.html.fixLinks(li.querySelectorAll(\"a\"), dir, url => container.followPath(url) )\n\n\n      var span = document.createElement(\"span\");\n      span.textContent = \" \";\n      li.appendChild(span);\n\n      var testFile = ea.name.replace(/\\.html/, \"-test.js\");\n      if (tests.indexOf(testFile) !== -1) {\n        var testLink = document.createElement(\"a\");\n        testLink.innerHTML = \"test\";\n        testLink.href = testFile;\n        testLink.onclick = evt => {\n          evt.preventDefault();\n          container.followPath(testdir + \"/\" + testFile);\n          return true;\n        };\n        li.appendChild(testLink);\n      }\n       li.appendChild(<br></br>);\n       var imgFile = ea.name.replace(/\\.html/, \".png\");\n      if (opts.contents.find(ea => ea.name == imgFile)) {\n        var img = document.createElement(\"img\");\n        img.innerHTML = \"\";\n        img.src = dir + imgFile;\n        // img.onclick = evt => {\n        //   evt.preventDefault();\n        //   container.followPath(dir + \"/\" + classFile);\n        //   return true;\n        // };\n        li.appendChild(img);\n      }\n\n    });\n\n    var result = <div>{list}</div>\n    return result\n  }\n}\n\n"]}