import $ from 'jquery'; const { SimpleBar, navigator } = window; const $doc = $(document); // Don't run on Mac and mobile devices. const allowScrollbar = !/Mac|Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( navigator.userAgent ); if (allowScrollbar && typeof SimpleBar !== 'undefined') { // Extend VP class. $doc.on('extendClass.vpf', (event, VP) => { if (event.namespace !== 'vpf') { return; } /** * Init Simplebar plugin */ VP.prototype.initCustomScrollbar = function () { const self = this; self.emitEvent('beforeInitCustomScrollbar'); self.$items_wrap .find('.vp-portfolio__custom-scrollbar') .each(function () { const instance = SimpleBar.instances.get(this); if (!instance) { new SimpleBar(this); } }); self.emitEvent('initCustomScrollbar'); }; /** * Destroy Simplebar plugin */ VP.prototype.destroyCustomScrollbar = function () { const self = this; self.$items_wrap .find('[data-simplebar="init"].vp-portfolio__custom-scrollbar') .each(function () { const instance = SimpleBar.instances.get(this); if (instance) { instance.unMount(); } }); self.emitEvent('destroyCustomScrollbar'); }; }); // Add Items. $doc.on('addItems.vpf', (event, self, $items, removeExisting) => { if (event.namespace !== 'vpf') { return; } if (removeExisting) { self.destroyCustomScrollbar(); } self.initCustomScrollbar(); }); // Init. $doc.on('init.vpf', (event, self) => { if (event.namespace !== 'vpf') { return; } self.initCustomScrollbar(); }); // Destroy. $doc.on('destroy.vpf', (event, self) => { if (event.namespace !== 'vpf') { return; } self.destroyCustomScrollbar(); }); // Init Swiper duplicated slides scrollbars. $doc.on('initSwiper.vpf', (event, self) => { if (event.namespace !== 'vpf') { return; } if (self.options.sliderLoop === 'true') { self.initCustomScrollbar(); } }); // Fix Simplebar content size in some themes. // For example, in Astra theme in content with enabled sidebar, Simplebar calculate wrong height automatically. $(() => { $('[data-simplebar="init"].vp-portfolio__custom-scrollbar').each( function () { const instance = SimpleBar.instances.get(this); if (instance) { instance.recalculate(); } } ); }); }