anim-scroll
Version:
Small library to animate your web pages
93 lines (74 loc) • 3.13 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _index = _interopRequireDefault(require("../config/index.json"));
var _isMobile = _interopRequireDefault(require("../libs/isMobile"));
var _styleSheetToObj = _interopRequireDefault(require("../libs/styleSheetToObj"));
var _getDelay = _interopRequireDefault(require("../libs/getDelay"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var concatTr = function concatTr() {
var tr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '0s';
var delay = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '0s';
return `${tr} ${delay}`;
};
function fieldCorrection(options) {
if (typeof options === 'string' && options[0] === '.') options = (0, _styleSheetToObj.default)(options);
if (options instanceof Object && options.transitionDelay) {
options.transition = concatTr(options.transition, options.transitionDelay);
delete options.transitionDelay;
}
if (options.transition) options.trms = (0, _getDelay.default)(options.transition);
return options;
}
function validateFields(options, conf) {
var _loop = function _loop(key) {
if (options[key] instanceof Object && !/hints|hintStyle|shape|usual|hover|active|next|prev|wrapper/.test(key)) validateFields(options[key], conf[key]);else if (options[key] instanceof Array && key !== 'hints') options[key].forEach((el, i) => {
conf[key][i] = fieldCorrection(el);
});else conf[key] = fieldCorrection(options[key]);
};
for (var key in options) {
_loop(key);
}
}
function setRev(options) {
var frames = JSON.parse(JSON.stringify(options));
var animLength = options.length;
var index = 0;
frames.reverse().map((el, i) => {
index = i === 0 ? i : animLength - i;
el.transition = options[index].transition;
el.trms = options[index].trms;
if (options[index].webkitTransition) el.webkitTransition = options[index].webkitTransition;
return el;
});
return frames;
}
var setDelaySlide = (arr, delay) => {
arr.splice(1, 0, {
transition: `0s ${delay}ms`,
trms: delay
});
};
var _default = (options, box) => {
try {
validateFields(options, _index.default);
_index.default.slideAnimationRev = {
active: setRev(_index.default.slideAnimation.next),
next: setRev(_index.default.slideAnimation.active)
};
if (_index.default.delayBetweenSlides !== 0) {
setDelaySlide(_index.default.slideAnimation.next, _index.default.delayBetweenSlides);
setDelaySlide(_index.default.slideAnimationRev.next, _index.default.delayBetweenSlides);
}
_index.default.isMobile = (0, _isMobile.default)();
_index.default.lastSI = box.children.length - 1;
_index.default.animDuration = Math.max((0, _getDelay.default)(_index.default.slideAnimation.active), (0, _getDelay.default)(_index.default.slideAnimation.next));
} catch (err) {
console.warn('Error during validation options.');
console.error(err);
}
return _index.default;
};
exports.default = _default;
;