UNPKG

anim-scroll

Version:

Small library to animate your web pages

103 lines (79 loc) 2.81 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.default = void 0; var _config = _interopRequireDefault(require("./config")); var _validateOptions = _interopRequireDefault(require("./bin/validateOptions")); var _init = _interopRequireDefault(require("./bin/init")); var _tuneBox = _interopRequireDefault(require("./bin/tuneBox")); var _onEvent = _interopRequireDefault(require("./bin/onEvent")); var _animation = _interopRequireDefault(require("./bin/animation")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } var build = (instance, target, options) => { instance._target = target; instance._box = (0, _init.default)(instance._target); instance._options = (0, _validateOptions.default)(options, instance._box); instance._initial = instance._box.cloneNode(true); instance._parent = instance._initial.parentElement || document.body; instance._ss = (0, _tuneBox.default)(instance._box, instance._options); instance._activeSlide = { value: instance._options.whereToBegin }; (0, _onEvent.default)(instance._ss, instance._options, instance._activeSlide); if (options.autoScroll || options.autoScroll === 0) instance.auto(instance._options.autoScroll); }; var destroy = instance => { instance._parent.replaceChild(instance._initial, instance._box); if (instance._target instanceof Element) instance._target = instance._initial; }; class AnimScroll { constructor(target) { var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _config.default; build(this, target, options); } get target() { return this._target; } get options() { return this._options; } get activeSlide() { return this._activeSlide.value; } set target(name) { destroy(this); build(this, name, this._options); } set options(obj) { destroy(this); obj.whereToBegin = this._activeSlide.value; build(this, this._target, obj); } goTo(slideIndex) { return new Promise(resolve => { (0, _animation.default)(slideIndex, this._ss, this._options, this._activeSlide).then(() => resolve()); }); } next() { return this.goTo('next'); } prev() { return this.goTo('prev'); } auto(delay) { var direction = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'next'; var interval = this._options.animDuration + (delay || 0); return new Promise(resolve => { var autoScroll = setInterval(() => { if (!this._options.infinite && this._activeSlide.value === this._options.lastSI) { resolve(); clearInterval(autoScroll); } this.goTo(direction); }, interval); }); } } var _default = AnimScroll; exports.default = _default;