UNPKG

infinity-forge

Version:
371 lines • 13 kB
"use strict"; var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) { if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) { if (ar || !(i in from)) { if (!ar) ar = Array.prototype.slice.call(from, 0, i); ar[i] = from[i]; } } return to.concat(ar || Array.prototype.slice.call(from)); }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.animateCSSModeScroll = animateCSSModeScroll; exports.deleteProps = deleteProps; exports.nextTick = nextTick; exports.now = now; exports.getTranslate = getTranslate; exports.isObject = isObject; exports.extend = extend; exports.getComputedStyle = getComputedStyle; exports.setCSSProperty = setCSSProperty; exports.getSlideTransformEl = getSlideTransformEl; exports.showWarning = showWarning; exports.findElementsInElements = findElementsInElements; exports.createElement = createElement; exports.elementChildren = elementChildren; exports.elementOffset = elementOffset; exports.elementPrevAll = elementPrevAll; exports.elementNextAll = elementNextAll; exports.elementStyle = elementStyle; exports.elementIndex = elementIndex; exports.elementParents = elementParents; exports.elementTransitionEnd = elementTransitionEnd; exports.elementOuterSize = elementOuterSize; exports.makeElementsArray = makeElementsArray; //@ts-nocheck var classes_to_tokens_1 = __importDefault(require("./classes-to-tokens.js")); var document_1 = require("../ssr-window/document.js"); var window_1 = require("../ssr-window/window.js"); function deleteProps(obj) { var object = obj; Object.keys(object).forEach(function (key) { try { object[key] = null; } catch (e) { // no getter for object } try { delete object[key]; } catch (e) { // something got wrong } }); } function nextTick(callback, delay) { if (delay === void 0) { delay = 0; } return setTimeout(callback, delay); } function now() { return Date.now(); } function getComputedStyle(el) { var window = (0, window_1.getWindow)(); var style; if (window.getComputedStyle) { style = window.getComputedStyle(el, null); } if (!style && el.currentStyle) { style = el.currentStyle; } if (!style) { style = el.style; } return style; } function getTranslate(el, axis) { if (axis === void 0) { axis = 'x'; } var window = (0, window_1.getWindow)(); var matrix; var curTransform; var transformMatrix; var curStyle = getComputedStyle(el, null); if (window.WebKitCSSMatrix) { curTransform = curStyle.transform || curStyle.webkitTransform; if (curTransform.split(',').length > 6) { curTransform = curTransform .split(', ') .map(function (a) { return a.replace(',', '.'); }) .join(', '); } // Some old versions of Webkit choke when 'none' is passed; pass // empty string instead in this case transformMatrix = new window.WebKitCSSMatrix(curTransform === 'none' ? '' : curTransform); } else { transformMatrix = curStyle.MozTransform || curStyle.OTransform || curStyle.MsTransform || curStyle.msTransform || curStyle.transform || curStyle.getPropertyValue('transform').replace('translate(', 'matrix(1, 0, 0, 1,'); matrix = transformMatrix.toString().split(','); } if (axis === 'x') { // Latest Chrome and webkits Fix if (window.WebKitCSSMatrix) curTransform = transformMatrix.m41; // Crazy IE10 Matrix else if (matrix.length === 16) curTransform = parseFloat(matrix[12]); // Normal Browsers else curTransform = parseFloat(matrix[4]); } if (axis === 'y') { // Latest Chrome and webkits Fix if (window.WebKitCSSMatrix) curTransform = transformMatrix.m42; // Crazy IE10 Matrix else if (matrix.length === 16) curTransform = parseFloat(matrix[13]); // Normal Browsers else curTransform = parseFloat(matrix[5]); } return curTransform || 0; } function isObject(o) { return (typeof o === 'object' && o !== null && o.constructor && Object.prototype.toString.call(o).slice(8, -1) === 'Object'); } function isNode(node) { // eslint-disable-next-line if (typeof window !== 'undefined' && typeof window.HTMLElement !== 'undefined') { return node instanceof HTMLElement; } return node && (node.nodeType === 1 || node.nodeType === 11); } function extend() { var args = []; for (var _i = 0; _i < arguments.length; _i++) { args[_i] = arguments[_i]; } var to = Object(args[0]); var noExtend = ['__proto__', 'constructor', 'prototype']; for (var i = 1; i < args.length; i += 1) { var nextSource = args[i]; if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) { var keysArray = Object.keys(Object(nextSource)).filter(function (key) { return noExtend.indexOf(key) < 0; }); for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) { var nextKey = keysArray[nextIndex]; var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey); if (desc !== undefined && desc.enumerable) { if (isObject(to[nextKey]) && isObject(nextSource[nextKey])) { if (nextSource[nextKey].__swiper__) { to[nextKey] = nextSource[nextKey]; } else { extend(to[nextKey], nextSource[nextKey]); } } else if (!isObject(to[nextKey]) && isObject(nextSource[nextKey])) { to[nextKey] = {}; if (nextSource[nextKey].__swiper__) { to[nextKey] = nextSource[nextKey]; } else { extend(to[nextKey], nextSource[nextKey]); } } else { to[nextKey] = nextSource[nextKey]; } } } } } return to; } function setCSSProperty(el, varName, varValue) { el.style.setProperty(varName, varValue); } function animateCSSModeScroll(_a) { var swiper = _a.swiper, targetPosition = _a.targetPosition, side = _a.side; var window = (0, window_1.getWindow)(); var startPosition = -swiper.translate; var startTime = null; var time; var duration = swiper.params.speed; swiper.wrapperEl.style.scrollSnapType = 'none'; window.cancelAnimationFrame(swiper.cssModeFrameID); var dir = targetPosition > startPosition ? 'next' : 'prev'; var isOutOfBound = function (current, target) { return (dir === 'next' && current >= target) || (dir === 'prev' && current <= target); }; var animate = function () { var _a; time = new Date().getTime(); if (startTime === null) { startTime = time; } var progress = Math.max(Math.min((time - startTime) / duration, 1), 0); var easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2; var currentPosition = startPosition + easeProgress * (targetPosition - startPosition); if (isOutOfBound(currentPosition, targetPosition)) { currentPosition = targetPosition; } swiper.wrapperEl.scrollTo((_a = {}, _a[side] = currentPosition, _a)); if (isOutOfBound(currentPosition, targetPosition)) { swiper.wrapperEl.style.overflow = 'hidden'; swiper.wrapperEl.style.scrollSnapType = ''; setTimeout(function () { var _a; swiper.wrapperEl.style.overflow = ''; swiper.wrapperEl.scrollTo((_a = {}, _a[side] = currentPosition, _a)); }); window.cancelAnimationFrame(swiper.cssModeFrameID); return; } swiper.cssModeFrameID = window.requestAnimationFrame(animate); }; animate(); } function getSlideTransformEl(slideEl) { return (slideEl.querySelector('.swiper-slide-transform') || (slideEl.shadowRoot && slideEl.shadowRoot.querySelector('.swiper-slide-transform')) || slideEl); } function findElementsInElements(elements, selector) { if (elements === void 0) { elements = []; } if (selector === void 0) { selector = ''; } var found = []; elements.forEach(function (el) { found.push.apply(found, el.querySelectorAll(selector)); }); return found; } function elementChildren(element, selector) { if (selector === void 0) { selector = ''; } return __spreadArray([], element.children, true).filter(function (el) { return el.matches(selector); }); } function showWarning(text) { try { console.warn(text); return; } catch (err) { // err } } function createElement(tag, classes) { var _a; if (classes === void 0) { classes = []; } var el = document.createElement(tag); (_a = el.classList).add.apply(_a, (Array.isArray(classes) ? classes : (0, classes_to_tokens_1.default)(classes))); return el; } function elementOffset(el) { var window = (0, window_1.getWindow)(); var document = (0, document_1.getDocument)(); var box = el.getBoundingClientRect(); var body = document.body; var clientTop = el.clientTop || body.clientTop || 0; var clientLeft = el.clientLeft || body.clientLeft || 0; var scrollTop = el === window ? window.scrollY : el.scrollTop; var scrollLeft = el === window ? window.scrollX : el.scrollLeft; return { top: box.top + scrollTop - clientTop, left: box.left + scrollLeft - clientLeft, }; } function elementPrevAll(el, selector) { var prevEls = []; while (el.previousElementSibling) { var prev = el.previousElementSibling; // eslint-disable-line if (selector) { if (prev.matches(selector)) prevEls.push(prev); } else prevEls.push(prev); el = prev; } return prevEls; } function elementNextAll(el, selector) { var nextEls = []; while (el.nextElementSibling) { var next = el.nextElementSibling; // eslint-disable-line if (selector) { if (next.matches(selector)) nextEls.push(next); } else nextEls.push(next); el = next; } return nextEls; } function elementStyle(el, prop) { var window = (0, window_1.getWindow)(); return window.getComputedStyle(el, null).getPropertyValue(prop); } function elementIndex(el) { var child = el; var i; if (child) { i = 0; // eslint-disable-next-line while ((child = child.previousSibling) !== null) { if (child.nodeType === 1) i += 1; } return i; } return undefined; } function elementParents(el, selector) { var parents = []; // eslint-disable-line var parent = el.parentElement; // eslint-disable-line while (parent) { if (selector) { if (parent.matches(selector)) parents.push(parent); } else { parents.push(parent); } parent = parent.parentElement; } return parents; } function elementTransitionEnd(el, callback) { function fireCallBack(e) { if (e.target !== el) return; callback.call(el, e); el.removeEventListener('transitionend', fireCallBack); } if (callback) { el.addEventListener('transitionend', fireCallBack); } } function elementOuterSize(el, size, includeMargins) { var window = (0, window_1.getWindow)(); if (includeMargins) { return (el[size === 'width' ? 'offsetWidth' : 'offsetHeight'] + parseFloat(window .getComputedStyle(el, null) .getPropertyValue(size === 'width' ? 'margin-right' : 'margin-top')) + parseFloat(window .getComputedStyle(el, null) .getPropertyValue(size === 'width' ? 'margin-left' : 'margin-bottom'))); } return el.offsetWidth; } function makeElementsArray(el) { return (Array.isArray(el) ? el : [el]).filter(function (e) { return !!e; }); } //# sourceMappingURL=utils.js.map