{"version":3,"names":["KeyboardHandler","Panning","HTML","__SystemJSRewritingHack","_export","default","setters","_reactiveJsx","_childExpression","childExpression","_childSpread","childSpread","_childElement","childElement","_children","children","_attributeStringLiteral","attributeStringLiteral","_attributeExpression","attributeExpression","_attributes","attributes","_element","element","_addSourceLocation","addSourceLocation","_srcClientPreferencesJs","Preferences","_srcExternalLodashLodashJs","_","_srcClientRasterizeJs","Rasterize","_srcClientGraphicsJs","pt","_srcClientStringsJs","Strings","execute","_recorder_","_src_client_html_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","getDispatchHandler","key","dispatchKey","evt","object","upOrDown","stopAndPreventDefault","handler","keyCode","preventDefault","stopPropagation","keyUpOrDown","String","fromCharCode","constructor","pane","addEventListener","ctrlKey","onPanningDown","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","file","end","column","line","start","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","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","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","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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"}