{"version":3,"names":["ViewNav","__SystemJSRewritingHack","_export","setters","_reactiveJsx","_addSourceLocation","addSourceLocation","_graphicsJs","pt","_preferencesJs","Preferences","default","_srcComponentsWidgetsLivelyWindowJs","Windows","execute","_recorder_","_src_client_viewnav_js","Object","defineProperty","get","set","thisIsVererySecretVariableName","enumerable","configurable","constructor","target","enable","container","viewNav","disable","eventSource","parentElement","lively","addEventListener","e","onPointerDown","window","onResize","onMouseWheel","updateDocumentGrid","documentGrid","removeEventListener","toString","eventPos","evt","clientX","clientY","onPointerMoveZoom","pos","showPoint","ctrlKey","button","targetContainer","composedPath","find","ea","tagName","eventOffset","originalPos","getPosition","onPointerMove","onPointerUp","preventDefault","stopPropagation","delta","subPt","setPosition","undefined","fixScrollAfterNavigation","lastScaleTime","Date","now","document","body","scale","innerWidth","outerWidth","newPos","lastPoint","scaleBy","lastScale","offset","LastEvt","bounds","getBoundingClientRect","altKey","zoom","Number","getComputedStyle","wheelDelta","style","notify","lastFixedScroll","showDocumentGridItem","color","border","w","h","parent","div","createElement","file","end","column","line","start","isMetaNode","backgroundColor","width","height","livelyAcceptsDrop","setAttribute","pointerEvents","classList","add","appendChild","zoomed","force","hideDocumentGrid","showDocumentGrid","setClientPosition","setExtent","innerHeight","getClientPosition","grid","x","gridSize","y","documentSquare","backgroundPos","addPt","scrollingElement","scrollLeft","scrollTop","backgroundPosition","backgroundImage","lively4url","id","querySelectorAll","forEach","remove","resetView","showError"],"sources":["viewnav.js"],"sourcesContent":["import {pt} from './graphics.js';\nimport Preferences from './preferences.js';\nimport Windows from \"src/components/widgets/lively-window.js\"\n\n\n/*\n * Implements World (html body) panning!\n */\n\nexport default class ViewNav {\n  \n  constructor(target) {\n    this.target = target\n  }\n  \n  static enable(container) {\n    \n    if (container.viewNav) {\n       container.viewNav.disable()\n    }\n    container.viewNav = new ViewNav(container)\n    container.viewNav.enable()\n  }\n  \n  enable() {\n    this.eventSource =  this.target.parentElement\n    lively.addEventListener(\"ViewNav\", this.eventSource, \"pointerdown\", e => this.onPointerDown(e))\n\n    lively.addEventListener(\"ViewNav\", window, \"resize\", e => this.onResize(e))\n    lively.addEventListener(\"ViewNav\", this.eventSource, \"mousewheel\", e => this.onMouseWheel(e))\n    lively.addEventListener(\"ViewNav\", this.eventSource, \"scroll\", () => {\n      if (this.target) {\n        ViewNav.updateDocumentGrid(this.target.documentGrid, this.target)\n      }\n    })\n\n  }\n  \n  disable() {\n    lively.removeEventListener(\"ViewNav\", this.eventSource)\n    lively.removeEventListener(\"ViewNav\", window, \"resize\")\n    lively.removeEventListener(\"ViewNav\", this.eventSource, \"mousewheel\")\n    lively.removeEventListener(\"ViewNav\", this.eventSource, \"scroll\")\n  }\n  \n  toString() {\n    return \"[ViewNav on: \" + this.target + \"]\"\n  }\n  \n  eventPos(evt) {\n    return pt(evt.clientX, evt.clientY)\n  }\n\n  onPointerMoveZoom(evt) {\n    var pos = this.eventPos(evt)\n    lively.showPoint(pos)\n  }\n  \n  onPointerDown(evt) {\n    \n    if (!evt.ctrlKey || evt.button != 0)\n      return;\n    \n    this.targetContainer = evt.composedPath().find(ea => {\n      return ea.tagName == \"LIVELY-CONTAINER\"\n    })\n  \n    this.eventOffset = this.eventPos(evt)\n  \n    \n    \n    if (this.targetContainer) {\n      this.originalPos = lively.getPosition(this.targetContainer.get(\"#container-root\"))\n    } else {\n      this.originalPos = lively.getPosition(this.target)\n    }\n      \n    lively.addEventListener(\"ViewNav\", this.eventSource, \"pointermove\", e => this.onPointerMove(e))\n    lively.addEventListener(\"ViewNav\", this.eventSource, \"pointerup\", e => this.onPointerUp(e))\n    \n    evt.preventDefault()\n    evt.stopPropagation()\n  }\n  \n  onPointerMove(evt) {\n    var delta = this.eventOffset.subPt(this.eventPos(evt))\n    \n    if (this.targetContainer) {\n      lively.setPosition(this.targetContainer.get(\"#container-root\"), this.originalPos.subPt(delta))\n    } else {\n      lively.setPosition(this.target, this.originalPos.subPt(delta))\n      // lively.notify(\"pos \" + this.originalPos.subPt(delta) + \" \" + this.target)\n      ViewNav.updateDocumentGrid(this.target.documentGrid, this.target, undefined, true) \n    }  \n    evt.stopPropagation()\n  }\n  \n  onPointerUp(evt) {\n    lively.removeEventListener(\"ViewNav\", this.eventSource, \"pointermove\")\n    lively.removeEventListener(\"ViewNav\", this.eventSource, \"pointerup\")\n    this.fixScrollAfterNavigation()\n  }\n  \n  onResize(evt) {\n    if (!this.lastScaleTime || (Date.now() - this.lastScaleTime) > 1000) {\n      return // there was no previous scale with mouse wheel\n    }\n\n    if (this.target !== document.body) {\n      return    \n    }\n  \n    // this.lastPoint = pt(LastEvt.clientX, LastEvt.clientY)\n    var scale = window.innerWidth / window.outerWidth\n    // lively.notify(\"scale \" + (scale / this.lastScale))\n\n    var newPos = this.lastPoint.scaleBy(scale / this.lastScale)\n    var offset = this.lastPoint.subPt(newPos)\n    \n    \n      lively.setPosition(this.target, lively.getPosition(this.target).subPt(offset) )\n\n      // lively.showPoint(newPos).style.backgroundColor = \"green\"\n\n      ViewNav.updateDocumentGrid(this.target.documentGrid, this.target, true)\n      \n    \n    \n  }\n  \n  onMouseWheel(evt) {\n    window.LastEvt = evt\n    \n    \n    var bounds = this.target.getBoundingClientRect()\n    // lively.notify(\"wheel bounds \" + pt(bounds.left, bounds.top))\n\n    this.lastPoint = pt(evt.clientX, evt.clientY)\n    this.lastScale = window.innerWidth / window.outerWidth\n    this.lastScaleTime = Date.now()\n    \n    // lively.showPoint(this.lastPoint).style.backgroundColor = \"blue\"\n    // lively.showPoint(pt(LastEvt.pageX, LastEvt.pageY))\n    \n    if (evt.altKey) {\n      // finder granular zoom? using non standard feature\n      var zoom = Number(getComputedStyle(this.target).zoom) + (evt.wheelDelta / 1000 / 10)\n      this.target.style.zoom= zoom\n\n      // // zoom using CSS Transform\n      // var scale = this.target._scale || 1\n      // scale = scale + (evt.wheelDelta / 1000 / 5)\n      // this.target._scale = scale\n      // this.target.style.transform= \"scale(\" + scale + \")\"\n      \n      lively.notify(\"zoom \" + zoom)\n      evt.preventDefault()\n    }\n    \n  }\n\n  fixScrollAfterNavigation() {\n   \n    if(!this.target) return;\n   \n    // #DoesNotWork\n    // if ((this.target.scrollHeight > this.target.scrollTop + window.innerHeight) ||\n    //   (this.target.scrollWidth > this.target.scrollLeft + window.innerWith))\n    //   return; // don't fix when scrolled to bottom to let users pan into the void\n    \n    // console.log(\"fix scroll \")\n\n      \n    ViewNav.lastFixedScroll = Date.now()\n    \n    return // #Bug fixScrollAfterNavigation seems to make problems... \n    \n//     var pos = lively.getClientPosition(this.target).scaleBy(-1)\n//     var topLeft = pt(0,0).minPt(pos)\n//     Windows.allWindows().forEach(ea => {\n//       topLeft = topLeft.minPt(lively.getPosition(ea))\n//     })\n    \n//     lively.setPosition(this.target, topLeft.scaleBy(-1))\n    \n//     var delta = topLeft.scaleBy(-1).subPt(pos.scaleBy(-1))\n\n//     this.target.scrollLeft = delta.x \n//     this.target.scrollTop = delta.y\n  }\n\n\n  static showDocumentGridItem(pos, color, border, w, h, parent) {\n      var div = document.createElement(\"div\")\n      div.isMetaNode = true\n      lively.setPosition(div, pos)\n      div.style.backgroundColor = color\n      div.style.border = border\n      div.style.width = w  +\"px\"\n      div.style.height = h +\"px\"\n      div.livelyAcceptsDrop = function() {}\n      div.setAttribute(\"data-lively4-donotpersist\", \"all\")\n      div.style.pointerEvents = \"none\"\n      div.classList.add(\"document-grid\")\n      parent.appendChild(div)\n      return div\n  }\n  \n  static updateDocumentGrid(documentGrid, target, zoomed, force) {\n    \n    if (!Preferences.get(\"ShowDocumentGrid\")) {\n      this.hideDocumentGrid(target);\n      return;\n    }\n\n    // console.log(\"updateDocumentGrid(\" + zoomed + \", \" + force +\")\")\n    if (!force && this.lastFixedScroll && ((Date.now() - this.lastFixedScroll) < 1000)) {\n      // console.log(\"not update document grid \" + (Date.now() -this.lastFixedScroll))\n      return\n    }\n    // console.log(\"update document grid \"  + (Date.now() - this.lastFixedScroll) )\n\n    if (!documentGrid) return;\n    \n    if (zoomed) {\n      this.hideDocumentGrid(target)\n      this.showDocumentGrid(target)\n    }\n    \n    \n    lively.setClientPosition(documentGrid, pt(0,0))\n    // we make the grid a bit bigger than the actual visible browser window, so that we can scroll into the void...\n    lively.setExtent(documentGrid, pt(window.innerWidth + 200, window.innerHeight  + 200))\n    var pos = lively.getClientPosition(target)\n    var grid = documentGrid.grid\n    lively.setPosition(grid, pt( pos.x % grid.gridSize - 100, pos.y % grid.gridSize - 100) )\n    lively.setClientPosition(documentGrid.documentSquare, pos)\n    \n    \n    var backgroundPos = lively.getClientPosition(document.body).addPt(pt(document.scrollingElement.scrollLeft, document.scrollingElement.scrollTop))\n    document.body.style.backgroundPosition = \"\" + (backgroundPos.x % 100) +\"px \" + (backgroundPos.y % 100) + \"px\" \n  }\n  \n  static showDocumentGrid(target) {\n    if (!target) return;\n    \n    document.body.style.backgroundImage= `url(${lively4url}/src/client/grid.svg)`\n    // document.body.style.backgroundImage=\"url(' data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAC1UlEQVR4Ae2dYacyQRiGp4noQ0RERB8iov//R/oQ0YeIiEhRpOxr1rursocoudjrIWefPWv27r7OzJzZ3ZltzOfzLPwRs9ns6Ter1SpcLpenfSkZj8eh3W6X+7fbbdjv92VebAwGg9Dr9Yo0HA6HsNlsyrzY6Ha7YTgcFmm4Xq9huVyWebHRarXCZDIp0vznYrEI9/v9aV9KptNpaDab5f71eh1Op1OZFxuj0Sh0Op0iDbvdLv+UO/5v9Pv9kD5FpLJSma+RykplFpG0JY2vkbQljY0E5NX414PNf+dA/N2pPNM7DgjkHZd+eIxAfmj2O6cSyDsu/fAYgfzQ7HdO1ciy7M9/e98pwGO+64A15Lt+flyaQD628LsFCOS7fn5cWkyXQwyOA7Hq2hRHXv2U2GTBmAtEIDAHYHKsITAgjfP5nD3eXILpq50cL53AkNtkCQTmAExOTA8kGBwHYtXTIRx59VNiHwJjLhCBwByAybGG0ICkxzsNjgOO1DksciU2WQKBOQCTE9OUAIPjQKyan8GRVz8l9iEw5gIRCMwBmBxrCA1ImmBpcBxwpM5hkSuxyRIIzAGYnJgm5RscB2LVCgkcefVTYh8CYy4QgcAcgMmxhtCApCWODI4DjtQ5LHIlNlkCgTkAk2MNoQGpWv8PprFWcmLVgpG1cgD2ZW2yBAJzACbHGiIQmAMwOY3b7ZY9rvgM01c7OV46gSG3DxEIzAGYnFi1oj9MY63kxKpXNtTKAdiXtQ8RCMwBmBxriEBgDsDkNI7HY/b4ziWYvtrJcaQOQ24fIhCYAzA5Mb2nz+A4IBAOi1yJfYhAYA7A5FhDBAJzACYnPr7xGKatlnIcqcOw24cIBOYATI63cGlAfMiBRcQ+hMUjCEQgMAdgcqwhNCDeT2cRcaTO4mGnDuMhEBwQp0WzkEQXDoABYclRjeMQ2N+AQAQCcwAmJzpHnUXEkTqLR/gHE2yk2eQIeIIAAAAASUVORK5CYII=')\"\n    \n    var documentGrid = document.createElement(\"div\")\n  \tdocumentGrid.style[\"z-index\"] = -200\n\n    documentGrid.isMetaNode = true\n    documentGrid.id = \"DocumentGrid\"\n    documentGrid.classList.add(\"document-grid\")\n  \tdocumentGrid.setAttribute(\"data-lively4-donotpersist\", \"all\")\n  \t// documentGrid.style.overflow = \"hidden\"\n  \tdocumentGrid.style.pointerEvents = \"none\"\n  \tdocumentGrid.livelyAcceptsDrop = function() {}\n\n    target.documentGrid = documentGrid\n    target.appendChild(documentGrid)\n    \n    var width = window.innerWidth;\n    var height = window.innerHeight\n\n    let gridSize = 100,\n      w = width + 2* gridSize,\n      h =  height + 2 *gridSize\n      \n    let grid = document.createElement(\"div\")\n    grid.gridSize = gridSize\n    grid.isMetaNode = true\n    grid.style.pointerEvents = \"none\"\n    grid.livelyAcceptsDrop = function() {}\n    \n    lively.setExtent(documentGrid, pt(width , height))\n\n    documentGrid.documentSquare = this.showDocumentGridItem(pt(0, 0), \n          \"rgba(250,250,240,0.5)\", \"0.5px solid rgb(50,50,50)\", 4000, 2000, documentGrid )\n\n    documentGrid.documentSquare.livelyAcceptsDrop = function() {}\n\n    documentGrid.grid = grid\n    documentGrid.appendChild(grid)\n    lively.setPosition(grid, pt(0,0))\n    \n    // for (var k=0; k < w; k += gridSize) {\n    //   for (var l=0; l < h; l += gridSize) {\n    //     this.showDocumentGridItem(pt(k, l), \n    //       undefined, \"0.2px dashed rgb(190,190,190)\", gridSize, gridSize, grid)\n    //   }  \n    // }\n    ViewNav.updateDocumentGrid(target.documentGrid, target)\n  }\n  \n  static hideDocumentGrid(target) {\n    if (!target) return;\n    \n    target.querySelectorAll(\".document-grid\").forEach(ea => {\n      ea.remove()\n    })\n  }\n  \n  static resetView() {\n    lively.setClientPosition(document.body, pt(0,0));\n  }\n} \n\nif (window.lively) {\n  try {\n  ViewNav.enable(document.body)\n  ViewNav.hideDocumentGrid(document.body)\n  ViewNav.showDocumentGrid(document.body)\n  } catch(e) {\n    lively.showError(e)\n  }\n}\n\n\n"],"mappings":"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"}