@mai3/phaser-sdk
Version:
A UI component library based on the Phaser game engine
36 lines (35 loc) • 1.92 kB
JavaScript
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;