import { getWindow } from 'ssr-window'; import { extend } from '../../utils/utils'; var supportsResizeObserver = function supportsResizeObserver() { var window = getWindow(); return typeof window.ResizeObserver !== 'undefined'; }; export default { name: 'resize', create: function create() { var swiper = this; extend(swiper, { resize: { observer: null, createObserver: function createObserver() { if (!swiper || swiper.destroyed || !swiper.initialized) return; swiper.resize.observer = new ResizeObserver(function (entries) { var width = swiper.width, height = swiper.height; var newWidth = width; var newHeight = height; entries.forEach(function (_ref) { var contentBoxSize = _ref.contentBoxSize, contentRect = _ref.contentRect, target = _ref.target; if (target && target !== swiper.el) return; newWidth = contentRect ? contentRect.width : (contentBoxSize[0] || contentBoxSize).inlineSize; newHeight = contentRect ? contentRect.height : (contentBoxSize[0] || contentBoxSize).blockSize; }); if (newWidth !== width || newHeight !== height) { swiper.resize.resizeHandler(); } }); swiper.resize.observer.observe(swiper.el); }, removeObserver: function removeObserver() { if (swiper.resize.observer && swiper.resize.observer.unobserve && swiper.el) { swiper.resize.observer.unobserve(swiper.el); swiper.resize.observer = null; } }, resizeHandler: function resizeHandler() { if (!swiper || swiper.destroyed || !swiper.initialized) return; swiper.emit('beforeResize'); swiper.emit('resize'); }, orientationChangeHandler: function orientationChangeHandler() { if (!swiper || swiper.destroyed || !swiper.initialized) return; swiper.emit('orientationchange'); } } }); }, on: { init: function init(swiper) { var window = getWindow(); if (swiper.params.resizeObserver && supportsResizeObserver()) { swiper.resize.createObserver(); return; } // Emit resize window.addEventListener('resize', swiper.resize.resizeHandler); // Emit orientationchange window.addEventListener('orientationchange', swiper.resize.orientationChangeHandler); }, destroy: function destroy(swiper) { var window = getWindow(); swiper.resize.removeObserver(); window.removeEventListener('resize', swiper.resize.resizeHandler); window.removeEventListener('orientationchange', swiper.resize.orientationChangeHandler); } } };