anim-scroll
Version:
Small library to animate your web pages
103 lines (79 loc) • 2.81 kB
JavaScript
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;
;