{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-drawio/src/components/tools/lively-container-navbar.js"],"names":["Morph","ContextMenu","applyDragCSSClass","DropElementHandler","fileName","copyTextToClipboard","components","Preferences","Mimetypes","JSZip","moment","LivelyContainerNavbar","initialize","addEventListener","onDrop","onDragOver","lastSelection","evt","shiftKey","onContextMenu","getRoot","stopPropagation","preventDefault","clear","parentElement","get","innerHTML","dragFilesAsZip","urls","url","lively","files","tempfile","name","mimetype","dataTransfer","setData","zip","ea","file","loadFile","saveFile","generateAsync","type","onItemDragStart","link","getSelection","length","href","extension","join","dropEffect","transferMode","dir","directory","confirm","Array","from","forEach","newURL","dataURL","readBlobAsDataURL","blob","fetch","then","r","show","handle","element","notify","data","getData","htmlData","match","copyFromURL","dropHTMLAsURL","console","log","targetDir","Date","format","newurl","method","body","update","updateOtherNavbars","split","fromurl","filename","isDataURI","replace","now","content","size","queryAll","document","toString","getFilename","targetItem","_","uniq","allParents","reverse","map","filter","sourceContent","sleep","shadowRoot","querySelectorAll","selectItem","item","classList","remove","add","getRootElement","targetURL","contextURL","force","lastURL","lastContent","lastDir","currentDir","urlWithoutIndex","find","textContent","querySelector","showSublist","showSublisContent","showDirectory","fetchStats","root","stats","status","json","e","contents","html","text","div","createElement","i","getAttribute","push","fileType","filesFromStats","sort","a","b","title","unshift","parent","names","icon","test","endsWith","otherUrl","includes","onclick","onItemClick","ondblclick","onItemDblClick","appendChild","toggle","contains","followPath","sublist","editWithSyvis","editor","createComponent","loadUrl","openInWindow","isDir","menuElements","selection","deleteFile","renameFile","convertFileToBundle","openBrowser","saveAsPNG","newfile","menu","openIn","selectedURLs","path","navigateToName","lastPath","URL","isFile","showSublistHTML","subList","template","parseHTML","localName","showSublistJS","instMethod","klass","func","oldProtoFunc","defRegEx","RegExp","m","links","lines","line","exec","theMatch","showSublistMD","Error","level","keys","showSublistOptions","options","clearSublists","parents","optionsWasHandles","livelyMigrate","other","sourceContentthis","livelyUpdate","livelyExample"],"mappings":"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","file":"lively-container-navbar.js","sourcesContent":["import Morph from 'src/components/widgets/lively-morph.js';\nimport ContextMenu from 'src/client/contextmenu.js';\nimport { applyDragCSSClass, DropElementHandler } from 'src/client/draganddrop.js';\nimport { fileName, copyTextToClipboard } from 'utils';\nimport components from 'src/client/morphic/component-loader.js';\nimport Preferences from 'src/client/preferences.js';\nimport Mimetypes from 'src/client/mimetypes.js';\nimport JSZip from 'src/external/jszip.js';\nimport moment from \"src/external/moment.js\";\n\nexport default class LivelyContainerNavbar extends Morph {\n  async initialize() {\n    this.addEventListener(\"drop\", this.onDrop);\n    this.addEventListener(\"dragover\", this.onDragOver);\n    // this.addEventListener(\"dragenter\", this.onDragEnter)\n    this::applyDragCSSClass();\n    this.lastSelection = [];\n    this.addEventListener('contextmenu', (evt) => {\n        if (!evt.shiftKey) {\n          this.onContextMenu(evt, this.getRoot())\n          evt.stopPropagation();\n          evt.preventDefault();\n          return true;\n        }\n    }, false);\n  }\n  \n  clear(parentElement=this.get(\"#navbar\")) {\n    parentElement.innerHTML = \"\"\n  }\n  \n  async dragFilesAsZip(urls, evt) {\n    // working around issue https://bugs.chromium.org/p/chromium/issues/detail?id=438479\n    // to achieve https://html.spec.whatwg.org/multipage/dnd.html#dom-datatransferitemlist-add\n    let url = lively.files.tempfile() + \".zip\", \n    name = `${lively.files.name(urls[0])} and more.zip`,\n    mimetype = \"application/zip\";\n    evt.dataTransfer.setData(\"DownloadURL\", `${mimetype}:${name}:${url}`);\n\n    // and now... we download, zip, and upload the files during the user drags them... \n    // #Hack and will definitely not work well all the time!\n    // #Idea, #Solution, we could make it stable if the lively4-serv will wait on the first \"GET\" request\n    // if the upload is not finished yet, but if it knows about a new tempFile\n    \n    \n    // Oh, my god! Now we are getting crazy!\n    // first fownload the files, then zip them, then upload then again, so that they can be dropped...?\n    // Yeah! :-)\n    var zip = new JSZip();\n    for(var ea of urls) {\n      zip.file(lively.files.name(ea), await lively.files.loadFile(ea));\n    }\n    lively.files.saveFile(url, await zip.generateAsync({type:\"blob\"})) \n  }\n\n  onItemDragStart(link, evt) {\n    let urls = this.getSelection();\n    if (urls.length > 1) {\n      this.dragFilesAsZip(urls, evt)\n    } else {\n      let url = link.href,\n        name = lively.files.name(url)\n      var mimetype = Mimetypes.mimetype(lively.files.extension(name)) || \"text/plain\";\n      evt.dataTransfer.setData(\"DownloadURL\", `${mimetype}:${name}:${url}`);  \n    }\n    evt.dataTransfer.setData(\"text/plain\", urls.join(\"\\n\"));\n  }\n  \n  onDragOver(evt) {   \n    if (evt.shiftKey) {\n      evt.dataTransfer.dropEffect = \"move\";\n      this.transferMode = \"move\"\n    } else {\n      evt.dataTransfer.dropEffect = \"copy\";\n      this.transferMode = \"copy\"\n    }\n    evt.preventDefault()    \n  }\n\n  async onDrop(evt) {\n    evt.preventDefault();\n    evt.stopPropagation();\n        \n    const files = evt.dataTransfer.files;\n    let dir = lively.files.directory(this.url);\n    if(files.length > 0 &&\n      await lively.confirm(`Copy ${files.length} file(s) into directory ${dir}?`)\n    ) {\n      Array.from(files).forEach(async (file) => {\n        var newURL = dir + \"/\" + file.name;\n        var dataURL = await lively.files.readBlobAsDataURL(file)  \n        var blob = await fetch(dataURL).then(r => r.blob())\n        await lively.files.saveFile(newURL, blob)\n        this.show(newURL, \"\"); // #TODO blob -> text\n      });\n      return;\n    }\n    \n    if (DropElementHandler.handle(evt, this, \n        (element, evt) => {lively.notify(\"handle \" + element)})\n    ) {\n      return;\n    }\n       \n    var data = evt.dataTransfer.getData(\"text\");   \n    var htmlData = evt.dataTransfer.getData(\"text/html\");    \n    if (data.match(\"^https?://\") || data.match(/^data\\:image\\/png;/)) {\n      this.copyFromURL(data);        \n    } else if (htmlData) {\n      data = evt.dataTransfer.getData();\n      this.dropHTMLAsURL(htmlData)\n    } else {\n      console.log('ignore data ' + data);\n    }\n  }\n  /* \n   *  Upload the dragged contents into a file.. and make up a name. \n   *  #Idea, instead of using a timestamp should be able to store a name in the data?\n   */\n  async dropHTMLAsURL(data) {\n    var targetDir = lively.files.directory(this.url)\n    var name = \"dropped_\" + moment(new Date()).format(\"YYMMDD_hhmmss\")\n    var newurl = targetDir + \"/\" + name + \".html\"\n    await fetch(newurl, {\n      method: \"PUT\",\n      body: data\n    })\n    this.update()\n    this.updateOtherNavbars(this.getRoot(newurl))\n    console.log(\"dropped \" + newurl)\n  }\n  \n  async copyFromURL(data) {\n    var urls = data.split(\"\\n\")\n    var targetDir = lively.files.directory(this.url)\n    if (await lively.confirm(`${this.transferMode} ${urls.length} files to ${targetDir}?`)) {\n      for(var fromurl of urls) {\n        var filename = fromurl::fileName();\n        var isDataURI;\n        if (fromurl.match(/^data\\:image\\/png;/)) {\n          isDataURI = true\n          if (fromurl.match(/^data\\:image\\/png;name=/)) {\n            filename = fromurl.replace(/.*?name=/,\"\").replace(/;.*/,\"\")    \n          } else {\n            filename = \"dropped_\" + Date.now() + \".png\";\n          }\n        } else {\n          isDataURI = false\n        }\n\n        var newurl = this.url.replace(/[^/]*$/, filename)\n        var content = await fetch(fromurl).then(r => r.blob());\n        await fetch(newurl, {\n          method: \"PUT\",\n          body: content\n        })\n        if (this.transferMode == \"move\") {\n          await fetch(fromurl, {\n            method: \"DELETE\"\n          });\n          // put again... to be not delete it by accident\n          await fetch(newurl, {\n            method: \"PUT\",\n            body: content\n          })\n          this.updateOtherNavbars(this.getRoot(fromurl))\n          this.updateOtherNavbars(this.getRoot(newurl))\n\n          lively.notify(`${this.transferMode}d to ` + newurl + \": \" + content.size)  \n        }\n        this.show(newurl, content)\n      }\n    }  \n  }\n  \n  updateOtherNavbars(url) {  \n    lively.queryAll(document.body, \"lively-container-navbar\").forEach( ea => {\n      if (ea.getRoot() == url) {\n        ea.update()\n      }\n    })\n  }\n  \n  getRoot(url) {\n    url = url || this.url;\n    return url.toString().replace(/\\/[^\\/]+$/,\"/\") \n    /// return url.toString().replace(/\\.l4d\\/(index\\.md)?$/,\"\").replace(/\\/[^\\/]+$/,\"/\") // .l4d directories are treated as files\n  }\n  \n  getFilename(url) {\n    url = url || this.url;\n    return url.replace(/.*\\//,\"\")\n    // return url.replace(/\\.l4d\\/(index\\.md)?$/,\".l4d\").replace(/.*\\//,\"\")\n  }\n  \n  async update() {\n    \n    var urls = this.targetItem ? _.uniq(lively.allParents(this.targetItem)\n      .reverse()\n      .map(ea => ea.url)\n      .filter(ea => ea)) : []\n    var url = this.url\n    var content = this.sourceContent\n    \n    for(let ea of urls) {\n      console.log(\"show \" + ea)\n      await this.show(ea, \"\", urls[0])  \n      \n      await lively.sleep(50)\n    }\n    // await lively.sleep(1000)\n\n    await this.show(url, content, urls[0])  \n\n  }\n  \n  getSelection() {\n    return _.map(this.shadowRoot.querySelectorAll(\".selected a\"), ea => ea.href)\n  }\n  \n  selectItem(item) {\n    this.get(\"#navbar\").querySelectorAll(\".selected\").forEach(ea => ea.classList.remove(\"selected\"))\n    item.classList.add(\"selected\");      \n  }\n  \n  getRootElement() {\n    return this.get(\"#navbar\")\n  }\n  \n\n  \n  async show(targetURL, sourceContent, contextURL, force=false) {\n    // console.log(\"show \" + targetURL + (sourceContent ? \" source content: \" + sourceContent.length : \"\"))\n    var lastURL = this.url\n    this.url = (\"\" + targetURL).replace(/[?#].*/,\"\"); // strip options \n    var lastContent = this.sourceContent\n    this.sourceContent = sourceContent;\n    \n    this.contextURL = contextURL;\n    var lastDir = this.currentDir\n    this.currentDir = this.getRoot(targetURL);\n\n\n    // #TODO #Refactor `isIndexFile` \n    let urlWithoutIndex = this.url.replace(/(README.md)|(index\\.((html)|(md)))$/,\"\")\n    this.targetItem = _.find(this.getRootElement().querySelectorAll(\"li\"), ea => {\n      if (ea.textContent == \"../\") return false\n      var link = ea.querySelector(\"a\")\n\n      return link && (link.href == this.url || link.href == urlWithoutIndex)\n    });\n    if (this.targetItem) {\n      this.selectItem(this.targetItem)\n      if (lastDir !== this.currentDir) {\n        this.showSublist()\n      } else if (lastURL !== this.url) {\n        this.showSublist()\n      } else if (lastContent != this.sourceContent) {\n        this.showSublisContent(true)\n      }\n\n      return         \n    } else {\n      await this.showDirectory(targetURL, this.get(\"#navbar\"))\n      await this.showSublist()    \n    }\n  }\n  \n  async fetchStats(targetURL) {\n    \n    var root = this.getRoot(targetURL)\n    \n    try {\n      var stats = await fetch(root, {\n        method: \"OPTIONS\",\n      }).then(r => r.status == 200 ? r.json() : {})\n    } catch(e) {\n      // no options....\n    }\n    \n    \n    if (!stats || !stats.type) {\n      stats = {};// fake it\n      stats.contents = [{type: \"file\", name: \"index.html\"}];\n      \n      var html = await fetch(root.replace(/\\/?$/,\"/\")).then(r => r.text())\n      var div = document.createElement(\"div\");\n      div.innerHTML = html;\n      var i=0;\n      Array.from(div.querySelectorAll(\"a\"))\n        .filter( ea => ea.getAttribute(\"href\") && !ea.getAttribute(\"href\").match(/^javascript:/))\n        .forEach( ea => {\n        stats.contents.push({\n          type: 'link', \n          name: '' + ea.getAttribute(\"href\").replace(/\\/(index.html)?$/,\"\").replace(/.*\\//,\"\"), // ea.textContent,\n          href: \"\" + ea.getAttribute(\"href\") \n        });\n      });\n    }\n    return stats\n  }\n  \n  fileType(file) {\n    // l4d bundle should sort like files\n    if (file.name.match(/\\.((l4d)|(md))$/)) return \"file\"\n    return file.type\n  }\n  \n  filesFromStats(stats) {\n    var files = stats.contents\n      .sort((a, b) => {        \n        if (this.fileType(a) > this.fileType(b)) {\n          return 1;\n        }\n        if (this.fileType(a) < this.fileType(b)) {\n          return -1;\n        }\n        // #Hack, date based filenames are sorted so lastest are first\n        if (a.name.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/) && b.name.match(/\\d\\d\\d\\d-\\d\\d-\\d\\d/)) {\n          return (a.name >= b.name) ? -1 : 1;          \n        }\n        \n        return ((a.title || a.name) >= (b.title || b.name)) ? 1 : -1;\n      })\n      .filter(ea => ! ea.name.match(/^\\./));\n    files.unshift({name: \"..\", type: \"directory\", url: stats.parent});\n    return files\n  }\n  \n\n  async showDirectory(targetURL, parentElement) {\n    \n    var filename = this.getFilename();\n    \n    var stats = await this.fetchStats(targetURL)\n    this.clear(parentElement);\n     \n    \n    var names = {};\n    stats.contents.forEach(ea => names[ea.name] = ea);\n    \n    var files = this.filesFromStats(stats).filter(ea =>\n      !(ea.name == \"..\" && parentElement !== this.getRootElement()))\n    \n    parentElement.url = targetURL\n   \n    files.forEach((ea) => {\n\n      var element = document.createElement(\"li\");\n      var link = document.createElement(\"a\");\n      \n      \n      if (ea.name == filename) {\n        this.targetItem = element;\n      }\n      \n      if (this.targetItem) this.targetItem.classList.add(\"selected\");\n      \n      var name = ea.name;\n      var icon;\n      if (ea.name.match(/\\.l4d$/) || ea.name.match(/\\.md$/)) {\n        icon = '<i class=\"fa fa-file\"></i>';\n        // some directories in lively are considered bundles and should behave like documents\n        if (ea.type == \"directory\") {\n          element.classList.add(\"directory\")\n        } else {\n          element.classList.add(\"file\")\n        }\n      } else if (ea.type == \"directory\") {\n        name += \"/\";\n        icon = '<i class=\"fa fa-folder\"></i>';\n        element.classList.add(\"directory\")\n      } else if (ea.type == \"link\") {\n        icon = '<i class=\"fa fa-arrow-circle-o-right\"></i>';\n        element.classList.add(\"link\")\n      } else if (/(\\.|-)(spec|test)\\.js$/i.test(name)) {\n        icon = '<i class=\"fa fa-check-square-o\"></i>'\n        element.classList.add(\"test\")\n      } else {\n        icon = '<i class=\"fa fa-file\"></i>';\n        element.classList.add(\"file\")\n      }\n      var title = ea.title || name\n      // name.replace(/\\.(lively)?md/,\"\").replace(/\\.(x)?html/,\"\")\n      link.innerHTML =  icon + title;\n      var href = ea.href || ea.name;\n      if (ea.type == \"directory\" && !href.endsWith(\"/\")) {\n        href += \"/\"\n      }\n      var otherUrl = href.match(/^[a-z]+:\\/\\//) ? href : this.currentDir + \"\" + href;\n      link.href = ea.url || otherUrl;\n      element.url = link.href\n      if (this.lastSelection && this.lastSelection.includes(otherUrl)) {\n        element.classList.add(\"selected\")\n      }\n      \n      link.onclick = (evt) => { \n        this.onItemClick(link, evt); \n        return false\n      };\n      link.ondblclick = (evt) => { \n        this.onItemDblClick(link, evt); \n        return false\n      };\n\n      link.addEventListener('dragstart', evt => this.onItemDragStart(link, evt))\n      link.addEventListener('contextmenu', (evt) => {\n          if (!evt.shiftKey) {\n            this.onContextMenu(evt, otherUrl)\n            evt.stopPropagation();\n            evt.preventDefault();\n            return true;\n          }\n      }, false);\n      element.appendChild(link);\n      parentElement.appendChild(element);\n    });\n    // this.clearSublists()\n  }\n  \n  onItemClick(link, evt) {\n    if (evt.shiftKey) {\n      link.parentElement.classList.toggle(\"selected\")\n      this.lastSelection = this.getSelection()     \n    } else {\n      this.lastSelection = []\n      if (!link.parentElement.classList.contains(\"selected\")) {\n        this.followPath(link.href);\n      } else {\n        // this.url = undefined\n        this.currentDir = null\n        \n        link.parentElement.classList.remove(\"selected\")\n        var sublist = link.parentElement.querySelector(\"ul\")\n        if (sublist) sublist.remove()\n      }\n    }\n  }\n  \n  onItemDblClick(link, evt) {\n    this.clear()\n    this.followPath(link.href);\n  }\n  async editWithSyvis (url) {\n    const editor = await components.createComponent('syvis-editor');\n    await editor.loadUrl(url);\n    await components.openInWindow(editor);\n  }\n\n  onContextMenu(evt, otherUrl=this.getRoot()) {\n    var isDir = otherUrl.match(/\\/$/,\"\")\n    var file = otherUrl.replace(/\\/$/,\"\").replace(/.*\\//,\"\");\n    \n    const menuElements = []\n    \n    var selection =  this.getSelection()\n    \n    if (selection.length > 0) {\n      menuElements.push(...[\n        ['<b>' + (selection.map(ea => ea.replace(/.*\\//, \"\")).join(\", \") + \"</b>\"), \n         () => {}, \"\", '>'],\n        [`delete `, () => this.deleteFile(otherUrl, selection)],\n      ])\n    } else {\n      menuElements.push(...[\n        ['<b>' + file + \"</b>\", \n         () => {}, \"\", '>'],\n      ])\n    }\n    debugger\n    if (selection.length == 1) {\n      menuElements.push(...[\n        [`rename`, () => this.renameFile(otherUrl)],\n        [`become bundle`, () => this.convertFileToBundle(otherUrl)],\n        \n        [\"edit \", () => lively.openBrowser(otherUrl, true)],\n        [\"browse\", () => lively.openBrowser(otherUrl)],\n        [\"save as png\", () => lively.html.saveAsPNG(otherUrl)],\n        [\"copy path to clipboard\", () => copyTextToClipboard(otherUrl), \"\", '<i class=\"fa fa-clipboard\" aria-hidden=\"true\"></i>'],\n        [\"copy file name to clipboard\", () => copyTextToClipboard(otherUrl::fileName()), \"\", '<i class=\"fa fa-clipboard\" aria-hidden=\"true\"></i>'],\n      ])\n    }\n    menuElements.push(...[\n      [\"new\", [\n        [`text file`, () => this.newfile(otherUrl)],\n        [\"drawio figure\", () => this.newfile(otherUrl, \"drawio\")],\n      ], \"\", ''],  \n    ])\n    const menu = new ContextMenu(this, menuElements)\n    menu.openIn(document.body, evt, this)\n  }\n  \n  deleteFile(url, selectedURLs) {\n    lively.notify(\"please implement deleteFile()\")\n  }\n\n  renameFile(url) {\n    lively.notify(\"please implement renameFile()\")\n  }\n\n  newfile(path, type) {\n    lively.notify(\"please implement newfile()\")\n  }\n  \n  navigateToName(url) {\n    lively.notify(`please implement navigateToName(${url})`)\n  }\n\n  followPath(url, lastPath) {\n    this.show(new URL(url), \"\", this.contextURL)\n  }\n\n  async convertFileToBundle(url) {\n    // var url = \"https://lively-kernel.org/lively4/lively4-jens/doc/journal/2018-08-17.md\"\n    if (!await lively.files.isFile(url)) {\n      lively.notify(\"Converion failed: \" + url + \" is no file!\")\n      return\n    }\n    var contents = await fetch(url).then(r => r.text());\n    await fetch(url, {method: 'DELETE'})\n    \n    await fetch(url + \"/\", {method: 'MKCOL'});\n    var newURL = url + \"/\" + \"index.md\"\n    await fetch(newURL, {method: 'PUT', body: contents});\n    this.followPath(newURL);\n  }\n\n  showSublistHTML(subList) {\n    if (!this.sourceContent) return;\n    var template =  lively.html.parseHTML(this.sourceContent).find(ea => ea.localName == \"template\");\n      if (!template) {\n        console.log(\"showNavbar: no template found\");\n        return;\n      }\n      // fill navbar with list of script\n      Array.from(template.content.querySelectorAll(\"script\")).forEach(ea => {\n        var element = document.createElement(\"li\");\n        element.innerHTML = ea.getAttribute('data-name');\n        element.classList.add(\"subitem\");\n        element.onclick = () => {\n          this.navigateToName(\n            `data-name=\"${ea.getAttribute('data-name')}\"`);\n        };\n        subList.appendChild(element) ;\n      });\n  }\n  \n  showSublistJS(subList) {\n    if (!this.sourceContent || !this.sourceContent.split) {\n      // undefined or Blob\n      return;\n    }\n    let instMethod = \"(^|\\\\s+)([a-zA-Z0-9$_]+)\\\\s*\\\\(\\\\s*[a-zA-Z0-9$_ ,=]*\\\\s*\\\\)\\\\s*{\",\n        klass = \"(?:^|\\\\s+)class\\\\s+([a-zA-Z0-9$_]+)\",\n        func = \"(?:^|\\\\s+)function\\\\s+([a-zA-Z0-9$_=]+)\\\\s*\\\\(\",\n        oldProtoFunc = \"[a-zA-Z0-9$_]+\\.prototype\\.([a-zA-Z0-9$_]+)\\\\s*=\";\n    let defRegEx = new RegExp(`(?:(?:${instMethod})|(?:${klass})|(?:${func})|(?:${oldProtoFunc}))`);\n    let m;\n    let links = {};\n    let i = 0;\n    let lines = this.sourceContent.split(\"\\n\");\n\n    lines.forEach((line) => {\n      m = defRegEx.exec(line);\n      if (m) {\n        var theMatch = m[2] ||\n                      (m[3] && \"class \" + m[3]) ||\n                      (m[4] && \"function \" + m[4]) ||\n                       m[5];\n        if(!theMatch.match(/^(if|switch|for|catch|function)$/)) {\n          let name = (line.replace(/[A-Za-z].*/g,\"\")).replace(/\\s/g, \"&nbsp;\") + theMatch,\n              navigateToName = m[0],\n              element = document.createElement(\"li\");\n          element.innerHTML = name;\n          element.classList.add(\"link\");\n          element.classList.add(\"subitem\");\n          element.onclick = () => this.navigateToName(navigateToName);\n          subList.appendChild(element) ;\n        }\n      }\n    });\n  }\n  \n  showSublistMD(subList) {\n    // console.log(\"sublist md \" + this.sourceContent.length)\n    if (!this.sourceContent) return;\n    let defRegEx = /(?:^|\\n)((#+) ?(.*))/g;\n    let m;\n    let links = {};\n    let i=0;\n    while (m = defRegEx.exec(this.sourceContent)) {\n      if (i++ > 1000) throw new Error(\"Error while showingNavbar \" + this.url);\n\n      links[m[3]] = {name: m[0], level: m[2].length};\n    }\n    _.keys(links).forEach( name => {\n      var item = links[name];\n      var element = document.createElement(\"li\");\n      element.textContent = name.replace(/<.*?>/g,\"\");\n      element.classList.add(\"link\");\n      element.classList.add(\"subitem\");\n      element.classList.add(\"level\" + item.level);\n\n      element.onclick = () => {\n        this.navigateToName(item.name);\n      };\n      subList.appendChild(element);\n    });\n  }\n\n  async showSublistOptions(subList, url) {\n    url = url || this.url\n    try {\n      var options = await fetch(url, {method: \"OPTIONS\"})\n        .then(r => r.status == 200 ? r.json() : {})\n    } catch(e) {\n      // no options...\n      return \n    }\n    if (!options.contents) return;\n    for(let ea of options.contents) { // #Bug for(var ea) vs for(let)\n      let element = <li \n          class=\"link subitem\" title={ea.name}>{ea.name}</li>\n      subList.appendChild(element);\n      element.onclick = () => {\n        lively.notify(\"follow \" + ea.name)\n        this.followPath(url + \"/\" + ea.name)\n      }\n    }\n  }\n  \n  clearSublists() {\n    // console.log(\"clear sublists\")\n    var parents = this.targetItem ? lively.allParents(this.targetItem) : [];\n    // remove all sublists... but my own tree\n    Array.from(this.get(\"#navbar\").querySelectorAll(\"ul\"))\n      .filter(ea => !parents.includes(ea) && !lively.allParents(ea).includes(this.targetItem))\n      .forEach(ea => ea.remove())    \n\n    Array.from(this.get(\"#navbar\").querySelectorAll(\".subitem\"))\n      .forEach(ea => ea.remove())    \n\n  }\n  \n  async showSublist() {\n    // console.log(\"show sublist \" + this.url)\n     \n    if (!this.targetItem) return \n    if (this.targetItem.querySelector(\"ul\")) return // has sublist\n    \n    var subList = document.createElement(\"ul\");\n    this.targetItem.appendChild(subList);\n    if (this.url !== this.contextURL && this.targetItem.classList.contains(\"directory\")) {\n      var optionsWasHandles = true\n      await this.showDirectory(this.url, subList)\n    }\n    this.showSublisContent(optionsWasHandles)\n  } \n  \n  \n  async showSublisContent(optionsWasHandles) {\n    // show console.log(\"show sublist content \" + this.url)\n     \n    if (!this.targetItem) return \n    var subList = this.targetItem.querySelector(\"ul\")\n    if (!subList) return // we are a sublist item?\n    this.clearSublists()\n    if (this.url.match(/templates\\/.*html$/)) {\n      this.showSublistHTML(subList)\n    } else if (this.url.match(/\\.js$/)) {\n      this.showSublistJS(subList)\n    } else if (this.url.match(/\\.md$/)) {\n      // console.log(\"show sublist md\" + this.url)\n\n      this.showSublistMD(subList)\n    } else {\n      if (!optionsWasHandles) {\n        this.showSublistOptions(subList)\n      }\n    }\n  } \n  async livelyMigrate(other) {\n    await this.show(other.url, other.sourceContentthis, other.contextURL, true)\n  }\n\n  livelyUpdate() {\n    \n\n    this.clear()\n    this.show(this.url,this.sourceContent, this.contextURL, true)\n  }\n  \n  async livelyExample() {\n    // var url = lively4url + \"/README.md\"\n    // var url = \"innerhtml://\"\n    var url = \"https://lively-kernel.org/lively4/lively4-jens/doc/journal/\"\n    var content = await fetch(url).then(r => r.text())\n    await this.show(url, content)\n  }\n}"]}