{"version":3,"names":["Intersection","Layout","pt","rect","Windows","rects","intersections","i","length","j","intersection","width","height","push","windows","bounds","Map","forEach","ea","set","lively","getClientBounds","get","a","b","withWindows","obj","objBounds","element","getCenter","nodes","reduce","sum","addPt","getClientPosition","scaleBy","expandUntilNoIntersectionsToBottomLeft","maxiterations","undefined","y","moveBy","x","allWindows","expandUntilNoIntersectionsExplosion","all","count","elementA","elementB","isNonEmpty","left","xdir","top","ydir","oldExpandUntilNoIntersectionsExplosion","center","showPoint","dista","dist","distb","direction","subPt","normalized","delta","showPath","makeLocalSpace","objCenter","getClientCenter","other","otherCenter","randomizeContentPosition","node","extent","getExtent","childNodes","setPosition","Math","random"],"sources":["layout.js"],"sourcesContent":["\n/* Little Window Layout Helper */\n\nimport {pt, rect} from \"src/client/graphics.js\"\nimport Windows from \"src/components/widgets/lively-window.js\"\n\nexport class Intersection {\n  \n  static rects(rects) {\n    var intersections = []\n    for(var i=0; i < rects.length; i++) {\n      for(var j=i; j < rects.length; j++) {\n        if (i !== j) {\n          var intersection = rects[i].intersection(rects[j])\n          if (intersection && intersection.width > 0 && intersection.height > 0)\n            intersections.push(intersection)\n        }\n      }  \n    }\n    return intersections\n  }\n  \n  static windows(windows) {\n    \n    var bounds = new Map()\n    windows.forEach( ea => bounds.set(ea, lively.getClientBounds(ea)))\n    var intersections = []\n    for(var i=0; i < windows.length; i++) {\n      for(var j=i; j < windows.length; j++) {\n        if (i !== j) {\n          \n          var intersection = bounds.get(windows[i]).intersection(bounds.get(windows[j]))\n          if (intersection && intersection.width > 0 && intersection.height > 0)\n            intersections.push({intersection: intersection, a:windows[i], b: windows[i] })\n        }\n      }  \n    }\n    return intersections\n  }\n\n  static withWindows(obj, windows) {\n    var intersections = []\n    var objBounds = lively.getClientBounds(obj)\n    for(var i=0; i < windows.length; i++) {\n      if (windows[i] !== obj) {\n        var intersection = lively.getClientBounds(windows[i]).intersection(objBounds)\n        if (intersection && intersection.width > 0 && intersection.height > 0)\n          intersections.push({intersection: intersection, element: windows[i], })\n      }\n    }\n    return intersections\n  }\n  \n  \n}\n\n\nexport default class Layout {\n  \n  static getCenter(nodes) {\n    return nodes.reduce((sum, ea) => sum.addPt(lively.getClientPosition(ea)), pt(0,0)).scaleBy(1/nodes.length)\n  }\n  \n  static expandUntilNoIntersectionsToBottomLeft(windows, maxiterations) {\n    if (maxiterations === undefined) maxiterations = 100;\n    var i=0\n    do {\n      i++\n      var intersections = Intersection.windows(windows)\n      intersections.forEach(ea => {\n        var obj\n        if (ea.intersection.width > ea.intersection.height) {\n          if (lively.getClientPosition(ea.a).y > lively.getClientPosition(ea.b).y)\n            obj = ea.a\n          else\n            obj = ea.b\n          lively.moveBy(obj, pt(0, ea.intersection.height + 10))\n        } else {\n          if (lively.getClientPosition(ea.a).x > lively.getClientPosition(ea.b).x)\n            obj = ea.a\n          else\n            obj = ea.b\n          lively.moveBy(obj, pt(ea.intersection.width + 10, 0))\n        }\n      })\n    } while(intersections.length > 0 && i < maxiterations)\n  }\n  \n  \n  static expandUntilNoIntersectionsToBottomLeft(windows, maxiterations) {\n    windows = windows || Windows.allWindows()\n\n    if (maxiterations === undefined) maxiterations = 100;\n    var i=0\n    do {\n      i++\n      var intersections = Intersection.windows(windows)\n      intersections.forEach(ea => {\n        var obj\n        if (ea.intersection.width > ea.intersection.height) {\n          if (lively.getClientPosition(ea.a).y > lively.getClientPosition(ea.b).y)\n            obj = ea.a\n          else\n            obj = ea.b\n          lively.moveBy(obj, pt(0, ea.intersection.height + 10))\n        } else {\n          if (lively.getClientPosition(ea.a).x > lively.getClientPosition(ea.b).x)\n            obj = ea.a\n          else\n            obj = ea.b\n          lively.moveBy(obj, pt(ea.intersection.width + 10, 0))\n        }\n      })\n    } while(intersections.length > 0 && i < maxiterations)\n  }\n  \n    static expandUntilNoIntersectionsExplosion(windows, maxiterations) {  \n      var all = windows || Windows.allWindows()\n\n      var count = 30\n      while(count > 0 /* or error is small enough */ ) {\n        count--\n        for(var elementA of all) {\n          for(var elementB of all) {\n\n            var a = lively.getClientBounds(elementA)\n            var b = lively.getClientBounds(elementB)\n\n\n            var intersection = a.intersection(b) \n\n\n            if (intersection.isNonEmpty()) {\n\n              // lively.showRect(intersection)\n\n              if (a.left() < intersection.left()) {\n                var xdir = -1\n              } else {\n                xdir = 1\n              }\n\n              if (a.top() < intersection.top()) {\n                var ydir = -1\n              } else {\n                ydir = 1\n              }\n\n              lively.moveBy(elementA, lively.pt(xdir *  0.1 * intersection.width, ydir *  0.1 * intersection.width))\n              lively.moveBy(elementB, lively.pt(-xdir *  0.1 * intersection.width, -ydir *  0.1 * intersection.width))\n\n            }\n          }\n        }        \n    }\n  }\n  \n  // this implementation moves the windows to far....\n  static oldExpandUntilNoIntersectionsExplosion(windows, maxiterations) {\n    windows = windows || Windows.allWindows()\n    if (maxiterations === undefined) maxiterations = 200;\n    var center = this.getCenter(windows)\n    lively.showPoint(center)\n    var i=0\n    do {\n      i++\n      var intersections = Intersection.windows(windows)\n      intersections.forEach(ea => {\n        var dista = center.dist(ea.a)\n        var distb = center.dist(ea.b)\n        var obj = dista > distb ? ea.a : ea.b; \n        var direction = lively.getClientPosition(obj).subPt(center).normalized()\n        var delta = direction.scaleBy(50) // #TODO I am to dumb to calculate the real length and keep the direction... so just go for it\n        lively.showPath([lively.getClientPosition(obj), lively.getClientPosition(obj).addPt(delta)])\n        lively.moveBy(obj, delta)\n      })\n    } while(intersections.length > 0 && i < maxiterations)\n  }\n  \n  /*\n   * Move overlapping windows away until it does not touch any more\n   */\n  static makeLocalSpace(obj) {\n    var intersections = Intersection.withWindows(obj, Windows.allWindows())\n    var objCenter =   lively.getClientCenter(obj)\n    var objBounds = lively.getClientBounds(obj)\n    intersections.forEach(ea => {\n      var other = ea.element\n      var intersection\n      while (\n        (intersection = lively.getClientBounds(other).intersection(objBounds)) &&\n        intersection.width > 0 && intersection.height > 0) {\n        var otherCenter = lively.getClientCenter(other);\n        var delta = otherCenter.subPt(objCenter).normalized().scaleBy(10)\n        lively.moveBy(other, delta)\n        lively.showPath([otherCenter, otherCenter.addPt(delta)])\n      } \n    })\n  }\n\n  \n  // just for development and testing\n  static randomizeContentPosition(node) {\n    var extent = lively.getExtent(node)\n    node.childNodes.forEach(ea => lively.setPosition(ea, pt(Math.random()* extent.y, Math.random() * extent.x)))\n  }\n  \n}\n\n\n// // Live Feedback\n// if (that) {\n//   Layout.randomizeContentPosition(that)\n//   setTimeout(() => {\n//     Layout.expandUntilNoIntersectionsToBottomLeft(Array.from(that.childNodes))\n//   }, 500)\n// }\n\n"],"mappings":"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"}