![]() 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 : |
/*** 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; }