1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import {
- paramsList
- } from './params-list.js';
- import {
- isObject
- } from './utils.js';
- function getChangedParams(swiperParams, oldParams, children, oldChildren) {
- const keys = [];
- if (!oldParams) return keys;
- const addKey = (key) => {
- if (keys.indexOf(key) < 0) keys.push(key);
- };
- const oldChildrenKeys = oldChildren.map((child) => child.props && child.props.key);
- const childrenKeys = children.map((child) => child.props && child.props.key);
- if (oldChildrenKeys.join('') !== childrenKeys.join('')) keys.push('children');
- if (oldChildren.length !== children.length) keys.push('children');
- const watchParams = paramsList.filter((key) => key[0] === '_').map((key) => key.replace(/_/, ''));
- watchParams.forEach((key) => {
- if (key in swiperParams && key in oldParams) {
- if (isObject(swiperParams[key]) && isObject(oldParams[key])) {
- const newKeys = Object.keys(swiperParams[key]);
- const oldKeys = Object.keys(oldParams[key]);
- if (newKeys.length !== oldKeys.length) {
- addKey(key);
- } else {
- newKeys.forEach((newKey) => {
- if (swiperParams[key][newKey] !== oldParams[key][newKey]) {
- addKey(key);
- }
- });
- oldKeys.forEach((oldKey) => {
- if (swiperParams[key][oldKey] !== oldParams[key][oldKey]) addKey(key);
- });
- }
- } else if (swiperParams[key] !== oldParams[key]) {
- addKey(key);
- }
- } else if (key in swiperParams && !(key in oldParams)) {
- addKey(key);
- } else if (!(key in swiperParams) && key in oldParams) {
- addKey(key);
- }
- });
- return keys;
- }
- export {
- getChangedParams
- };
|