UNPKG

vscroll

Version:
73 lines 2.23 kB
import { Direction } from '../inputs/index'; export class Padding { constructor(direction, routines) { const found = routines.findPaddingElement(direction); routines.checkElement(found); this.element = found; this.direction = direction; this.routines = routines; } reset(size) { this.size = size || 0; } get size() { return this.routines.getSizeStyle(this.element); } set size(value) { this.routines.setSizeStyle(this.element, value); } } export class Paddings { constructor(routines, settings) { this.settings = settings; this.forward = new Padding(Direction.forward, routines); this.backward = new Padding(Direction.backward, routines); } byDirection(direction, opposite) { return direction === Direction.backward ? (opposite ? this.forward : this.backward) : (opposite ? this.backward : this.forward); } reset(viewportSize, startIndex, offset) { const positive = this.getPositiveSize(startIndex, viewportSize, offset); const negative = this.getNegativeSize(startIndex); if (this.settings.inverse) { this.forward.reset(negative); this.backward.reset(positive); const diff = viewportSize - this.backward.size - offset; if (diff > 0) { this.backward.size += diff; this.forward.size -= diff; } } else { this.forward.reset(positive); this.backward.reset(negative); const diff = viewportSize - this.forward.size - offset; if (diff > 0) { this.backward.size -= diff; this.forward.size += diff; } } } getPositiveSize(startIndex, viewportSize, offset) { const { settings } = this; let positiveSize = viewportSize; if (isFinite(settings.maxIndex)) { positiveSize = (settings.maxIndex - startIndex + 1) * settings.itemSize; } if (offset) { positiveSize = Math.max(positiveSize - offset, 0); } return positiveSize; } getNegativeSize(startIndex) { const { settings } = this; let negativeSize = 0; if (isFinite(settings.minIndex)) { negativeSize = (startIndex - settings.minIndex) * settings.itemSize; } return negativeSize; } } //# sourceMappingURL=paddings.js.map