{"version":3,"names":["KeyboardHandler","Panning","HTML","Preferences","_","Rasterize","pt","Strings","getDispatchHandler","key","dispatchKey","evt","object","upOrDown","stopAndPreventDefault","handler","keyCode","preventDefault","stopPropagation","keyUpOrDown","String","fromCharCode","constructor","pane","addEventListener","ctrlKey","onPanningDown","element","first","composedPath","localName","onPanningMove","pos","lively","getPosition","delta","subPt","lastMove","scrollTop","y","scrollLeft","x","document","body","parentElement","removeEventListener","findAllNodes","visit","all","Set","querySelectorAll","ea","add","shadowRoot","subobjects","Array","from","getFilter","includes","tagName","getHtmlContent","filter","childNodes","map","outerHTML","join","clearHtmlContent","each","removeChild","parseHTML","html","tmpRoot","createElement","innerHTML","setHtmlContent","nodes","appendChild","registerButtons","parent","prototype","forEach","call","node","name","id","funcName","camelCase","replace","c","toUpperCase","func","alert","registerKeys","obj","domain","target","getAttribute","setAttribute","registerDrag","draggable","onDragStart","onDrag","onDragEnd","registerInputs","value","fixLinks","dir","followPath","Error","href","isXLink","path","anchor","m","match","code","console","log","src","swAwareBasePath","saveCurrentPageAs","prev","preferences","getURLParameter","url","window","prompt","savePageAs","saveCurrentPage","confirm","source","files","saveFile","then","notify","getGlobalSource","worldContext","write","JSON","stringify","scrollingElement","oldActiveElement","activeElement","livelyPrepareSave","e","warn","focusWithoutScroll","hasDoNotPersistTag","checkForChildrenValueToo","querySelector","attributes","hasOwnProperty","dataset","lively4Donotpersist","loadHTMLFromURL","zoom","fetch","r","status","text","tmp","create","style","transform","setClientPosition","clipboard","pasteHTMLDataInto","remove","saveAsPNG","saveAsURL","elementToURL","registerAttributeObservers","_attrObserver","disconnect","MutationObserver","mutations","mutation","type","methodName","toUpperCaseFirst","attributeName","oldValue","observe","removeContextStyleChangeListener","cb","getContextStyleCallbackMap","array","get","set","addContextStyleChangeListener","push","contextStyleCallbackMap","WeakMap","disconnectContextStyleObserver","observer","registerContextStyleObserver","changeEvent","CustomEvent","bubbles","isMetaNode","dispatchEvent","allElements","cbArray","eaCB","subtree","attributeFilter","addDeepMousePressed","listFunc","deepListId","clearList","oldList","_deepPressedLastMouseUp","cancelOnBack","sleep","list","item","backgroundColor","position","getClientPosition","addPt","textAlign","zIndex","opacity","minWidth","Date","now","addChooseList","HTMLElement","toString","getExtent","findHeaders","roots","headers","eaRoot","allQuerySelectorAll","query","result","numberHeadings","root","customCount","parents","children","numbers","contents","level","h","parseInt","numberChildren","counter","concat","pop","highlightBeforeAndAfterPromise","promise","Promise","resolve","animation","animate","outline","duration","onfinish","finish"],"sources":["html.js"],"sourcesContent":["import Preferences from \"src/client/preferences.js\"\nimport _ from 'src/external/lodash/lodash.js'\nimport Rasterize from \"src/client/rasterize.js\"\nimport {pt} from 'src/client/graphics.js'\nimport Strings from 'src/client/strings.js'\n\n/*\n * Kitchensink for all HTML manipulation utilities\n */\n\nclass KeyboardHandler {\n  \n  // Generic Keyboad handler to get rid of the magic keycode numbers \n  static getDispatchHandler(key) {\n    return ({\n      \"9\": \"onTab\",\n      \"13\": \"onEnter\",\n      \"27\": \"onEsc\",\n      \"32\": \"onSpace\",\n      \"37\": \"onLeft\",\n      \"38\": \"onUp\",\n      \"39\": \"onRight\",\n      \"40\": \"onDown\",\n    })[key]\n  }\n  \n  static dispatchKey(evt, object, upOrDown, stopAndPreventDefault) {\n    var handler = this.getDispatchHandler(evt.keyCode)\n    if (handler) {\n      handler += upOrDown\n      if (object[handler]) {\n        object[handler](evt)\n        if (stopAndPreventDefault) {\n          evt.preventDefault();\n          evt.stopPropagation();\n        }\n      }\n    }\n    var keyUpOrDown = \"onKey\" + upOrDown\n    if (object[keyUpOrDown]) {\n        var key = String.fromCharCode(evt.keyCode)\n        object[keyUpOrDown](evt, key)\n        if (stopAndPreventDefault) {\n          evt.preventDefault();\n          evt.stopPropagation();\n        }\n    }\n  }\n}\n\n/*MD \n  see also <edit://src/client/morphic/dragbehavior.js>\nMD*/\nexport class Panning {\n  \n    constructor(pane) {\n      this.pane = pane\n     // always drag with ctrl pressed\n      pane.addEventListener(\"pointerdown\", evt => {\n        if (evt.ctrlKey) {\n          this.onPanningDown(evt)          \n        }\n      }, true)\n  \n      \n      // but if nothing else... normal drag will do\n      pane.addEventListener(\"pointerdown\", evt => {\n        var element = _.first(evt.composedPath())\n        // lively.notify(\"element \" + element.localName)\n        if (element.localName == \"polygon\") {\n          this.onPanningDown(evt)\n        }\n      })      \n    }\n\n    onPanningMove(evt) {\n      var pos = lively.getPosition(evt)\n      var delta = pos.subPt(this.lastMove)\n      this.pane.scrollTop -= delta.y\n      this.pane.scrollLeft -= delta.x\n      this.lastMove = pos\n    }\n      \n    onPanningDown(evt) {\n      this.lastMove = lively.getPosition(evt)\n      lively.addEventListener(\"panning\", document.body.parentElement, \"pointermove\", \n        evt => this.onPanningMove(evt))\n      lively.addEventListener(\"panning\", document.body.parentElement, \"pointerup\", \n        evt => { lively.removeEventListener(\"panning\", document.body.parentElement)\n      })\n      evt.stopPropagation()\n      evt.preventDefault()\n    }\n}\n\n\nexport default class HTML {\n\n  static findAllNodes(visit, all) {\n    if (!all) { all = new Set() }\n    if (!visit) { visit = document.querySelectorAll('*') }\n    for (var ea of visit) {\n    all.add(ea);\n    if (ea.shadowRoot) {\n      var subobjects = ea.shadowRoot.querySelectorAll('*');\n      this.findAllNodes(subobjects, all);\n    }\n    }\n    return Array.from(all);\n  }\n  \n  static getFilter(ea) {\n    return !['SCRIPT', 'LIVELY-PREFERENCES', 'LIVELY-HALOS'].includes(ea.tagName);\n  }\n  \n  static getHtmlContent(body) {\n    return _.filter(body.childNodes, this.getFilter).map( \n      (ea) => ea.outerHTML).join(\"\\n\");\n  }\n  \n  static clearHtmlContent(body) {\n    return _.filter(body.childNodes, this.getFilter).each( (ea) => body.removeChild(ea)).join(\"\\n\")\n  }\n  \n  static parseHTML(html) {\n    var tmpRoot = document.createElement(\"div\")\n    tmpRoot.innerHTML = html\n    return Array.from(tmpRoot.childNodes)\n  }\n  \n  static setHtmlContent(body, html) {\n    \n    \n    var nodes = this.parseHTML(html)\n    _.each(nodes, (ea) => {\n      body.appendChild(html)\n    })\n  }\n  \n  static registerButtons(parent) {\n    // Just an experiment for having to write less code.... which ended up in having more code here ;-) #Jens\n    Array.prototype.forEach.call(parent.shadowRoot.querySelectorAll(\"button\"), node => {\n      var name = node.id\n      var funcName = name.camelCase().replace(/^./, c => \"on\"+ c.toUpperCase())\n      // console.log(\"register button \" + name)\n      node.addEventListener(\"click\", () => {\n        var func = parent[funcName]\n        if (func) {\n          func.call(parent)\n        } else {\n          alert(\"No callback: \" +  funcName)\n        }\n      })\n    })\n  }\n  \n  static registerKeys(obj, domain, target, stopAndPreventDefault) {\n    domain = domain || \"Keys\"\n    target = target || obj\n    \n    // enable keyboard events\n    if (obj && obj.getAttribute) {\n      if (obj.getAttribute(\"tabindex\") === null) {\n        obj.setAttribute(\"tabindex\", 0)\n      }\n    }\n    lively.addEventListener(domain, obj, \"keydown\", evt => {\n      KeyboardHandler.dispatchKey(evt, target, \"Down\", stopAndPreventDefault)\n    })\n    lively.addEventListener(domain, obj, \"keyup\", evt => {\n      KeyboardHandler.dispatchKey(evt, target, \"Up\", stopAndPreventDefault)\n    })\n  }\n  \n  \n  static registerDrag(obj, domain, target) {\n    target.draggable=true; \n    lively.removeEventListener(domain, target);\n    lively.addEventListener(domain, target, \"dragstart\", \n      evt => obj.onDragStart && obj.onDragStart(evt));\n    lively.addEventListener(domain, target, \"drag\", \n      evt => obj.onDrag && obj.onDrag(evt));\n    lively.addEventListener(domain, target, \"dragend\", \n      evt => obj.onDragEnd && obj.onDragEnd(evt));\n  }\n       \n  \n  static registerInputs(parent) {\n    Array.prototype.forEach.call(parent.shadowRoot.querySelectorAll(\"input\"), node => {\n      var name = node.id\n      var funcName = name.replace(/^./, function (c) {\n            return \"on\" + c.toUpperCase() ;\n          }) + \"Changed\";\n        // console.log(\"register input \" + name)\n        node.addEventListener(\"input\", function(evt) {\n          var value = node.value\n          var func = parent[funcName];\n          if (func) {\n            func.call(parent, value);\n          } else {\n            // ignore it\n            // alert(\"No callback: \" + funcName);\n          }\n        });\n      })\n  }\n\n  static fixLinks(nodes, dir, followPath) {\n    // console.log(\"fix links \" + dir)\n    if (! followPath) {\n      throw new Error(\"argument followPath missing\");\n    }\n    if (! nodes) return;\n    \n    Array.prototype.forEach.call(nodes, node => {\n      if (node.getAttribute) {\n        \n        var href = node.getAttribute(\"href\")\n        if (!href) {\n          href = node.getAttribute(\"xlink:href\")\n          if (href) {\n            var isXLink = true;\n          }\n        }\n        \n        if (href) {\n          // console.log(\"FIX LINK \", href)\n          // #TODO load inplace....\n          var path;\n          var anchor;\n          var m\n          if (m = href.match(/javascript:visitPath\\('webwerkstatt\\/(.*)'\\)/)) {\n            path = \"/Thesis/\" + m[1]\n          } else if (m = href.match(/javascript:(.*)'\\)/)) {\n            var code = m[1]\n            // do nothing            \n          } else if (href.match(/([A-Za-z]+):\\/\\/.*/)) {\n            // console.log(\"ignore \"  + href);\n            path = href;\n          } else if (href.match(/^\\//)) {\n            path = href; // ABSOLTUE paths\n          } else if (href.match(/^#/)) {\n            // Anchor links\n            path = null\n            anchor = href\n          } else {\n            path = dir + href // that leaves us RELATIVE paths\n            if(!path.match(/((\\.[A-Za-z0-9]+)|(\\/))$/) && !path.match(/\\?/)) {\n              // no ending?\n              // we could check, or assume md for the moment\n              path += \".md\"\n              console.log(\"assume Markdown for \"+ path)\n            }\n          } \n          if (path) {\n            if (isXLink) {\n                node.setAttribute(\"data-href\", href) // so we keep the original somewhere..\n                node.setAttribute('xlink:href', path)\n            } else {\n              // console.log(\"fix \"  + href + \" to \" + path + \"(dir \" + dir + \")\")\n              if (node.tagName == \"LINK\") {\n                // console.log(\"update LINK\", path)\n                node.setAttribute(\"data-href\", href) // so we keep the original somewhere..\n                node.setAttribute(\"href\", path)\n              }            \n              lively.addEventListener(\"lively\", node, \"click\", (evt) => { \n                evt.preventDefault()\n                evt.stopPropagation()\n                followPath(path); \n                return false; \n              });\n            }\n          } else if (anchor) {\n            lively.addEventListener(\"lively\", node, \"click\", (evt) => { \n              debugger\n              evt.preventDefault()\n              evt.stopPropagation()\n              followPath(anchor); \n              return false; \n            });\n          } else {\n            // console.log(\"ignore \" + href)\n          }\n        } else if (node.getAttribute('src')) {\n          // image tag\n          let src = node.getAttribute('src'),\n              // TODO: remove duplicate\n              swAwareBasePath = '', //https://lively4/\n              path;\n          // TODO: remove duplucated logic\n          if (src.match(/([A-Za-z]+):\\/\\/.+/)) {\n            // ignore FULL URLS\n            // console.log(\"ignore \"  + src);\n          } else if (src.match(/^data:.+/)) {\n            // ignore data urls\n          } else if (src.match(/^\\//)) {\n            path = src; // ABSOLTUE paths\n          } else {\n            console.log(\"FIX SRC \", node.localName,  swAwareBasePath +  dir, \"src:\" + src)\n            path = swAwareBasePath + dir + src // that leaves us RELATIVE paths\n          }\n          if (path) {\n            node.setAttribute('src', path);\n          } else {\n            // console.log(\"ignore image \" + href)\n          }\n        }\n        this.fixLinks(node.childNodes, dir, followPath)\n      }\n    })\n  }\n  \n  static saveCurrentPageAs() {\n    var prev = lively.preferences.getURLParameter(\"page\")\n    if (!prev) prev = \"\"\n    var url = window.prompt(\"Save page as?\", prev)\n    this.savePageAs(url)\n  }\n\n  static saveCurrentPage() {\n    var url = lively.preferences.getURLParameter(\"page\");\n    if (!url) {\n      lively.confirm(\"Could not save this page...\")\n    } else {\n      this.savePageAs(url)\n    }\n  }\n  \n  static savePageAs(url) {\n    var source  = document.body.innerHTML // #TODO here we must put more work...\n    lively.files.saveFile(url, source).then( () => {\n      lively.notify(\"Saved \" + url)\n    })\n  }\n\n  static getGlobalSource(worldContext) {\n    worldContext= worldContext || document.body;\n    Preferences.write(\"bodyPosition\", JSON.stringify(lively.getPosition(document.body)))\n    Preferences.write(\"bodyScroll\", JSON.stringify({\n      x: document.scrollingElement.scrollLeft,\n      y: document.scrollingElement.scrollTop\n    }));\n    \n    var source = \"\"\n    var oldActiveElement = lively.activeElement()\n    worldContext.querySelectorAll(\"*\").forEach( ea => {\n      try {\n        if (ea.livelyPrepareSave) ea.livelyPrepareSave();\n      } catch(e) {\n        console.warn(\"Error during prepare save\", e);\n      }\n    });\n    lively.focusWithoutScroll(oldActiveElement)\n\n    Array.from(worldContext.querySelectorAll(\":scope > lively-window, :scope > .lively-content\")).filter(ea => {\n      return !this.hasDoNotPersistTag(ea)\n    }).forEach( ea => {\n      source += ea.outerHTML + \"\\n\"\n    });\n    return source\n  }\n  \n  static hasDoNotPersistTag(node, checkForChildrenValueToo = false) {\n    if (node && node.querySelector && node.querySelector('[data-lively4-donotpersist=\"parents\"]')) {\n      return true;\n    }\n\n    return node.attributes\n        && node.attributes.hasOwnProperty('data-lively4-donotpersist')\n        && (checkForChildrenValueToo ?\n            node.dataset.lively4Donotpersist == 'children' || node.dataset.lively4Donotpersist == 'all' :\n            node.dataset.lively4Donotpersist == 'all');\n  }\n  \n  static async loadHTMLFromURL(url, zoom=1) {\n    var html = await fetch(url).then(r => {\n      if (r.status != 200) {\n        throw new Error(\"Could not load HTML from \" + url + \" due to status \" + r.status)\n      }\n      return r.text()\n    })\n    var tmp = await lively.create(\"div\")\n    tmp.style.transform = `scale(${zoom})`\n    lively.setClientPosition(tmp, pt(0,0))\n    try {\n      lively.clipboard.pasteHTMLDataInto(html, tmp)\n    } finally {\n      tmp.remove()\n    }\n    return tmp\n  }\n  \n  static async saveAsPNG(url) {\n    if (url.match(/\\.html$/)) {\n      var saveAsURL = url.replace(/html$/, \"png\")\n      var zoom = 2\n      var element = await this.loadHTMLFromURL(url, zoom)\n      document.body.appendChild(element)\n      // await lively.sleep(100)\n      try {\n        await Rasterize.elementToURL(element, saveAsURL, zoom)      \n      } finally {\n        element.remove()\n      }\n    }\n    return saveAsURL\n  }\n\n static registerAttributeObservers(obj) {\n    obj._attrObserver && obj._attrObserver.disconnect(); \n\n    obj._attrObserver = new MutationObserver((mutations) => {\n      mutations.forEach((mutation) => {  \n        if(mutation.type == \"attributes\") { \n          // console.log('mutation ' + mutation.attributeName )\n          var methodName = \"on\" + Strings.toUpperCaseFirst(mutation.attributeName) + \"Changed\"\n          if (obj[methodName]) {\n            // console.log(\"found \" + methodName)\n            obj[methodName](\n              mutation.target.getAttribute(mutation.attributeName),\n              mutation.oldValue)\n          } else {\n             console.log(\"[AttributeObservers] NOT found: \" + methodName, obj)\n          }\n        }\n      });\n    });\n    obj._attrObserver.observe(obj, { attributes: true });  \n  }\n\n  // ## Example workspace\n  /*\n      import html from \"src/client/html.js\"\n      lively.html.registerContextStyleObserver(document.body)\n\n      lively.html.registerContextStyleObserver(document.body).then(o => {\n        o.disconnect()\n      })\n  */\n  \n  static removeContextStyleChangeListener(obj, cb) {\n    if (!obj || ! cb) {\n      throw new Error(\"parameter missing\")\n    }\n    var map = this.getContextStyleCallbackMap()\n    var array = map.get(obj)\n    if (array) {\n      array = []\n       map.set(obj, array.filter(ea => ea !== cb))\n    }\n  }\n  \n  static addContextStyleChangeListener(obj, cb) {\n    if (!obj || ! cb) {\n      throw new Error(\"parameter missing\")\n    }\n    var map = this.getContextStyleCallbackMap()\n    var array = map.get(obj)\n    if (!array) {\n      array = []\n       map.set(obj, array)\n    }\n    array.push(cb)\n  }\n  \n  \n  static getContextStyleCallbackMap() {\n    if (!this.contextStyleCallbackMap) {\n      this.contextStyleCallbackMap = new WeakMap()\n    }\n    return  this.contextStyleCallbackMap\n  }\n  \n  \n  static async disconnectContextStyleObserver(obj, domain=\"\") {\n    var observer = obj[\"_contextStyleObserver\" + domain] \n    if (observer) {\n      observer.disconnect(); \n    }\n  }\n  \n  \n  static async registerContextStyleObserver(obj, domain=\"\") {\n    this.disconnectContextStyleObserver(obj, domain);\n\n    \n    var map = this.getContextStyleCallbackMap()\n    \n    var observer = new MutationObserver((mutations) => {\n      mutations.forEach((mutation) => {  \n        if(mutation.type == \"attributes\" \n            && mutation.attributeName == \"style\"\n            && mutation.target !== document.body) {\n          \n        \n          \n          var changeEvent = new CustomEvent(\"context-style-changed\", {\n            bubbles: false,\n            target: mutation.target\n          })\n          if (mutation.target.isMetaNode) return;\n          mutation.target.dispatchEvent(changeEvent)  \n          lively.allElements(true, mutation.target).forEach(ea => {\n            if (ea.isMetaNode) return;\n            var cbArray = map.get(ea) \n            if (cbArray) {\n              cbArray.forEach(eaCB => {\n                eaCB(changeEvent)\n              })\n            }\n          \n         })      \n        }\n      });\n    })\n    obj[\"_contextStyleObserver\" + domain] = observer \n    observer.observe(obj, { \n      subtree: true,\n      attributes: true,\n      attributeFilter: [\"style\"]\n    });\n    return observer \n  }\n  \n  \n  \n  // #TODO refactor magic numbers to style? maybe lively.css?\n  static addDeepMousePressed(element, listFunc, cb) {\n    if (!listFunc) {\n      throw new Error(\"listFunc argument is missing\")\n    }\n    var deepListId = \"deep-list\"\n    function clearList() {\n      var oldList = element.querySelector(\"#\" + deepListId)\n      if (oldList) oldList.remove()\n    }\n    lively.addEventListener(\"HTMLDeepPress\", element, \"mousedown\", async (evt) => {\n      clearList()\n      element._deepPressedLastMouseUp = null\n      element.cancelOnBack = null\n      await lively.sleep(1000)\n      if (!element._deepPressedLastMouseUp) {\n        element.cancelOnBack = true\n        var list = <div id={deepListId} style=\"font-size:12pt\"><ul>{... \n          listFunc().map(ea => {\n            var item = <li>{ea}</li>\n            item.addEventListener(\"mouseenter\", () => item.style.backgroundColor = \"lightgray\")\n            item.addEventListener(\"mouseleave\", () => item.style.backgroundColor = \"\")\n            item.addEventListener(\"mouseup\", (evt) => {\n              evt.stopPropagation()\n              evt.preventDefault()\n              list.remove()\n              cb && cb(evt, ea)\n            })\n            return item\n          })\n        }</ul></div>\n        list.style.position = 'absolute';\n        element.appendChild(list)\n        lively.setClientPosition(list, lively.getClientPosition(list).addPt(pt(0,25)))\n        list.style.textAlign = \"left\"\n        list.style.zIndex = 1000\n        list.style.backgroundColor = \"white\"\n        list.style.opacity = 0.8\n        list.style.minWidth = \"200px\"\n      }\n    })\n      \n    lively.addEventListener(\"HTMLDeepPress\", element, \"mouseup\", evt => {\n      element._deepPressedLastMouseUp = Date.now()\n      // I don't know were to ged rid of it when not here_\n      clearList()\n    });\n  }\n  \n  // #TODO refactor magic numbers to style? maybe lively.css?\n  static addChooseList(element, listFunc, cb) {\n    if (!listFunc) {\n      throw new Error(\"listFunc argument is missing\")\n    }\n    var deepListId = \"choose-list\"\n    function clearList() {\n      var oldList = element.querySelector(\"#\" + deepListId)\n      if (oldList) {\n        oldList.remove()\n        return true\n      }\n      return false\n    }\n    lively.addEventListener(\"ChooseList\", element, \"click\", async (evt) => {\n      if (clearList()) return; // click closed old...\n      var list = <div id={deepListId} style=\"font-size:12pt\"><ul>{... \n          listFunc().map(ea => {\n            // we accept a list of objects or HTMLElements\n            var item;\n            if (ea instanceof HTMLElement) {\n              item = ea;\n            } else {\n              item = <li>{ea.toString()}</li>;\n              if (ea.style) { item.style = ea.style; }\n            }\n\n              item.addEventListener(\"mouseenter\", () => item.style.backgroundColor = \"lightgray\")\n            item.addEventListener(\"mouseleave\", () => item.style.backgroundColor = \"\")\n            item.addEventListener(\"mouseup\", (evt) => {\n              evt.stopPropagation()\n              evt.preventDefault()\n              list.remove()\n              cb && cb(evt, ea)\n            })\n\n            return item\n          })\n        }</ul></div>\n        list.style.position = 'absolute';\n        element.appendChild(list)\n        lively.setClientPosition(list, lively.getClientPosition(list).addPt(pt(0,lively.getExtent(element).y)))\n        list.style.textAlign = \"left\"\n        list.style.zIndex = 1000\n        list.style.backgroundColor = \"white\"\n        list.style.opacity = 0.8\n        list.style.minWidth = \"300px\"\n      \n    })\n  }\n  \n  \n  static findHeaders(roots) {\n    var headers = []\n    roots.forEach(eaRoot => {\n      if (eaRoot.localName && eaRoot.localName.match(/^h[1-3]$/)) {\n        headers.push(eaRoot)\n      }\n      if (eaRoot.querySelectorAll) {\n        eaRoot.querySelectorAll(\"h1,h2,h3\").forEach(ea => headers.push(ea))\n      }\n    })\n    return headers\n  } \n  \n  static allQuerySelectorAll(roots,query) {\n    var result = []\n    roots.forEach(eaRoot => {\n      // if (eaRoot.localName && eaRoot.localName.match(/^h[1-3]$/)) {\n      //   result.push(eaRoot)\n      // }\n      if (eaRoot.querySelectorAll) {\n        result.push(...eaRoot.querySelectorAll(query))\n      }\n    })\n    return result\n  } \n  \n  static numberHeadings(root, customCount=0) {\n    var roots = []\n    var parents = []\n    var children = new WeakMap()\n    var numbers = new WeakMap()\n    var contents = root.querySelectorAll(\"h1,h2,h3,h4\")\n    \n    function level(h) {\n      return parseInt(h.localName.replace(/h/,\"\"))\n    }\n    \n    function numberChildren(node, array=[]) {\n      numbers.set(node, array)\n      var counter=1\n      if (!children.get(node)) return\n      for(var ea of children.get(node)) {\n        if (customCount && (ea === roots.first)) {\n          counter = customCount // start with custom counter\n        }\n        numberChildren(ea, array.concat([counter++]))\n      }\n    }\n\n    for(let ea of contents) {\n\n        var parent = parents.pop()\n        while (parent && level(parent) >= level(ea)) {\n          parent = parents.pop()\n        }\n        if (parent) {\n          parents.push(parent)\n\n          if (!children.get(parent)) children.set(parent, [])\n          children.get(parent).push(ea)\n        } else {\n          roots.push(ea)\n        }\n        parents.push(ea)\n      }\n    debugger\n    children.set(this, roots)\n    numberChildren(this, [])\n\n    for(let ea of contents) {\n      ea.innerHTML = numbers.get(ea).join(\".\") + \" \" + ea.innerHTML\n    }\n  }\n  \n  static async highlightBeforeAndAfterPromise(element, promise) {\n    return new Promise(async resolve => {\n      var animation = element.animate([\n         { outline: \"2px solid transparent\",  }, \n         { outline: \"2px solid blue\",   }], \n        {\n          duration: 500\n        });\n      animation.onfinish = () => element.style.outline = \"2px solid blue\"\n\n      \n      await promise\n      animation.finish()\n      animation = element.animate([\n         { outline: \"2px solid blue\",  }, \n         { outline: \"2px solid green\",   }, \n         { opacity: 1, }, \n         { opacity: 0, }], \n        {\n          duration: 1000\n        });  \n      animation.onfinish = () => resolve()\n    })\n  } \n  \n}\n\n// #LiveProgramming #Hack #CircularDependency #TODO\nif (window.lively) {\n  window.lively.html = HTML\n}\n\n\n"],"mappings":"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"}