UNPKG

swiper

Version:

Most modern mobile touch slider and framework with hardware accelerated transitions

148 lines (145 loc) 4.55 kB
import { d as defaults } from './swiper-core.mjs'; import { e as extend, p as paramsList, i as isObject, a as attrToProp } from './update-swiper.mjs'; const formatValue = (val) => { if (typeof val !== 'string') { if (val === undefined || val === null) return val; if (typeof val === 'number' || typeof val === 'boolean') return val; if (isObject(val)) return val; return val; } if (parseFloat(val) === Number(val)) return Number(val); if (val === 'true') return true; if (val === '') return true; if (val === 'false') return false; if (val === 'null') return null; if (val === 'undefined') return undefined; if (val.includes('{') && val.includes('}') && val.includes('"')) { try { return JSON.parse(val); } catch { return val; } } return val; }; const modulesParamsList = [ 'a11y', 'autoplay', 'controller', 'cards-effect', 'coverflow-effect', 'creative-effect', 'cube-effect', 'fade-effect', 'flip-effect', 'free-mode', 'grid', 'hash-navigation', 'history', 'keyboard', 'mousewheel', 'navigation', 'pagination', 'parallax', 'scrollbar', 'thumbs', 'virtual', 'zoom', ]; function getParams(element, propName, propValue) { const params = {}; const passedParams = {}; extend(params, defaults); const localParamsList = [...paramsList, 'on']; const allowedParams = localParamsList.map((key) => key.replace(/_/, '')); // First check props localParamsList.forEach((rawName) => { const paramName = rawName.replace('_', ''); if (typeof element[paramName] !== 'undefined') { passedParams[paramName] = element[paramName]; } }); // Attributes const attrsList = [...element.attributes]; if (typeof propName === 'string' && typeof propValue !== 'undefined') { attrsList.push({ name: propName, value: isObject(propValue) ? { ...propValue } : propValue, }); } attrsList.forEach((attr) => { const moduleParam = modulesParamsList.find((mParam) => attr.name.startsWith(`${mParam}-`)); if (moduleParam) { const parentObjName = attrToProp(moduleParam); const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]); if (typeof passedParams[parentObjName] === 'undefined') { passedParams[parentObjName] = {}; } if (passedParams[parentObjName] === true) { passedParams[parentObjName] = { enabled: true }; } if (passedParams[parentObjName] === false) { passedParams[parentObjName] = { enabled: false }; } passedParams[parentObjName][subObjName] = formatValue(attr.value); } else { const name = attrToProp(attr.name); if (!allowedParams.includes(name)) return; const value = formatValue(attr.value); const existing = passedParams[name]; if (existing && modulesParamsList.includes(attr.name) && !isObject(value)) { const existingObj = isObject(existing) ? existing : {}; existingObj.enabled = !!value; passedParams[name] = existingObj; } else { passedParams[name] = value; } } }); extend(params, passedParams); if (params.navigation) { params.navigation = { prevEl: '.swiper-button-prev', nextEl: '.swiper-button-next', ...(params.navigation !== true ? params.navigation : {}), }; } else if (params.navigation === false) { delete params.navigation; } if (params.scrollbar) { params.scrollbar = { el: '.swiper-scrollbar', ...(params.scrollbar !== true ? params.scrollbar : {}), }; } else if (params.scrollbar === false) { delete params.scrollbar; } if (params.pagination) { params.pagination = { el: '.swiper-pagination', ...(params.pagination !== true ? params.pagination : {}), }; } else if (params.pagination === false) { delete params.pagination; } return { params, passedParams }; } export { getParams as g };