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 };