{"version":3,"sources":["webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/components/modify/component.modify.cart.item.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/node_modules/jquery-zoom/jquery.zoom.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/plugins/jquery.lightgallery.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/import/service.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/import/js/plugins/md5.min.js","webpack:///C:/GitHub/Framework8_Web/Framework8/Framework8/Front/App/Modules/Product/import/product.js"],"names":["angular","module","component","require","productCtrl","bindings","size","btnClass","isPrimary","addToCartActive","allowAddToCart","titleAdd","titleAlert","titleModifyOk","tooltip","modalCtrl","device","template","controller","$scope","$element","$compile","AppService","CartService","ModalService","toastr","ctrl","this","$onInit","async","response","html","default","contents","loadTemplate","addToCart","products","getProductsToAdd","quantity","idLine","showLoader","then","status","updateParams","results","success","designation","allowHtml","extraData","data","img","close","getTranslate","translate","warning","errors","TryLater","ErrorHasOccurred","catch","error","$","defaults","url","callback","target","duration","on","touch","onZoomIn","onZoomOut","magnify","zoom","source","targetHeight","targetWidth","sourceHeight","sourceWidth","xRatio","yRatio","offset","$target","position","css","$source","style","test","overflow","width","height","addClass","top","left","opacity","border","maxWidth","maxHeight","appendTo","init","outerWidth","outerHeight","move","e","pageX","pageY","Math","max","min","fn","options","each","settings","extend","document","createElement","$img","mousemove","clicked","touched","srcElement","querySelector","getAttribute","currentSrc","src","one","off","onload","remove","bind","start","stop","fadeTo","support","isFunction","call","which","preventDefault","originalEvent","touches","changedTouches","setAttribute","alt","window","undefined","mode","cssEasing","easing","speed","startClass","backdropDuration","hideBarsDelay","useLeft","closable","loop","escKey","keyPress","controls","slideEndAnimatoin","hideControlOnEnd","mousewheel","getCaptionFromTitleOrAlt","appendSubHtmlTo","subHtmlSelectorRelative","preload","showAfterLoad","selector","selectWithin","nextHtml","prevHtml","fullscreenHtml","closeHtml","index","iframeMaxWidth","download","counter","appendCounterTo","swipeThreshold","enableSwipe","enableDrag","dynamic","dynamicEl","galleryId","Plugin","element","el","$el","s","constructor","Array","length","modules","lGalleryOn","lgBusy","hideBartimeout","isTouch","documentElement","$items","find","children","$slide","$outer","prototype","_this","_hash","location","hash","indexOf","parseInt","split","hasClass","setTimeout","build","trigger","event","er","returnValue","structure","lightGallery","key","slide","arrow","closeGallery","removeClass","clearTimeout","list","i","subHtmlCont","append","setTop","eq","doCss","$inner","prevScrollTop","scrollTop","wH","$lGallery","transition","root","isVideo","attr","html5","youtube","match","vimeo","dailymotion","vk","addHtml","subHtmlUrl","$currentEle","subHtml","first","fL","substring","load","j","loadContent","rec","delay","_$img","_src","_poster","_srcset","_sizes","_html","_hasPoster","getResponsiveSrc","srcItms","rsWidth","rsSrc","__src","splice","push","wWidth","poster","responsive","srcset","sizes","iframe","_isVideo","prepend","videoClass","picturefill","elements","_speed","fromTouch","fromThumb","_prevIndex","_length","_time","_next","_prev","downloadUrl","arrowDisable","touchPrev","touchNext","text","goToNextSlide","goToPrevSlide","keyCode","destroy","removeAttr","setTranslate","xValue","yValue","transform","touchMove","startCoords","endCoords","distance","abs","touchEnd","not","isMoved","manageSwipeClass","targetTouches","isDraging","scrollLeft","deltaY","mousedown","is","d","removeData","err","jQuery","fullScreen","Fullscreen","core","fullscreenEnabled","webkitFullscreenEnabled","mozFullScreenEnabled","msFullscreenEnabled","requestFullscreen","msRequestFullscreen","mozRequestFullScreen","webkitRequestFullscreen","exitFullscreen","fullscreenElement","webkitFullscreenElement","mozFullScreenElement","msExitFullscreen","mozCancelFullScreen","webkitExitFullscreen","toggleClass","msFullscreenElement","fullscreen","thumbnail","animateThumb","currentPagerPosition","thumbWidth","thumbContHeight","thumbMargin","exThumbImage","showThumbByDefault","toogleThumb","pullCaptionUp","enableThumbDrag","enableThumbSwipe","loadYoutubeThumbnail","youtubeThumbSize","loadVimeoThumbnail","vimeoThumbSize","loadDailymotionThumbnail","Thumbnail","$thumbOuter","thumbOuterWidth","thumbTotalWidth","thumbIndex","thumbClickable","toogle","thumbkeyPress","$thumb","thumbList","vimeoErrorThumbSize","getThumb","thumb","thumbImg","item","icon","$this","vimeoVideoId","getJSON","format","_$this","value","animate","tempLeft","videoMaxWidth","youtubePlayerParams","vimeoPlayerParams","dailymotionPlayerParams","vkPlayerParams","videojs","videojsOptions","Video","videoLoaded","loadVideo","get","play","loadOnClick","youtubePlayer","vimeoPlayer","dailymotionPlayer","html5Player","contentWindow","postMessage","$f","api","_loadVideo","$tempImg","prevIndex","$videoSlide","vkPlayer","pause","replace","noposter","video","autoplay","a","param","b","g","h","arguments","l","m","n","o","p","fix","type","detail","wheelDelta","wheelDeltaY","wheelDeltaX","axis","HORIZONTAL_AXIS","deltaX","deltaMode","q","r","f","k","normalizeOffset","getBoundingClientRect","clientX","clientY","deltaFactor","offsetX","offsetY","unshift","c","dispatch","handle","apply","adjustOldDeltas","documentMode","slice","fixHooks","mouseHooks","special","version","setup","addEventListener","onmousewheel","getLineHeight","getPageHeight","teardown","removeEventListener","unmousewheel","unbind","factory","setProduct","idGroup","product","setProductQuantity","setProductPrice","price","costTTC","costHT","showTTCPrice","prices","discountedCostTTC","discountedCostHT","Price","isConditioningPrice","setProductCustomization","Customization","customization","cloneDeep","Items","forEach","Group","Field","Comment","Fields","field","md5","toJson","setCustomizablePrice","CustomizablePrice","initial","current","setKitElement","Type","Required","Product","uniqueId","ProductPrices","AdditionalCost","TTCPrice","SelectedProduct","IDProduct","HTPrice","TTCDiscountedPrice","HTDiscountedPrice","idKitComponent","Id","idProduct","currentModel","Quantity","AllowAddToCart","required","Designation","idPicture","IDPicture","Elements","Object","keys","keyElement","IDKitComponent","getProduct","getProductsData","getProductCustomisation","getActive","result","keyComponent","t","v","w","A","charCodeAt","C","y","u","Int32Array","I","String","fromCharCode","join","global","$rootScope","$window","$location","$timeout","$filter","ProductService","HttpService","CdnService","Environment","initModule","scope","initCustomizablePrice","priceSlider","customizablePrice","MinPrice","floor","ceil","MaxPrice","step","Step","showSelectionBar","onEnd","update","setPricesData","eco","setPrice","qty","productData","customizationCostHT","customizationCostTTC","EcoContribution","inRange","range","initZoom","galleryZoomInit","$broadcast","setInputQuantity","selected","btnEnabled","_product$Customizable","_product$Customizable2","customizablePriceTooltip","Value","AdditionalCostTTC","AdditionalCostHT","CustomizationType","IDCustomizationListItem","customizationTooltip","isDefined","setQuantity","inc","changeAttribute","urlGroup","attributes","attribute","productsData","$body","path","setActiveTab","nb","active","giftlist","logged","openCmsLoyalty","title","show","modalTitle","modalAutoScroll","openModuloInfo","openModalReviews","id","openShippingInfos","setCustomizablePriceSlider","$on","nbReviews","galleryImgLoader","zoomLoaded","isGiftCard","parents","brand","reference","merge","isKit","showComponents","str","updateFromCart","params","getParams","Visitor","CardType","ShowTTCPrice","showEcoContribution","loaded","$$phase","$digest","onInit","initPrice","HasDiscount","jsonPrice","Discount","PricePackaging","HasDegressivePrice","DegressivePrice","Number","caption","txtFirstRange","txtRange","txtLastRange","IsDegressivePrice","HasConditioningPrice","ConditioningPrice","priceTotalConditioning","txtConditioning","initShare","appId","socialshare","urlString","encodeURIComponent","socialshareUrl","socialshareText","socialshareHashtags","socialshareMedia","open","innerHeight","innerWidth","facebookShare","pinterestShare","twitterShare","ViewEmail","socialshareEmail","Url","resultMessage","initCustomization","dateOptions","showWeeks","minDate","Date","yearRows","dateFormat","successfile","file","name","serverName","removedfile","model","IsGroup","reqPlaceholder","option","content","hasItemGroups","some","hasNoItemGroups","isUndefined","selectpicker","initKit","updateComponent","Components","URL","includes","cache","IsGroupingProduct","selectCustomComponent","_component","_element","idKit","post","customGroups","groupTitle","groupFirstElement","productDefault","IDProductDefault","KitQuantity","Attributes","attrValueSelected","Values","Selected","Key","initComponent","initGallery","attrs","$main","$sub","$video","startZoom","ajax","dataType","$apply","zoomId","hasZoom","zoomSize","srcDistrimage","parent","siblings","click","navigator","userAgent","toLowerCase","IsLogged","FirstName","Email","submit","loading","messages","MessageSent"],"mappings":"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","file":"product.daf6ab1c958b57f7bc3b.js","sourcesContent":["export default angular\r\n .module('component.modify.cart.item', [])\r\n\r\n .component('buttonModifyCartItem', {\r\n require: {\r\n productCtrl: '?^^productDetail'\r\n },\r\n bindings: {\r\n size: '@?',\r\n btnClass: '@',\r\n isPrimary: '<',\r\n addToCartActive: '<',\r\n allowAddToCart: '<',\r\n titleAdd: '@?',\r\n titleAlert: '@?',\r\n titleModifyOk: '@?',\r\n tooltip: '@',\r\n modalCtrl: '<',\r\n device: '<'\r\n },\r\n template: '',\r\n /* @ngInject */\r\n controller: function ($scope, $element, $compile, AppService, CartService, ModalService, toastr) {\r\n const ctrl = this;\r\n\r\n ctrl.$onInit = () => {\r\n loadTemplate();\r\n };\r\n\r\n ctrl.addToCart = () => {\r\n const products = ctrl.productCtrl.getProductsToAdd(ctrl.modalCtrl.quantity, 0);\r\n products[0].idLine = ctrl.modalCtrl.idLine;\r\n\r\n ctrl.modalCtrl.showLoader = true;\r\n CartService.addToCart(products).then(response => {\r\n ctrl.modalCtrl.showLoader = false;\r\n if (response.status === 'OK') {\r\n AppService.updateParams(response.results);\r\n toastr.success(ctrl.designation, ctrl.titleModifyOk, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_addtocart.tpl',\r\n data: {\r\n img: products[0].img\r\n }\r\n }\r\n });\r\n ModalService.close();\r\n } else {\r\n AppService.getTranslate()\r\n .then(translate => {\r\n toastr.warning(translate.errors.TryLater, translate.errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n });\r\n };\r\n\r\n async function loadTemplate() {\r\n const response = await import(/* webpackChunkName: \"modify\" */ 'import/js/components/modify/component.modify.cart.item.html');\r\n $element.html(response.default);\r\n $compile($element.contents())($scope);\r\n }\r\n }\r\n });\r\n","/*!\n\tZoom 1.7.21\n\tlicense: MIT\n\thttp://www.jacklmoore.com/zoom\n*/\n(function ($) {\n\tvar defaults = {\n\t\turl: false,\n\t\tcallback: false,\n\t\ttarget: false,\n\t\tduration: 120,\n\t\ton: 'mouseover', // other options: grab, click, toggle\n\t\ttouch: true, // enables a touch fallback\n\t\tonZoomIn: false,\n\t\tonZoomOut: false,\n\t\tmagnify: 1\n\t};\n\n\t// Core Zoom Logic, independent of event listeners.\n\t$.zoom = function(target, source, img, magnify) {\n\t\tvar targetHeight,\n\t\t\ttargetWidth,\n\t\t\tsourceHeight,\n\t\t\tsourceWidth,\n\t\t\txRatio,\n\t\t\tyRatio,\n\t\t\toffset,\n\t\t\t$target = $(target),\n\t\t\tposition = $target.css('position'),\n\t\t\t$source = $(source);\n\n\t\t// The parent element needs positioning so that the zoomed element can be correctly positioned within.\n\t\ttarget.style.position = /(absolute|fixed)/.test(position) ? position : 'relative';\n\t\ttarget.style.overflow = 'hidden';\n\t\timg.style.width = img.style.height = '';\n\n\t\t$(img)\n\t\t\t.addClass('zoomImg')\n\t\t\t.css({\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttop: 0,\n\t\t\t\tleft: 0,\n\t\t\t\topacity: 0,\n\t\t\t\twidth: img.width * magnify,\n\t\t\t\theight: img.height * magnify,\n\t\t\t\tborder: 'none',\n\t\t\t\tmaxWidth: 'none',\n\t\t\t\tmaxHeight: 'none'\n\t\t\t})\n\t\t\t.appendTo(target);\n\n\t\treturn {\n\t\t\tinit: function() {\n\t\t\t\ttargetWidth = $target.outerWidth();\n\t\t\t\ttargetHeight = $target.outerHeight();\n\n\t\t\t\tif (source === target) {\n\t\t\t\t\tsourceWidth = targetWidth;\n\t\t\t\t\tsourceHeight = targetHeight;\n\t\t\t\t} else {\n\t\t\t\t\tsourceWidth = $source.outerWidth();\n\t\t\t\t\tsourceHeight = $source.outerHeight();\n\t\t\t\t}\n\n\t\t\t\txRatio = (img.width - targetWidth) / sourceWidth;\n\t\t\t\tyRatio = (img.height - targetHeight) / sourceHeight;\n\n\t\t\t\toffset = $source.offset();\n\t\t\t},\n\t\t\tmove: function (e) {\n\t\t\t\tvar left = (e.pageX - offset.left),\n\t\t\t\t\ttop = (e.pageY - offset.top);\n\n\t\t\t\ttop = Math.max(Math.min(top, sourceHeight), 0);\n\t\t\t\tleft = Math.max(Math.min(left, sourceWidth), 0);\n\n\t\t\t\timg.style.left = (left * -xRatio) + 'px';\n\t\t\t\timg.style.top = (top * -yRatio) + 'px';\n\t\t\t}\n\t\t};\n\t};\n\n\t$.fn.zoom = function (options) {\n\t\treturn this.each(function () {\n\t\t\tvar\n\t\t\tsettings = $.extend({}, defaults, options || {}),\n\t\t\t//target will display the zoomed image\n\t\t\ttarget = settings.target && $(settings.target)[0] || this,\n\t\t\t//source will provide zoom location info (thumbnail)\n\t\t\tsource = this,\n\t\t\t$source = $(source),\n\t\t\timg = document.createElement('img'),\n\t\t\t$img = $(img),\n\t\t\tmousemove = 'mousemove.zoom',\n\t\t\tclicked = false,\n\t\t\ttouched = false;\n\n\t\t\t// If a url wasn't specified, look for an image element.\n\t\t\tif (!settings.url) {\n\t\t\t\tvar srcElement = source.querySelector('img');\n\t\t\t\tif (srcElement) {\n\t\t\t\t\tsettings.url = srcElement.getAttribute('data-src') || srcElement.currentSrc || srcElement.src;\n\t\t\t\t}\n\t\t\t\tif (!settings.url) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t$source.one('zoom.destroy', function(position, overflow){\n\t\t\t\t$source.off(\".zoom\");\n\t\t\t\ttarget.style.position = position;\n\t\t\t\ttarget.style.overflow = overflow;\n\t\t\t\timg.onload = null;\n\t\t\t\t$img.remove();\n\t\t\t}.bind(this, target.style.position, target.style.overflow));\n\n\t\t\timg.onload = function () {\n\t\t\t\tvar zoom = $.zoom(target, source, img, settings.magnify);\n\n\t\t\t\tfunction start(e) {\n\t\t\t\t\tzoom.init();\n\t\t\t\t\tzoom.move(e);\n\n\t\t\t\t\t// Skip the fade-in for IE8 and lower since it chokes on fading-in\n\t\t\t\t\t// and changing position based on mousemovement at the same time.\n\t\t\t\t\t$img.stop()\n\t\t\t\t\t.fadeTo($.support.opacity ? settings.duration : 0, 1, $.isFunction(settings.onZoomIn) ? settings.onZoomIn.call(img) : false);\n\t\t\t\t}\n\n\t\t\t\tfunction stop() {\n\t\t\t\t\t$img.stop()\n\t\t\t\t\t.fadeTo(settings.duration, 0, $.isFunction(settings.onZoomOut) ? settings.onZoomOut.call(img) : false);\n\t\t\t\t}\n\n\t\t\t\t// Mouse events\n\t\t\t\tif (settings.on === 'grab') {\n\t\t\t\t\t$source\n\t\t\t\t\t\t.on('mousedown.zoom',\n\t\t\t\t\t\t\tfunction (e) {\n\t\t\t\t\t\t\t\tif (e.which === 1) {\n\t\t\t\t\t\t\t\t\t$(document).one('mouseup.zoom',\n\t\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\t\tstop();\n\n\t\t\t\t\t\t\t\t\t\t\t$(document).off(mousemove, zoom.move);\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\tstart(e);\n\n\t\t\t\t\t\t\t\t\t$(document).on(mousemove, zoom.move);\n\n\t\t\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t);\n\t\t\t\t} else if (settings.on === 'click') {\n\t\t\t\t\t$source.on('click.zoom',\n\t\t\t\t\t\tfunction (e) {\n\t\t\t\t\t\t\tif (clicked) {\n\t\t\t\t\t\t\t\t// bubble the event up to the document to trigger the unbind.\n\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tclicked = true;\n\t\t\t\t\t\t\t\tstart(e);\n\t\t\t\t\t\t\t\t$(document).on(mousemove, zoom.move);\n\t\t\t\t\t\t\t\t$(document).one('click.zoom',\n\t\t\t\t\t\t\t\t\tfunction () {\n\t\t\t\t\t\t\t\t\t\tstop();\n\t\t\t\t\t\t\t\t\t\tclicked = false;\n\t\t\t\t\t\t\t\t\t\t$(document).off(mousemove, zoom.move);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else if (settings.on === 'toggle') {\n\t\t\t\t\t$source.on('click.zoom',\n\t\t\t\t\t\tfunction (e) {\n\t\t\t\t\t\t\tif (clicked) {\n\t\t\t\t\t\t\t\tstop();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tstart(e);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tclicked = !clicked;\n\t\t\t\t\t\t}\n\t\t\t\t\t);\n\t\t\t\t} else if (settings.on === 'mouseover') {\n\t\t\t\t\tzoom.init(); // Preemptively call init because IE7 will fire the mousemove handler before the hover handler.\n\n\t\t\t\t\t$source\n\t\t\t\t\t\t.on('mouseenter.zoom', start)\n\t\t\t\t\t\t.on('mouseleave.zoom', stop)\n\t\t\t\t\t\t.on(mousemove, zoom.move);\n\t\t\t\t}\n\n\t\t\t\t// Touch fallback\n\t\t\t\tif (settings.touch) {\n\t\t\t\t\t$source\n\t\t\t\t\t\t.on('touchstart.zoom', function (e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tif (touched) {\n\t\t\t\t\t\t\t\ttouched = false;\n\t\t\t\t\t\t\t\tstop();\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\ttouched = true;\n\t\t\t\t\t\t\t\tstart( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('touchmove.zoom', function (e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tzoom.move( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('touchend.zoom', function (e) {\n\t\t\t\t\t\t\te.preventDefault();\n\t\t\t\t\t\t\tif (touched) {\n\t\t\t\t\t\t\t\ttouched = false;\n\t\t\t\t\t\t\t\tstop();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\t\n\t\t\t\tif ($.isFunction(settings.callback)) {\n\t\t\t\t\tsettings.callback.call(img);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\timg.setAttribute('role', 'presentation');\n\t\t\timg.alt = '';\n\t\t\timg.src = settings.url;\n\t\t});\n\t};\n\n\t$.fn.zoom.defaults = defaults;\n}(window.jQuery));\n","/* lightgallery - v1.2.22 - 2016-07-20\r\n * http://sachinchoolur.github.io/lightGallery/\r\n * Copyright (c) 2016 Sachin N; Licensed Apache 2.0 */\r\n\r\n(function($, window, document, undefined) {\r\n\r\n 'use strict';\r\n\r\n var defaults = {\r\n\r\n mode: 'lg-slide',\r\n\r\n // Ex : 'ease'\r\n cssEasing: 'ease',\r\n\r\n //'for jquery animation'\r\n easing: 'linear',\r\n speed: 600,\r\n height: '100%',\r\n width: '100%',\r\n addClass: '',\r\n startClass: 'lg-start-zoom',\r\n backdropDuration: 150,\r\n hideBarsDelay: 6000,\r\n\r\n useLeft: false,\r\n\r\n closable: true,\r\n loop: true,\r\n escKey: true,\r\n keyPress: true,\r\n controls: true,\r\n slideEndAnimatoin: true,\r\n hideControlOnEnd: false,\r\n mousewheel: true,\r\n\r\n getCaptionFromTitleOrAlt: true,\r\n\r\n // .lg-item || '.lg-sub-html'\r\n appendSubHtmlTo: '.lg-sub-html',\r\n\r\n subHtmlSelectorRelative: false,\r\n\r\n /**\r\n * @desc number of preload slides\r\n * will exicute only after the current slide is fully loaded.\r\n *\r\n * @ex you clicked on 4th image and if preload = 1 then 3rd slide and 5th\r\n * slide will be loaded in the background after the 4th slide is fully loaded..\r\n * if preload is 2 then 2nd 3rd 5th 6th slides will be preloaded.. ... ...\r\n *\r\n */\r\n preload: 1,\r\n showAfterLoad: true,\r\n selector: '',\r\n selectWithin: '',\r\n\r\n nextHtml: '',\r\n prevHtml: '',\r\n fullscreenHtml: '',\r\n closeHtml: '',\r\n\r\n // 0, 1\r\n index: false,\r\n\r\n iframeMaxWidth: '100%',\r\n\r\n download: false,\r\n counter: false,\r\n appendCounterTo: '.lg-toolbar',\r\n\r\n swipeThreshold: 50,\r\n enableSwipe: true,\r\n enableDrag: true,\r\n\r\n dynamic: false,\r\n dynamicEl: [],\r\n galleryId: 1\r\n };\r\n\r\n function Plugin(element, options) {\r\n\r\n // Current lightGallery element\r\n this.el = element;\r\n\r\n // Current jquery element\r\n this.$el = $(element);\r\n\r\n // lightGallery settings\r\n this.s = $.extend({}, defaults, options);\r\n\r\n // When using dynamic mode, ensure dynamicEl is an array\r\n if (this.s.dynamic && this.s.dynamicEl !== 'undefined' && this.s.dynamicEl.constructor === Array && !this.s.dynamicEl.length) {\r\n throw ('When using dynamic mode, you must also define dynamicEl as an Array.');\r\n }\r\n\r\n // lightGallery modules\r\n this.modules = {};\r\n\r\n // false when lightgallery complete first slide;\r\n this.lGalleryOn = false;\r\n\r\n this.lgBusy = false;\r\n\r\n // Timeout function for hiding controls;\r\n this.hideBartimeout = false;\r\n\r\n // To determine browser supports for touch events;\r\n this.isTouch = ('ontouchstart' in document.documentElement);\r\n\r\n // Disable hideControlOnEnd if sildeEndAnimation is true\r\n if (this.s.slideEndAnimatoin) {\r\n this.s.hideControlOnEnd = false;\r\n }\r\n\r\n // Gallery items\r\n if (this.s.dynamic) {\r\n this.$items = this.s.dynamicEl;\r\n } else {\r\n if (this.s.selector === 'this') {\r\n this.$items = this.$el;\r\n } else if (this.s.selector !== '') {\r\n if (this.s.selectWithin) {\r\n this.$items = $(this.s.selectWithin).find(this.s.selector);\r\n } else {\r\n this.$items = this.$el.find($(this.s.selector));\r\n }\r\n } else {\r\n this.$items = this.$el.children();\r\n }\r\n }\r\n\r\n // .lg-item\r\n this.$slide = '';\r\n\r\n // .lg-outer\r\n this.$outer = '';\r\n\r\n this.init();\r\n\r\n return this;\r\n }\r\n\r\n Plugin.prototype.init = function() {\r\n\r\n var _this = this;\r\n\r\n // s.preload should not be more than $item.length\r\n if (_this.s.preload > _this.$items.length) {\r\n _this.s.preload = _this.$items.length;\r\n }\r\n\r\n // if dynamic option is enabled execute immediately\r\n var _hash = window.location.hash;\r\n if (_hash.indexOf('lg=' + this.s.galleryId) > 0) {\r\n\r\n _this.index = parseInt(_hash.split('&slide=')[1], 10);\r\n\r\n $('body').addClass('lg-from-hash');\r\n if (!$('body').hasClass('lg-on')) {\r\n setTimeout(function() {\r\n _this.build(_this.index);\r\n });\r\n $('body').addClass('lg-on');\r\n }\r\n }\r\n\r\n if (_this.s.dynamic) {\r\n\r\n _this.$el.trigger('onBeforeOpen.lg');\r\n\r\n _this.index = _this.s.index || 0;\r\n\r\n // prevent accidental double execution\r\n if (!$('body').hasClass('lg-on')) {\r\n setTimeout(function() {\r\n _this.build(_this.index);\r\n $('body').addClass('lg-on');\r\n });\r\n }\r\n } else {\r\n\r\n // Using different namespace for click because click event should not unbind if selector is same object('this')\r\n _this.$items.on('click.lgcustom', function(event) {\r\n\r\n // For IE8\r\n try {\r\n event.preventDefault();\r\n event.preventDefault();\r\n } catch (er) {\r\n event.returnValue = false;\r\n }\r\n\r\n _this.$el.trigger('onBeforeOpen.lg');\r\n\r\n _this.index = _this.s.index || _this.$items.index(this);\r\n\r\n // prevent accidental double execution\r\n if (!$('body').hasClass('lg-on')) {\r\n _this.build(_this.index);\r\n $('body').addClass('lg-on');\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n Plugin.prototype.build = function(index) {\r\n\r\n var _this = this;\r\n\r\n _this.structure();\r\n\r\n // module constructor\r\n $.each($.fn.lightGallery.modules, function(key) {\r\n _this.modules[key] = new $.fn.lightGallery.modules[key](_this.el);\r\n });\r\n\r\n // initiate slide function\r\n _this.slide(index, false, false);\r\n\r\n if (_this.s.keyPress) {\r\n _this.keyPress();\r\n }\r\n\r\n if (_this.$items.length > 1) {\r\n\r\n _this.arrow();\r\n\r\n setTimeout(function() {\r\n _this.enableDrag();\r\n _this.enableSwipe();\r\n }, 50);\r\n\r\n if (_this.s.mousewheel) {\r\n _this.mousewheel();\r\n }\r\n }\r\n\r\n _this.counter();\r\n\r\n _this.closeGallery();\r\n\r\n _this.$el.trigger('onAfterOpen.lg');\r\n\r\n // Hide controllers if mouse doesn't move for some period\r\n _this.$outer.on('mousemove.lg click.lg touchstart.lg', function() {\r\n\r\n _this.$outer.removeClass('lg-hide-items');\r\n\r\n clearTimeout(_this.hideBartimeout);\r\n\r\n // Timeout will be cleared on each slide movement also\r\n _this.hideBartimeout = setTimeout(function() {\r\n _this.$outer.addClass('lg-hide-items');\r\n }, _this.s.hideBarsDelay);\r\n\r\n });\r\n\r\n };\r\n\r\n Plugin.prototype.structure = function() {\r\n var list = '';\r\n var controls = '';\r\n var i = 0;\r\n var subHtmlCont = '';\r\n var template;\r\n var _this = this;\r\n\r\n $('body').append('
');\r\n $('.lg-backdrop').css('transition-duration', this.s.backdropDuration + 'ms');\r\n\r\n // Create gallery items\r\n for (i = 0; i < this.$items.length; i++) {\r\n list += '
';\r\n }\r\n\r\n // Create controlls\r\n if (this.s.controls && this.$items.length > 1) {\r\n controls = '
' +\r\n '
' + this.s.prevHtml + '
' +\r\n '
' + this.s.nextHtml + '
' +\r\n '
';\r\n }\r\n\r\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\r\n subHtmlCont = '
';\r\n }\r\n\r\n template = '
' +\r\n '
' +\r\n '
' + list + '
' +\r\n '
' +\r\n '' + this.s.closeHtml + '' +\r\n '
' +\r\n controls +\r\n subHtmlCont +\r\n '
' +\r\n '
';\r\n\r\n $('body').append(template);\r\n this.$outer = $('.lg-outer');\r\n this.$slide = this.$outer.find('.lg-item');\r\n\r\n if (this.s.useLeft) {\r\n this.$outer.addClass('lg-use-left');\r\n\r\n // Set mode lg-slide if use left is true;\r\n this.s.mode = 'lg-slide';\r\n } else {\r\n this.$outer.addClass('lg-use-css3');\r\n }\r\n\r\n // For fixed height gallery\r\n _this.setTop();\r\n $(window).on('resize.lg orientationchange.lg', function() {\r\n setTimeout(function() {\r\n _this.setTop();\r\n }, 100);\r\n });\r\n\r\n // add class lg-current to remove initial transition\r\n this.$slide.eq(this.index).addClass('lg-current');\r\n\r\n // add Class for css support and transition mode\r\n if (this.doCss()) {\r\n this.$outer.addClass('lg-css3');\r\n } else {\r\n this.$outer.addClass('lg-css');\r\n\r\n // Set speed 0 because no animation will happen if browser doesn't support css3\r\n this.s.speed = 0;\r\n }\r\n\r\n this.$outer.addClass(this.s.mode);\r\n\r\n if (this.s.enableDrag && this.$items.length > 1) {\r\n this.$outer.addClass('lg-grab');\r\n }\r\n\r\n if (this.s.showAfterLoad) {\r\n this.$outer.addClass('lg-show-after-load');\r\n }\r\n\r\n if (this.doCss()) {\r\n var $inner = this.$outer.find('.lg-inner');\r\n $inner.css('transition-timing-function', this.s.cssEasing);\r\n $inner.css('transition-duration', this.s.speed + 'ms');\r\n }\r\n\r\n setTimeout(function() {\r\n $('.lg-backdrop').addClass('in');\r\n });\r\n\r\n setTimeout(function() {\r\n _this.$outer.addClass('lg-visible');\r\n }, this.s.backdropDuration);\r\n\r\n if (this.s.download) {\r\n this.$outer.find('.lg-toolbar').append('');\r\n }\r\n\r\n // Store the current scroll top value to scroll back after closing the gallery..\r\n this.prevScrollTop = $(window).scrollTop();\r\n\r\n };\r\n\r\n // For fixed height gallery\r\n Plugin.prototype.setTop = function() {\r\n if (this.s.height !== '100%') {\r\n var wH = $(window).height();\r\n var top = (wH - parseInt(this.s.height, 10)) / 2;\r\n var $lGallery = this.$outer.find('.lg');\r\n if (wH >= parseInt(this.s.height, 10)) {\r\n $lGallery.css('top', top + 'px');\r\n } else {\r\n $lGallery.css('top', '0px');\r\n }\r\n }\r\n };\r\n\r\n // Find css3 support\r\n Plugin.prototype.doCss = function() {\r\n // check for css animation support\r\n var support = function() {\r\n var transition = ['transition', 'MozTransition', 'WebkitTransition', 'OTransition', 'msTransition', 'KhtmlTransition'];\r\n var root = document.documentElement;\r\n var i = 0;\r\n for (i = 0; i < transition.length; i++) {\r\n if (transition[i] in root.style) {\r\n return true;\r\n }\r\n }\r\n };\r\n\r\n if (support()) {\r\n return true;\r\n }\r\n\r\n return false;\r\n };\r\n\r\n /**\r\n * @desc Check the given src is video\r\n * @param {String} src\r\n * @return {Object} video type\r\n * Ex:{ youtube : [\"//www.youtube.com/watch?v=c0asJgSyxcY\", \"c0asJgSyxcY\"] }\r\n */\r\n Plugin.prototype.isVideo = function(src, index) {\r\n\r\n var html;\r\n if (this.s.dynamic) {\r\n html = this.s.dynamicEl[index].html;\r\n } else {\r\n html = this.$items.eq(index).attr('data-html');\r\n }\r\n\r\n if (!src && html) {\r\n return {\r\n html5: true\r\n };\r\n }\r\n\r\n var youtube = src.match(/\\/\\/(?:www\\.)?youtu(?:\\.be|be\\.com)\\/(?:watch\\?v=|embed\\/)?([a-z0-9\\-\\_\\%]+)/i);\r\n var vimeo = src.match(/\\/\\/(?:www\\.)?vimeo.com\\/([0-9a-z\\-_]+)/i);\r\n var dailymotion = src.match(/\\/\\/(?:www\\.)?dai.ly\\/([0-9a-z\\-_]+)/i);\r\n var vk = src.match(/\\/\\/(?:www\\.)?(?:vk\\.com|vkontakte\\.ru)\\/(?:video_ext\\.php\\?)(.*)/i);\r\n\r\n if (youtube) {\r\n return {\r\n youtube: youtube\r\n };\r\n } else if (vimeo) {\r\n return {\r\n vimeo: vimeo\r\n };\r\n } else if (dailymotion) {\r\n return {\r\n dailymotion: dailymotion\r\n };\r\n } else if (vk) {\r\n return {\r\n vk: vk\r\n };\r\n }\r\n };\r\n\r\n /**\r\n * @desc Create image counter\r\n * Ex: 1/10\r\n */\r\n Plugin.prototype.counter = function() {\r\n if (this.s.counter) {\r\n $(this.s.appendCounterTo).append('
' + (parseInt(this.index, 10) + 1) + ' / ' + this.$items.length + '
');\r\n }\r\n };\r\n\r\n /**\r\n * @desc add sub-html into the slide\r\n * @param {Number} index - index of the slide\r\n */\r\n Plugin.prototype.addHtml = function(index) {\r\n var subHtml = null;\r\n var subHtmlUrl;\r\n var $currentEle;\r\n if (this.s.dynamic) {\r\n if (this.s.dynamicEl[index].subHtmlUrl) {\r\n subHtmlUrl = this.s.dynamicEl[index].subHtmlUrl;\r\n } else {\r\n subHtml = this.s.dynamicEl[index].subHtml;\r\n }\r\n } else {\r\n $currentEle = this.$items.eq(index);\r\n if ($currentEle.attr('data-sub-html-url')) {\r\n subHtmlUrl = $currentEle.attr('data-sub-html-url');\r\n } else {\r\n subHtml = $currentEle.attr('data-sub-html');\r\n if (this.s.getCaptionFromTitleOrAlt && !subHtml) {\r\n subHtml = $currentEle.attr('title') || $currentEle.find('img').first().attr('alt');\r\n }\r\n }\r\n }\r\n\r\n if (!subHtmlUrl) {\r\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\r\n\r\n // get first letter of subhtml\r\n // if first letter starts with . or # get the html form the jQuery object\r\n var fL = subHtml.substring(0, 1);\r\n if (fL === '.' || fL === '#') {\r\n if (this.s.subHtmlSelectorRelative && !this.s.dynamic) {\r\n subHtml = $currentEle.find(subHtml).html();\r\n } else {\r\n subHtml = $(subHtml).html();\r\n }\r\n }\r\n } else {\r\n subHtml = '';\r\n }\r\n }\r\n\r\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\r\n\r\n if (subHtmlUrl) {\r\n this.$outer.find(this.s.appendSubHtmlTo).load(subHtmlUrl);\r\n } else {\r\n this.$outer.find(this.s.appendSubHtmlTo).html(subHtml);\r\n }\r\n\r\n } else {\r\n\r\n if (subHtmlUrl) {\r\n this.$slide.eq(index).load(subHtmlUrl);\r\n } else {\r\n this.$slide.eq(index).append(subHtml);\r\n }\r\n }\r\n\r\n // Add lg-empty-html class if title doesn't exist\r\n if (typeof subHtml !== 'undefined' && subHtml !== null) {\r\n if (subHtml === '') {\r\n this.$outer.find(this.s.appendSubHtmlTo).addClass('lg-empty-html');\r\n } else {\r\n this.$outer.find(this.s.appendSubHtmlTo).removeClass('lg-empty-html');\r\n }\r\n }\r\n\r\n this.$el.trigger('onAfterAppendSubHtml.lg', [index]);\r\n };\r\n\r\n /**\r\n * @desc Preload slides\r\n * @param {Number} index - index of the slide\r\n */\r\n Plugin.prototype.preload = function(index) {\r\n var i = 1;\r\n var j = 1;\r\n for (i = 1; i <= this.s.preload; i++) {\r\n if (i >= this.$items.length - index) {\r\n break;\r\n }\r\n\r\n this.loadContent(index + i, false, 0);\r\n }\r\n\r\n for (j = 1; j <= this.s.preload; j++) {\r\n if (index - j < 0) {\r\n break;\r\n }\r\n\r\n this.loadContent(index - j, false, 0);\r\n }\r\n };\r\n\r\n /**\r\n * @desc Load slide content into slide.\r\n * @param {Number} index - index of the slide.\r\n * @param {Boolean} rec - if true call loadcontent() function again.\r\n * @param {Boolean} delay - delay for adding complete class. it is 0 except first time.\r\n */\r\n Plugin.prototype.loadContent = function(index, rec, delay) {\r\n\r\n var _this = this;\r\n var _hasPoster = false;\r\n var _$img;\r\n var _src;\r\n var _poster;\r\n var _srcset;\r\n var _sizes;\r\n var _html;\r\n var getResponsiveSrc = function(srcItms) {\r\n var rsWidth = [];\r\n var rsSrc = [];\r\n for (var i = 0; i < srcItms.length; i++) {\r\n var __src = srcItms[i].split(' ');\r\n\r\n // Manage empty space\r\n if (__src[0] === '') {\r\n __src.splice(0, 1);\r\n }\r\n\r\n rsSrc.push(__src[0]);\r\n rsWidth.push(__src[1]);\r\n }\r\n\r\n var wWidth = $(window).width();\r\n for (var j = 0; j < rsWidth.length; j++) {\r\n if (parseInt(rsWidth[j], 10) > wWidth) {\r\n _src = rsSrc[j];\r\n break;\r\n }\r\n }\r\n };\r\n\r\n if (_this.s.dynamic) {\r\n\r\n if (_this.s.dynamicEl[index].poster) {\r\n _hasPoster = true;\r\n _poster = _this.s.dynamicEl[index].poster;\r\n }\r\n\r\n _html = _this.s.dynamicEl[index].html;\r\n _src = _this.s.dynamicEl[index].src;\r\n\r\n if (_this.s.dynamicEl[index].responsive) {\r\n var srcDyItms = _this.s.dynamicEl[index].responsive.split(',');\r\n getResponsiveSrc(srcDyItms);\r\n }\r\n\r\n _srcset = _this.s.dynamicEl[index].srcset;\r\n _sizes = _this.s.dynamicEl[index].sizes;\r\n\r\n } else {\r\n\r\n if (_this.$items.eq(index).attr('data-poster')) {\r\n _hasPoster = true;\r\n _poster = _this.$items.eq(index).attr('data-poster');\r\n }\r\n\r\n _html = _this.$items.eq(index).attr('data-html');\r\n _src = _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src');\r\n\r\n if (_this.$items.eq(index).attr('data-responsive')) {\r\n var srcItms = _this.$items.eq(index).attr('data-responsive').split(',');\r\n getResponsiveSrc(srcItms);\r\n }\r\n\r\n _srcset = _this.$items.eq(index).attr('data-srcset');\r\n _sizes = _this.$items.eq(index).attr('data-sizes');\r\n\r\n }\r\n\r\n //if (_src || _srcset || _sizes || _poster) {\r\n\r\n var iframe = false;\r\n if (_this.s.dynamic) {\r\n if (_this.s.dynamicEl[index].iframe) {\r\n iframe = true;\r\n }\r\n } else {\r\n if (_this.$items.eq(index).attr('data-iframe') === 'true') {\r\n iframe = true;\r\n }\r\n }\r\n\r\n var _isVideo = _this.isVideo(_src, index);\r\n if (!_this.$slide.eq(index).hasClass('lg-loaded')) {\r\n if (iframe) {\r\n _this.$slide.eq(index).prepend('
');\r\n } else if (_hasPoster) {\r\n var videoClass = '';\r\n if (_isVideo && _isVideo.youtube) {\r\n videoClass = 'lg-has-youtube';\r\n } else if (_isVideo && _isVideo.vimeo) {\r\n videoClass = 'lg-has-vimeo';\r\n } else {\r\n videoClass = 'lg-has-html5';\r\n }\r\n\r\n _this.$slide.eq(index).prepend('
');\r\n\r\n } else if (_isVideo) {\r\n _this.$slide.eq(index).prepend('
');\r\n _this.$el.trigger('hasVideo.lg', [index, _src, _html]);\r\n } else {\r\n _this.$slide.eq(index).prepend('
');\r\n }\r\n\r\n _this.$el.trigger('onAferAppendSlide.lg', [index]);\r\n\r\n _$img = _this.$slide.eq(index).find('.lg-object');\r\n if (_sizes) {\r\n _$img.attr('sizes', _sizes);\r\n }\r\n\r\n if (_srcset) {\r\n _$img.attr('srcset', _srcset);\r\n try {\r\n picturefill({\r\n elements: [_$img[0]]\r\n });\r\n } catch (e) {\r\n console.error('Make sure you have included Picturefill version 2');\r\n }\r\n }\r\n\r\n if (this.s.appendSubHtmlTo !== '.lg-sub-html') {\r\n _this.addHtml(index);\r\n }\r\n\r\n _this.$slide.eq(index).addClass('lg-loaded');\r\n }\r\n\r\n _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() {\r\n\r\n // For first time add some delay for displaying the start animation.\r\n var _speed = 0;\r\n\r\n // Do not change the delay value because it is required for zoom plugin.\r\n // If gallery opened from direct url (hash) speed value should be 0\r\n if (delay && !$('body').hasClass('lg-from-hash')) {\r\n _speed = delay;\r\n }\r\n\r\n setTimeout(function() {\r\n _this.$slide.eq(index).addClass('lg-complete');\r\n _this.$el.trigger('onSlideItemLoad.lg', [index, delay || 0]);\r\n }, _speed);\r\n\r\n });\r\n\r\n // @todo check load state for html5 videos\r\n if (_isVideo && _isVideo.html5 && !_hasPoster) {\r\n _this.$slide.eq(index).addClass('lg-complete');\r\n }\r\n\r\n if (rec === true) {\r\n if (!_this.$slide.eq(index).hasClass('lg-complete')) {\r\n _this.$slide.eq(index).find('.lg-object').on('load.lg error.lg', function() {\r\n _this.preload(index);\r\n });\r\n } else {\r\n _this.preload(index);\r\n }\r\n }\r\n\r\n //}\r\n };\r\n\r\n /**\r\n * @desc slide function for lightgallery\r\n ** Slide() gets call on start\r\n ** ** Set lg.on true once slide() function gets called.\r\n ** Call loadContent() on slide() function inside setTimeout\r\n ** ** On first slide we do not want any animation like slide of fade\r\n ** ** So on first slide( if lg.on if false that is first slide) loadContent() should start loading immediately\r\n ** ** Else loadContent() should wait for the transition to complete.\r\n ** ** So set timeout s.speed + 50\r\n <=> ** loadContent() will load slide content in to the particular slide\r\n ** ** It has recursion (rec) parameter. if rec === true loadContent() will call preload() function.\r\n ** ** preload will execute only when the previous slide is fully loaded (images iframe)\r\n ** ** avoid simultaneous image load\r\n <=> ** Preload() will check for s.preload value and call loadContent() again accoring to preload value\r\n ** loadContent() <====> Preload();\r\n\r\n * @param {Number} index - index of the slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event or mouse drag\r\n * @param {Boolean} fromThumb - true if slide function called via thumbnail click\r\n */\r\n Plugin.prototype.slide = function(index, fromTouch, fromThumb) {\r\n\r\n var _prevIndex = this.$outer.find('.lg-current').index();\r\n var _this = this;\r\n\r\n // Prevent if multiple call\r\n // Required for hsh plugin\r\n if (_this.lGalleryOn && (_prevIndex === index)) {\r\n return;\r\n }\r\n\r\n var _length = this.$slide.length;\r\n var _time = _this.lGalleryOn ? this.s.speed : 0;\r\n var _next = false;\r\n var _prev = false;\r\n\r\n if (!_this.lgBusy) {\r\n\r\n if (this.s.download) {\r\n var _src;\r\n if (_this.s.dynamic) {\r\n _src = _this.s.dynamicEl[index].downloadUrl !== false && (_this.s.dynamicEl[index].downloadUrl || _this.s.dynamicEl[index].src);\r\n } else {\r\n _src = _this.$items.eq(index).attr('data-download-url') !== 'false' && (_this.$items.eq(index).attr('data-download-url') || _this.$items.eq(index).attr('href') || _this.$items.eq(index).attr('data-src'));\r\n\r\n }\r\n\r\n if (_src) {\r\n $('#lg-download').attr('href', _src);\r\n _this.$outer.removeClass('lg-hide-download');\r\n } else {\r\n _this.$outer.addClass('lg-hide-download');\r\n }\r\n }\r\n\r\n this.$el.trigger('onBeforeSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);\r\n\r\n _this.lgBusy = true;\r\n\r\n clearTimeout(_this.hideBartimeout);\r\n\r\n // Add title if this.s.appendSubHtmlTo === lg-sub-html\r\n if (this.s.appendSubHtmlTo === '.lg-sub-html') {\r\n\r\n // wait for slide animation to complete\r\n setTimeout(function() {\r\n _this.addHtml(index);\r\n }, _time);\r\n }\r\n\r\n this.arrowDisable(index);\r\n\r\n if (!fromTouch) {\r\n\r\n // remove all transitions\r\n _this.$outer.addClass('lg-no-trans');\r\n\r\n this.$slide.removeClass('lg-prev-slide lg-next-slide');\r\n\r\n if (index < _prevIndex) {\r\n _prev = true;\r\n if ((index === 0) && (_prevIndex === _length - 1) && !fromThumb) {\r\n _prev = false;\r\n _next = true;\r\n }\r\n } else if (index > _prevIndex) {\r\n _next = true;\r\n if ((index === _length - 1) && (_prevIndex === 0) && !fromThumb) {\r\n _prev = true;\r\n _next = false;\r\n }\r\n }\r\n\r\n if (_prev) {\r\n\r\n //prevslide\r\n this.$slide.eq(index).addClass('lg-prev-slide');\r\n this.$slide.eq(_prevIndex).addClass('lg-next-slide');\r\n } else if (_next) {\r\n\r\n // next slide\r\n this.$slide.eq(index).addClass('lg-next-slide');\r\n this.$slide.eq(_prevIndex).addClass('lg-prev-slide');\r\n }\r\n\r\n // give 50 ms for browser to add/remove class\r\n setTimeout(function() {\r\n _this.$slide.removeClass('lg-current');\r\n\r\n //_this.$slide.eq(_prevIndex).removeClass('lg-current');\r\n _this.$slide.eq(index).addClass('lg-current');\r\n\r\n // reset all transitions\r\n _this.$outer.removeClass('lg-no-trans');\r\n }, 50);\r\n } else {\r\n\r\n var touchPrev = index - 1;\r\n var touchNext = index + 1;\r\n\r\n if ((index === 0) && (_prevIndex === _length - 1)) {\r\n\r\n // next slide\r\n touchNext = 0;\r\n touchPrev = _length - 1;\r\n } else if ((index === _length - 1) && (_prevIndex === 0)) {\r\n\r\n // prev slide\r\n touchNext = 0;\r\n touchPrev = _length - 1;\r\n }\r\n\r\n this.$slide.removeClass('lg-prev-slide lg-current lg-next-slide');\r\n _this.$slide.eq(touchPrev).addClass('lg-prev-slide');\r\n _this.$slide.eq(touchNext).addClass('lg-next-slide');\r\n _this.$slide.eq(index).addClass('lg-current');\r\n }\r\n\r\n if (_this.lGalleryOn) {\r\n setTimeout(function() {\r\n _this.loadContent(index, true, 0);\r\n }, this.s.speed + 50);\r\n\r\n setTimeout(function() {\r\n _this.lgBusy = false;\r\n _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);\r\n }, this.s.speed);\r\n\r\n } else {\r\n _this.loadContent(index, true, _this.s.backdropDuration);\r\n\r\n _this.lgBusy = false;\r\n _this.$el.trigger('onAfterSlide.lg', [_prevIndex, index, fromTouch, fromThumb]);\r\n }\r\n\r\n _this.lGalleryOn = true;\r\n\r\n if (this.s.counter) {\r\n $('#lg-counter-current').text(index + 1);\r\n }\r\n\r\n }\r\n\r\n };\r\n\r\n /**\r\n * @desc Go to next slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n */\r\n Plugin.prototype.goToNextSlide = function(fromTouch) {\r\n var _this = this;\r\n if (!_this.lgBusy) {\r\n if ((_this.index + 1) < _this.$slide.length) {\r\n _this.index++;\r\n _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]);\r\n _this.slide(_this.index, fromTouch, false);\r\n } else {\r\n if (_this.s.loop) {\r\n _this.index = 0;\r\n _this.$el.trigger('onBeforeNextSlide.lg', [_this.index]);\r\n _this.slide(_this.index, fromTouch, false);\r\n } else if (_this.s.slideEndAnimatoin) {\r\n _this.$outer.addClass('lg-right-end');\r\n setTimeout(function() {\r\n _this.$outer.removeClass('lg-right-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n\r\n /**\r\n * @desc Go to previous slide\r\n * @param {Boolean} fromTouch - true if slide function called via touch event\r\n */\r\n Plugin.prototype.goToPrevSlide = function(fromTouch) {\r\n var _this = this;\r\n if (!_this.lgBusy) {\r\n if (_this.index > 0) {\r\n _this.index--;\r\n _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]);\r\n _this.slide(_this.index, fromTouch, false);\r\n } else {\r\n if (_this.s.loop) {\r\n _this.index = _this.$items.length - 1;\r\n _this.$el.trigger('onBeforePrevSlide.lg', [_this.index, fromTouch]);\r\n _this.slide(_this.index, fromTouch, false);\r\n } else if (_this.s.slideEndAnimatoin) {\r\n _this.$outer.addClass('lg-left-end');\r\n setTimeout(function() {\r\n _this.$outer.removeClass('lg-left-end');\r\n }, 400);\r\n }\r\n }\r\n }\r\n };\r\n\r\n Plugin.prototype.keyPress = function() {\r\n var _this = this;\r\n if (this.$items.length > 1) {\r\n $(window).on('keyup.lg', function(e) {\r\n if (_this.$items.length > 1) {\r\n if (e.keyCode === 37) {\r\n e.preventDefault();\r\n _this.goToPrevSlide();\r\n }\r\n\r\n if (e.keyCode === 39) {\r\n e.preventDefault();\r\n _this.goToNextSlide();\r\n }\r\n }\r\n });\r\n }\r\n\r\n $(window).on('keydown.lg', function(e) {\r\n if (_this.s.escKey === true && e.keyCode === 27) {\r\n e.preventDefault();\r\n if (!_this.$outer.hasClass('lg-thumb-open')) {\r\n _this.destroy();\r\n } else {\r\n _this.$outer.removeClass('lg-thumb-open');\r\n }\r\n }\r\n });\r\n };\r\n\r\n Plugin.prototype.arrow = function() {\r\n var _this = this;\r\n this.$outer.find('.lg-prev').on('click.lg', function() {\r\n _this.goToPrevSlide();\r\n });\r\n\r\n this.$outer.find('.lg-next').on('click.lg', function() {\r\n _this.goToNextSlide();\r\n });\r\n };\r\n\r\n Plugin.prototype.arrowDisable = function(index) {\r\n\r\n // Disable arrows if s.hideControlOnEnd is true\r\n if (!this.s.loop && this.s.hideControlOnEnd) {\r\n if ((index + 1) < this.$slide.length) {\r\n this.$outer.find('.lg-next').removeAttr('disabled').removeClass('disabled');\r\n } else {\r\n this.$outer.find('.lg-next').attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n\r\n if (index > 0) {\r\n this.$outer.find('.lg-prev').removeAttr('disabled').removeClass('disabled');\r\n } else {\r\n this.$outer.find('.lg-prev').attr('disabled', 'disabled').addClass('disabled');\r\n }\r\n }\r\n };\r\n\r\n Plugin.prototype.setTranslate = function($el, xValue, yValue) {\r\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\r\n if (this.s.useLeft) {\r\n $el.css('left', xValue);\r\n } else {\r\n $el.css({\r\n transform: 'translate3d(' + (xValue) + 'px, ' + yValue + 'px, 0px)'\r\n });\r\n }\r\n };\r\n\r\n Plugin.prototype.touchMove = function(startCoords, endCoords) {\r\n\r\n var distance = endCoords - startCoords;\r\n\r\n if (Math.abs(distance) > 15) {\r\n // reset opacity and transition duration\r\n this.$outer.addClass('lg-dragging');\r\n\r\n // move current slide\r\n this.setTranslate(this.$slide.eq(this.index), distance, 0);\r\n\r\n // move next and prev slide with current slide\r\n this.setTranslate($('.lg-prev-slide'), -this.$slide.eq(this.index).width() + distance, 0);\r\n this.setTranslate($('.lg-next-slide'), this.$slide.eq(this.index).width() + distance, 0);\r\n }\r\n };\r\n\r\n Plugin.prototype.touchEnd = function(distance) {\r\n var _this = this;\r\n\r\n // keep slide animation for any mode while dragg/swipe\r\n if (_this.s.mode !== 'lg-slide') {\r\n _this.$outer.addClass('lg-slide');\r\n }\r\n\r\n this.$slide.not('.lg-current, .lg-prev-slide, .lg-next-slide').css('opacity', '0');\r\n\r\n // set transition duration\r\n setTimeout(function() {\r\n _this.$outer.removeClass('lg-dragging');\r\n if ((distance < 0) && (Math.abs(distance) > _this.s.swipeThreshold)) {\r\n _this.goToNextSlide(true);\r\n } else if ((distance > 0) && (Math.abs(distance) > _this.s.swipeThreshold)) {\r\n _this.goToPrevSlide(true);\r\n } else if (Math.abs(distance) < 5) {\r\n\r\n // Trigger click if distance is less than 5 pix\r\n _this.$el.trigger('onSlideClick.lg');\r\n }\r\n\r\n _this.$slide.removeAttr('style');\r\n });\r\n\r\n // remove slide class once drag/swipe is completed if mode is not slide\r\n setTimeout(function() {\r\n if (!_this.$outer.hasClass('lg-dragging') && _this.s.mode !== 'lg-slide') {\r\n _this.$outer.removeClass('lg-slide');\r\n }\r\n }, _this.s.speed + 100);\r\n\r\n };\r\n\r\n Plugin.prototype.enableSwipe = function() {\r\n var _this = this;\r\n var startCoords = 0;\r\n var endCoords = 0;\r\n var isMoved = false;\r\n\r\n if (_this.s.enableSwipe && _this.isTouch && _this.doCss()) {\r\n\r\n _this.$slide.on('touchstart.lg', function(e) {\r\n if (!_this.$outer.hasClass('lg-zoomed') && !_this.lgBusy) {\r\n e.preventDefault();\r\n _this.manageSwipeClass();\r\n startCoords = e.originalEvent.targetTouches[0].pageX;\r\n }\r\n });\r\n\r\n _this.$slide.on('touchmove.lg', function(e) {\r\n if (!_this.$outer.hasClass('lg-zoomed')) {\r\n e.preventDefault();\r\n endCoords = e.originalEvent.targetTouches[0].pageX;\r\n _this.touchMove(startCoords, endCoords);\r\n isMoved = true;\r\n }\r\n });\r\n\r\n _this.$slide.on('touchend.lg', function() {\r\n if (!_this.$outer.hasClass('lg-zoomed')) {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords - startCoords);\r\n } else {\r\n _this.$el.trigger('onSlideClick.lg');\r\n }\r\n }\r\n });\r\n }\r\n\r\n };\r\n\r\n Plugin.prototype.enableDrag = function() {\r\n var _this = this;\r\n var startCoords = 0;\r\n var endCoords = 0;\r\n var isDraging = false;\r\n var isMoved = false;\r\n if (_this.s.enableDrag && !_this.isTouch && _this.doCss()) {\r\n _this.$slide.on('mousedown.lg', function(e) {\r\n // execute only on .lg-object\r\n if (!_this.$outer.hasClass('lg-zoomed')) {\r\n if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) {\r\n e.preventDefault();\r\n\r\n if (!_this.lgBusy) {\r\n _this.manageSwipeClass();\r\n startCoords = e.pageX;\r\n isDraging = true;\r\n\r\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\r\n _this.$outer.scrollLeft += 1;\r\n _this.$outer.scrollLeft -= 1;\r\n\r\n // *\r\n\r\n _this.$outer.removeClass('lg-grab').addClass('lg-grabbing');\r\n\r\n _this.$el.trigger('onDragstart.lg');\r\n }\r\n\r\n }\r\n }\r\n });\r\n\r\n $(window).on('mousemove.lg', function(e) {\r\n if (isDraging) {\r\n isMoved = true;\r\n endCoords = e.pageX;\r\n _this.touchMove(startCoords, endCoords);\r\n _this.$el.trigger('onDragmove.lg');\r\n }\r\n });\r\n\r\n $(window).on('mouseup.lg', function(e) {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.touchEnd(endCoords - startCoords);\r\n _this.$el.trigger('onDragend.lg');\r\n } else if ($(e.target).hasClass('lg-object') || $(e.target).hasClass('lg-video-play')) {\r\n _this.$el.trigger('onSlideClick.lg');\r\n }\r\n\r\n // Prevent execution on click\r\n if (isDraging) {\r\n isDraging = false;\r\n _this.$outer.removeClass('lg-grabbing').addClass('lg-grab');\r\n }\r\n });\r\n\r\n }\r\n };\r\n\r\n Plugin.prototype.manageSwipeClass = function() {\r\n var touchNext = this.index + 1;\r\n var touchPrev = this.index - 1;\r\n var length = this.$slide.length;\r\n if (this.s.loop) {\r\n if (this.index === 0) {\r\n touchPrev = length - 1;\r\n } else if (this.index === length - 1) {\r\n touchNext = 0;\r\n }\r\n }\r\n\r\n this.$slide.removeClass('lg-next-slide lg-prev-slide');\r\n if (touchPrev > -1) {\r\n this.$slide.eq(touchPrev).addClass('lg-prev-slide');\r\n }\r\n\r\n this.$slide.eq(touchNext).addClass('lg-next-slide');\r\n };\r\n\r\n Plugin.prototype.mousewheel = function() {\r\n var _this = this;\r\n _this.$outer.on('mousewheel.lg', function(e) {\r\n\r\n if (!e.deltaY) {\r\n return;\r\n }\r\n\r\n if (e.deltaY > 0) {\r\n _this.goToPrevSlide();\r\n } else {\r\n _this.goToNextSlide();\r\n }\r\n\r\n e.preventDefault();\r\n });\r\n\r\n };\r\n\r\n Plugin.prototype.closeGallery = function() {\r\n\r\n var _this = this;\r\n var mousedown = false;\r\n this.$outer.find('.lg-close').on('click.lg', function() {\r\n _this.destroy();\r\n });\r\n\r\n if (_this.s.closable) {\r\n\r\n // If you drag the slide and release outside gallery gets close on chrome\r\n // for preventing this check mousedown and mouseup happened on .lg-item or lg-outer\r\n _this.$outer.on('mousedown.lg', function(e) {\r\n\r\n if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap')) {\r\n mousedown = true;\r\n } else {\r\n mousedown = false;\r\n }\r\n\r\n });\r\n\r\n _this.$outer.on('mouseup.lg', function(e) {\r\n\r\n if ($(e.target).is('.lg-outer') || $(e.target).is('.lg-item ') || $(e.target).is('.lg-img-wrap') && mousedown) {\r\n if (!_this.$outer.hasClass('lg-dragging')) {\r\n _this.destroy();\r\n }\r\n }\r\n\r\n });\r\n\r\n }\r\n\r\n };\r\n\r\n Plugin.prototype.destroy = function(d) {\r\n\r\n var _this = this;\r\n\r\n if (!d) {\r\n _this.$el.trigger('onBeforeClose.lg');\r\n }\r\n\r\n //$(window).scrollTop(_this.prevScrollTop);\r\n\r\n /**\r\n * if d is false or undefined destroy will only close the gallery\r\n * plugins instance remains with the element\r\n *\r\n * if d is true destroy will completely remove the plugin\r\n */\r\n\r\n if (d) {\r\n if (!_this.s.dynamic) {\r\n // only when not using dynamic mode is $items a jquery collection\r\n this.$items.off('click.lg click.lgcustom');\r\n }\r\n\r\n $.removeData(_this.el, 'lightGallery');\r\n }\r\n\r\n // Unbind all events added by lightGallery\r\n this.$el.off('.lg.tm');\r\n\r\n // Distroy all lightGallery modules\r\n $.each($.fn.lightGallery.modules, function(key) {\r\n if (_this.modules[key]) {\r\n _this.modules[key].destroy();\r\n }\r\n });\r\n\r\n this.lGalleryOn = false;\r\n\r\n clearTimeout(_this.hideBartimeout);\r\n this.hideBartimeout = false;\r\n $(window).off('.lg');\r\n $('body').removeClass('lg-on lg-from-hash');\r\n\r\n if (_this.$outer) {\r\n _this.$outer.removeClass('lg-visible');\r\n }\r\n\r\n $('.lg-backdrop').removeClass('in');\r\n\r\n setTimeout(function() {\r\n if (_this.$outer) {\r\n _this.$outer.remove();\r\n }\r\n\r\n $('.lg-backdrop').remove();\r\n\r\n if (!d) {\r\n _this.$el.trigger('onCloseAfter.lg');\r\n }\r\n\r\n }, _this.s.backdropDuration + 50);\r\n };\r\n\r\n $.fn.lightGallery = function(options) {\r\n return this.each(function() {\r\n if (!$.data(this, 'lightGallery')) {\r\n $.data(this, 'lightGallery', new Plugin(this, options));\r\n } else {\r\n try {\r\n $(this).data('lightGallery').init();\r\n } catch (err) {\r\n console.error('lightGallery has not initiated properly');\r\n }\r\n }\r\n });\r\n };\r\n\r\n $.fn.lightGallery.modules = {};\r\n\r\n})(jQuery, window, document);\r\n\r\n/* FULLSCREEN */\r\n(function($, window, document, undefined) {\r\n\r\n 'use strict';\r\n\r\n var defaults = {\r\n fullScreen: true\r\n };\r\n\r\n var Fullscreen = function(element) {\r\n\r\n // get lightGallery core plugin data\r\n this.core = $(element).data('lightGallery');\r\n\r\n this.$el = $(element);\r\n\r\n // extend module defalut settings with lightGallery core settings\r\n this.core.s = $.extend({}, defaults, this.core.s);\r\n\r\n this.init();\r\n\r\n return this;\r\n };\r\n\r\n Fullscreen.prototype.init = function() {\r\n var fullScreen = '';\r\n if (this.core.s.fullScreen) {\r\n\r\n // check for fullscreen browser support\r\n if (!document.fullscreenEnabled && !document.webkitFullscreenEnabled &&\r\n !document.mozFullScreenEnabled && !document.msFullscreenEnabled) {\r\n return;\r\n } else {\r\n fullScreen = '' + this.core.s.fullscreenHtml + '';\r\n this.core.$outer.find('.lg-toolbar').append(fullScreen);\r\n this.fullScreen();\r\n }\r\n }\r\n };\r\n\r\n Fullscreen.prototype.requestFullscreen = function() {\r\n var el = document.documentElement;\r\n if (el.requestFullscreen) {\r\n el.requestFullscreen();\r\n } else if (el.msRequestFullscreen) {\r\n el.msRequestFullscreen();\r\n } else if (el.mozRequestFullScreen) {\r\n el.mozRequestFullScreen();\r\n } else if (el.webkitRequestFullscreen) {\r\n el.webkitRequestFullscreen();\r\n }\r\n };\r\n\r\n Fullscreen.prototype.exitFullscreen = function() {\r\n if (document.fullscreenElement ||\r\n document.webkitFullscreenElement ||\r\n document.mozFullScreenElement) {\r\n if (document.exitFullscreen) {\r\n document.exitFullscreen();\r\n } else if (document.msExitFullscreen) {\r\n document.msExitFullscreen();\r\n } else if (document.mozCancelFullScreen) {\r\n document.mozCancelFullScreen();\r\n } else if (document.webkitExitFullscreen) {\r\n document.webkitExitFullscreen();\r\n }\r\n }\r\n };\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/Guide/API/DOM/Using_full_screen_mode\r\n Fullscreen.prototype.fullScreen = function() {\r\n var _this = this;\r\n\r\n $(document).on('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg', function() {\r\n _this.core.$outer.toggleClass('lg-fullscreen-on');\r\n });\r\n\r\n this.core.$outer.find('.lg-fullscreen').on('click.lg', function() {\r\n if (!document.fullscreenElement &&\r\n !document.mozFullScreenElement && !document.webkitFullscreenElement && !document.msFullscreenElement) {\r\n _this.requestFullscreen();\r\n } else {\r\n _this.exitFullscreen();\r\n }\r\n });\r\n\r\n };\r\n\r\n Fullscreen.prototype.destroy = function() {\r\n\r\n // exit from fullscreen if activated\r\n this.exitFullscreen();\r\n\r\n $(document).off('fullscreenchange.lg webkitfullscreenchange.lg mozfullscreenchange.lg MSFullscreenChange.lg');\r\n };\r\n\r\n $.fn.lightGallery.modules.fullscreen = Fullscreen;\r\n\r\n})(jQuery, window, document);\r\n\r\n/* THUMBNAIL */\r\n(function($, window, document, undefined) {\r\n\r\n 'use strict';\r\n\r\n var defaults = {\r\n thumbnail: true,\r\n\r\n animateThumb: true,\r\n currentPagerPosition: 'middle',\r\n\r\n thumbWidth: 80,\r\n thumbContHeight: 100,\r\n thumbMargin: 5,\r\n\r\n exThumbImage: false,\r\n showThumbByDefault: true,\r\n toogleThumb: true,\r\n pullCaptionUp: true,\r\n\r\n enableThumbDrag: true,\r\n enableThumbSwipe: true,\r\n swipeThreshold: 50,\r\n\r\n loadYoutubeThumbnail: true,\r\n youtubeThumbSize: 1,\r\n\r\n loadVimeoThumbnail: true,\r\n vimeoThumbSize: 'thumbnail_small',\r\n\r\n loadDailymotionThumbnail: true\r\n };\r\n\r\n var Thumbnail = function(element) {\r\n\r\n // get lightGallery core plugin data\r\n this.core = $(element).data('lightGallery');\r\n\r\n // extend module default settings with lightGallery core settings\r\n this.core.s = $.extend({}, defaults, this.core.s);\r\n\r\n this.$el = $(element);\r\n this.$thumbOuter = null;\r\n this.thumbOuterWidth = 0;\r\n this.thumbTotalWidth = (this.core.$items.length * (this.core.s.thumbWidth + this.core.s.thumbMargin));\r\n this.thumbIndex = this.core.index;\r\n\r\n // Thumbnail animation value\r\n this.left = 0;\r\n\r\n this.init();\r\n\r\n return this;\r\n };\r\n\r\n Thumbnail.prototype.init = function() {\r\n var _this = this;\r\n if (this.core.s.thumbnail && this.core.$items.length > 1) {\r\n if (this.core.s.showThumbByDefault) {\r\n setTimeout(function(){\r\n _this.core.$outer.addClass('lg-thumb-open');\r\n }, 700);\r\n }\r\n\r\n if (this.core.s.pullCaptionUp) {\r\n this.core.$outer.addClass('lg-pull-caption-up');\r\n }\r\n\r\n this.build();\r\n if (this.core.s.animateThumb) {\r\n if (this.core.s.enableThumbDrag && !this.core.isTouch && this.core.doCss()) {\r\n this.enableThumbDrag();\r\n }\r\n\r\n if (this.core.s.enableThumbSwipe && this.core.isTouch && this.core.doCss()) {\r\n this.enableThumbSwipe();\r\n }\r\n\r\n this.thumbClickable = false;\r\n } else {\r\n this.thumbClickable = true;\r\n }\r\n\r\n this.toogle();\r\n this.thumbkeyPress();\r\n }\r\n };\r\n\r\n Thumbnail.prototype.build = function() {\r\n var _this = this;\r\n var thumbList = '';\r\n var vimeoErrorThumbSize = '';\r\n var $thumb;\r\n var html = '
' +\r\n '
' +\r\n '
' +\r\n '
';\r\n\r\n switch (this.core.s.vimeoThumbSize) {\r\n case 'thumbnail_large':\r\n vimeoErrorThumbSize = '640';\r\n break;\r\n case 'thumbnail_medium':\r\n vimeoErrorThumbSize = '200x150';\r\n break;\r\n case 'thumbnail_small':\r\n vimeoErrorThumbSize = '100x75';\r\n }\r\n\r\n _this.core.$outer.addClass('lg-has-thumb');\r\n\r\n _this.core.$outer.find('.lg').append(html);\r\n\r\n _this.$thumbOuter = _this.core.$outer.find('.lg-thumb-outer');\r\n _this.thumbOuterWidth = _this.$thumbOuter.width();\r\n\r\n if (_this.core.s.animateThumb) {\r\n _this.core.$outer.find('.lg-thumb').css({\r\n width: _this.thumbTotalWidth + 'px',\r\n position: 'relative'\r\n });\r\n }\r\n\r\n if (this.core.s.animateThumb) {\r\n _this.$thumbOuter.css('height', _this.core.s.thumbContHeight + 'px');\r\n }\r\n\r\n function getThumb(src, thumb, index) {\r\n var isVideo = _this.core.isVideo(src, index) || {},\r\n thumbImg,\r\n vimeoId = '',\r\n item = '',\r\n icon = '';\r\n\r\n if (isVideo.youtube || isVideo.vimeo || isVideo.dailymotion) {\r\n if (isVideo.youtube) {\r\n if (_this.core.s.loadYoutubeThumbnail) {\r\n thumbImg = '//img.youtube.com/vi/' + isVideo.youtube[1] + '/' + _this.core.s.youtubeThumbSize + '.jpg';\r\n } else {\r\n thumbImg = thumb;\r\n }\r\n } else if (isVideo.vimeo) {\r\n if (_this.core.s.loadVimeoThumbnail) {\r\n thumbImg = '//i.vimeocdn.com/video/error_' + vimeoErrorThumbSize + '.jpg';\r\n vimeoId = isVideo.vimeo[1];\r\n item = 'data-vimeo-id=\"' + vimeoId + '\" ';\r\n } else {\r\n thumbImg = thumb;\r\n }\r\n } else if (isVideo.dailymotion) {\r\n if (_this.core.s.loadDailymotionThumbnail) {\r\n thumbImg = '//www.dailymotion.com/thumbnail/video/' + isVideo.dailymotion[1];\r\n } else {\r\n thumbImg = thumb;\r\n }\r\n }\r\n var icon = '';\r\n } else {\r\n thumbImg = thumb;\r\n }\r\n\r\n thumbList += '
' + icon + '
';\r\n vimeoId = '';\r\n }\r\n\r\n if (_this.core.s.dynamic) {\r\n for (var i = 0; i < _this.core.s.dynamicEl.length; i++) {\r\n getThumb(_this.core.s.dynamicEl[i].src, _this.core.s.dynamicEl[i].thumb, i);\r\n }\r\n } else {\r\n _this.core.$items.each(function(i) {\r\n\r\n if (!_this.core.s.exThumbImage) {\r\n getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).find('img').attr('src'), i);\r\n } else {\r\n getThumb($(this).attr('href') || $(this).attr('data-src'), $(this).attr(_this.core.s.exThumbImage), i);\r\n }\r\n\r\n });\r\n }\r\n\r\n _this.core.$outer.find('.lg-thumb').html(thumbList);\r\n\r\n $thumb = _this.core.$outer.find('.lg-thumb-item');\r\n\r\n // Load vimeo thumbnails\r\n $thumb.each(function() {\r\n var $this = $(this);\r\n var vimeoVideoId = $this.attr('data-vimeo-id');\r\n\r\n if (vimeoVideoId) {\r\n $.getJSON('//www.vimeo.com/api/v2/video/' + vimeoVideoId + '.json?callback=?', {\r\n format: 'json'\r\n }, function(data) {\r\n $this.find('img').attr('src', data[0][_this.core.s.vimeoThumbSize]);\r\n });\r\n }\r\n });\r\n\r\n // manage active class for thumbnail\r\n $thumb.eq(_this.core.index).addClass('active');\r\n _this.core.$el.on('onBeforeSlide.lg.tm', function() {\r\n $thumb.removeClass('active');\r\n $thumb.eq(_this.core.index).addClass('active');\r\n });\r\n\r\n $thumb.on('click.lg touchend.lg', function() {\r\n var _$this = $(this);\r\n setTimeout(function() {\r\n\r\n // In IE9 and bellow touch does not support\r\n // Go to slide if browser does not support css transitions\r\n if ((_this.thumbClickable && !_this.core.lgBusy) || !_this.core.doCss()) {\r\n _this.core.index = _$this.index();\r\n _this.core.slide(_this.core.index, false, true);\r\n }\r\n }, 50);\r\n });\r\n\r\n _this.core.$el.on('onBeforeSlide.lg.tm', function() {\r\n _this.animateThumb(_this.core.index);\r\n });\r\n\r\n $(window).on('resize.lg.thumb orientationchange.lg.thumb', function() {\r\n setTimeout(function() {\r\n _this.animateThumb(_this.core.index);\r\n _this.thumbOuterWidth = _this.$thumbOuter.width();\r\n }, 200);\r\n });\r\n\r\n };\r\n\r\n Thumbnail.prototype.setTranslate = function(value) {\r\n // jQuery supports Automatic CSS prefixing since jQuery 1.8.0\r\n this.core.$outer.find('.lg-thumb').css({\r\n transform: 'translate3d(-' + (value) + 'px, 0px, 0px)'\r\n });\r\n };\r\n\r\n Thumbnail.prototype.animateThumb = function(index) {\r\n this.core.$outer.find('.lg-inner').css('height', ($(window).height() - this.core.s.thumbContHeight) + 'px');\r\n var $thumb = this.core.$outer.find('.lg-thumb');\r\n if (this.core.s.animateThumb) {\r\n var position;\r\n switch (this.core.s.currentPagerPosition) {\r\n case 'left':\r\n position = 0;\r\n break;\r\n case 'middle':\r\n position = (this.thumbOuterWidth / 2) - (this.core.s.thumbWidth / 2);\r\n break;\r\n case 'right':\r\n position = this.thumbOuterWidth - this.core.s.thumbWidth;\r\n }\r\n this.left = ((this.core.s.thumbWidth + this.core.s.thumbMargin) * index - 1) - position;\r\n if (this.left > (this.thumbTotalWidth - this.thumbOuterWidth)) {\r\n this.left = this.thumbTotalWidth - this.thumbOuterWidth;\r\n }\r\n\r\n if (this.left < 0) {\r\n this.left = 0;\r\n }\r\n\r\n if (this.core.lGalleryOn) {\r\n if (!$thumb.hasClass('on')) {\r\n this.core.$outer.find('.lg-thumb').css('transition-duration', this.core.s.speed + 'ms');\r\n }\r\n\r\n if (!this.core.doCss()) {\r\n $thumb.animate({\r\n left: -this.left + 'px'\r\n }, this.core.s.speed);\r\n }\r\n } else {\r\n if (!this.core.doCss()) {\r\n $thumb.css('left', -this.left + 'px');\r\n }\r\n }\r\n\r\n this.setTranslate(this.left);\r\n\r\n }\r\n };\r\n\r\n // Enable thumbnail dragging and swiping\r\n Thumbnail.prototype.enableThumbDrag = function() {\r\n\r\n var _this = this;\r\n var startCoords = 0;\r\n var endCoords = 0;\r\n var isDraging = false;\r\n var isMoved = false;\r\n var tempLeft = 0;\r\n\r\n _this.$thumbOuter.addClass('lg-grab');\r\n\r\n _this.core.$outer.find('.lg-thumb').on('mousedown.lg.thumb', function(e) {\r\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\r\n // execute only on .lg-object\r\n e.preventDefault();\r\n startCoords = e.pageX;\r\n isDraging = true;\r\n\r\n // ** Fix for webkit cursor issue https://code.google.com/p/chromium/issues/detail?id=26723\r\n _this.core.$outer.scrollLeft += 1;\r\n _this.core.$outer.scrollLeft -= 1;\r\n\r\n // *\r\n _this.thumbClickable = false;\r\n _this.$thumbOuter.removeClass('lg-grab').addClass('lg-grabbing');\r\n }\r\n });\r\n\r\n $(window).on('mousemove.lg.thumb', function(e) {\r\n if (isDraging) {\r\n tempLeft = _this.left;\r\n isMoved = true;\r\n endCoords = e.pageX;\r\n\r\n _this.$thumbOuter.addClass('lg-dragging');\r\n\r\n tempLeft = tempLeft - (endCoords - startCoords);\r\n\r\n if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) {\r\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\r\n }\r\n\r\n if (tempLeft < 0) {\r\n tempLeft = 0;\r\n }\r\n\r\n // move current slide\r\n _this.setTranslate(tempLeft);\r\n\r\n }\r\n });\r\n\r\n $(window).on('mouseup.lg.thumb', function() {\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.$thumbOuter.removeClass('lg-dragging');\r\n\r\n _this.left = tempLeft;\r\n\r\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\r\n _this.thumbClickable = true;\r\n }\r\n\r\n } else {\r\n _this.thumbClickable = true;\r\n }\r\n\r\n if (isDraging) {\r\n isDraging = false;\r\n _this.$thumbOuter.removeClass('lg-grabbing').addClass('lg-grab');\r\n }\r\n });\r\n\r\n };\r\n\r\n Thumbnail.prototype.enableThumbSwipe = function() {\r\n var _this = this;\r\n var startCoords = 0;\r\n var endCoords = 0;\r\n var isMoved = false;\r\n var tempLeft = 0;\r\n\r\n _this.core.$outer.find('.lg-thumb').on('touchstart.lg', function(e) {\r\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\r\n e.preventDefault();\r\n startCoords = e.originalEvent.targetTouches[0].pageX;\r\n _this.thumbClickable = false;\r\n }\r\n });\r\n\r\n _this.core.$outer.find('.lg-thumb').on('touchmove.lg', function(e) {\r\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\r\n e.preventDefault();\r\n endCoords = e.originalEvent.targetTouches[0].pageX;\r\n isMoved = true;\r\n\r\n _this.$thumbOuter.addClass('lg-dragging');\r\n\r\n tempLeft = _this.left;\r\n\r\n tempLeft = tempLeft - (endCoords - startCoords);\r\n\r\n if (tempLeft > (_this.thumbTotalWidth - _this.thumbOuterWidth)) {\r\n tempLeft = _this.thumbTotalWidth - _this.thumbOuterWidth;\r\n }\r\n\r\n if (tempLeft < 0) {\r\n tempLeft = 0;\r\n }\r\n\r\n // move current slide\r\n _this.setTranslate(tempLeft);\r\n\r\n }\r\n });\r\n\r\n _this.core.$outer.find('.lg-thumb').on('touchend.lg', function() {\r\n if (_this.thumbTotalWidth > _this.thumbOuterWidth) {\r\n\r\n if (isMoved) {\r\n isMoved = false;\r\n _this.$thumbOuter.removeClass('lg-dragging');\r\n if (Math.abs(endCoords - startCoords) < _this.core.s.swipeThreshold) {\r\n _this.thumbClickable = true;\r\n }\r\n\r\n _this.left = tempLeft;\r\n } else {\r\n _this.thumbClickable = true;\r\n }\r\n } else {\r\n _this.thumbClickable = true;\r\n }\r\n });\r\n\r\n };\r\n\r\n Thumbnail.prototype.toogle = function() {\r\n var _this = this;\r\n if (_this.core.s.toogleThumb) {\r\n _this.core.$outer.addClass('lg-can-toggle');\r\n _this.$thumbOuter.append('');\r\n _this.core.$outer.find('.lg-toogle-thumb').on('click.lg', function() {\r\n _this.core.$outer.toggleClass('lg-thumb-open');\r\n });\r\n }\r\n };\r\n\r\n Thumbnail.prototype.thumbkeyPress = function() {\r\n var _this = this;\r\n $(window).on('keydown.lg.thumb', function(e) {\r\n if (e.keyCode === 38) {\r\n e.preventDefault();\r\n _this.core.$outer.addClass('lg-thumb-open');\r\n } else if (e.keyCode === 40) {\r\n e.preventDefault();\r\n _this.core.$outer.removeClass('lg-thumb-open');\r\n }\r\n });\r\n };\r\n\r\n Thumbnail.prototype.destroy = function() {\r\n if (this.core.s.thumbnail && this.core.$items.length > 1) {\r\n $(window).off('resize.lg.thumb orientationchange.lg.thumb keydown.lg.thumb');\r\n this.$thumbOuter.remove();\r\n this.core.$outer.removeClass('lg-has-thumb');\r\n }\r\n };\r\n\r\n $.fn.lightGallery.modules.Thumbnail = Thumbnail;\r\n\r\n})(jQuery, window, document);\r\n\r\n/* VIDEO */\r\n(function($, window, document, undefined) {\r\n\r\n 'use strict';\r\n\r\n var defaults = {\r\n videoMaxWidth: '855px',\r\n youtubePlayerParams: false,\r\n vimeoPlayerParams: false,\r\n dailymotionPlayerParams: false,\r\n vkPlayerParams: false,\r\n videojs: false,\r\n videojsOptions: {}\r\n };\r\n\r\n var Video = function(element) {\r\n\r\n this.core = $(element).data('lightGallery');\r\n\r\n this.$el = $(element);\r\n this.core.s = $.extend({}, defaults, this.core.s);\r\n this.videoLoaded = false;\r\n\r\n this.init();\r\n\r\n return this;\r\n };\r\n\r\n Video.prototype.init = function() {\r\n var _this = this;\r\n\r\n // Event triggered when video url found without poster\r\n _this.core.$el.on('hasVideo.lg.tm', function(event, index, src, html) {\r\n _this.core.$slide.eq(index).find('.lg-video').append(_this.loadVideo(src, 'lg-object', true, index, html));\r\n if (html) {\r\n if (_this.core.s.videojs) {\r\n try {\r\n videojs(_this.core.$slide.eq(index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function() {\r\n if (!_this.videoLoaded) {\r\n this.play();\r\n }\r\n });\r\n } catch (e) {\r\n console.error('Make sure you have included videojs');\r\n }\r\n } else {\r\n _this.core.$slide.eq(index).find('.lg-html5').get(0).play();\r\n }\r\n }\r\n });\r\n\r\n // Set max width for video\r\n _this.core.$el.on('onAferAppendSlide.lg.tm', function(event, index) {\r\n _this.core.$slide.eq(index).find('.lg-video-cont').css('max-width', _this.core.s.videoMaxWidth);\r\n _this.videoLoaded = true;\r\n });\r\n\r\n var loadOnClick = function($el) {\r\n // check slide has poster\r\n if ($el.find('.lg-object').hasClass('lg-has-poster') && $el.find('.lg-object').is(':visible')) {\r\n\r\n // check already video element present\r\n if (!$el.hasClass('lg-has-video')) {\r\n\r\n $el.addClass('lg-video-playing lg-has-video');\r\n\r\n var _src;\r\n var _html;\r\n var _loadVideo = function(_src, _html) {\r\n\r\n $el.find('.lg-video').append(_this.loadVideo(_src, '', false, _this.core.index, _html));\r\n\r\n if (_html) {\r\n if (_this.core.s.videojs) {\r\n try {\r\n videojs(_this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0), _this.core.s.videojsOptions, function() {\r\n this.play();\r\n });\r\n } catch (e) {\r\n console.error('Make sure you have included videojs');\r\n }\r\n } else {\r\n _this.core.$slide.eq(_this.core.index).find('.lg-html5').get(0).play();\r\n }\r\n }\r\n\r\n };\r\n\r\n if (_this.core.s.dynamic) {\r\n\r\n _src = _this.core.s.dynamicEl[_this.core.index].src;\r\n _html = _this.core.s.dynamicEl[_this.core.index].html;\r\n\r\n _loadVideo(_src, _html);\r\n\r\n } else {\r\n\r\n _src = _this.core.$items.eq(_this.core.index).attr('href') || _this.core.$items.eq(_this.core.index).attr('data-src');\r\n _html = _this.core.$items.eq(_this.core.index).attr('data-html');\r\n\r\n _loadVideo(_src, _html);\r\n\r\n }\r\n\r\n var $tempImg = $el.find('.lg-object');\r\n $el.find('.lg-video').append($tempImg);\r\n\r\n // @todo loading icon for html5 videos also\r\n // for showing the loading indicator while loading video\r\n if (!$el.find('.lg-video-object').hasClass('lg-html5')) {\r\n $el.removeClass('lg-complete');\r\n $el.find('.lg-video-object').on('load.lg error.lg', function() {\r\n $el.addClass('lg-complete');\r\n });\r\n }\r\n\r\n } else {\r\n\r\n var youtubePlayer = $el.find('.lg-youtube').get(0);\r\n var vimeoPlayer = $el.find('.lg-vimeo').get(0);\r\n var dailymotionPlayer = $el.find('.lg-dailymotion').get(0);\r\n var html5Player = $el.find('.lg-html5').get(0);\r\n if (youtubePlayer) {\r\n youtubePlayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"playVideo\",\"args\":\"\"}', '*');\r\n } else if (vimeoPlayer) {\r\n try {\r\n $f(vimeoPlayer).api('play');\r\n } catch (e) {\r\n console.error('Make sure you have included froogaloop2 js');\r\n }\r\n } else if (dailymotionPlayer) {\r\n dailymotionPlayer.contentWindow.postMessage('play', '*');\r\n\r\n } else if (html5Player) {\r\n if (_this.core.s.videojs) {\r\n try {\r\n videojs(html5Player).play();\r\n } catch (e) {\r\n console.error('Make sure you have included videojs');\r\n }\r\n } else {\r\n html5Player.play();\r\n }\r\n }\r\n\r\n $el.addClass('lg-video-playing');\r\n\r\n }\r\n }\r\n };\r\n\r\n if (_this.core.doCss() && _this.core.$items.length > 1 && ((_this.core.s.enableSwipe && _this.core.isTouch) || (_this.core.s.enableDrag && !_this.core.isTouch))) {\r\n _this.core.$el.on('onSlideClick.lg.tm', function() {\r\n var $el = _this.core.$slide.eq(_this.core.index);\r\n loadOnClick($el);\r\n });\r\n } else {\r\n\r\n // For IE 9 and bellow\r\n _this.core.$slide.on('click.lg', function() {\r\n loadOnClick($(this));\r\n });\r\n }\r\n\r\n _this.core.$el.on('onBeforeSlide.lg.tm', function(event, prevIndex, index) {\r\n\r\n var $videoSlide = _this.core.$slide.eq(prevIndex);\r\n var youtubePlayer = $videoSlide.find('.lg-youtube').get(0);\r\n var vimeoPlayer = $videoSlide.find('.lg-vimeo').get(0);\r\n var dailymotionPlayer = $videoSlide.find('.lg-dailymotion').get(0);\r\n var vkPlayer = $videoSlide.find('.lg-vk').get(0);\r\n var html5Player = $videoSlide.find('.lg-html5').get(0);\r\n if (youtubePlayer) {\r\n youtubePlayer.contentWindow.postMessage('{\"event\":\"command\",\"func\":\"pauseVideo\",\"args\":\"\"}', '*');\r\n } else if (vimeoPlayer) {\r\n try {\r\n $f(vimeoPlayer).api('pause');\r\n } catch (e) {\r\n console.error('Make sure you have included froogaloop2 js');\r\n }\r\n } else if (dailymotionPlayer) {\r\n dailymotionPlayer.contentWindow.postMessage('pause', '*');\r\n\r\n } else if (html5Player) {\r\n if (_this.core.s.videojs) {\r\n try {\r\n videojs(html5Player).pause();\r\n } catch (e) {\r\n console.error('Make sure you have included videojs');\r\n }\r\n } else {\r\n html5Player.pause();\r\n }\r\n } if (vkPlayer) {\r\n $(vkPlayer).attr('src', $(vkPlayer).attr('src').replace('&autoplay', '&noplay'));\r\n }\r\n\r\n var _src;\r\n if (_this.core.s.dynamic) {\r\n _src = _this.core.s.dynamicEl[index].src;\r\n } else {\r\n _src = _this.core.$items.eq(index).attr('href') || _this.core.$items.eq(index).attr('data-src');\r\n\r\n }\r\n\r\n var _isVideo = _this.core.isVideo(_src, index) || {};\r\n if (_isVideo.youtube || _isVideo.vimeo || _isVideo.dailymotion || _isVideo.vk) {\r\n _this.core.$outer.addClass('lg-hide-download');\r\n }\r\n\r\n //$videoSlide.addClass('lg-complete');\r\n\r\n });\r\n\r\n _this.core.$el.on('onAfterSlide.lg.tm', function(event, prevIndex) {\r\n _this.core.$slide.eq(prevIndex).removeClass('lg-video-playing');\r\n });\r\n };\r\n\r\n Video.prototype.loadVideo = function(src, addClass, noposter, index, html) {\r\n var video = '';\r\n var autoplay = 1;\r\n var a = '';\r\n var isVideo = this.core.isVideo(src, index) || {};\r\n\r\n // Enable autoplay for first video if poster doesn't exist\r\n if (noposter) {\r\n if (this.videoLoaded) {\r\n autoplay = 0;\r\n } else {\r\n autoplay = 1;\r\n }\r\n }\r\n\r\n if (isVideo.youtube) {\r\n\r\n a = '?wmode=opaque&autoplay=' + autoplay + '&enablejsapi=1';\r\n if (this.core.s.youtubePlayerParams) {\r\n a = a + '&' + $.param(this.core.s.youtubePlayerParams);\r\n }\r\n\r\n video = '';\r\n\r\n } else if (isVideo.vimeo) {\r\n\r\n a = '?autoplay=' + autoplay + '&api=1';\r\n if (this.core.s.vimeoPlayerParams) {\r\n a = a + '&' + $.param(this.core.s.vimeoPlayerParams);\r\n }\r\n\r\n video = '';\r\n\r\n } else if (isVideo.dailymotion) {\r\n\r\n a = '?wmode=opaque&autoplay=' + autoplay + '&api=postMessage';\r\n if (this.core.s.dailymotionPlayerParams) {\r\n a = a + '&' + $.param(this.core.s.dailymotionPlayerParams);\r\n }\r\n\r\n video = '';\r\n\r\n } else if (isVideo.html5) {\r\n var fL = html.substring(0, 1);\r\n if (fL === '.' || fL === '#') {\r\n html = $(html).html();\r\n }\r\n\r\n video = html;\r\n\r\n } else if (isVideo.vk) {\r\n\r\n a = '&autoplay=' + autoplay;\r\n if (this.core.s.vkPlayerParams) {\r\n a = a + '&' + $.param(this.core.s.vkPlayerParams);\r\n }\r\n\r\n video = '';\r\n\r\n }\r\n\r\n return video;\r\n };\r\n\r\n Video.prototype.destroy = function() {\r\n this.videoLoaded = false;\r\n };\r\n\r\n $.fn.lightGallery.modules.video = Video;\r\n\r\n})(jQuery, window, document);\r\n\r\n/*!\r\n * jQuery Mousewheel 3.1.13\r\n *\r\n * Copyright 2015 jQuery Foundation and other contributors\r\n * Released under the MIT license.\r\n * http://jquery.org/license\r\n */\r\n!function(a){\"function\"==typeof define&&define.amd?define([\"jquery\"],a):\"object\"==typeof exports?module.exports=a:a(jQuery)}(function(a){function b(b){var g=b||window.event,h=i.call(arguments,1),j=0,l=0,m=0,n=0,o=0,p=0;if(b=a.event.fix(g),b.type=\"mousewheel\",\"detail\"in g&&(m=-1*g.detail),\"wheelDelta\"in g&&(m=g.wheelDelta),\"wheelDeltaY\"in g&&(m=g.wheelDeltaY),\"wheelDeltaX\"in g&&(l=-1*g.wheelDeltaX),\"axis\"in g&&g.axis===g.HORIZONTAL_AXIS&&(l=-1*m,m=0),j=0===m?l:m,\"deltaY\"in g&&(m=-1*g.deltaY,j=m),\"deltaX\"in g&&(l=g.deltaX,0===m&&(j=-1*l)),0!==m||0!==l){if(1===g.deltaMode){var q=a.data(this,\"mousewheel-line-height\");j*=q,m*=q,l*=q}else if(2===g.deltaMode){var r=a.data(this,\"mousewheel-page-height\");j*=r,m*=r,l*=r}if(n=Math.max(Math.abs(m),Math.abs(l)),(!f||f>n)&&(f=n,d(g,n)&&(f/=40)),d(g,n)&&(j/=40,l/=40,m/=40),j=Math[j>=1?\"floor\":\"ceil\"](j/f),l=Math[l>=1?\"floor\":\"ceil\"](l/f),m=Math[m>=1?\"floor\":\"ceil\"](m/f),k.settings.normalizeOffset&&this.getBoundingClientRect){var s=this.getBoundingClientRect();o=b.clientX-s.left,p=b.clientY-s.top}return b.deltaX=l,b.deltaY=m,b.deltaFactor=f,b.offsetX=o,b.offsetY=p,b.deltaMode=0,h.unshift(b,j,l,m),e&&clearTimeout(e),e=setTimeout(c,200),(a.event.dispatch||a.event.handle).apply(this,h)}}function c(){f=null}function d(a,b){return k.settings.adjustOldDeltas&&\"mousewheel\"===a.type&&b%120===0}var e,f,g=[\"wheel\",\"mousewheel\",\"DOMMouseScroll\",\"MozMousePixelScroll\"],h=\"onwheel\"in document||document.documentMode>=9?[\"wheel\"]:[\"mousewheel\",\"DomMouseScroll\",\"MozMousePixelScroll\"],i=Array.prototype.slice;if(a.event.fixHooks)for(var j=g.length;j;)a.event.fixHooks[g[--j]]=a.event.mouseHooks;var k=a.event.special.mousewheel={version:\"3.1.12\",setup:function(){if(this.addEventListener)for(var c=h.length;c;)this.addEventListener(h[--c],b,!1);else this.onmousewheel=b;a.data(this,\"mousewheel-line-height\",k.getLineHeight(this)),a.data(this,\"mousewheel-page-height\",k.getPageHeight(this))},teardown:function(){if(this.removeEventListener)for(var c=h.length;c;)this.removeEventListener(h[--c],b,!1);else this.onmousewheel=null;a.removeData(this,\"mousewheel-line-height\"),a.removeData(this,\"mousewheel-page-height\")},getLineHeight:function(b){var c=a(b),d=c[\"offsetParent\"in a.fn?\"offsetParent\":\"parent\"]();return d.length||(d=a(\"body\")),parseInt(d.css(\"fontSize\"),10)||parseInt(c.css(\"fontSize\"),10)||16},getPageHeight:function(b){return a(b).height()},settings:{adjustOldDeltas:!0,normalizeOffset:!0}};a.fn.extend({mousewheel:function(a){return a?this.bind(\"mousewheel\",a):this.trigger(\"mousewheel\")},unmousewheel:function(a){return this.unbind(\"mousewheel\",a)}})});","import { cloneDeep } from 'lodash-es';\r\nimport 'import/js/plugins/md5.min.js';\r\n\r\nexport default angular\r\n .module('service.product', [])\r\n\r\n /* @ngInject */\r\n .factory('ProductService', function () {\r\n let products = {};\r\n const service = {\r\n setProduct,\r\n setProductQuantity,\r\n setProductPrice,\r\n setProductCustomization,\r\n setCustomizablePrice,\r\n setKitElement,\r\n getProduct,\r\n getProductsData,\r\n getProductCustomisation,\r\n getActive\r\n };\r\n return service;\r\n\r\n ////////////\r\n function setProduct(idGroup, product) {\r\n products = {};\r\n products[idGroup] = product;\r\n }\r\n\r\n function setProductQuantity(idGroup, value) {\r\n products[idGroup].quantity = value;\r\n }\r\n\r\n function setProductPrice(idGroup, price, costTTC, costHT, showTTCPrice, prices, discountedCostTTC, discountedCostHT) {\r\n products[idGroup].Price = price;\r\n products[idGroup].costTTC = costTTC;\r\n products[idGroup].costHT = costHT;\r\n products[idGroup].discountedCostTTC = discountedCostTTC;\r\n products[idGroup].discountedCostHT = discountedCostHT;\r\n products[idGroup].showTTCPrice = showTTCPrice;\r\n products[idGroup].prices = prices;\r\n products[idGroup].isConditioningPrice = prices.length > 1 && prices[1].isConditioningPrice;\r\n }\r\n\r\n function setProductCustomization(idGroup, value) {\r\n products[idGroup].Customization = value;\r\n const customization = cloneDeep(value);\r\n customization.Items.forEach(item => {\r\n if (!item.Group) {\r\n item.Field.Comment = null;\r\n }\r\n if (item.Group) {\r\n item.Group.Fields.forEach(field => {\r\n field.Comment = null;\r\n });\r\n }\r\n });\r\n products[idGroup].Comment = md5(angular.toJson(customization)); // eslint-disable-line\r\n }\r\n\r\n function setCustomizablePrice(idGroup, value) {\r\n if (!products[idGroup].CustomizablePrice) {\r\n products[idGroup].CustomizablePrice = {\r\n initial: value\r\n };\r\n }\r\n products[idGroup].CustomizablePrice.current = value;\r\n }\r\n\r\n function setKitElement(idGroup, component) {\r\n if (component.Type && component.Type === 901 && component.Type === 903 && !component.Required && !component.Product) return;\r\n const product = products[idGroup];\r\n\r\n if (!product.elements) product.elements = {};\r\n if (!product.elements[component.uniqueId]) product.elements[component.uniqueId] = {};\r\n\r\n if (component.ProductPrices) {\r\n component.AdditionalCost = {\r\n TTCPrice:\r\n component.Product.SelectedProduct && component.ProductPrices[component.Product.SelectedProduct.IDProduct]\r\n ? component.ProductPrices[component.Product.SelectedProduct.IDProduct].TTCPrice\r\n : 0,\r\n HTPrice:\r\n component.Product.SelectedProduct && component.ProductPrices[component.Product.SelectedProduct.IDProduct]\r\n ? component.ProductPrices[component.Product.SelectedProduct.IDProduct].HTPrice\r\n : 0,\r\n TTCDiscountedPrice:\r\n component.Product.SelectedProduct && component.ProductPrices[component.Product.SelectedProduct.IDProduct]\r\n ? component.ProductPrices[component.Product.SelectedProduct.IDProduct].TTCDiscountedPrice\r\n : 0,\r\n HTDiscountedPrice:\r\n component.Product.SelectedProduct && component.ProductPrices[component.Product.SelectedProduct.IDProduct]\r\n ? component.ProductPrices[component.Product.SelectedProduct.IDProduct].HTDiscountedPrice\r\n : 0\r\n };\r\n }\r\n\r\n product.elements[component.uniqueId] = {\r\n idKitComponent: component.Id || 0,\r\n type: component.Type,\r\n idProduct: component.Product ? component.currentModel.IDProduct : 0,\r\n quantity: component.Quantity,\r\n isPrimary: component.isPrimary,\r\n allowAddToCart: component.currentModel ? component.currentModel.AllowAddToCart : false,\r\n required: component.Required || false,\r\n costTTC: component.AdditionalCost ? component.AdditionalCost.TTCPrice : 0,\r\n costHT: component.AdditionalCost ? component.AdditionalCost.HTPrice : 0,\r\n discountedCostTTC: component.AdditionalCost ? component.AdditionalCost.TTCDiscountedPrice : 0,\r\n discountedCostHT: component.AdditionalCost ? component.AdditionalCost.HTDiscountedPrice : 0,\r\n customization: component.Product ? component.Product.Customization : null,\r\n designation: component.Product ? component.currentModel.Designation : '',\r\n idPicture: component.Product ? component.currentModel.IDPicture : 0\r\n };\r\n\r\n product.Elements = [];\r\n Object.keys(product.elements).forEach(keyElement => {\r\n const element = product.elements[keyElement];\r\n if (element.isPrimary && element.idProduct !== 0) {\r\n product.Elements.push({\r\n IDKitComponent: element.idKitComponent,\r\n IDProduct: element.idProduct,\r\n Quantity: element.quantity\r\n });\r\n }\r\n });\r\n product.Comment = md5(angular.toJson(product.Elements)); // eslint-disable-line\r\n }\r\n\r\n function getProduct() {\r\n return products;\r\n }\r\n\r\n function getProductsData() {\r\n const data = [];\r\n Object.keys(products).forEach(key => {\r\n data.push(products[key]);\r\n });\r\n return data;\r\n }\r\n\r\n function getProductCustomisation(idGroup) {\r\n return products[idGroup] && products[idGroup].Customization ? products[idGroup].Customization : null;\r\n }\r\n\r\n function getActive() {\r\n let result = true;\r\n Object.keys(products).forEach(key => {\r\n const product = products[key];\r\n if (!product.isPrimary) {\r\n result = false;\r\n } else if (product.elements) {\r\n Object.keys(product.elements).forEach(keyComponent => {\r\n const component = product.elements[keyComponent];\r\n if (!component.type) {\r\n if (!component.allowAddToCart) {\r\n result = false;\r\n }\r\n } else if (component.type === 901 || component.type === 903) {\r\n if (component.required && !component.allowAddToCart) {\r\n result = false;\r\n }\r\n } else if (component.type === 902) {\r\n if (component.required && !component.allowAddToCart) {\r\n result = false;\r\n }\r\n }\r\n });\r\n } else if (product.CustomizablePrice) {\r\n if (product.CustomizablePrice.initial === product.CustomizablePrice.current) {\r\n result = false;\r\n }\r\n }\r\n });\r\n return result;\r\n }\r\n });\r\n","!function(r){function n(r){for(var n=\"\",t=\"\",o=0,e=0,a=0,i=r.length;i>a;a++){var f=r.charCodeAt(a);128>f?e++:(t=2048>f?String.fromCharCode(f>>6|192,63&f|128):String.fromCharCode(f>>12|224,f>>6&63|128,63&f|128),e>o&&(n+=r.slice(o,e)),n+=t,o=e=a+1)}return e>o&&(n+=r.slice(o,i)),n}function t(r){var n,t;if(r+=\"\",s=!1,v=w=r.length,w>63){for(o(r.substring(0,64)),i(A),s=!0,n=128;w>=n;n+=64)o(r.substring(n-64,n)),f(A);r=r.substring(n-64),w=r.length}for(d[0]=d[1]=d[2]=d[3]=d[4]=d[5]=d[6]=d[7]=d[8]=d[9]=d[10]=d[11]=d[12]=d[13]=d[14]=d[15]=0,n=0;w>n;n++)t=3&n,0===t?d[n>>2]=r.charCodeAt(n):d[n>>2]|=r.charCodeAt(n)<>2]|=h[3&n],n>55?(s?f(d):(i(d),s=!0),f([0,0,0,0,0,0,0,0,0,0,0,0,0,0,v<<3,0])):(d[14]=v<<3,void(s?f(d):i(d)))}function o(r){for(var n=16;n--;){var t=n<<2;A[n]=r.charCodeAt(t)+(r.charCodeAt(t+1)<<8)+(r.charCodeAt(t+2)<<16)+(r.charCodeAt(t+3)<<24)}}function e(r,o,e){t(o?r:n(r));var a=g[0];return u[1]=l[15&a],u[0]=l[15&(a>>=4)],u[3]=l[15&(a>>=4)],u[2]=l[15&(a>>=4)],u[5]=l[15&(a>>=4)],u[4]=l[15&(a>>=4)],u[7]=l[15&(a>>=4)],u[6]=l[15&(a>>=4)],a=g[1],u[9]=l[15&a],u[8]=l[15&(a>>=4)],u[11]=l[15&(a>>=4)],u[10]=l[15&(a>>=4)],u[13]=l[15&(a>>=4)],u[12]=l[15&(a>>=4)],u[15]=l[15&(a>>=4)],u[14]=l[15&(a>>=4)],a=g[2],u[17]=l[15&a],u[16]=l[15&(a>>=4)],u[19]=l[15&(a>>=4)],u[18]=l[15&(a>>=4)],u[21]=l[15&(a>>=4)],u[20]=l[15&(a>>=4)],u[23]=l[15&(a>>=4)],u[22]=l[15&(a>>=4)],a=g[3],u[25]=l[15&a],u[24]=l[15&(a>>=4)],u[27]=l[15&(a>>=4)],u[26]=l[15&(a>>=4)],u[29]=l[15&(a>>=4)],u[28]=l[15&(a>>=4)],u[31]=l[15&(a>>=4)],u[30]=l[15&(a>>=4)],e?u:u.join(\"\")}function a(r,n,t,o,e,a,i){return n+=r+o+i,(n<>>a)+t<<0}function i(r){c(0,0,0,0,r),g[0]=y[0]+1732584193<<0,g[1]=y[1]-271733879<<0,g[2]=y[2]-1732584194<<0,g[3]=y[3]+271733878<<0}function f(r){c(g[0],g[1],g[2],g[3],r),g[0]=y[0]+g[0]<<0,g[1]=y[1]+g[1]<<0,g[2]=y[2]+g[2]<<0,g[3]=y[3]+g[3]<<0}function c(r,n,t,o,e){var i,f;s?(r=a((t^o)&n^o,r,n,e[0],7,25,-680876936),o=a((n^t)&r^t,o,r,e[1],12,20,-389564586),t=a((r^n)&o^n,t,o,e[2],17,15,606105819),n=a((o^r)&t^r,n,t,e[3],22,10,-1044525330)):(r=e[0]-680876937,r=(r<<7|r>>>25)-271733879<<0,o=e[1]-117830708+(2004318071&r^-1732584194),o=(o<<12|o>>>20)+r<<0,t=e[2]-1126478375+((-271733879^r)&o^-271733879),t=(t<<17|t>>>15)+o<<0,n=e[3]-1316259209+((o^r)&t^r),n=(n<<22|n>>>10)+t<<0),r=a((t^o)&n^o,r,n,e[4],7,25,-176418897),o=a((n^t)&r^t,o,r,e[5],12,20,1200080426),t=a((r^n)&o^n,t,o,e[6],17,15,-1473231341),n=a((o^r)&t^r,n,t,e[7],22,10,-45705983),r=a((t^o)&n^o,r,n,e[8],7,25,1770035416),o=a((n^t)&r^t,o,r,e[9],12,20,-1958414417),t=a((r^n)&o^n,t,o,e[10],17,15,-42063),n=a((o^r)&t^r,n,t,e[11],22,10,-1990404162),r=a((t^o)&n^o,r,n,e[12],7,25,1804603682),o=a((n^t)&r^t,o,r,e[13],12,20,-40341101),t=a((r^n)&o^n,t,o,e[14],17,15,-1502002290),n=a((o^r)&t^r,n,t,e[15],22,10,1236535329),r=a((n^t)&o^t,r,n,e[1],5,27,-165796510),o=a((r^n)&t^n,o,r,e[6],9,23,-1069501632),t=a((o^r)&n^r,t,o,e[11],14,18,643717713),n=a((t^o)&r^o,n,t,e[0],20,12,-373897302),r=a((n^t)&o^t,r,n,e[5],5,27,-701558691),o=a((r^n)&t^n,o,r,e[10],9,23,38016083),t=a((o^r)&n^r,t,o,e[15],14,18,-660478335),n=a((t^o)&r^o,n,t,e[4],20,12,-405537848),r=a((n^t)&o^t,r,n,e[9],5,27,568446438),o=a((r^n)&t^n,o,r,e[14],9,23,-1019803690),t=a((o^r)&n^r,t,o,e[3],14,18,-187363961),n=a((t^o)&r^o,n,t,e[8],20,12,1163531501),r=a((n^t)&o^t,r,n,e[13],5,27,-1444681467),o=a((r^n)&t^n,o,r,e[2],9,23,-51403784),t=a((o^r)&n^r,t,o,e[7],14,18,1735328473),n=a((t^o)&r^o,n,t,e[12],20,12,-1926607734),i=n^t,r=a(i^o,r,n,e[5],4,28,-378558),o=a(i^r,o,r,e[8],11,21,-2022574463),f=o^r,t=a(f^n,t,o,e[11],16,16,1839030562),n=a(f^t,n,t,e[14],23,9,-35309556),i=n^t,r=a(i^o,r,n,e[1],4,28,-1530992060),o=a(i^r,o,r,e[4],11,21,1272893353),f=o^r,t=a(f^n,t,o,e[7],16,16,-155497632),n=a(f^t,n,t,e[10],23,9,-1094730640),i=n^t,r=a(i^o,r,n,e[13],4,28,681279174),o=a(i^r,o,r,e[0],11,21,-358537222),f=o^r,t=a(f^n,t,o,e[3],16,16,-722521979),n=a(f^t,n,t,e[6],23,9,76029189),i=n^t,r=a(i^o,r,n,e[9],4,28,-640364487),o=a(i^r,o,r,e[12],11,21,-421815835),f=o^r,t=a(f^n,t,o,e[15],16,16,530742520),n=a(f^t,n,t,e[2],23,9,-995338651),r=a(t^(n|~o),r,n,e[0],6,26,-198630844),o=a(n^(r|~t),o,r,e[7],10,22,1126891415),t=a(r^(o|~n),t,o,e[14],15,17,-1416354905),n=a(o^(t|~r),n,t,e[5],21,11,-57434055),r=a(t^(n|~o),r,n,e[12],6,26,1700485571),o=a(n^(r|~t),o,r,e[3],10,22,-1894986606),t=a(r^(o|~n),t,o,e[10],15,17,-1051523),n=a(o^(t|~r),n,t,e[1],21,11,-2054922799),r=a(t^(n|~o),r,n,e[8],6,26,1873313359),o=a(n^(r|~t),o,r,e[15],10,22,-30611744),t=a(r^(o|~n),t,o,e[6],15,17,-1560198380),n=a(o^(t|~r),n,t,e[13],21,11,1309151649),r=a(t^(n|~o),r,n,e[4],6,26,-145523070),o=a(n^(r|~t),o,r,e[11],10,22,-1120210379),t=a(r^(o|~n),t,o,e[2],15,17,718787259),n=a(o^(t|~r),n,t,e[9],21,11,-343485551),y[0]=r,y[1]=n,y[2]=t,y[3]=o}var u=[],d=[],A=[],h=[],l=\"0123456789abcdef\".split(\"\"),C=[],g=[],s=!1,v=0,w=0,y=[];if(r.Int32Array)d=new Int32Array(16),A=new Int32Array(16),h=new Int32Array(4),C=new Int32Array(4),g=new Int32Array(4),y=new Int32Array(4);else{var I;for(I=0;16>I;I++)d[I]=A[I]=0;for(I=0;4>I;I++)h[I]=C[I]=g[I]=y[I]=0}h[0]=128,h[1]=32768,h[2]=8388608,h[3]=-2147483648,C[0]=0,C[1]=8,C[2]=16,C[3]=24,r.md5=r.md5||e}(\"undefined\"==typeof global?window:global);","import { inRange, merge } from 'lodash-es';\r\nimport 'import/js/components/modify/component.modify.cart.item.js';\r\nimport 'jquery-zoom';\r\nimport 'import/js/plugins/jquery.lightgallery.js';\r\n\r\nimport 'Modules/Product/import/service.js';\r\n\r\nimport 'Modules/Product/import/product.less';\r\nimport 'Modules/Product/import/product-bottom.less';\r\nimport 'Modules/Product/import/product-bottom-advices.less';\r\nimport 'Modules/Product/import/product-price.less';\r\nimport 'Modules/Product/import/product-kit.less';\r\nimport 'Modules/Product/import/lightgallery.less';\r\nimport 'Modules/Product/import/advice.less';\r\nimport 'Modules/Product/import/product-recrutement.less';\r\nimport 'Modules/Product/import/product-elementaries.less';\r\n\r\nexport default angular\r\n .module('product', ['component.modify.cart.item', 'service.product'])\r\n\r\n /* @ngInject */\r\n .factory('ImportProduct', function ($rootScope, $window, $location, $timeout, $filter, $compile, ProductService, AppService, ModalService, HttpService, CdnService, Environment) {\r\n const service = {\r\n initModule,\r\n initPrice,\r\n initShare,\r\n initCustomization,\r\n initKit,\r\n initGallery\r\n };\r\n return service;\r\n\r\n ////////////\r\n\r\n function initModule(ctrl, scope) {\r\n ctrl.costTTC = 0;\r\n ctrl.costHT = 0;\r\n\r\n ctrl.setPricesData = (prices, eco) => {\r\n ctrl.prices = prices;\r\n ctrl.eco = eco;\r\n ctrl.setPrice(ctrl.quantity);\r\n ctrl.update();\r\n };\r\n\r\n ctrl.setPrice = qty => {\r\n const productData = ProductService.getProduct()[ctrl.idGroup];\r\n ctrl.costHT = ctrl.customizationCostHT;\r\n ctrl.costTTC = ctrl.customizationCostTTC;\r\n ctrl.discountedCostTTC = ctrl.customizationCostHT;\r\n ctrl.discountedCostHT = ctrl.customizationCostTTC;\r\n\r\n if (productData?.elements) {\r\n Object.keys(productData.elements).forEach(key => {\r\n const component = productData.elements[key];\r\n ctrl.costHT += component.costHT || 0;\r\n ctrl.costTTC += component.costTTC || 0;\r\n ctrl.discountedCostHT += component.discountedCostHT || 0;\r\n ctrl.discountedCostTTC += component.discountedCostTTC || 0;\r\n });\r\n }\r\n\r\n if (ctrl.prices) {\r\n if (ctrl.prices.length > 1 && ctrl.prices[1].isConditioningPrice) {\r\n ctrl.Price = ctrl.prices[0];\r\n ctrl.Price.EcoContribution = ctrl.eco;\r\n ProductService.setProductPrice(ctrl.idGroup, ctrl.Price, ctrl.costTTC, ctrl.costHT, ctrl.showTTCPrice, ctrl.prices);\r\n if (ctrl.customizablePrice) {\r\n initCustomizablePrice();\r\n }\r\n } else {\r\n ctrl.prices.forEach(price => {\r\n if (inRange(qty, price.range[0], price.range[1] || 10000)) {\r\n ctrl.Price = price;\r\n ctrl.Price.EcoContribution = ctrl.eco;\r\n ProductService.setProductPrice(ctrl.idGroup, ctrl.Price, ctrl.costTTC, ctrl.costHT, ctrl.showTTCPrice, ctrl.prices, ctrl.discountedCostTTC, ctrl.discountedCostHT);\r\n if (ctrl.customizablePrice) {\r\n initCustomizablePrice();\r\n }\r\n }\r\n });\r\n }\r\n }\r\n };\r\n\r\n ctrl.initZoom = () => {\r\n if (!ctrl.galleryZoomInit) {\r\n ctrl.galleryZoomInit = true;\r\n scope.$broadcast('initZoom');\r\n }\r\n };\r\n\r\n /* modification input quantity */\r\n ctrl.setInputQuantity = qty => {\r\n ctrl.quantity = qty || 1;\r\n ctrl.setPrice(qty);\r\n };\r\n\r\n ctrl.update = () => {\r\n let btnEnabled = true;\r\n let selected;\r\n\r\n if (ctrl.customizablePrice) {\r\n const product = ProductService.getProduct()[ctrl.idGroup];\r\n if (product?.CustomizablePrice && product?.CustomizablePrice?.initial === product?.CustomizablePrice?.current) {\r\n scope.$broadcast('updateTooltip', ctrl.customizablePriceTooltip);\r\n ctrl.addToCartActive = false;\r\n return;\r\n }\r\n }\r\n if (ctrl.customization) {\r\n ctrl.customizationCostTTC = 0;\r\n ctrl.customizationCostHT = 0;\r\n ctrl.customization.Items.forEach(item => {\r\n if (!item.Group) {\r\n if (item.Field.Value && item.Field.Value !== '') {\r\n ctrl.customizationCostTTC += item.Field.AdditionalCostTTC;\r\n ctrl.customizationCostHT += item.Field.AdditionalCostHT;\r\n // CustomizationType.List from CustomizationModel.cs\r\n if (item.Field.CustomizationType === 3) {\r\n selected = item.Field.Items.find(o => o.IDCustomizationListItem === parseInt(item.Field.Value));\r\n ctrl.customizationCostTTC += selected.AdditionalCostTTC;\r\n ctrl.customizationCostHT += selected.AdditionalCostHT;\r\n }\r\n } else if (item.Field.Required) {\r\n btnEnabled = false;\r\n }\r\n } else {\r\n item.Group.Fields.forEach(field => {\r\n if (field.Value && field.Value !== '') {\r\n ctrl.customizationCostTTC += field.AdditionalCostTTC;\r\n ctrl.customizationCostHT += field.AdditionalCostHT;\r\n // CustomizationType.List from CustomizationModel.cs\r\n if (field.CustomizationType === 3) {\r\n selected = field.Items.find(o => o.IDCustomizationListItem === parseInt(field.Value));\r\n ctrl.customizationCostTTC += selected.AdditionalCostTTC;\r\n ctrl.customizationCostHT += selected.AdditionalCostHT;\r\n }\r\n } else if (field.Required) {\r\n btnEnabled = false;\r\n }\r\n });\r\n }\r\n });\r\n if (!btnEnabled) {\r\n scope.$broadcast('updateTooltip', ctrl.customizationTooltip);\r\n ctrl.addToCartActive = false;\r\n } else {\r\n scope.$broadcast('updateTooltip');\r\n ctrl.addToCartActive = true;\r\n }\r\n if (!ctrl.allowAddToCart) {\r\n ctrl.addToCartActive = false;\r\n }\r\n ProductService.setProductCustomization(ctrl.idGroup, ctrl.customization);\r\n const product = ProductService.getProduct()[ctrl.idGroup];\r\n if (angular.isDefined(product)) {\r\n scope.$broadcast('updateComment', product.Comment);\r\n }\r\n }\r\n\r\n ctrl.setPrice(ctrl.quantity);\r\n };\r\n\r\n /* ajout panier */\r\n ctrl.setQuantity = inc => {\r\n ctrl.quantity = inc;\r\n ProductService.setProductQuantity(ctrl.idGroup, inc);\r\n };\r\n\r\n ctrl.getProductsToAdd = (qty, inc) => {\r\n ctrl.quantity = qty;\r\n ctrl.setPrice(qty);\r\n ctrl.setQuantity(inc);\r\n return ProductService.getProductsData();\r\n };\r\n\r\n /* changement de dimensions */\r\n ctrl.changeAttribute = () => {\r\n let url = ctrl.urlGroup;\r\n ctrl.attributes.forEach(attribute => {\r\n url = attribute === '' ? url : `${url}/${attribute}`;\r\n });\r\n\r\n if (ctrl.modalCtrl) {\r\n ctrl.modalCtrl.productsData = ctrl.getProductsToAdd(ctrl.modalCtrl.quantity, ctrl.modalCtrl.quantity);\r\n scope.modalCtrl.showLoader = true;\r\n scope.modalCtrl.data.url = url;\r\n\r\n const $body = $('.modal-quick-view .modal-body');\r\n $body.css({ height: `${$body.height()}px` });\r\n } else {\r\n $location.path(url).replace();\r\n }\r\n };\r\n\r\n ctrl.setActiveTab = nb => {\r\n ctrl.active = nb;\r\n };\r\n\r\n ctrl.giftlist = logged => {\r\n console.info({ giftlist_logged: logged, id: ctrl.id });\r\n };\r\n\r\n ctrl.openCmsLoyalty = title => {\r\n ModalService.show(\r\n '/Template/Modal/ModalCms',\r\n {\r\n url: '/page-services/programme-fidelite'\r\n },\r\n 'lg',\r\n null,\r\n null,\r\n null,\r\n {\r\n modalTitle: title,\r\n modalAutoScroll: false\r\n }\r\n );\r\n };\r\n\r\n ctrl.openModuloInfo = title => {\r\n ModalService.show(\r\n '/Template/Modal/ModalCms',\r\n {\r\n url: '/page-services/info-modulo'\r\n },\r\n 'lg',\r\n null,\r\n null,\r\n null,\r\n {\r\n modalTitle: title,\r\n modalAutoScroll: false\r\n }\r\n );\r\n };\r\n\r\n ctrl.openModalReviews = id => {\r\n ModalService.show(\r\n '/Template/Product/ModalReviews',\r\n {\r\n id\r\n },\r\n null,\r\n 'modalReviewsCtrl'\r\n );\r\n };\r\n\r\n ctrl.openShippingInfos = () => {\r\n ModalService.close();\r\n ModalService.show(\r\n '/Template/Product/ModalShippingProduct',\r\n null,\r\n null,\r\n null,\r\n ctrl.device,\r\n null,\r\n null\r\n );\r\n };\r\n\r\n ctrl.setCustomizablePriceSlider = key => {\r\n ctrl.attributes[0] = key;\r\n ctrl.changeAttribute();\r\n };\r\n\r\n // Events\r\n\r\n scope.$on('updateProduct', () => {\r\n ctrl.addToCartActive = ProductService.getActive();\r\n });\r\n\r\n scope.$on('updateNbReviews', (event, value) => {\r\n ctrl.nbReviews = value;\r\n });\r\n\r\n onInit();\r\n // Functions\r\n async function onInit() {\r\n ctrl.galleryImgLoader = false;\r\n ctrl.zoomLoaded = false;\r\n const productsData = ProductService.getProduct();\r\n const product = {\r\n idProduct: ctrl.id,\r\n isPrimary: ctrl.isPrimary,\r\n min: ctrl.min,\r\n step: ctrl.step,\r\n designation: ctrl.designation,\r\n img: ctrl.img,\r\n isGiftCard: ctrl.isGiftCard,\r\n parents: ctrl.parents,\r\n brand: ctrl.brand,\r\n reference: ctrl.reference\r\n };\r\n ProductService.setProduct(ctrl.idGroup, merge(productsData[ctrl.idGroup], product));\r\n\r\n if (!(ctrl.isKit && ctrl.showComponents)) {\r\n ctrl.addToCartActive = ProductService.getActive();\r\n } else {\r\n ctrl.addToCartActive = false;\r\n }\r\n\r\n if (ctrl.modalCtrl && ctrl.modalCtrl.quantity) {\r\n ctrl.modalCtrl.data.id = ctrl.id;\r\n ctrl.modalCtrl.productsData = ctrl.getProductsToAdd(ctrl.modalCtrl.quantity, ctrl.modalCtrl.quantity);\r\n ctrl.modalCtrl.addToCartActive = ctrl.addToCartActive;\r\n\r\n const str = ctrl.modalCtrl.data.url.split('-p-')[1];\r\n const currentAttrs = str.slice(str.indexOf('/'));\r\n if (currentAttrs === ctrl.modalCtrl.updateFromCart) {\r\n ctrl.modalCtrl.addToCartActive = false;\r\n }\r\n }\r\n\r\n const params = await AppService.getParams();\r\n ctrl.showTTCPrice = params.Visitor.CardType.ShowTTCPrice;\r\n ctrl.showEcoContribution = true;\r\n ctrl.loaded = true;\r\n !$rootScope.$$phase && scope.$digest();\r\n }\r\n\r\n function initCustomizablePrice() {\r\n if (ctrl.priceSlider) return;\r\n\r\n ProductService.setCustomizablePrice(ctrl.idGroup, ctrl.Price.TTCDiscountedPrice);\r\n ctrl.addToCartActive = ProductService.getActive();\r\n\r\n ctrl.priceSlider = {\r\n value: ctrl.customizablePrice.MinPrice,\r\n options: {\r\n floor: ctrl.customizablePrice.MinPrice,\r\n ceil: ctrl.customizablePrice.MaxPrice,\r\n step: ctrl.customizablePrice.Step,\r\n translate: value => `${value} €`,\r\n showSelectionBar: true,\r\n onEnd: () => {\r\n ctrl.Price.HTPrice = ctrl.priceSlider.value;\r\n ctrl.Price.TTCPrice = ctrl.priceSlider.value;\r\n ctrl.Price.HTDiscountedPrice = ctrl.priceSlider.value;\r\n ctrl.Price.TTCDiscountedPrice = ctrl.priceSlider.value;\r\n ProductService.setCustomizablePrice(ctrl.idGroup, ctrl.priceSlider.value);\r\n ctrl.update();\r\n }\r\n }\r\n };\r\n }\r\n }\r\n\r\n function initPrice(ctrl) {\r\n $timeout(async () => {\r\n const prices = [\r\n {\r\n qty: 1,\r\n range: [0],\r\n HasDiscount: ctrl.jsonPrice.HasDiscount,\r\n Discount: ctrl.jsonPrice.Discount,\r\n HTDiscountedPrice: ctrl.jsonPrice.HTDiscountedPrice,\r\n TTCDiscountedPrice: ctrl.jsonPrice.TTCDiscountedPrice,\r\n HTPrice: ctrl.jsonPrice.HTPrice,\r\n TTCPrice: ctrl.jsonPrice.TTCPrice,\r\n PricePackaging: ctrl.jsonPrice.PricePackaging\r\n }\r\n ];\r\n\r\n if (ctrl.jsonPrice.HasDegressivePrice && ctrl.jsonPrice.DegressivePrice) {\r\n Object.keys(ctrl.jsonPrice.DegressivePrice).forEach((key, i) => {\r\n const item = ctrl.jsonPrice.DegressivePrice[key];\r\n prices[i].range.push(Number(key));\r\n if (i === 0) {\r\n prices[i].caption = ctrl.txtFirstRange.replace('{0}', key);\r\n } else {\r\n prices[i].caption = ctrl.txtRange.replace('{0}', String(prices[i].range[0])).replace('{1}', String(key - 1));\r\n }\r\n\r\n prices.push({\r\n qty: Number(key),\r\n range: [Number(key)],\r\n caption: ctrl.txtLastRange.replace('{0}', key),\r\n HasDiscount: item.HasDiscount,\r\n Discount: item.Discount,\r\n HTDiscountedPrice: item.HTDiscountedPrice,\r\n TTCDiscountedPrice: item.TTCDiscountedPrice,\r\n HTPrice: item.HTPrice,\r\n TTCPrice: item.TTCPrice,\r\n PricePackaging: item.PricePackaging,\r\n IsDegressivePrice: true\r\n });\r\n });\r\n } else if (ctrl.jsonPrice.HasConditioningPrice && ctrl.jsonPrice.ConditioningPrice) {\r\n const params = await AppService.getParams();\r\n\r\n Object.keys(ctrl.jsonPrice.ConditioningPrice).forEach(key => {\r\n const item = ctrl.jsonPrice.ConditioningPrice[key];\r\n const priceTotalConditioning = params.Visitor.CardType.ShowTTCPrice ? Number(key) * item.TTCDiscountedPrice : Number(key) * item.HTDiscountedPrice;\r\n\r\n prices.push({\r\n qty: Number(key),\r\n caption: ctrl.txtConditioning.replace('{0}', key),\r\n priceTotalConditioning,\r\n HasDiscount: item.HasDiscount,\r\n Discount: item.Discount,\r\n HTDiscountedPrice: item.HTDiscountedPrice,\r\n TTCDiscountedPrice: item.TTCDiscountedPrice,\r\n HTPrice: item.HTPrice,\r\n TTCPrice: item.TTCPrice,\r\n PricePackaging: item.PricePackaging,\r\n isConditioningPrice: true\r\n });\r\n });\r\n }\r\n\r\n ctrl.prices = prices;\r\n ctrl.productCtrl.setPricesData(prices, ctrl.jsonPrice.EcoContribution);\r\n });\r\n }\r\n\r\n function initShare(ctrl, element, appId) {\r\n element.on('click', () => {\r\n switch (ctrl.socialshare) {\r\n case 'facebook':\r\n facebookShare();\r\n break;\r\n case 'pinterest':\r\n pinterestShare();\r\n break;\r\n case 'twitter':\r\n twitterShare();\r\n break;\r\n case 'email':\r\n emailShare();\r\n break;\r\n }\r\n });\r\n\r\n function facebookShare() {\r\n const winWidth = 673;\r\n const winHeight = 413;\r\n\r\n let urlString = `https://www.facebook.com/dialog/share?app_id=${appId}&display=popup`;\r\n urlString += `&href=${encodeURIComponent(ctrl.socialshareUrl)}`;\r\n urlString += ctrl.socialshareText ? `&title=${encodeURIComponent(ctrl.socialshareText)}` : '';\r\n urlString += ctrl.socialshareHashtags ? `&hashtag=${encodeURIComponent(ctrl.socialshareHashtags)}` : '';\r\n urlString += '&picture=';\r\n if (ctrl.socialshareMedia) urlString += encodeURIComponent(ctrl.socialshareMedia);\r\n\r\n $window.open(\r\n urlString,\r\n 'Facebook',\r\n `toolbar=0,status=0,resizable=yes,width=${winWidth},height=${winHeight},top=${($window.innerHeight - winHeight) / 2},left=${($window.innerWidth - winWidth) / 2}`\r\n );\r\n }\r\n function pinterestShare() {\r\n const winWidth = 673;\r\n const winHeight = 413;\r\n\r\n let urlString = 'https://www.pinterest.com/pin/create/button/';\r\n urlString += `?url=${encodeURIComponent(ctrl.socialshareUrl)}`;\r\n urlString += `&media=${encodeURIComponent(ctrl.socialshareMedia)}`;\r\n urlString += `&description=${encodeURIComponent(ctrl.socialshareText)}`;\r\n\r\n $window.open(\r\n urlString,\r\n 'pinterest',\r\n `toolbar=0,status=0,resizable=yes,width=${winWidth},height=${winHeight},top=${($window.innerHeight - winHeight) / 2},left=${($window.innerWidth - winWidth) / 2}`\r\n );\r\n }\r\n function twitterShare() {\r\n const winWidth = 673;\r\n const winHeight = 487;\r\n\r\n let urlString = 'https://www.twitter.com/intent/tweet?';\r\n urlString += ctrl.socialshareText ? `text=${encodeURIComponent(ctrl.socialshareText)}` : '';\r\n urlString += ctrl.socialshareHashtags ? `&hashtags=${encodeURIComponent(ctrl.socialshareHashtags)}` : '';\r\n urlString += `&url=${encodeURIComponent(ctrl.socialshareUrl)}`;\r\n\r\n $window.open(\r\n urlString,\r\n 'Twitter',\r\n `toolbar=0,status=0,resizable=yes,width=${winWidth},height=${winHeight},top=${($window.innerHeight - winHeight) / 2},left=${($window.innerWidth - winWidth) / 2}`\r\n );\r\n }\r\n function emailShare() {\r\n ModalService.show(\r\n '/Template/Modal/ModalSendByEMail',\r\n {\r\n ViewEmail: ctrl.socialshareEmail,\r\n Url: ctrl.socialshareUrl\r\n },\r\n null,\r\n 'modalSendByEMailCtrl',\r\n null,\r\n null,\r\n {\r\n modalTitle: ctrl.modalTitle,\r\n resultMessage: ctrl.resultMessage\r\n }\r\n );\r\n }\r\n }\r\n\r\n function initCustomization(ctrl, element) {\r\n ctrl.dateOptions = {\r\n showWeeks: false,\r\n minDate: new Date(),\r\n yearRows: 2\r\n };\r\n ctrl.dateFormat = 'dd/MM/yyyy';\r\n\r\n ctrl.successfile = (file, field) => {\r\n field.Value = file.name;\r\n field.Comment = file.serverName;\r\n ctrl.update();\r\n };\r\n ctrl.removedfile = field => {\r\n field.Value = '';\r\n field.Comment = '';\r\n ctrl.update();\r\n };\r\n\r\n ctrl.update = () => {\r\n ctrl.productCtrl.update();\r\n };\r\n\r\n // Functions\r\n onInit();\r\n function onInit() {\r\n ctrl.productCtrl.customization = ctrl.model;\r\n ctrl.productCtrl.customizationTooltip = ctrl.tooltip;\r\n ctrl.showTTCPrice = ctrl.productCtrl.showTTCPrice;\r\n ctrl.device = ctrl.productCtrl.device;\r\n $timeout(() => {\r\n const currentModel = ProductService.getProductCustomisation(ctrl.productCtrl.idGroup);\r\n if (currentModel) {\r\n ctrl.model = currentModel;\r\n ctrl.productCtrl.customization = ctrl.model;\r\n }\r\n ctrl.model.Items.forEach(item => {\r\n if (!item.IsGroup && (item.Group === null || !item.Group)) {\r\n // CustomizationType.Datepicker from CustomizationModel.cs\r\n if (item.Field.CustomizationType === 5) {\r\n item.Field.Value = null;\r\n item.Field.reqPlaceholder = item.Field.Required ? ' *' : '';\r\n }\r\n // CustomizationType.List from CustomizationModel.cs\r\n if (item.Field.CustomizationType === 3) {\r\n item.Field.Items.forEach(option => {\r\n option.content = option.Designation;\r\n if (ctrl.showTTCPrice && option.AdditionalCostTTC) {\r\n option.content = `${option.Designation} (+ ${$filter('price')(option.AdditionalCostTTC, 'value')})`;\r\n option.content = option.content.replace(/\"/g, \"'\");\r\n }\r\n if (!ctrl.showTTCPrice && option.AdditionalCostHT) {\r\n option.content = `${option.Designation} (+ ${$filter('price')(option.AdditionalCostHT, 'value', 'ht')})`;\r\n option.content = option.content.replace(/\"/g, \"'\");\r\n }\r\n });\r\n }\r\n }\r\n if (item.IsGroup && item.Group) {\r\n item.Group.Fields.forEach(field => {\r\n // CustomizationType.Datepicker from CustomizationModel.cs\r\n if (field.CustomizationType === 5) {\r\n field.Value = null;\r\n field.reqPlaceholder = field.Required ? ' *' : '';\r\n }\r\n // CustomizationType.List from CustomizationModel.cs\r\n if (field.CustomizationType === 3) {\r\n field.Items.forEach(option => {\r\n option.content = option.Designation;\r\n if (ctrl.showTTCPrice && option.AdditionalCostTTC) {\r\n option.content = `${option.Designation} (+ ${$filter('price')(option.AdditionalCostTTC, 'value')})`;\r\n option.content = option.content.replace(/\"/g, \"'\");\r\n }\r\n if (!ctrl.showTTCPrice && option.AdditionalCostHT) {\r\n option.content = `${option.Designation} (+ ${$filter('price')(option.AdditionalCostHT, 'value', 'ht')})`;\r\n option.content = option.content.replace(/\"/g, \"'\");\r\n }\r\n });\r\n }\r\n });\r\n }\r\n });\r\n\r\n ctrl.hasItemGroups = ctrl.model.Items.some(item => item.Group);\r\n ctrl.hasNoItemGroups = ctrl.model.Items.some(item => !item.Group);\r\n\r\n refreshSelects();\r\n\r\n ctrl.update();\r\n ctrl.init = true;\r\n });\r\n }\r\n\r\n function refreshSelects() {\r\n if (angular.isUndefined($.fn.selectpicker)) return;\r\n setTimeout(() => {\r\n element.find('select.refresh').each((index, el) => {\r\n $(el).selectpicker('refresh');\r\n });\r\n });\r\n }\r\n }\r\n\r\n function initKit(ctrl, element) {\r\n ctrl.attributes = {};\r\n\r\n ctrl.changeAttribute = uniqueId => {\r\n const current = ctrl.Components.find(component => component.uniqueId === uniqueId);\r\n\r\n let url = current.URL || current.Product.URL;\r\n ctrl.attributes[uniqueId].forEach(attr => {\r\n url = attr === '' ? url : `${url}/${attr}`;\r\n });\r\n\r\n if (url.includes('?')) {\r\n url += '&checkVisibility=false';\r\n } else {\r\n url += '?checkVisibility=false';\r\n }\r\n\r\n current.showLoader = true;\r\n HttpService.get({\r\n url,\r\n cache: true\r\n })\r\n .then(response => {\r\n current.Product = response;\r\n current.isPrimary = !current.Product.IsGroupingProduct || (current.Product.IsGroupingProduct && current.Product.SelectedProduct !== null);\r\n current.currentModel = current.Product.SelectedProduct || current.Product;\r\n updateComponent(current);\r\n current.showLoader = false;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n };\r\n\r\n ctrl.selectCustomComponent = (_component, _element) => {\r\n if (_element && !_element.Product.AllowAddToCart) return;\r\n _component.Product = !_element ? null : _element.Product;\r\n _component.currentModel = !_element ? null : _component.Product;\r\n _component.AdditionalCost = !_element ? null : _element.AdditionalCost;\r\n updateComponent(_component);\r\n };\r\n\r\n onInit();\r\n // Functions\r\n function onInit() {\r\n getComponents(ctrl.idKit);\r\n }\r\n\r\n function getComponents(id) {\r\n ctrl.showLoader = true;\r\n HttpService.post({\r\n url: '/Product/GetComponents',\r\n data: id\r\n })\r\n .then(response => {\r\n if (response.status === 'OK') {\r\n ctrl.Components = [];\r\n const customGroups = {};\r\n let i = 0;\r\n response.results.forEach(component => {\r\n if (!component.Type) {\r\n // Pack standard\r\n const qty = component.KitQuantity;\r\n component = {\r\n Product: component,\r\n Quantity: qty\r\n };\r\n } else {\r\n // Pack Personnalisable\r\n if (!customGroups[component.Id]) {\r\n customGroups[component.Id] = true;\r\n component.groupTitle = component.Designation;\r\n component.groupFirstElement = true;\r\n }\r\n if ((component.Type === 901 || component.Type === 903) && !component.Product) return; // Fallback personnalisation sans article\r\n if (component.Type === 902) {\r\n // Liste d'articles\r\n const productDefault = component.Elements.find(_element => _element.Product.IDProduct === component.IDProductDefault && _element.Product.AllowAddToCart);\r\n if (component.groupFirstElement && productDefault) {\r\n // Si produit par défaut\r\n ctrl.selectCustomComponent(component, productDefault);\r\n }\r\n }\r\n }\r\n\r\n if (!((component.Type === 901 || component.Type === 902 || component.Type === 903) && !component.Product)) {\r\n // Si le composant a bien un article on l'ajoute à la liste du controlleur\r\n component.uniqueId = component.Product ? `${component.Product.IDProduct}_${i}` : `${component.Id}_${i}`;\r\n ctrl.attributes[component.uniqueId] = [];\r\n initComponent(component);\r\n ctrl.Components.push(component);\r\n }\r\n\r\n i++;\r\n });\r\n\r\n refreshSelects();\r\n\r\n $rootScope.$broadcast('updateProduct');\r\n $rootScope.$broadcast('updateComment', ProductService.getProduct()[ctrl.idGroup].Comment);\r\n }\r\n ctrl.showLoader = false;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n }\r\n\r\n function initComponent(component) {\r\n if (component.Type === 901 || component.Type === 902) {\r\n // Pack personnalisable - Article simple ou liste d'articles\r\n component.isPrimary = true;\r\n component.currentModel = component.Product;\r\n } else if (component.Type === 903) {\r\n // Pack personnalisable - Article décliné\r\n component.isPrimary = !component.Product ? false : !component.Product.IsGroupingProduct || (component.Product.IsGroupingProduct && !!component.Product.SelectedProduct);\r\n component.currentModel = !component.Product ? null : component.Product.SelectedProduct || component.Product;\r\n component.Attributes = !component.Product ? null : component.Product.Attributes;\r\n\r\n if (component.isPrimary) {\r\n let i = 0;\r\n\r\n component.Attributes.forEach(attr => {\r\n const attrValueSelected = attr.Values.find(o => o.Selected === true);\r\n\r\n if (attrValueSelected) {\r\n ctrl.attributes[component.uniqueId][i] = attrValueSelected.Key;\r\n }\r\n\r\n i++;\r\n });\r\n }\r\n } else if (!component.Type) {\r\n // Pack standard -Article simple ou décliné\r\n component.isPrimary = !component.Product.IsGroupingProduct || (component.Product.IsGroupingProduct && component.Product.SelectedProduct !== null);\r\n component.currentModel = component.Product.SelectedProduct || component.Product;\r\n }\r\n\r\n ProductService.setKitElement(ctrl.idGroup, component);\r\n }\r\n\r\n function updateComponent(component) {\r\n ProductService.setKitElement(ctrl.idGroup, component);\r\n $rootScope.$broadcast('updateProduct');\r\n $rootScope.$broadcast('updateComment', ProductService.getProduct()[ctrl.idGroup].Comment);\r\n }\r\n\r\n function refreshSelects() {\r\n if (angular.isUndefined($.fn.selectpicker)) return;\r\n setTimeout(() => {\r\n element.find('select.refresh').each((index, el) => {\r\n $(el).selectpicker('refresh');\r\n });\r\n });\r\n }\r\n }\r\n\r\n function initGallery(scope, element, attrs) {\r\n const $main = element.find('.main-picture');\r\n const $img = $main.find('.main-img');\r\n const $sub = element.find('.sub-pictures');\r\n const $video = element.find('.main-video');\r\n\r\n $sub\r\n .find('.visual')\r\n .not('.video')\r\n .each(function (index) {\r\n $(this).data('index', index);\r\n });\r\n\r\n /* suppression du loader lorsque l'image est chargée */\r\n $img.on('load', () => {\r\n if (scope.productCtrl) {\r\n scope.$apply(() => {\r\n scope.productCtrl.galleryImgLoader = false;\r\n });\r\n }\r\n });\r\n\r\n /* init le plugin Zoom */\r\n scope.$on('initZoom', event => {\r\n if (attrs.zoomId > 0 && attrs.hasZoom) {\r\n scope.productCtrl.galleryImgLoader = true;\r\n CdnService.get(attrs.zoomId, attrs.zoomSize)\r\n .then(img => {\r\n startZoom(img);\r\n })\r\n .catch(err => {\r\n console.error(err);\r\n });\r\n } else if (attrs.srcDistrimage && attrs.hasZoom) {\r\n scope.productCtrl.galleryImgLoader = true;\r\n startZoom(attrs.srcDistrimage);\r\n }\r\n });\r\n\r\n /* détruit le plugin Zoom */\r\n scope.$on('$destroy', event => {\r\n $main.children('.inner').trigger('zoom.destroy');\r\n });\r\n\r\n /* clic sur les images secondaires */\r\n $sub.on('click', '.visual', function (event) {\r\n event.preventDefault();\r\n const $this = $(this);\r\n\r\n /* class active sur image sélectionnée */\r\n $sub.children('li').removeClass('active');\r\n $this.parent().addClass('active');\r\n\r\n if ($this.hasClass('video')) {\r\n $main.addClass('hidden');\r\n $video.removeClass('hidden');\r\n const html = ``;\r\n const el = $compile(html)(scope);\r\n $video.children('.inner').html(el);\r\n return;\r\n }\r\n\r\n $main.removeClass('hidden');\r\n $video.addClass('hidden').html('
');\r\n\r\n /* définition de l'index pour galerie plein écran */\r\n $main.data('index', $this.data('index'));\r\n\r\n /* ajoute le loader */\r\n if (scope.productCtrl) {\r\n scope.$apply(() => {\r\n scope.productCtrl.galleryImgLoader = true;\r\n });\r\n }\r\n\r\n /* change les src de l'image principale et du Zoom */\r\n $img.attr('src', $this.data('size-url'));\r\n $img.siblings('source').each(function () {\r\n const $source = $(this);\r\n $source.attr('srcset', $source.attr('type') === 'image/webp' ? $this.data('size-url').replace('.jpg', '.webp') : $this.data('size-url'));\r\n });\r\n $main.find('.zoomImg').attr('src', $this.data('zoom-url'));\r\n });\r\n\r\n /* clic sur l'image principale - ouvre la galerie plein écran */\r\n $main.data('index', 0).click(() => {\r\n const dynamicEl = [];\r\n $sub\r\n .find('a')\r\n .not('.video')\r\n .each(function () {\r\n const $this = $(this);\r\n dynamicEl.push({ thumb: $this.data('zoom-thumb-url'), src: $this.data('zoom-url') });\r\n });\r\n $sub\r\n .on('onCloseAfter.lg', event => {\r\n $(event.target).removeData('lightGallery');\r\n })\r\n .lightGallery({\r\n nextHtml: '',\r\n prevHtml: '',\r\n fullscreenHtml: '',\r\n closeHtml: '',\r\n dynamic: true,\r\n dynamicEl,\r\n index: $main.data('index'),\r\n mode: 'lg-slide',\r\n thumbnail: navigator.userAgent.toLowerCase().match(/(iphone|ipod)/) ? false : true\r\n });\r\n });\r\n\r\n function startZoom(src) {\r\n if (angular.isUndefined($.fn.zoom)) {\r\n $.ajax({\r\n url: Environment === 'dev' ? '/js/jquery.zoom.js' : '/js/jquery.zoom.min.js',\r\n dataType: 'script',\r\n cache: true,\r\n success() {\r\n initZoom(src);\r\n }\r\n });\r\n } else {\r\n initZoom(src);\r\n }\r\n }\r\n\r\n function initZoom(src) {\r\n $main.children('.inner').zoom({\r\n url: src,\r\n touch: false,\r\n duration: 400,\r\n callback() {\r\n scope.$apply(() => {\r\n scope.productCtrl.galleryImgLoader = false;\r\n });\r\n }\r\n });\r\n }\r\n }\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalSendToAFriendCtrl', function (data, device, options, HttpService, AppService, ModalService, toastr) {\r\n const ctrl = this;\r\n\r\n ctrl.data = data;\r\n\r\n AppService.getParams()\r\n .then(params => {\r\n if (params.IsLogged) {\r\n ctrl.data.FirstName = params.Visitor.FirstName;\r\n ctrl.data.Email = params.Visitor.Email;\r\n }\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n\r\n ctrl.submit = async () => {\r\n ctrl.loading = true;\r\n try {\r\n const { status } = await HttpService.post({\r\n url: '/Product/SendToAFriend',\r\n data: ctrl.data\r\n });\r\n const { messages } = await AppService.getTranslate();\r\n if (status === 'OK') {\r\n ModalService.close();\r\n toastr.success('', messages.MessageSent, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n } else {\r\n const { errors } = await AppService.getTranslate();\r\n toastr.warning(errors.TryLater, errors.ErrorHasOccurred, {\r\n allowHtml: true,\r\n extraData: {\r\n template: 'import/js/libs/angular-toastr/toast_message.tpl'\r\n }\r\n });\r\n }\r\n } catch (error) {\r\n console.error(error);\r\n }\r\n ctrl.loading = false;\r\n };\r\n })\r\n\r\n /* @ngInject */\r\n .controller('modalReviewsCtrl', function (data, device, options, HttpService) {\r\n const ctrl = this;\r\n ctrl.data = data;\r\n\r\n ctrl.showLoader = true;\r\n\r\n HttpService.get({\r\n url: `/Reviews/${ctrl.data.id}/0/100/RateDESC/0`,\r\n cache: false\r\n })\r\n .then(response => {\r\n ctrl.data = response;\r\n ctrl.showLoader = false;\r\n })\r\n .catch(error => {\r\n console.error(error);\r\n });\r\n });\r\n"],"sourceRoot":""}