UNPKG

anim-scroll

Version:

Small library to animate your web pages

93 lines (74 loc) 3.13 kB
"use strict"; 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;