define(function(require){const DecorillaView=require("DecorillaView");const MainController=require("main");let Modal;return DecorillaView.extend({defaults:{selectedCategory:0,isDragging:!1,prevX:0,roomFlyerUrl:"/site/roomFlyerUpgraded",prevArrow:'',nextArrow:'',isSwiping:!1,swipingPrevX:0,},initialize:function(options){this.options=$.extend({},this.defaults,options||{});Modal=MainController.requireModal(this.options);this.dec_reg_from_page_key=$('body').data('dec_reg_from_page_key');$('.category-btn').on('click',$.proxy(this.handleCategoryClick,this));$('.carousel-categories').on('mousedown',$.proxy(this.handleCategoryMouseDown,this));$('.carousel-categories').on('mousemove',$.proxy(this.handleCategoryDrag,this));$('.carousel-categories').on('mouseup',$.proxy(this.handleCategoryMouseUp,this));$('.carousel-categories').on('mouseleave',$.proxy(this.handleCategoryMouseUp,this));$('.carousel-categories').on('touchstart',$.proxy(this.handleCategoryTouchStart,this));$('.carousel-categories').on('touchmove',$.proxy(this.handleCategoryTouchMove,this));$('.carousel-categories').on('touchend',$.proxy(this.handleCategoryMouseUp,this));let $sliderCarousel=$('.carousel-slider-'+this.options.selectedCategory);let $totalSlides=$($sliderCarousel).find('.slider-container').length;$sliderCarousel.on('init',$.proxy(function(){$sliderCarousel.find('.slick-slide').on('click',$.proxy(this.handleRoomClick,this,$sliderCarousel)).on('touchstart',$.proxy(this.handleRoomTouchStart,this)).on('touchmove',$.proxy(this.handleRoomTouchMove,this)).on('mousedown',$.proxy(this.handleRoomMouseDown,this)).on('mousemove',$.proxy(this.handleRoomMouseMove,this));if($(window).width()<768){$sliderCarousel.find('.slick-prev,.slick-next').css({display:'none'})}},this));let slickCarouselDefaults={'swipeToSlide':!0,'variableWidth':!0,'centerPadding':'0px','speed':200,'prevArrow':'','nextArrow':''};$sliderCarousel.slick(slickCarouselDefaults);$('.carousel-slider-master').removeClass('d-none').removeClass('hidden');let self=this;$(window).resize(function(){if($(window).width()<768){$sliderCarousel.find('.slick-prev,.slick-next').css({display:'none'})}else{$sliderCarousel.find('.slick-prev,.slick-next').css({display:'inline-block'})} self.centerSlide();self.handleCategoriesTitles()});this.createDots($totalSlides,'.carousel-slider-'+this.options.selectedCategory);this.centerSlide();this.handleCategoriesTitles()},centerSlide:function(){let $sliderCarousel=$('.carousel-slider-'+this.options.selectedCategory);let firstSlide=$sliderCarousel.find('.slider-container')[0];let slideWidth=$(firstSlide).outerWidth(!0);let sliderWidth=$sliderCarousel.width();let result=sliderWidth/slideWidth let decimalPart=result-Math.trunc(result);if(result>=3||result<2){let newPadding=decimalPart*slideWidth/2+10;$sliderCarousel.find('.slick-list').css('padding','0 '+newPadding+'px').css('margin-left','0')}else{let newMargin=(1-decimalPart)*slideWidth/2-10;$sliderCarousel.find('.slick-list').css('padding','0').css('margin-left','-'+newMargin+'px')}},handleCategoryClick:function(evt){evt.stopPropagation();evt.preventDefault();let $btn=$(evt.currentTarget);if($btn.hasClass('active')||$btn.hasClass('category-disabled')){return} let $sliderCarousel=$('#imagesCarousel');let classId=$btn.data('class-id');$sliderCarousel.find('.category-btn').removeClass('active').addClass('category-disabled');$sliderCarousel.find('.category-btn-'+classId).addClass('active');$sliderCarousel.find('.mobile-category-title').html($sliderCarousel.find('.mobile-categories .category-btn.active').html());$carouselSliderActive=$sliderCarousel.find('.carousel-slider-active');$carouselSliderActive.find('.slider-container').addClass('loading');let $imageMasters=$(".carousel-slider-"+classId);let $totalSlides=$($imageMasters).find('.slider-container').length;if(!$imageMasters.hasClass('initialised')){$imageMasters.addClass('initialised');$imageMasters.on('init',$.proxy(function(){$imageMasters.find('.slick-slide').on('click',$.proxy(this.handleRoomClick,this,$imageMasters)).on('touchstart',$.proxy(this.handleRoomTouchStart,this)).on('touchmove',$.proxy(this.handleRoomTouchMove,this)).on('mousedown',$.proxy(this.handleRoomMouseDown,this)).on('mousemove',$.proxy(this.handleRoomMouseMove,this));if($(window).width()<768){$imageMasters.find('.slick-prev,.slick-next').css({display:'none'})}},this));let slickCarouselDefaults={'variableWidth':!0,'centerPadding':'0px','speed':200,'swipeToSlide':!0,'prevArrow':'','nextArrow':''};$imageMasters.slick(slickCarouselDefaults);this.createDots($totalSlides,".carousel-slider-"+classId)} $imageMasters.slick("slickGoTo",0);$carouselSliderActive.fadeOut(Math.floor(Math.random()*500)+100,function(){$carouselSliderActive.removeClass('carousel-slider-active').addClass('hide').find('.slider-container').removeClass('loading');$sliderCarousel.find('.category-btn').removeClass('category-disabled');$(this).attr({'style':'display:normal'});$sliderCarousel.fadeIn(Math.floor(Math.random()*500)+100,function(){$sliderCarousel.find('.carousel-slider-'+classId).removeClass('hide').addClass('carousel-slider-active');$imageMasters.slick("slickGoTo",0)})});let container=$($btn).parents(".carousel-categories-container")[0];let categories=$(container).find(".carousel-categories");let left=parseInt($(categories).css("margin-left"));if($btn[0].offsetLeft+$btn[0].offsetWidth>container.offsetWidth){categories.css('margin-left',(left-$btn[0].offsetWidth)+"px")}else{let $next=$($btn).next();if($next.length&&$next[0].offsetLeft+$next[0].offsetWidth>container.offsetWidth){categories.css('margin-left',(left-$next[0].offsetWidth)+"px")}else{if($btn[0].offsetLeft'+'
  • '+' '+'
  • ';for(let i=2;i<=$totalDots;i++){dots=dots+' '} dots=dots+' '+'';$($sliderCarousel).append(dots);$($sliderCarousel).find('.slick-dots button').on('click',$.proxy(this.handleDotClick,this,$sliderCarousel));$($sliderCarousel).on('afterChange',$.proxy(function(event,slick,currentSlide){let dot=Math.min(Math.round((currentSlide-1)/$slidesPerDot),9);let dots=$sliderCarousel.find('.slick-dots li');if(!$(dots[dot]).hasClass('slick-active')){$($sliderCarousel).find('.slick-dots .slick-active').removeClass('slick-active');$(dots[dot]).addClass('slick-active')}},this))},handleDotClick:function(carousel,evt){let dot=$(evt.currentTarget);let container=$(dot).parents("ul");$(carousel).slick('slickGoTo',$(dot).data('slide'));$(container).find('.slick-active').removeClass('slick-active');$(dot).parent().addClass('slick-active')},handleCategoriesTitles:function(){const container=$(".carousel-categories-container")[0];const categories=$(container).find(".carousel-categories");const titles=$(categories).find("button");let hidden=0;let totalTitlesWidth=0;categories.css('margin-left',"14px");for(let i=0;icontainer.offsetWidth&&titles[i].offsetLeft>container.offsetWidth){hidden++} totalTitlesWidth+=titles[i].offsetWidth} if(hidden==0){let margin=(container.offsetWidth-totalTitlesWidth-72)/2;if(margin<14){margin=14} categories.css('margin-left',margin+"px")}},handleCategoryMouseDown:function(evt){this.options.isDragging=!0;this.options.prevX=evt.pageX},handleCategoryTouchStart:function(evt){this.options.isDragging=!0;let e=(typeof evt.originalEvent==='undefined')?evt:evt.originalEvent;let touch=e.touches[0]||e.changedTouches[0];this.options.prevX=touch.pageX},handleCategoryDrag:function(evt){evt.stopPropagation();evt.preventDefault();evt.cancelBubble=!0;evt.returnValue=!1;if(this.options.isDragging){let category=$(evt.currentTarget);let container=$(category).parents(".carousel-categories-container")[0];let categories=$(container).find(".carousel-categories");let titles=$(categories).find(".category-btn");if(titles[0].offsetLeft>=0&&titles[titles.length-1].offsetLeft+titles[titles.length-1].offsetWidth<=container.offsetWidth){return} if((titles[0].offsetLeft+evt.pageX-this.options.prevX>container.offsetWidth-50)||(titles[titles.length-1].offsetLeft+evt.pageX-this.options.prevX<50)){return} let left=parseInt($(categories).css("margin-left"));categories.css('margin-left',(left+evt.pageX-this.options.prevX)+"px")} return!1},handleCategoryTouchMove:function(evt){evt.stopPropagation();evt.preventDefault();evt.cancelBubble=!0;evt.returnValue=!1;if(this.options.isDragging){let category=$(evt.currentTarget);let container=$(category).parents(".carousel-categories-container")[0];let categories=$(container).find(".carousel-categories");let titles=$(categories).find(".category-btn");if(titles[0].offsetLeft>=0&&titles[titles.length-1].offsetLeft+titles[titles.length-1].offsetWidth<=container.offsetWidth){return} let e=(typeof evt.originalEvent==='undefined')?evt:evt.originalEvent;let touch=e.touches[0]||e.changedTouches[0];if((titles[0].offsetLeft+touch.pageX-this.options.prevX>container.offsetWidth-$(window).width()*.8)||(titles[titles.length-1].offsetLeft+touch.pageX-this.options.prevX<$(window).width()*.8)){return} let left=parseInt($(categories).css("margin-left"));categories.css('margin-left',(left+touch.pageX-this.options.prevX)+"px")} return!1},handleCategoryMouseUp:function(){this.options.isDragging=!1},handleRoomClick:function($sliderCarousel,evt){if(this.options.isSwiping){return} var $btn=$(evt.currentTarget);if(!$($btn).hasClass('slick-active')){$($sliderCarousel).slick('slickGoTo',$($btn).data('slick-index'))} let remoteUrl=this.options.roomFlyerUrl+'/1/sample/'+$btn.data('index');remoteUrl=remoteUrl+'/carousel/'+$($btn).closest(".carousel-slider").data("class-id");if(this.dec_reg_from_page_key){remoteUrl=`${remoteUrl}/dec_reg_from_page_key/${this.dec_reg_from_page_key}`} this.modal=new Modal({remoteUrl:remoteUrl,buttons:[],modalDialogClass:"modal-xl modal-dialog-centered"})},handleRoomMouseDown:function(evt){this.options.isSwiping=!1;this.options.swipingPrevX=evt.pageX},handleRoomMouseMove:function(evt){const moveX=evt.pageX-this.options.swipingPrevX;if(Math.abs(moveX)>10){this.options.isSwiping=!0}},handleRoomTouchStart:function(evt){this.options.isSwiping=!1;let e=(typeof evt.originalEvent==='undefined')?evt:evt.originalEvent;let touch=e.touches[0]||e.changedTouches[0];this.options.swipingPrevX=touch.pageX},handleRoomTouchMove:function(evt){let e=(typeof evt.originalEvent==='undefined')?evt:evt.originalEvent;let touch=e.touches[0]||e.changedTouches[0];const moveX=touch.pageX-this.options.swipingPrevX;if(Math.abs(moveX)>10){this.options.isSwiping=!0}},})})