You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
275 lines
9.2 KiB
275 lines
9.2 KiB
import { a as getWindow, g as getDocument } from './ssr-window.esm.mjs';
|
|
|
|
function deleteProps(obj) {
|
|
const object = obj;
|
|
Object.keys(object).forEach(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) {
|
|
const window = getWindow();
|
|
let 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';
|
|
}
|
|
const window = getWindow();
|
|
let matrix;
|
|
let curTransform;
|
|
let transformMatrix;
|
|
const curStyle = getComputedStyle(el);
|
|
if (window.WebKitCSSMatrix) {
|
|
curTransform = curStyle.transform || curStyle.webkitTransform;
|
|
if (curTransform.split(',').length > 6) {
|
|
curTransform = curTransform.split(', ').map(a => 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() {
|
|
const to = Object(arguments.length <= 0 ? undefined : arguments[0]);
|
|
const noExtend = ['__proto__', 'constructor', 'prototype'];
|
|
for (let i = 1; i < arguments.length; i += 1) {
|
|
const nextSource = i < 0 || arguments.length <= i ? undefined : arguments[i];
|
|
if (nextSource !== undefined && nextSource !== null && !isNode(nextSource)) {
|
|
const keysArray = Object.keys(Object(nextSource)).filter(key => noExtend.indexOf(key) < 0);
|
|
for (let nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex += 1) {
|
|
const nextKey = keysArray[nextIndex];
|
|
const 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(_ref) {
|
|
let {
|
|
swiper,
|
|
targetPosition,
|
|
side
|
|
} = _ref;
|
|
const window = getWindow();
|
|
const startPosition = -swiper.translate;
|
|
let startTime = null;
|
|
let time;
|
|
const duration = swiper.params.speed;
|
|
swiper.wrapperEl.style.scrollSnapType = 'none';
|
|
window.cancelAnimationFrame(swiper.cssModeFrameID);
|
|
const dir = targetPosition > startPosition ? 'next' : 'prev';
|
|
const isOutOfBound = (current, target) => {
|
|
return dir === 'next' && current >= target || dir === 'prev' && current <= target;
|
|
};
|
|
const animate = () => {
|
|
time = new Date().getTime();
|
|
if (startTime === null) {
|
|
startTime = time;
|
|
}
|
|
const progress = Math.max(Math.min((time - startTime) / duration, 1), 0);
|
|
const easeProgress = 0.5 - Math.cos(progress * Math.PI) / 2;
|
|
let currentPosition = startPosition + easeProgress * (targetPosition - startPosition);
|
|
if (isOutOfBound(currentPosition, targetPosition)) {
|
|
currentPosition = targetPosition;
|
|
}
|
|
swiper.wrapperEl.scrollTo({
|
|
[side]: currentPosition
|
|
});
|
|
if (isOutOfBound(currentPosition, targetPosition)) {
|
|
swiper.wrapperEl.style.overflow = 'hidden';
|
|
swiper.wrapperEl.style.scrollSnapType = '';
|
|
setTimeout(() => {
|
|
swiper.wrapperEl.style.overflow = '';
|
|
swiper.wrapperEl.scrollTo({
|
|
[side]: currentPosition
|
|
});
|
|
});
|
|
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 elementChildren(element, selector) {
|
|
if (selector === void 0) {
|
|
selector = '';
|
|
}
|
|
return [...element.children].filter(el => el.matches(selector));
|
|
}
|
|
function createElement(tag, classes) {
|
|
if (classes === void 0) {
|
|
classes = [];
|
|
}
|
|
const el = document.createElement(tag);
|
|
el.classList.add(...(Array.isArray(classes) ? classes : [classes]));
|
|
return el;
|
|
}
|
|
function elementOffset(el) {
|
|
const window = getWindow();
|
|
const document = getDocument();
|
|
const box = el.getBoundingClientRect();
|
|
const body = document.body;
|
|
const clientTop = el.clientTop || body.clientTop || 0;
|
|
const clientLeft = el.clientLeft || body.clientLeft || 0;
|
|
const scrollTop = el === window ? window.scrollY : el.scrollTop;
|
|
const scrollLeft = el === window ? window.scrollX : el.scrollLeft;
|
|
return {
|
|
top: box.top + scrollTop - clientTop,
|
|
left: box.left + scrollLeft - clientLeft
|
|
};
|
|
}
|
|
function elementPrevAll(el, selector) {
|
|
const prevEls = [];
|
|
while (el.previousElementSibling) {
|
|
const 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) {
|
|
const nextEls = [];
|
|
while (el.nextElementSibling) {
|
|
const 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) {
|
|
const window = getWindow();
|
|
return window.getComputedStyle(el, null).getPropertyValue(prop);
|
|
}
|
|
function elementIndex(el) {
|
|
let child = el;
|
|
let 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) {
|
|
const parents = []; // eslint-disable-line
|
|
let 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) {
|
|
const window = 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;
|
|
}
|
|
|
|
export { elementParents as a, elementOffset as b, createElement as c, now as d, elementChildren as e, elementOuterSize as f, elementIndex as g, getTranslate as h, elementTransitionEnd as i, isObject as j, getSlideTransformEl as k, elementStyle as l, elementNextAll as m, nextTick as n, elementPrevAll as o, animateCSSModeScroll as p, extend as q, deleteProps as r, setCSSProperty as s };
|