correction.js 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var collison_1 = require("./collison");
  4. exports.checkInContainer = function (GridX, GridY, col, w) {
  5. /**防止元素出container */
  6. if (GridX + w > col - 1)
  7. GridX = col - w; //右边界
  8. if (GridX < 0)
  9. GridX = 0; //左边界
  10. if (GridY < 0)
  11. GridY = 0; //上边界
  12. return { GridX: GridX, GridY: GridY };
  13. };
  14. /**
  15. * 这个函数会有副作用,不是纯函数,会改变item的Gridx和GridY
  16. * @param {*} item
  17. */
  18. exports.correctItem = function (item, col) {
  19. var _a = exports.checkInContainer(item.GridX, item.GridY, col, item.w), GridX = _a.GridX, GridY = _a.GridY;
  20. item.GridX = GridX;
  21. item.GridY = GridY;
  22. };
  23. exports.correctLayout = function (layout, col) {
  24. var copy = layout.slice();
  25. for (var i = 0; i < layout.length - 1; i++) {
  26. exports.correctItem(copy[i], col);
  27. exports.correctItem(copy[i + 1], col);
  28. if (collison_1.collision(copy[i], copy[i + 1])) {
  29. copy = collison_1.layoutCheck(copy, copy[i], copy[i].UniqueKey, copy[i].UniqueKey, 0);
  30. }
  31. }
  32. return copy;
  33. };