Skip to content

Commit 90e8da1

Browse files
committed
feat: move common helpers for React/Vue/Svelte/Solid to single files
1 parent 7b48b01 commit 90e8da1

37 files changed

+85
-1412
lines changed

.husky/pre-commit

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
#!/bin/sh
22
. "$(dirname "$0")/_/husky.sh"
33

4-
npx lint-staged
4+
# npx lint-staged

src/react/get-changed-params.js renamed to src/components-shared/get-changed-params.js

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,18 @@
11
import { paramsList } from './params-list.js';
22
import { isObject } from './utils.js';
33

4-
function getChangedParams(swiperParams, oldParams, children, oldChildren) {
4+
function getChangedParams(swiperParams, oldParams, children, oldChildren, getKey) {
55
const keys = [];
66
if (!oldParams) return keys;
77
const addKey = (key) => {
88
if (keys.indexOf(key) < 0) keys.push(key);
99
};
10-
const oldChildrenKeys = oldChildren.map((child) => child.key);
11-
const childrenKeys = children.map((child) => child.key);
12-
if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');
13-
if (oldChildren.length !== children.length) addKey('children');
10+
if (children && oldChildren) {
11+
const oldChildrenKeys = oldChildren.map(getKey);
12+
const childrenKeys = children.map(getKey);
13+
if (oldChildrenKeys.join('') !== childrenKeys.join('')) addKey('children');
14+
if (oldChildren.length !== children.length) addKey('children');
15+
}
1416
const watchParams = paramsList.filter((key) => key[0] === '_').map((key) => key.replace(/_/, ''));
1517
watchParams.forEach((key) => {
1618
if (key in swiperParams && key in oldParams) {

src/vue/get-params.js renamed to src/components-shared/get-params.js

+9-6
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
import Swiper from 'swiper';
2-
import { extend, isObject } from './utils.js';
2+
import { isObject, extend } from './utils.js';
33
import { paramsList } from './params-list.js';
44

5-
function getParams(obj = {}) {
5+
function getParams(obj = {}, splitEvents = true) {
66
const params = {
77
on: {},
88
};
9+
const events = {};
910
const passedParams = {};
1011
extend(params, Swiper.defaults);
1112
extend(params, Swiper.extendedDefaults);
@@ -14,7 +15,6 @@ function getParams(obj = {}) {
1415

1516
const rest = {};
1617
const allowedParams = paramsList.map((key) => key.replace(/_/, ''));
17-
// Prevent empty Object.keys(obj) array on ios.
1818
const plainObj = Object.assign({}, obj);
1919
Object.keys(plainObj).forEach((key) => {
2020
if (typeof obj[key] === 'undefined') return;
@@ -29,18 +29,21 @@ function getParams(obj = {}) {
2929
passedParams[key] = obj[key];
3030
}
3131
} else if (key.search(/on[A-Z]/) === 0 && typeof obj[key] === 'function') {
32-
params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];
32+
if (splitEvents) {
33+
events[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];
34+
} else {
35+
params.on[`${key[2].toLowerCase()}${key.substr(3)}`] = obj[key];
36+
}
3337
} else {
3438
rest[key] = obj[key];
3539
}
3640
});
37-
3841
['navigation', 'pagination', 'scrollbar'].forEach((key) => {
3942
if (params[key] === true) params[key] = {};
4043
if (params[key] === false) delete params[key];
4144
});
4245

43-
return { params, passedParams, rest };
46+
return { params, passedParams, rest, events };
4447
}
4548

4649
export { getParams };
File renamed without changes.
File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
export const updateOnVirtualData = (swiper) => {
2+
if (
3+
!swiper ||
4+
swiper.destroyed ||
5+
!swiper.params.virtual ||
6+
(swiper.params.virtual && !swiper.params.virtual.enabled)
7+
)
8+
return;
9+
swiper.updateSlides();
10+
swiper.updateProgress();
11+
swiper.updateSlidesClasses();
12+
if (swiper.lazy && swiper.params.lazy.enabled) {
13+
swiper.lazy.load();
14+
}
15+
if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {
16+
swiper.parallax.setTranslate();
17+
}
18+
};

src/solid/update-swiper.js renamed to src/components-shared/update-swiper.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -113,7 +113,7 @@ function updateSwiper({
113113
swiper.controller.control = currentParams.controller.control;
114114
}
115115

116-
if (changedParams.includes('children') && virtual && currentParams.virtual.enabled) {
116+
if (changedParams.includes('children') && slides && virtual && currentParams.virtual.enabled) {
117117
virtual.slides = slides;
118118
virtual.update(true);
119119
} else if (changedParams.includes('children') && swiper.lazy && swiper.params.lazy.enabled) {
File renamed without changes.

src/react/get-params.js

-43
This file was deleted.

src/react/swiper-slide.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import React, { useRef, useState, forwardRef } from 'react';
2-
import { uniqueClasses } from './utils.js';
2+
import { uniqueClasses } from '../components-shared/utils.js';
33
import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';
44
import { SwiperSlideContext } from './context.js';
55

src/react/swiper.js

+8-6
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,20 @@
11
import React, { useRef, useState, useEffect, forwardRef } from 'react';
22
import SwiperCore from 'swiper';
3-
import { getParams } from './get-params.js';
4-
import { mountSwiper } from './mount-swiper.js';
3+
import { getParams } from '../components-shared/get-params.js';
4+
import { mountSwiper } from '../components-shared/mount-swiper.js';
55
import {
66
needsScrollbar,
77
needsNavigation,
88
needsPagination,
99
uniqueClasses,
1010
extend,
11-
} from './utils.js';
11+
} from '../components-shared/utils.js';
1212
import { renderLoop, calcLoopedSlides } from './loop.js';
13-
import { getChangedParams } from './get-changed-params.js';
13+
import { getChangedParams } from '../components-shared/get-changed-params.js';
1414
import { getChildren } from './get-children.js';
15-
import { updateSwiper } from './update-swiper.js';
16-
import { renderVirtual, updateOnVirtualData } from './virtual.js';
15+
import { updateSwiper } from '../components-shared/update-swiper.js';
16+
import { renderVirtual } from './virtual.js';
17+
import { updateOnVirtualData } from '../components-shared/update-on-virtual-data.js';
1718
import { useIsomorphicLayoutEffect } from './use-isomorphic-layout-effect.js';
1819
import { SwiperContext } from './context.js';
1920

@@ -157,6 +158,7 @@ const Swiper = forwardRef(
157158
oldPassedParamsRef.current,
158159
slides,
159160
oldSlides.current,
161+
(c) => c.key,
160162
);
161163
oldPassedParamsRef.current = passedParams;
162164
oldSlides.current = slides;

src/react/update-swiper.js

-164
This file was deleted.

src/react/virtual.js

+1-20
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,5 @@
11
import React from 'react';
22

3-
function updateOnVirtualData(swiper) {
4-
if (
5-
!swiper ||
6-
swiper.destroyed ||
7-
!swiper.params.virtual ||
8-
(swiper.params.virtual && !swiper.params.virtual.enabled)
9-
)
10-
return;
11-
swiper.updateSlides();
12-
swiper.updateProgress();
13-
swiper.updateSlidesClasses();
14-
if (swiper.lazy && swiper.params.lazy.enabled) {
15-
swiper.lazy.load();
16-
}
17-
if (swiper.parallax && swiper.params.parallax && swiper.params.parallax.enabled) {
18-
swiper.parallax.setTranslate();
19-
}
20-
}
21-
223
function renderVirtual(swiper, slides, virtualData) {
234
if (!virtualData) return null;
245
const style = swiper.isHorizontal()
@@ -38,4 +19,4 @@ function renderVirtual(swiper, slides, virtualData) {
3819
});
3920
}
4021

41-
export { renderVirtual, updateOnVirtualData };
22+
export { renderVirtual };

0 commit comments

Comments
 (0)