UNPKG

@mai3/phaser-sdk

Version:

A UI component library based on the Phaser game engine

36 lines (35 loc) 1.92 kB
import { Container } from "../ui/Container"; var ScrollUtils = /** @class */ (function () { function ScrollUtils() { } ScrollUtils.calculateNewPosition = function (position, direction, viewSize, scrollSize, padding, borderWidth) { var _a, _b; var max = ((_b = (_a = padding.all) !== null && _a !== void 0 ? _a : (direction === "y" ? padding.top : padding.left)) !== null && _b !== void 0 ? _b : 0) + borderWidth; var min = Math.min(0, viewSize - (scrollSize || 0)); return Phaser.Math.Clamp(position, min, max); }; ScrollUtils.updateScrollBarPosition = function (content, scrollBar, direction, viewSize, scrollSize, padding) { var _a, _b, _c, _d; if (!scrollBar) return; var currentPos = content[direction] - ((_b = (_a = padding.all) !== null && _a !== void 0 ? _a : (direction === "y" ? padding.top : padding.left)) !== null && _b !== void 0 ? _b : 0); var scrollPercent = Math.abs(currentPos) / (scrollSize + ((_d = (_c = padding === null || padding === void 0 ? void 0 : padding.all) !== null && _c !== void 0 ? _c : padding === null || padding === void 0 ? void 0 : padding.top) !== null && _d !== void 0 ? _d : 0) - viewSize); scrollBar.updateThumbPosition(scrollPercent); }; ScrollUtils.updateVisibleItems = function (content, direction, viewSize) { var viewportStart = -content[direction]; var viewportEnd = viewportStart + viewSize; content.list.forEach(function (child) { if (child instanceof Container) { var itemStart = child[direction]; var itemEnd = itemStart + (direction === "y" ? child.Height : child.Width); child.visible = itemEnd >= viewportStart && itemStart <= viewportEnd; } }); }; return ScrollUtils; }()); export default ScrollUtils;