{"version":3,"sources":["https://lively-kernel.org/lively4/lively4-RP19-4/src/components/tools/lively-inspector.js"],"names":["Morph","ContextMenu","sortAlphaNum","getTempKeyFor","_","truncateString","s","length","truncation","slice","String","Inspector","initialize","getAttribute","inspect","document","querySelector","get","enableAutocompletion","addEventListener","evt","onContextMenu","displayValue","value","expand","name","attrValue","toString","JSON","stringify","replace","targetObject","shiftKey","preventDefault","stopPropagation","Array","menu","inspectArrayAsTable","openIn","body","tagName","lively","openContextMenu","selection","onSelect","node","obj","selectedNode","classList","remove","add","showElement","window","that","doitContext","dispatchEvent","CustomEvent","detail","object","renderObject","type","isExpanded","className","constructor","isAstMode","innerHTML","appendChild","expandTemplate","contentTemplate","attachHandlers","renderExpandedProperties","contentNode","livelyInspect","e","Symbol","iterator","renderIterable","allKeys","sort","forEach","ea","console","log","childNode","display","displayObject","Object","pattern","addVivideSelection","cb","root","container","atts","querySelectorAll","i","item","startsWith","changeAttributeValue","attrName","setAttribute","notify","content","renderCall","target","moreNode","onclick","draggable","dataTransfer","setData","expandNode","tagNode","renderAttributes","quoteTemplate","attributes","attrNode","from","maxvaluelength","shortenValue","eaNode","valueNode","contentEditable","onkeydown","keyCode","textContent","renderHeader","Document","ShadowRoot","Comment","createTextNode","nodeName","lt","gt","showTags","livelyIsParentPlaceholder","toLowerCase","renderNode","expanded","isAutoExpanded","expandChildren","shadowRoot","childNodes","hasProperties","warn","props","renderText","match","Text","displayText","render","findParentNode","parentNode","host","displayNode","parent","tmpParent","Node","error","isNode","HTMLElement","cssSelector","elementToCSSName","oldViewState","getViewState","updatePatterns","setViewState","keys","Response","allOwn","getOwnPropertySymbols","concat","getOwnPropertyNames","__proto__","push","sortBy","hideWorkspace","style","flex","showWorkspace","id","parentElement","find","captureViewState","state","applyViewState","children","filter","contains","child","c","result","entries","key","array","div","map","join","overflow","components","openInWindow","undefined","livelyExample","livelyMigrate","oldInstance","viewState"],"mappings":"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","file":"lively-inspector.js","sourcesContent":["/*\n * # LivelyInspector \n * A tool similar to the chrome \"Elements\" pane and the JavaScript object explorer\n */\nimport Morph from 'src/components/widgets/lively-morph.js';\nimport ContextMenu from 'src/client/contextmenu.js';\nimport {sortAlphaNum} from \"src/client/sort.js\"\nimport { getTempKeyFor } from 'utils';\nimport _ from 'src/external/lodash/lodash.js'\n\n/**\n * @usage: truncateString(\"Hello World\", 8, \"...\")\n */\nfunction truncateString(s = '', length = 30, truncation = '...') {\n  return s.length > length ?\n    s.slice(0, length - truncation.length) + truncation :\n    String(s);\n}\n\nexport default class Inspector extends Morph {\n\n  initialize() {\n    if (this.getAttribute(\"target\")) {\n      this.inspect(document.querySelector(this.getAttribute(\"target\")))\n    }\n    // lively.notify(\"[inspector] intialize\");  \n    this.get(\"#editor\").enableAutocompletion();\n  \n    this.addEventListener('contextmenu',  evt => this.onContextMenu(evt), false);\n  }\n\n  displayValue(value, expand, name) {\n    if (name) {\n      let attrValue;\n      if (value && typeof value === 'symbol') {\n        attrValue = value.toString();\n      } else {\n        attrValue = JSON.stringify(value).replace(/</g,\"&lt;\");\n      }\n      return <div class=\"element\">\n        <span class='attrName'>{name}:</span>\n        <span class='attrValue'>{attrValue}</span>\n      </div>;\n    } else {\n      return <pre>{JSON.stringify(value)}</pre>;\n    }\n  }\n\n  onContextMenu(evt) {\n    if (this.targetObject && !evt.shiftKey) { \n      evt.preventDefault();\n      evt.stopPropagation();\n      if (this.targetObject instanceof Array) {\n        var menu = new ContextMenu(this, [\n              [\"inspect as table\", () => Inspector.inspectArrayAsTable(this.targetObject)],\n            ]);\n        menu.openIn(document.body, evt, this);\n      } else if (this.targetObject.tagName) {\n        // for all html elements\n        lively.openContextMenu(document.body, evt, this.selection || this.targetObject);\n        return true\n      }\n      return false;\n    } \n  }\n  \n  /*\n   * called, when selecting a subobject \n   */\n  onSelect(node, obj) {\n    if (this.selectedNode) {\n      this.selectedNode.classList.remove(\"selected\");\n    }\n    this.selectedNode = node;\n    this.selectedNode.classList.add(\"selected\");\n  \n    this.selection = obj;\n    lively.showElement(obj);\n    window.that = obj; // #Experimental\n    this.get(\"#editor\").doitContext = obj;\n    this.dispatchEvent(new CustomEvent(\"select-object\", {detail: {node: node, object: obj}}));\n  }\n\n  renderObject(node, obj, expand, name = '') {\n    // handle system objects... \n    node.type = \"Object\"\n    node.isExpanded = expand;\n\n    var className = obj.constructor.name;\n    if (this.isAstMode() && obj.type) {\n      className = obj.type\n    }\n    \n    node.innerHTML = '';\n    node.appendChild(this.expandTemplate(node));\n    node.appendChild(<span>\n      <span class='attrName expand'> {name}</span><span class=\"syntax\">:</span> \n    </span>)\n    \n    if(typeof obj === 'function') {\n      //(/</g,\"&lt;\")\n      node.appendChild(<span class='attrValue'>&#x0192;</span>);\n      node.appendChild(<span class=''> {obj.name} </span>);\n      node.appendChild(<span class=''>{truncateString(obj.toString(), 20, '...')}</span>);\n    } else {\n      node.appendChild(<a id='tagname' class='tagname'>{className}</a>)\n    }\n    node.appendChild(<span>\n      <span class=\"syntax\">&#123;</span>{\n          this.contentTemplate()\n        }<span class=\"syntax\">&#125;</span>\n    </span>)\n  \n    this.attachHandlers(node, obj, name, \"renderObject\");\n    this.renderExpandedProperties(node, obj);\n  }\n  \n  renderExpandedProperties(node, obj) {\n    if(!node.isExpanded) { return; }\n        \n    var contentNode = node.querySelector(\"#content\");\n\n    if (obj.livelyInspect) {\n      try {\n        obj.livelyInspect(contentNode, this)\n      } catch(e) {\n        var selection = <div class=\"element\" style=\"color:red\"><b>Error in livleyInspect:</b> {e}</div>;\n        contentNode.appendChild(selection);\n      }\n      return\n    } \n      \n    if(obj && obj[Symbol.iterator]) {\n      this.renderIterable(contentNode, obj);\n      return;\n    }\n    \n    contentNode.innerHTML = \"\";\n    this.allKeys(obj).sort(sortAlphaNum).forEach( ea => {\n      try {\n        var value = obj[ea]\n      } catch(e) {\n        console.log(\"[inspector] could not display \" + ea + \" of \" + obj)\n        return\n      }\n      if (value == null) return;  \n      var childNode = this.display(value, false, ea, obj)\n      if (childNode) contentNode.appendChild(childNode); // force object display \n    });\n  }\n  \n  displayObject(obj, expand, name) {\n    if (!(obj instanceof Object)) {\n      return this.displayValue(obj, expand, name); // even when displaying objects.\n    }\n    // if ((obj instanceof Function)) {\n    //   return this.displayFunction(obj, expand, name); // even when displaying objects.\n    // }\n    \n    var node = <div class=\"element\"></div>;\n    node.pattern = \"NAME \" + (name || '').toString()\n    node.name = name\n    this.renderObject(node, obj, expand, name);\n    return node;\n  }\n  \n  addVivideSelection(cb, node){\n    const root = node ? node : this.container;\n    const atts = root.querySelectorAll('.attrValue');\n    for(let i = 0; i < atts.length; i++){\n      const value = atts.item(i).innerHTML;\n      atts.item(i).addEventListener('click', () => cb(value.startsWith('\"') ? value.slice(1, -1) : value));\n    }\n  }\n  \n  changeAttributeValue(obj, attrName, attrValue) {\n    obj.setAttribute(attrName, attrValue);\n    lively.notify(\"edited \" + attrName + \" to \" + attrValue);\n  }\n  \n  expandTemplate(node) {\n    return <span class='syntax'><a class='expand'>{node.isExpanded ? \n      <span style='font-size:9pt'>&#9660;</span> : \n      <span style='font-size:7pt'>&#9654;</span>\n    }</a></span>;\n  }\n  \n  contentTemplate(content) {\n    return <span id='content'><a id='more' class='more'>{content ? content : \"...\"}</a></span>;\n  }\n\n  attachHandlers(node, obj, name, renderCall = \"render\") {\n    node.target = obj;\n    // jqyery would make this cleaner here...\n    var moreNode = node.querySelector(\"#more\");\n    if (moreNode) {\n      moreNode.onclick = evt => {\n        this[renderCall](node, obj, true, name);\n      };\n      // #TODO: does not work, ... yet\n      moreNode.draggable=\"true\";\n      moreNode.addEventListener('dragstart', evt => {\n        evt.dataTransfer.setData(\"javascript/object\", getTempKeyFor(obj));\n      });\n    }\n    node.querySelectorAll(\".expand\").forEach(expandNode => {\n      expandNode.onclick = evt => {\n        this[renderCall](node, obj, !node.isExpanded, name);\n      }\n    });\n    const tagNode = node.querySelector(\"#tagname\");\n    if (tagNode) tagNode.addEventListener('click', evt => {\n      this.onSelect(node, obj);\n    });\n  }\n  \n  renderAttributes(node, obj) {\n    function quoteTemplate() {\n      return <span class='syntax'>\"</span>;\n    }\n\n    if (obj.attributes) {\n      var attrNode = node.querySelector(\"#attributes\");\n      Array.from(obj.attributes).forEach(ea => {\n        var value = \"\" + ea.value;\n        var maxvaluelength = 60;\n        if (value.length > maxvaluelength) {\n          var shortenValue = true\n          value = value.slice(0, maxvaluelength) + \"...\"\n        }\n        var eaNode = <span> <span class='attrName'>{ea.name}=</span>{quoteTemplate()}<span class=\"attrValue\">{value}</span>{quoteTemplate()}</span>;\n        var valueNode = eaNode.querySelector(\".attrValue\") ;\n        // Editing of attribute values in inspector\n        if (!shortenValue) {\n          valueNode.onclick = evt => {\n            eaNode.querySelector(\".attrValue\").contentEditable = true;\n            return true;\n          };\n          // accept changes in content editable attribute value\n          valueNode.onkeydown = evt => {\n            if(evt.keyCode == 13) { // on enter -> like in input fields\n             valueNode.contentEditable = false;\n              this.changeAttributeValue(obj, ea.name, valueNode.textContent);\n              evt.preventDefault();\n            }\n          };          \n        }\n        attrNode.appendChild(eaNode);\n      });\n    }\n  }\n\n  renderHeader(node, obj) {\n    node.innerHTML = '';\n\n    if (obj === document) {\n      return;\n    }\n\n    if (obj instanceof Document) {\n      return;\n    }\n\n    \n    \n    if (obj instanceof ShadowRoot) {\n      node.appendChild(this.expandTemplate(node)) \n      node.appendChild(<a id='tagname' class='tagname'> #shadow-root</a>)\n      node.appendChild(this.contentTemplate()) \n      return;\n    }\n\n    if (obj instanceof Comment) {\n      node.appendChild(<a id='tagname' class='tagname'>&lt!-- </a>)\n      node.appendChild(this.contentTemplate());\n      node.appendChild(document.createTextNode(\" --&gt\"))\n      return;\n    }\n\n    var tagName = obj.tagName || obj.nodeName;\n    var lt = () => <span class='syntax'>&lt;</span>;\n    var gt = () => <span class='syntax'>&gt;</span>;\n    const showTags = obj.tagName && !obj.livelyIsParentPlaceholder;\n    node.appendChild(this.expandTemplate(node))\n    if (showTags) { node.appendChild(lt()); }\n    node.appendChild(<a id='tagname' class='expand tagname'>{tagName.toLowerCase()}</a>)\n    node.appendChild(<span id='attributes'></span>)\n    if (showTags) { node.appendChild(gt()); }\n    \n    node.appendChild(this.contentTemplate(truncateString(obj.textContent, 40, \"..\")))\n    \n    if(showTags) {\n      node.appendChild(lt());\n      node.appendChild(document.createTextNode(\"/\"));\n      node.appendChild(<span class='tagname'>{tagName.toLowerCase()}</span>);\n      node.appendChild(gt());\n    }\n\n    // if (!node.isAutoExpanded) html = this.expandTemplate({}).outerHTML + html\n  }\n\n  \n  renderNode(node, obj, expanded) {\n    node.isExpanded = true && expanded;\n    if (!obj.textContent || obj.textContent.length < 80) {\n      node.isExpanded = true;\n      node.isAutoExpanded = true;\n    }\n\n    if (expanded === false) {\n      node.isExpanded = false; // force colapse \n    }\n    \n    this.renderHeader(node, obj);\n    this.renderAttributes(node, obj);\n\n    var contentNode = node.querySelector(\"#content\");\n    if (!contentNode) return \n    \n    this.attachHandlers(node, obj);\n    \n    var expandChildren = obj.livelyIsParentPlaceholder || false;\n\n    if (node.isExpanded) {\n      contentNode.innerHTML = \"\";\n      if (obj instanceof Comment) {\n        contentNode.innerHTML = obj.textContent.replace(/</,\"&lt;\").replace(/>/,\"&gt;\");\n      }\n      if (obj.shadowRoot) {\n        contentNode.appendChild(this.display(obj.shadowRoot, expandChildren, null, obj));\n      }  \n      obj.childNodes.forEach( ea => { \n        contentNode.appendChild(this.display(ea, expandChildren, null, obj));\n      });\n            \n\n      try {\n        var hasProperties = this.allKeys(obj).length > 0;\n        \n      } catch(e) {\n        console.warn(\"[inspector] allKeys failed\", e)\n      }\n      if (hasProperties && !obj.livelyIsParentPlaceholder) {\n        var props = this.displayObject(obj, false, \"#Properties\");\n        contentNode.appendChild(props);\n        if (props.childNodes.length == 0) props.remove() // clean up \n        \n      }\n      \n      if (obj.livelyInspect) {\n        try {\n          obj.livelyInspect(contentNode, this)\n        } catch(e) {\n          var selection = <div class=\"element\" style=\"color:red\"><b>Error in livleyInspect:</b> {e}</div>\n          contentNode.appendChild(selection)\n        }\n      } \n      \n      \n    }\n  }\n  \n  \n  renderText(node, obj, expanded) {\n    if (obj.textContent.match(/^[ \\n]*$/)) \n      return; // nothing to render here... skip, empty lines or just spaces\n    if (obj.textContent && obj.textContent.length > 100)\n      node.innerHTML = \"<pre>\" +  obj.textContent + \"</pre>\";\n    else {\n      console.log(\"renderText \" + obj)\n      node.innerHTML =  obj.textContent;\n      if (obj instanceof Text) {\n        node.onclick = evt => {\n          node.contentEditable = true;\n          return true;\n        };\n        // accept changes in content editable attribute value\n        node.onkeydown = evt => {\n          if(evt.keyCode == 13) { // on enter -> like in input fields\n           node.contentEditable = false;\n            obj.textContent =  node.textContent;\n            evt.preventDefault();\n          }\n        };          \n      }\n      \n    }\n  }\n  \n  displayText(obj, expanded) {\n    var node = <span class=\"element\"></span>\n    this.render(node, obj, expanded); \n    return node;\n  }\n\n  findParentNode(obj) {\n    try {\n      return obj.parentNode || obj.host;\n      \n    } catch(e) {\n      // we might be in a prototype ... where we should not dare to ask...\n    }\n  }\n    \n  displayNode(obj, expanded, parent) {\n    try {\n      var node;\n      var parentNode = this.findParentNode(obj);\n      if (!parent && parentNode) {\n        var tmpParent = {\n          tagName: \"...\",\n          textContent: \"\",\n          childNodes: [obj],\n          livelyIsParentPlaceholder: true\n        };\n        node = this.displayNode(tmpParent, true, tmpParent);\n        var tagNode = node.querySelector(\"#tagname\");\n        if (tagNode) tagNode.onclick = evt => {\n          this.inspect(parentNode);\n        };\n        return node;\n      } else if (obj.tagName) {\n        node = <div class=\"element tag\"></div>;\n      } else if (obj instanceof ShadowRoot) {\n        node = <div class=\"element shadowroot\"></div>;\n      } else if (obj instanceof Comment) {\n        node = <div class=\"element comment\"></div>;\n      } else if (obj instanceof Node) {\n        node = <div class=\"element\"></div>;\n      } else {\n        // Fallback... \n        node = <span class=\"element\"></span>;\n      }\n      this.render(node, obj, expanded); \n      return node;\n    } catch(e) {\n      debugger\n      // dont't show red notification... because errors are expected sometimes\n      console.error(e)\n    }\n  }\n  \n  isNode(obj) {\n    if (obj.constructor === HTMLElement) return obj instanceof HTMLElement; // How to deal with META objects...?\n    return obj instanceof Node || (obj instanceof Object && obj.livelyIsParentPlaceholder);\n  }\n  \n  render(node, obj, expanded) {\n    if (obj instanceof Text) {\n      return this.renderText(node, obj, expanded);\n    } else if (this.isNode(obj) && node.type != \"Object\") {\n      return this.renderNode(node, obj, expanded);\n    } else if (typeof obj == \"object\") {\n      return this.renderObject(node, obj, expanded, node.name);\n    } else if (typeof obj == \"function\"){\n      // return this.renderFunction(node, obj, expanded, name);\n    }\n    // return this.renderValue(node, obj, expanded, name);\n  }\n  \n  display(obj, expanded, name, parent) {\n    // from most special to general\n    if (obj instanceof Text) {\n      return this.displayText(obj, expanded, parent);\n    } else if (this.isNode(obj)) {\n      return this.displayNode(obj, expanded, parent);\n    } else if (typeof obj == \"object\" || typeof obj == \"function\") {\n      return this.displayObject(obj, expanded, name);\n    } else {\n      return this.displayValue(obj, expanded, name);\n    }\n  }\n\n  get container() { return this.get(\"#container\"); }\n  \n  inspect(obj) {\n    if (!obj) { return; }\n    \n    if (obj instanceof HTMLElement) {\n      var cssSelector = lively.elementToCSSName(obj)\n      this.setAttribute(\"target\", cssSelector);      \n    }\n    \n    if (this.targetObject) {\n      var oldViewState = this.getViewState()\n    }\n    \n    this.targetObject = obj;\n    this.get(\"#editor\").doitContext = obj;\n    this.container.innerHTML = \"\";\n    // special case for inspecting single dom nodes\n    const content = this.display(obj, true, null, null);\n    this.container.appendChild(content);\n    this.updatePatterns(this.container.childNodes[0])\n    \n    if (oldViewState) {\n      this.setViewState(oldViewState)\n    }\n    return content;\n  }\n  \n  allKeys(obj) {\n    var keys = []\n    \n    if(obj === null || !(typeof obj === 'object' || typeof obj === 'function')) { return []; }\n    \n    if (obj instanceof Response) return lively.allKeys(obj); // #TODO what does it make different?\n    \n    \n    var allOwn = Object.getOwnPropertySymbols(obj).concat(Object.getOwnPropertyNames(obj))\n    // for(var i in obj) {\n    //   if (obj.hasOwnProperty(i) || obj.__lookupGetter__(i)) {\n    //     keys.push(i);\n    //   }\n    // }\n    keys = allOwn;\n    if (!this.isAstMode()) {\n      if (obj && this.allKeys(obj.__proto__).length > 0)\n        keys.push(\"__proto__\")\n    }\n    return _.sortBy(keys)\n  }\n  \n  isAstMode() {\n    return this.getAttribute(\"type\") == \"ast\"\n  }\n  \n  hideWorkspace() {\n    this.container.style.flex = 1;\n    this.get(\"#editor\").style.display = \"none\";\n    this.get(\"lively-separator\").style.display = \"none\";\n  }\n\n  showWorkspace() {\n    this.container.style.flex = 0.66;\n    this.get(\"#editor\").style.display = \"block\";\n    this.get(\"lively-separator\").style.display = \"block\";\n  }\n  \n  updatePatterns(node) {\n    var obj = node.target\n    if (node.target) {\n      if(node.pattern) {\n        // do nothing\n      } else if(obj.id) {\n        node.pattern = \"ID \" + obj.id\n      } else if(obj instanceof ShadowRoot) {\n        node.pattern = \"shadow-root\"\n      } else {\n        node.pattern = \"tag \" + obj.tagName + \" \" + obj.id\n        // check if siblings have same pattern\n      }\n      if (node.parentElement) {\n      if (_.find(node.parentElement.childNodes, ea => ea && ea !== node && (ea.pattern == node.pattern))) {\n          node.pattern += \" X\" // unique... but repeatable\n        }\n      }\n    } else {\n      node.pattern = \"NOTARGET\"\n    }\n    // lively.showElement(node).textContent = \"U=\" + node.pattern\n    var content = node.querySelector(\"#content\")\n    if (content) content.childNodes.forEach( ea => {\n      this.updatePatterns(ea)\n    })\n  }\n  \n  // JSON.stringify(this.getViewState())\n  getViewState() {\n    return this.captureViewState(this.container.childNodes[0])\n  }\n  \n  /*\n    this.setViewState( {\"children\":[{\"pattern\":\"\",\"children\":[{\"pattern\":\"shadowRoot\",\"children\":[{\"pattern\":\"\",\"children\":[]}]},{\"pattern\":\"#Properties\",\"children\":[{\"pattern\":\"attributes\",\"children\":[]}]}]}]})\n  */\n  setViewState(state) {\n    return this.applyViewState(this.container.childNodes[0], state)\n  }\n  \n  applyViewState(node, state) {\n    // lively.showElement(node).textContent = \"P=\" + state.pattern\n\n    if (!node.querySelector) return; // text node\n    \n    this.expandNode(node)\n    var content = node.querySelector(\"#content\")\n    if (content) {\n      var children = _.filter(content.childNodes, \n        ea => ea.classList.contains(\"element\"))\n      state.children.forEach( ea => {\n        var child = children.find( c => c.pattern == ea.pattern)\n        if (child) this.applyViewState(child, ea) \n      })\n    }\n  }\n  \n  expandNode(node) {\n    if (node.isExpanded) return\n    this.render(node, node.target, true)\n  }\n  \n  captureViewState(node) {\n    var result =  { \n      pattern: node.pattern,\n      children: []}\n      \n    if (!node.querySelector) return result; // text node\n\n    var content = node.querySelector(\"#content\")\n    if (content) {\n      _.filter(content.childNodes, ea => ea.isExpanded).forEach(ea => {\n        result.children.push(this.captureViewState(ea))        \n      })\n    }\n    return result\n  }\n\n  renderIterable(contentNode, obj) {\n    if (!contentNode) return\n    contentNode.innerHTML = \"\"\n    var entries = []\n    try {\n      entries = obj.entries() // illegal invocation?\n    } catch(e) {}\n    for(let [key, value] of entries) {\n      const node = this.display(value, true, key)\n      if (node) contentNode.appendChild(node);   \n    }\n  }\n  \n  static inspectArrayAsTable(array) {\n    var div = <div></div>;\n    div.innerHTML = \"<table>\" +lively.allKeys(array[0]).map( key => {\n    \treturn \"<tr><td><b>\" + key +\"</b></td>\" + array.map( ea =>  \"<td>\" + (ea[key] + \"\").slice(0, 50) +\"</td>\").join(\"\")+\"</tr>\"\n    }).join(\"\\n\") + \"</table>\";\n    div.style.overflow = \"auto\";\n    lively.components.openInWindow(div, undefined, \"Inspect Array\");\n  }\n  \n  livelyExample() {\n    this.inspect(document.body)\n  }\n  \n  livelyMigrate(oldInstance) {\n    this.inspect(oldInstance.targetObject) ;\n    var viewState  = oldInstance.getViewState()\n    this.setViewState(viewState)\n  } \n}\n"]}