get-element-params.mjs 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. import { e as extend, i as isObject, c as attrToProp, p as paramsList } from './update-swiper.mjs';
  2. import { d as defaults } from './swiper-core.mjs';
  3. const formatValue = val => {
  4. if (parseFloat(val) === Number(val)) return Number(val);
  5. if (val === 'true') return true;
  6. if (val === '') return true;
  7. if (val === 'false') return false;
  8. if (val === 'null') return null;
  9. if (val === 'undefined') return undefined;
  10. if (typeof val === 'string' && val.includes('{') && val.includes('}') && val.includes('"')) {
  11. let v;
  12. try {
  13. v = JSON.parse(val);
  14. } catch (err) {
  15. v = val;
  16. }
  17. return v;
  18. }
  19. return val;
  20. };
  21. 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'];
  22. function getParams(element, propName, propValue) {
  23. const params = {};
  24. const passedParams = {};
  25. extend(params, defaults);
  26. const localParamsList = [...paramsList, 'on'];
  27. const allowedParams = localParamsList.map(key => key.replace(/_/, ''));
  28. // First check props
  29. localParamsList.forEach(paramName => {
  30. paramName = paramName.replace('_', '');
  31. if (typeof element[paramName] !== 'undefined') {
  32. passedParams[paramName] = element[paramName];
  33. }
  34. });
  35. // Attributes
  36. const attrsList = [...element.attributes];
  37. if (typeof propName === 'string' && typeof propValue !== 'undefined') {
  38. attrsList.push({
  39. name: propName,
  40. value: isObject(propValue) ? {
  41. ...propValue
  42. } : propValue
  43. });
  44. }
  45. attrsList.forEach(attr => {
  46. const moduleParam = modulesParamsList.find(mParam => attr.name.startsWith(`${mParam}-`));
  47. if (moduleParam) {
  48. const parentObjName = attrToProp(moduleParam);
  49. const subObjName = attrToProp(attr.name.split(`${moduleParam}-`)[1]);
  50. if (typeof passedParams[parentObjName] === 'undefined') {
  51. passedParams[parentObjName] = {};
  52. }
  53. if (passedParams[parentObjName] === true) {
  54. passedParams[parentObjName] = {
  55. enabled: true
  56. };
  57. }
  58. if (passedParams[parentObjName] === false) {
  59. passedParams[parentObjName] = {
  60. enabled: false
  61. };
  62. }
  63. passedParams[parentObjName][subObjName] = formatValue(attr.value);
  64. } else {
  65. const name = attrToProp(attr.name);
  66. if (!allowedParams.includes(name)) return;
  67. const value = formatValue(attr.value);
  68. if (passedParams[name] && modulesParamsList.includes(attr.name) && !isObject(value)) {
  69. if (passedParams[name].constructor !== Object) {
  70. passedParams[name] = {};
  71. }
  72. passedParams[name].enabled = !!value;
  73. } else {
  74. passedParams[name] = value;
  75. }
  76. }
  77. });
  78. extend(params, passedParams);
  79. if (params.navigation) {
  80. params.navigation = {
  81. prevEl: '.swiper-button-prev',
  82. nextEl: '.swiper-button-next',
  83. ...(params.navigation !== true ? params.navigation : {})
  84. };
  85. } else if (params.navigation === false) {
  86. delete params.navigation;
  87. }
  88. if (params.scrollbar) {
  89. params.scrollbar = {
  90. el: '.swiper-scrollbar',
  91. ...(params.scrollbar !== true ? params.scrollbar : {})
  92. };
  93. } else if (params.scrollbar === false) {
  94. delete params.scrollbar;
  95. }
  96. if (params.pagination) {
  97. params.pagination = {
  98. el: '.swiper-pagination',
  99. ...(params.pagination !== true ? params.pagination : {})
  100. };
  101. } else if (params.pagination === false) {
  102. delete params.pagination;
  103. }
  104. return {
  105. params,
  106. passedParams
  107. };
  108. }
  109. export { getParams as g };