VaKeR CYBER ARMY
Logo of a company Server : Apache/2.4.41 (Ubuntu)
System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64
User : www-data ( 33)
PHP Version : 7.4.33
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Directory :  /var/www/html/libs/absol-full/dist/js/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /var/www/html/libs/absol-full/dist/js/mdls__absol-card__js__dashboard__GridPosition.js
/*** module: node_modules/absol-card/js/dashboard/GridPosition.js ***/
"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
exports.findCollapsedRect = findCollapsedRect;
exports.findDirs = findDirs;
exports.findNewPosition = findNewPosition;

var _Rectangle = _interopRequireDefault(require("absol/src/Math/Rectangle"));

var _Vec = _interopRequireDefault(require("absol/src/Math/Vec2"));

var _EventEmitter = require("absol/src/HTML5/EventEmitter");


/***
 *
 * @param rectList
 * @param {Rectangle}rect
 * @return {string[]}
 */
function findCollapsedRect(rectList, rect) {
  var ids = [];
  /**
   * @type {Rectangle}
   */

  var cRect;

  for (var id in rectList) {
    cRect = rectList[id];

    if (cRect.collapsedSquare(rect) > 0) {
      ids.push(id);
    }
  }

  return ids;
}

var dirList = [new _Vec.default(0, -1), new _Vec.default(1, 0), new _Vec.default(0, 1), new _Vec.default(-1, 0)];

function findDirs(addingRect, movingRect) {
  var c1 = addingRect.centerPoint();
  var c2 = movingRect.centerPoint();
  var dir = c2.sub(c1).normalized();
  var res = dirList.slice();
  res.sort(function (a, b) {
    return -a.dot(dir) + b.dot(dir);
  });
  return res;
}
/***
 *
 * @param staticRectList
 * @param {Rectangle} addingRect
 * @param {Rectangle} movingRect
 * @param {Rectangle} gridsterBound
 * @param {Rectangle} emptyBound
 */


function findNewPosition(staticRectList, addingRect, movingRect, gridsterBound, emptyBound) {
  function tryWidthLimit(limitRect) {
    var allRects = Object.keys(staticRectList).map(function (key) {
      return staticRectList[key];
    });
    allRects.push(movingRect, gridsterBound, emptyBound);
    var minBound = allRects.reduce(function (ac, cr) {
      return ac.merge(cr);
    }, limitRect);
    var dirs = findDirs(addingRect, movingRect);
    var dir;
    var cPos;
    var cRect = movingRect.clone();

    for (var i = 0; i < dirs.length; ++i) {
      dir = dirs[i];
      cPos = new _Vec.default(movingRect.x, movingRect.y);

      while (true) {
        cPos = cPos.add(dir);
        cRect.x = cPos.x;
        cRect.y = cPos.y;
        if (!minBound.contains(cRect)) break;
        if (addingRect.collapsedSquare(cRect) > 0) continue;
        if (findCollapsedRect(staticRectList, cRect).length > 0) break;
        return cPos;
      }
    }

    if (emptyBound) for (var x = emptyBound.x; x < emptyBound.x + emptyBound.width - movingRect.width; ++x) {
      for (var y = emptyBound.y; y < emptyBound.y + emptyBound.height - movingRect.height; ++y) {
        cRect.x = x;
        cRect.y = y;
        if (!minBound.contains(cRect)) continue;
        if (addingRect.collapsedSquare(cRect) > 0) continue;
        if (findCollapsedRect(staticRectList, cRect).length > 0) continue;
        return new _Vec.default(x, y);
      }
    }
    emptyBound = minBound;

    for (var x = emptyBound.x; x < emptyBound.x + emptyBound.width - movingRect.width; ++x) {
      for (var y = emptyBound.y; y < emptyBound.y + emptyBound.height - movingRect.height; ++y) {
        cRect.x = x;
        cRect.y = y;
        if (!minBound.contains(cRect)) continue;
        if (addingRect.collapsedSquare(cRect) > 0) continue;
        if (findCollapsedRect(staticRectList, cRect).length > 0) continue;
        return new _Vec.default(x, y);
      }
    }
  }

  var limitRect = gridsterBound.clone();
  var ret;

  while (!ret) {
    ret = tryWidthLimit(limitRect);
    limitRect.height *= 2;
  }

  return ret;
}

VaKeR 2022