UNPKG

embla-carousel-reactive-utils

Version:

Reactive utilities for Embla Carousel

45 lines (42 loc) 1.79 kB
'use strict'; function isObject(subject) { return Object.prototype.toString.call(subject) === '[object Object]'; } function isRecord(subject) { return isObject(subject) || Array.isArray(subject); } function canUseDOM() { return !!(typeof window !== 'undefined' && window.document && window.document.createElement); } function areOptionsEqual(optionsA, optionsB) { const optionsAKeys = Object.keys(optionsA); const optionsBKeys = Object.keys(optionsB); if (optionsAKeys.length !== optionsBKeys.length) return false; const breakpointsA = JSON.stringify(Object.keys(optionsA.breakpoints || {})); const breakpointsB = JSON.stringify(Object.keys(optionsB.breakpoints || {})); if (breakpointsA !== breakpointsB) return false; return optionsAKeys.every(key => { const valueA = optionsA[key]; const valueB = optionsB[key]; if (typeof valueA === 'function') return `${valueA}` === `${valueB}`; if (!isRecord(valueA) || !isRecord(valueB)) return valueA === valueB; return areOptionsEqual(valueA, valueB); }); } function sortAndMapPluginToOptions(plugins) { return plugins.concat().sort((a, b) => a.name > b.name ? 1 : -1).map(plugin => plugin.options); } function arePluginsEqual(pluginsA, pluginsB) { if (pluginsA.length !== pluginsB.length) return false; const optionsA = sortAndMapPluginToOptions(pluginsA); const optionsB = sortAndMapPluginToOptions(pluginsB); return optionsA.every((optionA, index) => { const optionB = optionsB[index]; return areOptionsEqual(optionA, optionB); }); } exports.areOptionsEqual = areOptionsEqual; exports.arePluginsEqual = arePluginsEqual; exports.canUseDOM = canUseDOM; exports.sortAndMapPluginToOptions = sortAndMapPluginToOptions; //# sourceMappingURL=embla-carousel-reactive-utils.cjs.js.map