![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/cartforge.co/pub/static/adminhtml/Magento/backend/en_US/js/bundle/ |
require.config({"config": { "jsbuild":{"Mageplaza_Core/js/jquery.magnific-popup.min.js":"// Magnific Popup v1.1.0 by Dmitry Semenov\n// http://bit.ly/magnific-popup#build=inline+image+ajax+iframe+gallery+retina+imagezoom\n(function(a){typeof define==\"function\"&&define.amd?define([\"jquery\"],a):typeof exports==\"object\"?a(require(\"jquery\")):a(window.jQuery||window.Zepto)})(function(a){var b=\"Close\",c=\"BeforeClose\",d=\"AfterClose\",e=\"BeforeAppend\",f=\"MarkupParse\",g=\"Open\",h=\"Change\",i=\"mfp\",j=\".\"+i,k=\"mfp-ready\",l=\"mfp-removing\",m=\"mfp-prevent-close\",n,o=function(){},p=!!window.jQuery,q,r=a(window),s,t,u,v,w=function(a,b){n.ev.on(i+a+j,b)},x=function(b,c,d,e){var f=document.createElement(\"div\");return f.className=\"mfp-\"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(b,c){n.ev.triggerHandler(i+b,c),n.st.callbacks&&(b=b.charAt(0).toLowerCase()+b.slice(1),n.st.callbacks[b]&&n.st.callbacks[b].apply(n,a.isArray(c)?c:[c]))},z=function(b){if(b!==v||!n.currTemplate.closeBtn)n.currTemplate.closeBtn=a(n.st.closeMarkup.replace(\"%title%\",n.st.tClose)),v=b;return n.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(n=new o,n.init(),a.magnificPopup.instance=n)},B=function(){var a=document.createElement(\"p\").style,b=[\"ms\",\"O\",\"Moz\",\"Webkit\"];if(a.transition!==undefined)return!0;while(b.length)if(b.pop()+\"Transition\"in a)return!0;return!1};o.prototype={constructor:o,init:function(){var b=navigator.appVersion;n.isLowIE=n.isIE8=document.all&&!document.addEventListener,n.isAndroid=/android/gi.test(b),n.isIOS=/iphone|ipad|ipod/gi.test(b),n.supportsTransition=B(),n.probablyMobile=n.isAndroid||n.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),s=a(document),n.popupsCache={}},open:function(b){var c;if(b.isObj===!1){n.items=b.items.toArray(),n.index=0;var d=b.items,e;for(c=0;c<d.length;c++){e=d[c],e.parsed&&(e=e.el[0]);if(e===b.el[0]){n.index=c;break}}}else n.items=a.isArray(b.items)?b.items:[b.items],n.index=b.index||0;if(n.isOpen){n.updateItemHTML();return}n.types=[],u=\"\",b.mainEl&&b.mainEl.length?n.ev=b.mainEl.eq(0):n.ev=s,b.key?(n.popupsCache[b.key]||(n.popupsCache[b.key]={}),n.currTemplate=n.popupsCache[b.key]):n.currTemplate={},n.st=a.extend(!0,{},a.magnificPopup.defaults,b),n.fixedContentPos=n.st.fixedContentPos===\"auto\"?!n.probablyMobile:n.st.fixedContentPos,n.st.modal&&(n.st.closeOnContentClick=!1,n.st.closeOnBgClick=!1,n.st.showCloseBtn=!1,n.st.enableEscapeKey=!1),n.bgOverlay||(n.bgOverlay=x(\"bg\").on(\"click\"+j,function(){n.close()}),n.wrap=x(\"wrap\").attr(\"tabindex\",-1).on(\"click\"+j,function(a){n._checkIfClose(a.target)&&n.close()}),n.container=x(\"container\",n.wrap)),n.contentContainer=x(\"content\"),n.st.preloader&&(n.preloader=x(\"preloader\",n.container,n.st.tLoading));var h=a.magnificPopup.modules;for(c=0;c<h.length;c++){var i=h[c];i=i.charAt(0).toUpperCase()+i.slice(1),n[\"init\"+i].call(n)}y(\"BeforeOpen\"),n.st.showCloseBtn&&(n.st.closeBtnInside?(w(f,function(a,b,c,d){c.close_replaceWith=z(d.type)}),u+=\" mfp-close-btn-in\"):n.wrap.append(z())),n.st.alignTop&&(u+=\" mfp-align-top\"),n.fixedContentPos?n.wrap.css({overflow:n.st.overflowY,overflowX:\"hidden\",overflowY:n.st.overflowY}):n.wrap.css({top:r.scrollTop(),position:\"absolute\"}),(n.st.fixedBgPos===!1||n.st.fixedBgPos===\"auto\"&&!n.fixedContentPos)&&n.bgOverlay.css({height:s.height(),position:\"absolute\"}),n.st.enableEscapeKey&&s.on(\"keyup\"+j,function(a){a.keyCode===27&&n.close()}),r.on(\"resize\"+j,function(){n.updateSize()}),n.st.closeOnContentClick||(u+=\" mfp-auto-cursor\"),u&&n.wrap.addClass(u);var l=n.wH=r.height(),m={};if(n.fixedContentPos&&n._hasScrollBar(l)){var o=n._getScrollbarSize();o&&(m.marginRight=o)}n.fixedContentPos&&(n.isIE7?a(\"body, html\").css(\"overflow\",\"hidden\"):m.overflow=\"hidden\");var p=n.st.mainClass;return n.isIE7&&(p+=\" mfp-ie7\"),p&&n._addClassToMFP(p),n.updateItemHTML(),y(\"BuildControls\"),a(\"html\").css(m),n.bgOverlay.add(n.wrap).prependTo(n.st.prependTo||a(document.body)),n._lastFocusedEl=document.activeElement,setTimeout(function(){n.content?(n._addClassToMFP(k),n._setFocus()):n.bgOverlay.addClass(k),s.on(\"focusin\"+j,n._onFocusIn)},16),n.isOpen=!0,n.updateSize(l),y(g),b},close:function(){if(!n.isOpen)return;y(c),n.isOpen=!1,n.st.removalDelay&&!n.isLowIE&&n.supportsTransition?(n._addClassToMFP(l),setTimeout(function(){n._close()},n.st.removalDelay)):n._close()},_close:function(){y(b);var c=l+\" \"+k+\" \";n.bgOverlay.detach(),n.wrap.detach(),n.container.empty(),n.st.mainClass&&(c+=n.st.mainClass+\" \"),n._removeClassFromMFP(c);if(n.fixedContentPos){var e={marginRight:\"\"};n.isIE7?a(\"body, html\").css(\"overflow\",\"\"):e.overflow=\"\",a(\"html\").css(e)}s.off(\"keyup\"+j+\" focusin\"+j),n.ev.off(j),n.wrap.attr(\"class\",\"mfp-wrap\").removeAttr(\"style\"),n.bgOverlay.attr(\"class\",\"mfp-bg\"),n.container.attr(\"class\",\"mfp-container\"),n.st.showCloseBtn&&(!n.st.closeBtnInside||n.currTemplate[n.currItem.type]===!0)&&n.currTemplate.closeBtn&&n.currTemplate.closeBtn.detach(),n.st.autoFocusLast&&n._lastFocusedEl&&a(n._lastFocusedEl).focus(),n.currItem=null,n.content=null,n.currTemplate=null,n.prevHeight=0,y(d)},updateSize:function(a){if(n.isIOS){var b=document.documentElement.clientWidth/window.innerWidth,c=window.innerHeight*b;n.wrap.css(\"height\",c),n.wH=c}else n.wH=a||r.height();n.fixedContentPos||n.wrap.css(\"height\",n.wH),y(\"Resize\")},updateItemHTML:function(){var b=n.items[n.index];n.contentContainer.detach(),n.content&&n.content.detach(),b.parsed||(b=n.parseEl(n.index));var c=b.type;y(\"BeforeChange\",[n.currItem?n.currItem.type:\"\",c]),n.currItem=b;if(!n.currTemplate[c]){var d=n.st[c]?n.st[c].markup:!1;y(\"FirstMarkupParse\",d),d?n.currTemplate[c]=a(d):n.currTemplate[c]=!0}t&&t!==b.type&&n.container.removeClass(\"mfp-\"+t+\"-holder\");var e=n[\"get\"+c.charAt(0).toUpperCase()+c.slice(1)](b,n.currTemplate[c]);n.appendContent(e,c),b.preloaded=!0,y(h,b),t=b.type,n.container.prepend(n.contentContainer),y(\"AfterChange\")},appendContent:function(a,b){n.content=a,a?n.st.showCloseBtn&&n.st.closeBtnInside&&n.currTemplate[b]===!0?n.content.find(\".mfp-close\").length||n.content.append(z()):n.content=a:n.content=\"\",y(e),n.container.addClass(\"mfp-\"+b+\"-holder\"),n.contentContainer.append(n.content)},parseEl:function(b){var c=n.items[b],d;c.tagName?c={el:a(c)}:(d=c.type,c={data:c,src:c.src});if(c.el){var e=n.types;for(var f=0;f<e.length;f++)if(c.el.hasClass(\"mfp-\"+e[f])){d=e[f];break}c.src=c.el.attr(\"data-mfp-src\"),c.src||(c.src=c.el.attr(\"href\"))}return c.type=d||n.st.type||\"inline\",c.index=b,c.parsed=!0,n.items[b]=c,y(\"ElementParse\",c),n.items[b]},addGroup:function(a,b){var c=function(c){c.mfpEl=this,n._openClick(c,a,b)};b||(b={});var d=\"click.magnificPopup\";b.mainEl=a,b.items?(b.isObj=!0,a.off(d).on(d,c)):(b.isObj=!1,b.delegate?a.off(d).on(d,b.delegate,c):(b.items=a,a.off(d).on(d,c)))},_openClick:function(b,c,d){var e=d.midClick!==undefined?d.midClick:a.magnificPopup.defaults.midClick;if(!e&&(b.which===2||b.ctrlKey||b.metaKey||b.altKey||b.shiftKey))return;var f=d.disableOn!==undefined?d.disableOn:a.magnificPopup.defaults.disableOn;if(f)if(a.isFunction(f)){if(!f.call(n))return!0}else if(r.width()<f)return!0;b.type&&(b.preventDefault(),n.isOpen&&b.stopPropagation()),d.el=a(b.mfpEl),d.delegate&&(d.items=c.find(d.delegate)),n.open(d)},updateStatus:function(a,b){if(n.preloader){q!==a&&n.container.removeClass(\"mfp-s-\"+q),!b&&a===\"loading\"&&(b=n.st.tLoading);var c={status:a,text:b};y(\"UpdateStatus\",c),a=c.status,b=c.text,n.preloader.html(b),n.preloader.find(\"a\").on(\"click\",function(a){a.stopImmediatePropagation()}),n.container.addClass(\"mfp-s-\"+a),q=a}},_checkIfClose:function(b){if(a(b).hasClass(m))return;var c=n.st.closeOnContentClick,d=n.st.closeOnBgClick;if(c&&d)return!0;if(!n.content||a(b).hasClass(\"mfp-close\")||n.preloader&&b===n.preloader[0])return!0;if(b!==n.content[0]&&!a.contains(n.content[0],b)){if(d&&a.contains(document,b))return!0}else if(c)return!0;return!1},_addClassToMFP:function(a){n.bgOverlay.addClass(a),n.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),n.wrap.removeClass(a)},_hasScrollBar:function(a){return(n.isIE7?s.height():document.body.scrollHeight)>(a||r.height())},_setFocus:function(){(n.st.focus?n.content.find(n.st.focus).eq(0):n.wrap).focus()},_onFocusIn:function(b){if(b.target!==n.wrap[0]&&!a.contains(n.wrap[0],b.target))return n._setFocus(),!1},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(f,[b,c,d]),a.each(c,function(c,d){if(d===undefined||d===!1)return!0;e=c.split(\"_\");if(e.length>1){var f=b.find(j+\"-\"+e[0]);if(f.length>0){var g=e[1];g===\"replaceWith\"?f[0]!==d[0]&&f.replaceWith(d):g===\"img\"?f.is(\"img\")?f.attr(\"src\",d):f.replaceWith(a(\"<img>\").attr(\"src\",d).attr(\"class\",f.attr(\"class\"))):f.attr(e[1],d)}}else b.find(j+\"-\"+c).html(d)})},_getScrollbarSize:function(){if(n.scrollbarSize===undefined){var a=document.createElement(\"div\");a.style.cssText=\"width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;\",document.body.appendChild(a),n.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return n.scrollbarSize}},a.magnificPopup={instance:null,proto:o.prototype,modules:[],open:function(b,c){return A(),b?b=a.extend(!0,{},b):b={},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:\"\",preloader:!0,focus:\"\",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:\"auto\",fixedBgPos:\"auto\",overflowY:\"auto\",closeMarkup:'<button title=\"%title%\" type=\"button\" class=\"mfp-close\">×</button>',tClose:\"Close (Esc)\",tLoading:\"Loading...\",autoFocusLast:!0}},a.fn.magnificPopup=function(b){A();var c=a(this);if(typeof b==\"string\")if(b===\"open\"){var d,e=p?c.data(\"magnificPopup\"):c[0].magnificPopup,f=parseInt(arguments[1],10)||0;e.items?d=e.items[f]:(d=c,e.delegate&&(d=d.find(e.delegate)),d=d.eq(f)),n._openClick({mfpEl:d},c,e)}else n.isOpen&&n[b].apply(n,Array.prototype.slice.call(arguments,1));else b=a.extend(!0,{},b),p?c.data(\"magnificPopup\",b):c[0].magnificPopup=b,n.addGroup(c,b);return c};var C=\"inline\",D,E,F,G=function(){F&&(E.after(F.addClass(D)).detach(),F=null)};a.magnificPopup.registerModule(C,{options:{hiddenClass:\"hide\",markup:\"\",tNotFound:\"Content not found\"},proto:{initInline:function(){n.types.push(C),w(b+\".\"+C,function(){G()})},getInline:function(b,c){G();if(b.src){var d=n.st.inline,e=a(b.src);if(e.length){var f=e[0].parentNode;f&&f.tagName&&(E||(D=d.hiddenClass,E=x(D),D=\"mfp-\"+D),F=e.after(E).detach().removeClass(D)),n.updateStatus(\"ready\")}else n.updateStatus(\"error\",d.tNotFound),e=a(\"<div>\");return b.inlineElement=e,e}return n.updateStatus(\"ready\"),n._parseMarkup(c,{},b),c}}});var H=\"ajax\",I,J=function(){I&&a(document.body).removeClass(I)},K=function(){J(),n.req&&n.req.abort()};a.magnificPopup.registerModule(H,{options:{settings:null,cursor:\"mfp-ajax-cur\",tError:'<a href=\"%url%\">The content</a> could not be loaded.'},proto:{initAjax:function(){n.types.push(H),I=n.st.ajax.cursor,w(b+\".\"+H,K),w(\"BeforeChange.\"+H,K)},getAjax:function(b){I&&a(document.body).addClass(I),n.updateStatus(\"loading\");var c=a.extend({url:b.src,success:function(c,d,e){var f={data:c,xhr:e};y(\"ParseAjax\",f),n.appendContent(a(f.data),H),b.finished=!0,J(),n._setFocus(),setTimeout(function(){n.wrap.addClass(k)},16),n.updateStatus(\"ready\"),y(\"AjaxContentAdded\")},error:function(){J(),b.finished=b.loadError=!0,n.updateStatus(\"error\",n.st.ajax.tError.replace(\"%url%\",b.src))}},n.st.ajax.settings);return n.req=a.ajax(c),\"\"}}});var L,M=function(b){if(b.data&&b.data.title!==undefined)return b.data.title;var c=n.st.image.titleSrc;if(c){if(a.isFunction(c))return c.call(n,b);if(b.el)return b.el.attr(c)||\"\"}return\"\"};a.magnificPopup.registerModule(\"image\",{options:{markup:'<div class=\"mfp-figure\"><div class=\"mfp-close\"></div><figure><div class=\"mfp-img\"></div><figcaption><div class=\"mfp-bottom-bar\"><div class=\"mfp-title\"></div><div class=\"mfp-counter\"></div></div></figcaption></figure></div>',cursor:\"mfp-zoom-out-cur\",titleSrc:\"title\",verticalFit:!0,tError:'<a href=\"%url%\">The image</a> could not be loaded.'},proto:{initImage:function(){var c=n.st.image,d=\".image\";n.types.push(\"image\"),w(g+d,function(){n.currItem.type===\"image\"&&c.cursor&&a(document.body).addClass(c.cursor)}),w(b+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),r.off(\"resize\"+j)}),w(\"Resize\"+d,n.resizeImage),n.isLowIE&&w(\"AfterChange\",n.resizeImage)},resizeImage:function(){var a=n.currItem;if(!a||!a.img)return;if(n.st.image.verticalFit){var b=0;n.isLowIE&&(b=parseInt(a.img.css(\"padding-top\"),10)+parseInt(a.img.css(\"padding-bottom\"),10)),a.img.css(\"max-height\",n.wH-b)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y(\"ImageHasSize\",a),a.imgHidden&&(n.content&&n.content.removeClass(\"mfp-loading\"),a.imgHidden=!1))},findImageSize:function(a){var b=0,c=a.img[0],d=function(e){L&&clearInterval(L),L=setInterval(function(){if(c.naturalWidth>0){n._onImageHasSize(a);return}b>200&&clearInterval(L),b++,b===3?d(10):b===40?d(50):b===100&&d(500)},e)};d(1)},getImage:function(b,c){var d=0,e=function(){b&&(b.img[0].complete?(b.img.off(\".mfploader\"),b===n.currItem&&(n._onImageHasSize(b),n.updateStatus(\"ready\")),b.hasSize=!0,b.loaded=!0,y(\"ImageLoadComplete\")):(d++,d<200?setTimeout(e,100):f()))},f=function(){b&&(b.img.off(\".mfploader\"),b===n.currItem&&(n._onImageHasSize(b),n.updateStatus(\"error\",g.tError.replace(\"%url%\",b.src))),b.hasSize=!0,b.loaded=!0,b.loadError=!0)},g=n.st.image,h=c.find(\".mfp-img\");if(h.length){var i=document.createElement(\"img\");i.className=\"mfp-img\",b.el&&b.el.find(\"img\").length&&(i.alt=b.el.find(\"img\").attr(\"alt\")),b.img=a(i).on(\"load.mfploader\",e).on(\"error.mfploader\",f),i.src=b.src,h.is(\"img\")&&(b.img=b.img.clone()),i=b.img[0],i.naturalWidth>0?b.hasSize=!0:i.width||(b.hasSize=!1)}return n._parseMarkup(c,{title:M(b),img_replaceWith:b.img},b),n.resizeImage(),b.hasSize?(L&&clearInterval(L),b.loadError?(c.addClass(\"mfp-loading\"),n.updateStatus(\"error\",g.tError.replace(\"%url%\",b.src))):(c.removeClass(\"mfp-loading\"),n.updateStatus(\"ready\")),c):(n.updateStatus(\"loading\"),b.loading=!0,b.hasSize||(b.imgHidden=!0,c.addClass(\"mfp-loading\"),n.findImageSize(b)),c)}}});var N,O=function(){return N===undefined&&(N=document.createElement(\"p\").style.MozTransform!==undefined),N};a.magnificPopup.registerModule(\"zoom\",{options:{enabled:!1,easing:\"ease-in-out\",duration:300,opener:function(a){return a.is(\"img\")?a:a.find(\"img\")}},proto:{initZoom:function(){var a=n.st.zoom,d=\".zoom\",e;if(!a.enabled||!n.supportsTransition)return;var f=a.duration,g=function(b){var c=b.clone().removeAttr(\"style\").removeAttr(\"class\").addClass(\"mfp-animated-image\"),d=\"all \"+a.duration/1e3+\"s \"+a.easing,e={position:\"fixed\",zIndex:9999,left:0,top:0,\"-webkit-backface-visibility\":\"hidden\"},f=\"transition\";return e[\"-webkit-\"+f]=e[\"-moz-\"+f]=e[\"-o-\"+f]=e[f]=d,c.css(e),c},h=function(){n.content.css(\"visibility\",\"visible\")},i,j;w(\"BuildControls\"+d,function(){if(n._allowZoom()){clearTimeout(i),n.content.css(\"visibility\",\"hidden\"),e=n._getItemToZoom();if(!e){h();return}j=g(e),j.css(n._getOffset()),n.wrap.append(j),i=setTimeout(function(){j.css(n._getOffset(!0)),i=setTimeout(function(){h(),setTimeout(function(){j.remove(),e=j=null,y(\"ZoomAnimationEnded\")},16)},f)},16)}}),w(c+d,function(){if(n._allowZoom()){clearTimeout(i),n.st.removalDelay=f;if(!e){e=n._getItemToZoom();if(!e)return;j=g(e)}j.css(n._getOffset(!0)),n.wrap.append(j),n.content.css(\"visibility\",\"hidden\"),setTimeout(function(){j.css(n._getOffset())},16)}}),w(b+d,function(){n._allowZoom()&&(h(),j&&j.remove(),e=null)})},_allowZoom:function(){return n.currItem.type===\"image\"},_getItemToZoom:function(){return n.currItem.hasSize?n.currItem.img:!1},_getOffset:function(b){var c;b?c=n.currItem.img:c=n.st.zoom.opener(n.currItem.el||n.currItem);var d=c.offset(),e=parseInt(c.css(\"padding-top\"),10),f=parseInt(c.css(\"padding-bottom\"),10);d.top-=a(window).scrollTop()-e;var g={width:c.width(),height:(p?c.innerHeight():c[0].offsetHeight)-f-e};return O()?g[\"-moz-transform\"]=g.transform=\"translate(\"+d.left+\"px,\"+d.top+\"px)\":(g.left=d.left,g.top=d.top),g}}});var P=\"iframe\",Q=\"//about:blank\",R=function(a){if(n.currTemplate[P]){var b=n.currTemplate[P].find(\"iframe\");b.length&&(a||(b[0].src=Q),n.isIE8&&b.css(\"display\",a?\"block\":\"none\"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class=\"mfp-iframe-scaler\"><div class=\"mfp-close\"></div><iframe class=\"mfp-iframe\" src=\"//about:blank\" frameborder=\"0\" allowfullscreen></iframe></div>',srcAction:\"iframe_src\",patterns:{youtube:{index:\"youtube.com\",id:\"v=\",src:\"//www.youtube.com/embed/%id%?autoplay=1\"},vimeo:{index:\"vimeo.com/\",id:\"/\",src:\"//player.vimeo.com/video/%id%?autoplay=1\"},gmaps:{index:\"//maps.google.\",src:\"%id%&output=embed\"}}},proto:{initIframe:function(){n.types.push(P),w(\"BeforeChange\",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(b+\".\"+P,function(){R()})},getIframe:function(b,c){var d=b.src,e=n.st.iframe;a.each(e.patterns,function(){if(d.indexOf(this.index)>-1)return this.id&&(typeof this.id==\"string\"?d=d.substr(d.lastIndexOf(this.id)+this.id.length,d.length):d=this.id.call(this,d)),d=this.src.replace(\"%id%\",d),!1});var f={};return e.srcAction&&(f[e.srcAction]=d),n._parseMarkup(c,f,b),n.updateStatus(\"ready\"),c}}});var S=function(a){var b=n.items.length;return a>b-1?a-b:a<0?b+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule(\"gallery\",{options:{enabled:!1,arrowMarkup:'<button title=\"%title%\" type=\"button\" class=\"mfp-arrow mfp-arrow-%dir%\"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:\"Previous (Left arrow key)\",tNext:\"Next (Right arrow key)\",tCounter:\"%curr% of %total%\"},proto:{initGallery:function(){var c=n.st.gallery,d=\".mfp-gallery\";n.direction=!0;if(!c||!c.enabled)return!1;u+=\" mfp-gallery\",w(g+d,function(){c.navigateByImgClick&&n.wrap.on(\"click\"+d,\".mfp-img\",function(){if(n.items.length>1)return n.next(),!1}),s.on(\"keydown\"+d,function(a){a.keyCode===37?n.prev():a.keyCode===39&&n.next()})}),w(\"UpdateStatus\"+d,function(a,b){b.text&&(b.text=T(b.text,n.currItem.index,n.items.length))}),w(f+d,function(a,b,d,e){var f=n.items.length;d.counter=f>1?T(c.tCounter,e.index,f):\"\"}),w(\"BuildControls\"+d,function(){if(n.items.length>1&&c.arrows&&!n.arrowLeft){var b=c.arrowMarkup,d=n.arrowLeft=a(b.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,\"left\")).addClass(m),e=n.arrowRight=a(b.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,\"right\")).addClass(m);d.click(function(){n.prev()}),e.click(function(){n.next()}),n.container.append(d.add(e))}}),w(h+d,function(){n._preloadTimeout&&clearTimeout(n._preloadTimeout),n._preloadTimeout=setTimeout(function(){n.preloadNearbyImages(),n._preloadTimeout=null},16)}),w(b+d,function(){s.off(d),n.wrap.off(\"click\"+d),n.arrowRight=n.arrowLeft=null})},next:function(){n.direction=!0,n.index=S(n.index+1),n.updateItemHTML()},prev:function(){n.direction=!1,n.index=S(n.index-1),n.updateItemHTML()},goTo:function(a){n.direction=a>=n.index,n.index=a,n.updateItemHTML()},preloadNearbyImages:function(){var a=n.st.gallery.preload,b=Math.min(a[0],n.items.length),c=Math.min(a[1],n.items.length),d;for(d=1;d<=(n.direction?c:b);d++)n._preloadItem(n.index+d);for(d=1;d<=(n.direction?b:c);d++)n._preloadItem(n.index-d)},_preloadItem:function(b){b=S(b);if(n.items[b].preloaded)return;var c=n.items[b];c.parsed||(c=n.parseEl(b)),y(\"LazyLoad\",c),c.type===\"image\"&&(c.img=a('<img class=\"mfp-img\" />').on(\"load.mfploader\",function(){c.hasSize=!0}).on(\"error.mfploader\",function(){c.hasSize=!0,c.loadError=!0,y(\"LazyLoadError\",c)}).attr(\"src\",c.src)),c.preloaded=!0}}});var U=\"retina\";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\\.\\w+$/,function(a){return\"@2x\"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=n.st.retina,b=a.ratio;b=isNaN(b)?b():b,b>1&&(w(\"ImageHasSize.\"+U,function(a,c){c.img.css({\"max-width\":c.img[0].naturalWidth/b,width:\"100%\"})}),w(\"ElementParse.\"+U,function(c,d){d.src=a.replaceSrc(d,b)}))}}}}),A()})","Mageplaza_Core/js/owl.carousel.min.js":"/**\n * Owl Carousel v2.3.4\n * Copyright 2013-2018 David Deutsch\n * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE\n */\n!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:[\"busy\"],animating:[\"busy\"],dragging:[\"interacting\"]}},a.each([\"onResize\",\"onThrottledResize\"],a.proxy(function(b,c){this._handlers[c]=a.proxy(this[c],this)},this)),a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a.charAt(0).toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Workers,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}e.Defaults={items:3,loop:!1,center:!1,rewind:!1,checkVisibility:!0,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,fallbackEasing:\"swing\",slideTransition:\"\",info:!1,nestedItemSelector:!1,itemElement:\"div\",stageElement:\"div\",refreshClass:\"owl-refresh\",loadedClass:\"owl-loaded\",loadingClass:\"owl-loading\",rtlClass:\"owl-rtl\",responsiveClass:\"owl-responsive\",dragClass:\"owl-drag\",itemClass:\"owl-item\",stageClass:\"owl-stage\",stageOuterClass:\"owl-stage-outer\",grabClass:\"owl-grab\"},e.Width={Default:\"default\",Inner:\"inner\",Outer:\"outer\"},e.Type={Event:\"event\",State:\"state\"},e.Plugins={},e.Workers=[{filter:[\"width\",\"settings\"],run:function(){this._width=this.$element.width()}},{filter:[\"width\",\"items\",\"settings\"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:[\"items\",\"settings\"],run:function(){this.$stage.children(\".cloned\").remove()}},{filter:[\"width\",\"items\",\"settings\"],run:function(a){var b=this.settings.margin||\"\",c=!this.settings.autoWidth,d=this.settings.rtl,e={width:\"auto\",\"margin-left\":d?b:\"\",\"margin-right\":d?\"\":b};!c&&this.$stage.children().css(e),a.css=e}},{filter:[\"width\",\"items\",\"settings\"],run:function(a){var b=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,c=null,d=this._items.length,e=!this.settings.autoWidth,f=[];for(a.items={merge:!1,width:b};d--;)c=this._mergers[d],c=this.settings.mergeFit&&Math.min(c,this.settings.items)||c,a.items.merge=c>1||a.items.merge,f[d]=e?b*c:this._items[d].width();this._widths=f}},{filter:[\"items\",\"settings\"],run:function(){var b=[],c=this._items,d=this.settings,e=Math.max(2*d.items,4),f=2*Math.ceil(c.length/2),g=d.loop&&c.length?d.rewind?e:Math.max(e,f):0,h=\"\",i=\"\";for(g/=2;g>0;)b.push(this.normalize(b.length/2,!0)),h+=c[b[b.length-1]][0].outerHTML,b.push(this.normalize(c.length-1-(b.length-1)/2,!0)),i=c[b[b.length-1]][0].outerHTML+i,g-=1;this._clones=b,a(h).addClass(\"cloned\").appendTo(this.$stage),a(i).addClass(\"cloned\").prependTo(this.$stage)}},{filter:[\"width\",\"items\",\"settings\"],run:function(){for(var a=this.settings.rtl?1:-1,b=this._clones.length+this._items.length,c=-1,d=0,e=0,f=[];++c<b;)d=f[c-1]||0,e=this._widths[this.relative(c)]+this.settings.margin,f.push(d+e*a);this._coordinates=f}},{filter:[\"width\",\"items\",\"settings\"],run:function(){var a=this.settings.stagePadding,b=this._coordinates,c={width:Math.ceil(Math.abs(b[b.length-1]))+2*a,\"padding-left\":a||\"\",\"padding-right\":a||\"\"};this.$stage.css(c)}},{filter:[\"width\",\"items\",\"settings\"],run:function(a){var b=this._coordinates.length,c=!this.settings.autoWidth,d=this.$stage.children();if(c&&a.items.merge)for(;b--;)a.css.width=this._widths[this.relative(b)],d.eq(b).css(a.css);else c&&(a.css.width=a.items.width,d.css(a.css))}},{filter:[\"items\"],run:function(){this._coordinates.length<1&&this.$stage.removeAttr(\"style\")}},{filter:[\"width\",\"items\",\"settings\"],run:function(a){a.current=a.current?this.$stage.children().index(a.current):0,a.current=Math.max(this.minimum(),Math.min(this.maximum(),a.current)),this.reset(a.current)}},{filter:[\"position\"],run:function(){this.animate(this.coordinates(this._current))}},{filter:[\"width\",\"position\",\"items\",\"settings\"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;c<d;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,\"<=\",g)&&this.op(a,\">\",h)||this.op(b,\"<\",g)&&this.op(b,\">\",h))&&i.push(c);this.$stage.children(\".active\").removeClass(\"active\"),this.$stage.children(\":eq(\"+i.join(\"), :eq(\")+\")\").addClass(\"active\"),this.$stage.children(\".center\").removeClass(\"center\"),this.settings.center&&this.$stage.children().eq(this.current()).addClass(\"center\")}}],e.prototype.initializeStage=function(){this.$stage=this.$element.find(\".\"+this.settings.stageClass),this.$stage.length||(this.$element.addClass(this.options.loadingClass),this.$stage=a(\"<\"+this.settings.stageElement+\">\",{class:this.settings.stageClass}).wrap(a(\"<div/>\",{class:this.settings.stageOuterClass})),this.$element.append(this.$stage.parent()))},e.prototype.initializeItems=function(){var b=this.$element.find(\".owl-item\");if(b.length)return this._items=b.get().map(function(b){return a(b)}),this._mergers=this._items.map(function(){return 1}),void this.refresh();this.replace(this.$element.children().not(this.$stage.parent())),this.isVisible()?this.refresh():this.invalidate(\"width\"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)},e.prototype.initialize=function(){if(this.enter(\"initializing\"),this.trigger(\"initialize\"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is(\"pre-loading\")){var a,b,c;a=this.$element.find(\"img\"),b=this.settings.nestedItemSelector?\".\"+this.settings.nestedItemSelector:d,c=this.$element.children(b).width(),a.length&&c<=0&&this.preloadAutoWidthImages(a)}this.initializeStage(),this.initializeItems(),this.registerEventHandlers(),this.leave(\"initializing\"),this.trigger(\"initialized\")},e.prototype.isVisible=function(){return!this.settings.checkVisibility||this.$element.is(\":visible\")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){a<=b&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),\"function\"==typeof e.stagePadding&&(e.stagePadding=e.stagePadding()),delete e.responsive,e.responsiveClass&&this.$element.attr(\"class\",this.$element.attr(\"class\").replace(new RegExp(\"(\"+this.options.responsiveClass+\"-)\\\\S+\\\\s\",\"g\"),\"$1\"+d))):e=a.extend({},this.options),this.trigger(\"change\",{property:{name:\"settings\",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate(\"settings\"),this.trigger(\"changed\",{property:{name:\"settings\",value:this.settings}})},e.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger(\"prepare\",{content:b});return c.data||(c.data=a(\"<\"+this.settings.itemElement+\"/>\").addClass(this.options.itemClass).append(b)),this.trigger(\"prepared\",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};b<c;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={},!this.is(\"valid\")&&this.enter(\"valid\")},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){this.enter(\"refreshing\"),this.trigger(\"refresh\"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave(\"refreshing\"),this.trigger(\"refreshed\")},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return!!this._items.length&&(this._width!==this.$element.width()&&(!!this.isVisible()&&(this.enter(\"resizing\"),this.trigger(\"resize\").isDefaultPrevented()?(this.leave(\"resizing\"),!1):(this.invalidate(\"width\"),this.refresh(),this.leave(\"resizing\"),void this.trigger(\"resized\")))))},e.prototype.registerEventHandlers=function(){a.support.transition&&this.$stage.on(a.support.transition.end+\".owl.core\",a.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(b,\"resize\",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on(\"mousedown.owl.core\",a.proxy(this.onDragStart,this)),this.$stage.on(\"dragstart.owl.core selectstart.owl.core\",function(){return!1})),this.settings.touchDrag&&(this.$stage.on(\"touchstart.owl.core\",a.proxy(this.onDragStart,this)),this.$stage.on(\"touchcancel.owl.core\",a.proxy(this.onDragEnd,this)))},e.prototype.onDragStart=function(b){var d=null;3!==b.which&&(a.support.transform?(d=this.$stage.css(\"transform\").replace(/.*\\(|\\)| /g,\"\").split(\",\"),d={x:d[16===d.length?12:4],y:d[16===d.length?13:5]}):(d=this.$stage.position(),d={x:this.settings.rtl?d.left+this.$stage.width()-this.width()+this.settings.margin:d.left,y:d.top}),this.is(\"animating\")&&(a.support.transform?this.animate(d.x):this.$stage.stop(),this.invalidate(\"position\")),this.$element.toggleClass(this.options.grabClass,\"mousedown\"===b.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=a(b.target),this._drag.stage.start=d,this._drag.stage.current=d,this._drag.pointer=this.pointer(b),a(c).on(\"mouseup.owl.core touchend.owl.core\",a.proxy(this.onDragEnd,this)),a(c).one(\"mousemove.owl.core touchmove.owl.core\",a.proxy(function(b){var d=this.difference(this._drag.pointer,this.pointer(b));a(c).on(\"mousemove.owl.core touchmove.owl.core\",a.proxy(this.onDragMove,this)),Math.abs(d.x)<Math.abs(d.y)&&this.is(\"valid\")||(b.preventDefault(),this.enter(\"dragging\"),this.trigger(\"drag\"))},this)))},e.prototype.onDragMove=function(a){var b=null,c=null,d=null,e=this.difference(this._drag.pointer,this.pointer(a)),f=this.difference(this._drag.stage.start,e);this.is(\"dragging\")&&(a.preventDefault(),this.settings.loop?(b=this.coordinates(this.minimum()),c=this.coordinates(this.maximum()+1)-b,f.x=((f.x-b)%c+c)%c+b):(b=this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum()),c=this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum()),d=this.settings.pullDrag?-1*e.x/5:0,f.x=Math.max(Math.min(f.x,b+d),c+d)),this._drag.stage.current=f,this.animate(f.x))},e.prototype.onDragEnd=function(b){var d=this.difference(this._drag.pointer,this.pointer(b)),e=this._drag.stage.current,f=d.x>0^this.settings.rtl?\"left\":\"right\";a(c).off(\".owl.core\"),this.$element.removeClass(this.options.grabClass),(0!==d.x&&this.is(\"dragging\")||!this.is(\"valid\"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(e.x,0!==d.x?f:this._drag.direction)),this.invalidate(\"position\"),this.update(),this._drag.direction=f,(Math.abs(d.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one(\"click.owl.core\",function(){return!1})),this.is(\"dragging\")&&(this.leave(\"dragging\"),this.trigger(\"dragged\"))},e.prototype.closest=function(b,c){var e=-1,f=30,g=this.width(),h=this.coordinates();return this.settings.freeDrag||a.each(h,a.proxy(function(a,i){return\"left\"===c&&b>i-f&&b<i+f?e=a:\"right\"===c&&b>i-g-f&&b<i-g+f?e=a+1:this.op(b,\"<\",i)&&this.op(b,\">\",h[a+1]!==d?h[a+1]:i-g)&&(e=\"left\"===c?a+1:a),-1===e},this)),this.settings.loop||(this.op(b,\">\",h[this.minimum()])?e=b=this.minimum():this.op(b,\"<\",h[this.maximum()])&&(e=b=this.maximum())),e},e.prototype.animate=function(b){var c=this.speed()>0;this.is(\"animating\")&&this.onTransitionEnd(),c&&(this.enter(\"animating\"),this.trigger(\"translate\")),a.support.transform3d&&a.support.transition?this.$stage.css({transform:\"translate3d(\"+b+\"px,0px,0px)\",transition:this.speed()/1e3+\"s\"+(this.settings.slideTransition?\" \"+this.settings.slideTransition:\"\")}):c?this.$stage.animate({left:b+\"px\"},this.speed(),this.settings.fallbackEasing,a.proxy(this.onTransitionEnd,this)):this.$stage.css({left:b+\"px\"})},e.prototype.is=function(a){return this._states.current[a]&&this._states.current[a]>0},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger(\"change\",{property:{name:\"position\",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate(\"position\"),this.trigger(\"changed\",{property:{name:\"position\",value:this._current}})}return this._current},e.prototype.invalidate=function(b){return\"string\"===a.type(b)&&(this._invalidated[b]=!0,this.is(\"valid\")&&this.leave(\"valid\")),a.map(this._invalidated,function(a,b){return b})},e.prototype.reset=function(a){(a=this.normalize(a))!==d&&(this._speed=0,this._current=a,this.suppress([\"translate\",\"translated\"]),this.animate(this.coordinates(a)),this.release([\"translate\",\"translated\"]))},e.prototype.normalize=function(a,b){var c=this._items.length,e=b?0:this._clones.length;return!this.isNumeric(a)||c<1?a=d:(a<0||a>=c+e)&&(a=((a-e/2)%c+c)%c+e/2),a},e.prototype.relative=function(a){return a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=this.settings,f=this._coordinates.length;if(e.loop)f=this._clones.length/2+this._items.length-1;else if(e.autoWidth||e.merge){if(b=this._items.length)for(c=this._items[--b].width(),d=this.$element.width();b--&&!((c+=this._items[b].width()+this.settings.margin)>d););f=b+1}else f=e.center?this._items.length-1:this._items.length-e.items;return a&&(f-=this._clones.length/2),Math.max(f,0)},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2==0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c,e=1,f=b-1;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(this.settings.rtl&&(e=-1,f=b+1),c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[f]||0))/2*e):c=this._coordinates[f]||0,c=Math.ceil(c))},e.prototype.duration=function(a,b,c){return 0===c?0:Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(a,b){var c=this.current(),d=null,e=a-this.relative(c),f=(e>0)-(e<0),g=this._items.length,h=this.minimum(),i=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(e)>g/2&&(e+=-1*f*g),a=c+e,(d=((a-h)%g+g)%g+h)!==a&&d-e<=i&&d-e>0&&(c=d-e,a=d,this.reset(c))):this.settings.rewind?(i+=1,a=(a%i+i)%i):a=Math.max(h,Math.min(i,a)),this.speed(this.duration(c,a,b)),this.current(a),this.isVisible()&&this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.onTransitionEnd=function(a){if(a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0)))return!1;this.leave(\"animating\"),this.trigger(\"translated\")},e.prototype.viewport=function(){var d;return this.options.responsiveBaseElement!==b?d=a(this.options.responsiveBaseElement).width():b.innerWidth?d=b.innerWidth:c.documentElement&&c.documentElement.clientWidth?d=c.documentElement.clientWidth:console.warn(\"Can not detect viewport width.\"),d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find(\".\"+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find(\"[data-merge]\").addBack(\"[data-merge]\").attr(\"data-merge\")||1)},this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate(\"items\")},e.prototype.add=function(b,c){var e=this.relative(this._current);c=c===d?this._items.length:this.normalize(c,!0),b=b instanceof jQuery?b:a(b),this.trigger(\"add\",{content:b,position:c}),b=this.prepare(b),0===this._items.length||c===this._items.length?(0===this._items.length&&this.$stage.append(b),0!==this._items.length&&this._items[c-1].after(b),this._items.push(b),this._mergers.push(1*b.find(\"[data-merge]\").addBack(\"[data-merge]\").attr(\"data-merge\")||1)):(this._items[c].before(b),this._items.splice(c,0,b),this._mergers.splice(c,0,1*b.find(\"[data-merge]\").addBack(\"[data-merge]\").attr(\"data-merge\")||1)),this._items[e]&&this.reset(this._items[e].index()),this.invalidate(\"items\"),this.trigger(\"added\",{content:b,position:c})},e.prototype.remove=function(a){(a=this.normalize(a,!0))!==d&&(this.trigger(\"remove\",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate(\"items\"),this.trigger(\"removed\",{content:null,position:a}))},e.prototype.preloadAutoWidthImages=function(b){b.each(a.proxy(function(b,c){this.enter(\"pre-loading\"),c=a(c),a(new Image).one(\"load\",a.proxy(function(a){c.attr(\"src\",a.target.src),c.css(\"opacity\",1),this.leave(\"pre-loading\"),!this.is(\"pre-loading\")&&!this.is(\"initializing\")&&this.refresh()},this)).attr(\"src\",c.attr(\"src\")||c.attr(\"data-src\")||c.attr(\"data-src-retina\"))},this))},e.prototype.destroy=function(){this.$element.off(\".owl.core\"),this.$stage.off(\".owl.core\"),a(c).off(\".owl.core\"),!1!==this.settings.responsive&&(b.clearTimeout(this.resizeTimer),this.off(b,\"resize\",this._handlers.onThrottledResize));for(var d in this._plugins)this._plugins[d].destroy();this.$stage.children(\".cloned\").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.remove(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr(\"class\",this.$element.attr(\"class\").replace(new RegExp(this.options.responsiveClass+\"-\\\\S+\\\\s\",\"g\"),\"\")).removeData(\"owl.carousel\")},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case\"<\":return d?a>c:a<c;case\">\":return d?a<c:a>c;case\">=\":return d?a<=c:a>=c;case\"<=\":return d?a>=c:a<=c}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent(\"on\"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent(\"on\"+b,c)},e.prototype.trigger=function(b,c,d,f,g){var h={item:{count:this._items.length,index:this.current()}},i=a.camelCase(a.grep([\"on\",b,d],function(a){return a}).join(\"-\").toLowerCase()),j=a.Event([b,\"owl\",d||\"carousel\"].join(\".\").toLowerCase(),a.extend({relatedTarget:this},h,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(j)}),this.register({type:e.Type.Event,name:b}),this.$element.trigger(j),this.settings&&\"function\"==typeof this.settings[i]&&this.settings[i].call(this,j)),j},e.prototype.enter=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]===d&&(this._states.current[b]=0),this._states.current[b]++},this))},e.prototype.leave=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]--},this))},e.prototype.register=function(b){if(b.type===e.Type.Event){if(a.event.special[b.name]||(a.event.special[b.name]={}),!a.event.special[b.name].owl){var c=a.event.special[b.name]._default;a.event.special[b.name]._default=function(a){return!c||!c.apply||a.namespace&&-1!==a.namespace.indexOf(\"owl\")?a.namespace&&a.namespace.indexOf(\"owl\")>-1:c.apply(this,arguments)},a.event.special[b.name].owl=!0}}else b.type===e.Type.State&&(this._states.tags[b.name]?this._states.tags[b.name]=this._states.tags[b.name].concat(b.tags):this._states.tags[b.name]=b.tags,this._states.tags[b.name]=a.grep(this._states.tags[b.name],a.proxy(function(c,d){return a.inArray(c,this._states.tags[b.name])===d},this)))},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.pointer=function(a){var c={x:null,y:null};return a=a.originalEvent||a||b.event,a=a.touches&&a.touches.length?a.touches[0]:a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:a,a.pageX?(c.x=a.pageX,c.y=a.pageY):(c.x=a.clientX,c.y=a.clientY),c},e.prototype.isNumeric=function(a){return!isNaN(parseFloat(a))},e.prototype.difference=function(a,b){return{x:a.x-b.x,y:a.y-b.y}},a.fn.owlCarousel=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),f=d.data(\"owl.carousel\");f||(f=new e(this,\"object\"==typeof b&&b),d.data(\"owl.carousel\",f),a.each([\"next\",\"prev\",\"to\",\"destroy\",\"refresh\",\"replace\",\"add\",\"remove\"],function(b,c){f.register({type:e.Type.Event,name:c}),f.$element.on(c+\".owl.carousel.core\",a.proxy(function(a){a.namespace&&a.relatedTarget!==this&&(this.suppress([c]),f[c].apply(this,[].slice.call(arguments,1)),this.release([c]))},f))})),\"string\"==typeof b&&\"_\"!==b.charAt(0)&&f[b].apply(f,c)})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._visible=null,this._handlers={\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoRefresh:!0,autoRefreshInterval:500},e.prototype.watch=function(){this._interval||(this._visible=this._core.isVisible(),this._interval=b.setInterval(a.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},e.prototype.refresh=function(){this._core.isVisible()!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass(\"owl-hidden\",!this._visible),this._visible&&this._core.invalidate(\"width\")&&this._core.refresh())},e.prototype.destroy=function(){var a,c;b.clearInterval(this._interval);for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(c in Object.getOwnPropertyNames(this))\"function\"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoRefresh=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._loaded=[],this._handlers={\"initialized.owl.carousel change.owl.carousel resized.owl.carousel\":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&\"position\"==b.property.name||\"initialized\"==b.type)){var c=this._core.settings,e=c.center&&Math.ceil(c.items/2)||c.items,f=c.center&&-1*e||0,g=(b.property&&b.property.value!==d?b.property.value:this._core.current())+f,h=this._core.clones().length,i=a.proxy(function(a,b){this.load(b)},this);for(c.lazyLoadEager>0&&(e+=c.lazyLoadEager,c.loop&&(g-=c.lazyLoadEager,e++));f++<e;)this.load(h/2+this._core.relative(g)),h&&a.each(this._core.clones(this._core.relative(g)),i),g++}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={lazyLoad:!1,lazyLoadEager:0},e.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(\".owl-lazy\");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr(\"data-src-retina\")||f.attr(\"data-src\")||f.attr(\"data-srcset\");this._core.trigger(\"load\",{element:f,url:g},\"lazy\"),f.is(\"img\")?f.one(\"load.owl.lazy\",a.proxy(function(){f.css(\"opacity\",1),this._core.trigger(\"loaded\",{element:f,url:g},\"lazy\")},this)).attr(\"src\",g):f.is(\"source\")?f.one(\"load.owl.lazy\",a.proxy(function(){this._core.trigger(\"loaded\",{element:f,url:g},\"lazy\")},this)).attr(\"srcset\",g):(e=new Image,e.onload=a.proxy(function(){f.css({\"background-image\":'url(\"'+g+'\")',opacity:\"1\"}),this._core.trigger(\"loaded\",{element:f,url:g},\"lazy\")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(c){this._core=c,this._previousHeight=null,this._handlers={\"initialized.owl.carousel refreshed.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&this.update()},this),\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&\"position\"===a.property.name&&this.update()},this),\"loaded.owl.lazy\":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&a.element.closest(\".\"+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._intervalId=null;var d=this;a(b).on(\"load\",function(){d._core.settings.autoHeight&&d.update()}),a(b).resize(function(){d._core.settings.autoHeight&&(null!=d._intervalId&&clearTimeout(d._intervalId),d._intervalId=setTimeout(function(){d.update()},250))})};e.Defaults={autoHeight:!1,autoHeightClass:\"owl-height\"},e.prototype.update=function(){var b=this._core._current,c=b+this._core.settings.items,d=this._core.settings.lazyLoad,e=this._core.$stage.children().toArray().slice(b,c),f=[],g=0;a.each(e,function(b,c){f.push(a(c).height())}),g=Math.max.apply(null,f),g<=1&&d&&this._previousHeight&&(g=this._previousHeight),this._previousHeight=g,this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass)},e.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._videos={},this._playing=null,this._handlers={\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.register({type:\"state\",name:\"playing\",tags:[\"interacting\"]})},this),\"resize.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.video&&this.isInFullScreen()&&a.preventDefault()},this),\"refreshed.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.is(\"resizing\")&&this._core.$stage.find(\".cloned .owl-video-frame\").remove()},this),\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&\"position\"===a.property.name&&this._playing&&this.stop()},this),\"prepared.owl.carousel\":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(\".owl-video\");c.length&&(c.css(\"display\",\"none\"),this.fetch(c,a(b.content)))}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on(\"click.owl.video\",\".owl-video-play-icon\",a.proxy(function(a){this.play(a)},this))};e.Defaults={video:!1,videoHeight:!1,videoWidth:!1},e.prototype.fetch=function(a,b){var c=function(){return a.attr(\"data-vimeo-id\")?\"vimeo\":a.attr(\"data-vzaar-id\")?\"vzaar\":\"youtube\"}(),d=a.attr(\"data-vimeo-id\")||a.attr(\"data-youtube-id\")||a.attr(\"data-vzaar-id\"),e=a.attr(\"data-width\")||this._core.settings.videoWidth,f=a.attr(\"data-height\")||this._core.settings.videoHeight,g=a.attr(\"href\");if(!g)throw new Error(\"Missing video URL.\");if(d=g.match(/(http:|https:|)\\/\\/(player.|www.|app.)?(vimeo\\.com|youtu(be\\.com|\\.be|be\\.googleapis\\.com|be\\-nocookie\\.com)|vzaar\\.com)\\/(video\\/|videos\\/|embed\\/|channels\\/.+\\/|groups\\/.+\\/|watch\\?v=|v\\/)?([A-Za-z0-9._%-]*)(\\&\\S+)?/),d[3].indexOf(\"youtu\")>-1)c=\"youtube\";else if(d[3].indexOf(\"vimeo\")>-1)c=\"vimeo\";else{if(!(d[3].indexOf(\"vzaar\")>-1))throw new Error(\"Video URL not supported.\");c=\"vzaar\"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr(\"data-video\",g),this.thumbnail(a,this._videos[g])},e.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?\"width:\"+c.width+\"px;height:\"+c.height+\"px;\":\"\",h=b.find(\"img\"),i=\"src\",j=\"\",k=this._core.settings,l=function(c){e='<div class=\"owl-video-play-icon\"></div>',d=k.lazyLoad?a(\"<div/>\",{class:\"owl-video-tn \"+j,srcType:c}):a(\"<div/>\",{class:\"owl-video-tn\",style:\"opacity:1;background-image:url(\"+c+\")\"}),b.after(d),b.after(e)};if(b.wrap(a(\"<div/>\",{class:\"owl-video-wrapper\",style:g})),this._core.settings.lazyLoad&&(i=\"data-src\",j=\"owl-lazy\"),h.length)return l(h.attr(i)),h.remove(),!1;\"youtube\"===c.type?(f=\"//img.youtube.com/vi/\"+c.id+\"/hqdefault.jpg\",l(f)):\"vimeo\"===c.type?a.ajax({type:\"GET\",url:\"//vimeo.com/api/v2/video/\"+c.id+\".json\",jsonp:\"callback\",dataType:\"jsonp\",success:function(a){f=a[0].thumbnail_large,l(f)}}):\"vzaar\"===c.type&&a.ajax({type:\"GET\",url:\"//vzaar.com/api/videos/\"+c.id+\".json\",jsonp:\"callback\",dataType:\"jsonp\",success:function(a){f=a.framegrab_url,l(f)}})},e.prototype.stop=function(){this._core.trigger(\"stop\",null,\"video\"),this._playing.find(\".owl-video-frame\").remove(),this._playing.removeClass(\"owl-video-playing\"),this._playing=null,this._core.leave(\"playing\"),this._core.trigger(\"stopped\",null,\"video\")},e.prototype.play=function(b){var c,d=a(b.target),e=d.closest(\".\"+this._core.settings.itemClass),f=this._videos[e.attr(\"data-video\")],g=f.width||\"100%\",h=f.height||this._core.$stage.height();this._playing||(this._core.enter(\"playing\"),this._core.trigger(\"play\",null,\"video\"),e=this._core.items(this._core.relative(e.index())),this._core.reset(e.index()),c=a('<iframe frameborder=\"0\" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>'),c.attr(\"height\",h),c.attr(\"width\",g),\"youtube\"===f.type?c.attr(\"src\",\"//www.youtube.com/embed/\"+f.id+\"?autoplay=1&rel=0&v=\"+f.id):\"vimeo\"===f.type?c.attr(\"src\",\"//player.vimeo.com/video/\"+f.id+\"?autoplay=1\"):\"vzaar\"===f.type&&c.attr(\"src\",\"//view.vzaar.com/\"+f.id+\"/player?autoplay=true\"),a(c).wrap('<div class=\"owl-video-frame\" />').insertAfter(e.find(\".owl-video\")),this._playing=e.addClass(\"owl-video-playing\"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass(\"owl-video-frame\")},e.prototype.destroy=function(){var a,b;this._core.$element.off(\"click.owl.video\");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={\"change.owl.carousel\":a.proxy(function(a){a.namespace&&\"position\"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),\"drag.owl.carousel dragged.owl.carousel translated.owl.carousel\":a.proxy(function(a){a.namespace&&(this.swapping=\"translated\"==a.type)},this),\"translate.owl.carousel\":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,\nanimateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+\"px\"}).addClass(\"animated owl-animated-out\").addClass(g)),f&&e.one(a.support.animation.end,c).addClass(\"animated owl-animated-in\").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:\"\"}).removeClass(\"animated owl-animated-out owl-animated-in\").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&\"settings\"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&\"position\"===a.property.name&&this._paused&&(this._time=0)},this),\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),\"play.owl.autoplay\":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),\"stop.owl.autoplay\":a.proxy(function(a){a.namespace&&this.stop()},this),\"mouseover.owl.autoplay\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is(\"rotating\")&&this.pause()},this),\"mouseleave.owl.autoplay\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is(\"rotating\")&&this.play()},this),\"touchstart.owl.core\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is(\"rotating\")&&this.pause()},this),\"touchend.owl.core\":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype._next=function(d){this._call=b.setTimeout(a.proxy(this._next,this,d),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is(\"interacting\")||c.hidden||this._core.next(d||this._core.settings.autoplaySpeed)},e.prototype.read=function(){return(new Date).getTime()-this._time},e.prototype.play=function(c,d){var e;this._core.is(\"rotating\")||this._core.enter(\"rotating\"),c=c||this._core.settings.autoplayTimeout,e=Math.min(this._time%(this._timeout||c),c),this._paused?(this._time=this.read(),this._paused=!1):b.clearTimeout(this._call),this._time+=this.read()%c-e,this._timeout=c,this._call=b.setTimeout(a.proxy(this._next,this,d),c-e)},e.prototype.stop=function(){this._core.is(\"rotating\")&&(this._time=0,this._paused=!0,b.clearTimeout(this._call),this._core.leave(\"rotating\"))},e.prototype.pause=function(){this._core.is(\"rotating\")&&!this._paused&&(this._time=this.read(),this._paused=!0,b.clearTimeout(this._call))},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))\"function\"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){\"use strict\";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={\"prepared.owl.carousel\":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('<div class=\"'+this._core.settings.dotClass+'\">'+a(b.content).find(\"[data-dot]\").addBack(\"[data-dot]\").attr(\"data-dot\")+\"</div>\")},this),\"added.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),\"remove.owl.carousel\":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),\"changed.owl.carousel\":a.proxy(function(a){a.namespace&&\"position\"==a.property.name&&this.draw()},this),\"initialized.owl.carousel\":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger(\"initialize\",null,\"navigation\"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger(\"initialized\",null,\"navigation\"))},this),\"refreshed.owl.carousel\":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger(\"refresh\",null,\"navigation\"),this.update(),this.draw(),this._core.trigger(\"refreshed\",null,\"navigation\"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:['<span aria-label=\"Previous\">‹</span>','<span aria-label=\"Next\">›</span>'],navSpeed:!1,navElement:'button type=\"button\" role=\"presentation\"',navContainer:!1,navContainerClass:\"owl-nav\",navClass:[\"owl-prev\",\"owl-next\"],slideBy:1,dotClass:\"owl-dot\",dotsClass:\"owl-dots\",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a(\"<div>\").addClass(c.navContainerClass).appendTo(this.$element)).addClass(\"disabled\"),this._controls.$previous=a(\"<\"+c.navElement+\">\").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on(\"click\",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a(\"<\"+c.navElement+\">\").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on(\"click\",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a('<button role=\"button\">').addClass(c.dotClass).append(a(\"<span>\")).prop(\"outerHTML\")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a(\"<div>\").addClass(c.dotsClass).appendTo(this.$element)).addClass(\"disabled\"),this._controls.$absolute.on(\"click\",\"button\",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d,e;e=this._core.settings;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)\"$relative\"===b&&e.navContainer?this._controls[b].html(\"\"):this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))\"function\"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if(\"page\"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||\"page\"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;a<e;a++){if(b>=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass(\"disabled\",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass(\"disabled\",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass(\"disabled\",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass(\"disabled\",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join(\"\")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):b<0&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(\".active\").removeClass(\"active\"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass(\"active\"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return\"page\"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;!d&&this._pages.length?(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c)):a.proxy(this._overrides.to,this._core)(b,c)},a.fn.owlCarousel.Constructor.Plugins.Navigation=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){\"use strict\";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={\"initialized.owl.carousel\":a.proxy(function(c){c.namespace&&\"URLHash\"===this._core.settings.startPosition&&a(b).trigger(\"hashchange.owl.navigation\")},this),\"prepared.owl.carousel\":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(\"[data-hash]\").addBack(\"[data-hash]\").attr(\"data-hash\");if(!c)return;this._hashes[c]=b.content}},this),\"changed.owl.carousel\":a.proxy(function(c){if(c.namespace&&\"position\"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on(\"hashchange.owl.navigation\",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off(\"hashchange.owl.navigation\");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))\"function\"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+\" \"+h.join(f+\" \")+f).split(\" \"),function(a,b){if(g[b]!==d)return e=!c||b,!1}),e}function f(a){return e(a,!0)}var g=a(\"<support>\").get(0).style,h=\"Webkit Moz O ms\".split(\" \"),i={transition:{end:{WebkitTransition:\"webkitTransitionEnd\",MozTransition:\"transitionend\",OTransition:\"oTransitionEnd\",transition:\"transitionend\"}},animation:{end:{WebkitAnimation:\"webkitAnimationEnd\",MozAnimation:\"animationend\",OAnimation:\"oAnimationEnd\",animation:\"animationend\"}}},j={csstransforms:function(){return!!e(\"transform\")},csstransforms3d:function(){return!!e(\"perspective\")},csstransitions:function(){return!!e(\"transition\")},cssanimations:function(){return!!e(\"animation\")}};j.csstransitions()&&(a.support.transition=new String(f(\"transition\")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f(\"animation\")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f(\"transform\")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document);","Mageplaza_Core/js/ion.rangeSlider.min.js":"// Ion.RangeSlider | version 2.1.6 | https://github.com/IonDen/ion.rangeSlider\n;(function(f){\"function\"===typeof define&&define.amd?define([\"jquery\"],function(p){return f(p,document,window,navigator)}):\"object\"===typeof exports?f(require(\"jquery\"),document,window,navigator):f(jQuery,document,window,navigator)})(function(f,p,h,t,q){var u=0,m=function(){var a=t.userAgent,b=/msie\\s\\d+/i;return 0<a.search(b)&&(a=b.exec(a).toString(),a=a.split(\" \")[1],9>a)?(f(\"html\").addClass(\"lt-ie9\"),!0):!1}();Function.prototype.bind||(Function.prototype.bind=function(a){var b=this,d=[].slice;if(\"function\"!=\n typeof b)throw new TypeError;var c=d.call(arguments,1),e=function(){if(this instanceof e){var g=function(){};g.prototype=b.prototype;var g=new g,l=b.apply(g,c.concat(d.call(arguments)));return Object(l)===l?l:g}return b.apply(a,c.concat(d.call(arguments)))};return e});Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){var d;if(null==this)throw new TypeError('\"this\" is null or not defined');var c=Object(this),e=c.length>>>0;if(0===e)return-1;d=+b||0;Infinity===Math.abs(d)&&(d=0);if(d>=\n e)return-1;for(d=Math.max(0<=d?d:e-Math.abs(d),0);d<e;){if(d in c&&c[d]===a)return d;d++}return-1});var r=function(a,b,d){this.VERSION=\"2.1.6\";this.input=a;this.plugin_count=d;this.old_to=this.old_from=this.update_tm=this.calc_count=this.current_plugin=0;this.raf_id=this.old_min_interval=null;this.is_update=this.is_key=this.no_diapason=this.force_redraw=this.dragging=!1;this.is_start=this.is_first_update=!0;this.is_click=this.is_resize=this.is_active=this.is_finish=!1;b=b||{};this.$cache={win:f(h),\n body:f(p.body),input:f(a),cont:null,rs:null,min:null,max:null,from:null,to:null,single:null,bar:null,line:null,s_single:null,s_from:null,s_to:null,shad_single:null,shad_from:null,shad_to:null,edge:null,grid:null,grid_labels:[]};this.coords={x_gap:0,x_pointer:0,w_rs:0,w_rs_old:0,w_handle:0,p_gap:0,p_gap_left:0,p_gap_right:0,p_step:0,p_pointer:0,p_handle:0,p_single_fake:0,p_single_real:0,p_from_fake:0,p_from_real:0,p_to_fake:0,p_to_real:0,p_bar_x:0,p_bar_w:0,grid_gap:0,big_num:0,big:[],big_w:[],big_p:[],\n big_x:[]};this.labels={w_min:0,w_max:0,w_from:0,w_to:0,w_single:0,p_min:0,p_max:0,p_from_fake:0,p_from_left:0,p_to_fake:0,p_to_left:0,p_single_fake:0,p_single_left:0};var c=this.$cache.input;a=c.prop(\"value\");var e;d={type:\"single\",min:10,max:100,from:null,to:null,step:1,min_interval:0,max_interval:0,drag_interval:!1,values:[],p_values:[],from_fixed:!1,from_min:null,from_max:null,from_shadow:!1,to_fixed:!1,to_min:null,to_max:null,to_shadow:!1,prettify_enabled:!0,prettify_separator:\" \",prettify:null,\n force_edges:!1,keyboard:!1,keyboard_step:5,grid:!1,grid_margin:!0,grid_num:4,grid_snap:!1,hide_min_max:!1,hide_from_to:!1,prefix:\"\",postfix:\"\",max_postfix:\"\",decorate_both:!0,values_separator:\" \\u2014 \",input_values_separator:\";\",disable:!1,onStart:null,onChange:null,onFinish:null,onUpdate:null};\"INPUT\"!==c[0].nodeName&&console&&console.warn&&console.warn(\"Base element should be <input>!\",c[0]);c={type:c.data(\"type\"),min:c.data(\"min\"),max:c.data(\"max\"),from:c.data(\"from\"),to:c.data(\"to\"),step:c.data(\"step\"),\n min_interval:c.data(\"minInterval\"),max_interval:c.data(\"maxInterval\"),drag_interval:c.data(\"dragInterval\"),values:c.data(\"values\"),from_fixed:c.data(\"fromFixed\"),from_min:c.data(\"fromMin\"),from_max:c.data(\"fromMax\"),from_shadow:c.data(\"fromShadow\"),to_fixed:c.data(\"toFixed\"),to_min:c.data(\"toMin\"),to_max:c.data(\"toMax\"),to_shadow:c.data(\"toShadow\"),prettify_enabled:c.data(\"prettifyEnabled\"),prettify_separator:c.data(\"prettifySeparator\"),force_edges:c.data(\"forceEdges\"),keyboard:c.data(\"keyboard\"),\n keyboard_step:c.data(\"keyboardStep\"),grid:c.data(\"grid\"),grid_margin:c.data(\"gridMargin\"),grid_num:c.data(\"gridNum\"),grid_snap:c.data(\"gridSnap\"),hide_min_max:c.data(\"hideMinMax\"),hide_from_to:c.data(\"hideFromTo\"),prefix:c.data(\"prefix\"),postfix:c.data(\"postfix\"),max_postfix:c.data(\"maxPostfix\"),decorate_both:c.data(\"decorateBoth\"),values_separator:c.data(\"valuesSeparator\"),input_values_separator:c.data(\"inputValuesSeparator\"),disable:c.data(\"disable\")};c.values=c.values&&c.values.split(\",\");for(e in c)c.hasOwnProperty(e)&&\n(c[e]!==q&&\"\"!==c[e]||delete c[e]);a!==q&&\"\"!==a&&(a=a.split(c.input_values_separator||b.input_values_separator||\";\"),a[0]&&a[0]==+a[0]&&(a[0]=+a[0]),a[1]&&a[1]==+a[1]&&(a[1]=+a[1]),b&&b.values&&b.values.length?(d.from=a[0]&&b.values.indexOf(a[0]),d.to=a[1]&&b.values.indexOf(a[1])):(d.from=a[0]&&+a[0],d.to=a[1]&&+a[1]));f.extend(d,b);f.extend(d,c);this.options=d;this.update_check={};this.validate();this.result={input:this.$cache.input,slider:null,min:this.options.min,max:this.options.max,from:this.options.from,\n from_percent:0,from_value:null,to:this.options.to,to_percent:0,to_value:null};this.init()};r.prototype={init:function(a){this.no_diapason=!1;this.coords.p_step=this.convertToPercent(this.options.step,!0);this.target=\"base\";this.toggleInput();this.append();this.setMinMax();a?(this.force_redraw=!0,this.calc(!0),this.callOnUpdate()):(this.force_redraw=!0,this.calc(!0),this.callOnStart());this.updateScene()},append:function(){this.$cache.input.before('<span class=\"irs js-irs-'+this.plugin_count+'\"></span>');\n this.$cache.input.prop(\"readonly\",!0);this.$cache.cont=this.$cache.input.prev();this.result.slider=this.$cache.cont;this.$cache.cont.html('<span class=\"irs\"><span class=\"irs-line\" tabindex=\"-1\"><span class=\"irs-line-left\"></span><span class=\"irs-line-mid\"></span><span class=\"irs-line-right\"></span></span><span class=\"irs-min\">0</span><span class=\"irs-max\">1</span><span class=\"irs-from\">0</span><span class=\"irs-to\">0</span><span class=\"irs-single\">0</span></span><span class=\"irs-grid\"></span><span class=\"irs-bar\"></span>');\n this.$cache.rs=this.$cache.cont.find(\".irs\");this.$cache.min=this.$cache.cont.find(\".irs-min\");this.$cache.max=this.$cache.cont.find(\".irs-max\");this.$cache.from=this.$cache.cont.find(\".irs-from\");this.$cache.to=this.$cache.cont.find(\".irs-to\");this.$cache.single=this.$cache.cont.find(\".irs-single\");this.$cache.bar=this.$cache.cont.find(\".irs-bar\");this.$cache.line=this.$cache.cont.find(\".irs-line\");this.$cache.grid=this.$cache.cont.find(\".irs-grid\");\"single\"===this.options.type?(this.$cache.cont.append('<span class=\"irs-bar-edge\"></span><span class=\"irs-shadow shadow-single\"></span><span class=\"irs-slider single\"></span>'),\n this.$cache.edge=this.$cache.cont.find(\".irs-bar-edge\"),this.$cache.s_single=this.$cache.cont.find(\".single\"),this.$cache.from[0].style.visibility=\"hidden\",this.$cache.to[0].style.visibility=\"hidden\",this.$cache.shad_single=this.$cache.cont.find(\".shadow-single\")):(this.$cache.cont.append('<span class=\"irs-shadow shadow-from\"></span><span class=\"irs-shadow shadow-to\"></span><span class=\"irs-slider from\"></span><span class=\"irs-slider to\"></span>'),this.$cache.s_from=this.$cache.cont.find(\".from\"),\n this.$cache.s_to=this.$cache.cont.find(\".to\"),this.$cache.shad_from=this.$cache.cont.find(\".shadow-from\"),this.$cache.shad_to=this.$cache.cont.find(\".shadow-to\"),this.setTopHandler());this.options.hide_from_to&&(this.$cache.from[0].style.display=\"none\",this.$cache.to[0].style.display=\"none\",this.$cache.single[0].style.display=\"none\");this.appendGrid();this.options.disable?(this.appendDisableMask(),this.$cache.input[0].disabled=!0):(this.$cache.cont.removeClass(\"irs-disabled\"),this.$cache.input[0].disabled=\n !1,this.bindEvents());this.options.drag_interval&&(this.$cache.bar[0].style.cursor=\"ew-resize\")},setTopHandler:function(){var a=this.options.max,b=this.options.to;this.options.from>this.options.min&&b===a?this.$cache.s_from.addClass(\"type_last\"):b<a&&this.$cache.s_to.addClass(\"type_last\")},changeLevel:function(a){switch(a){case \"single\":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_single_fake);break;case \"from\":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake);\n this.$cache.s_from.addClass(\"state_hover\");this.$cache.s_from.addClass(\"type_last\");this.$cache.s_to.removeClass(\"type_last\");break;case \"to\":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_to_fake);this.$cache.s_to.addClass(\"state_hover\");this.$cache.s_to.addClass(\"type_last\");this.$cache.s_from.removeClass(\"type_last\");break;case \"both\":this.coords.p_gap_left=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake),this.coords.p_gap_right=this.toFixed(this.coords.p_to_fake-\n this.coords.p_pointer),this.$cache.s_to.removeClass(\"type_last\"),this.$cache.s_from.removeClass(\"type_last\")}},appendDisableMask:function(){this.$cache.cont.append('<span class=\"irs-disable-mask\"></span>');this.$cache.cont.addClass(\"irs-disabled\")},remove:function(){this.$cache.cont.remove();this.$cache.cont=null;this.$cache.line.off(\"keydown.irs_\"+this.plugin_count);this.$cache.body.off(\"touchmove.irs_\"+this.plugin_count);this.$cache.body.off(\"mousemove.irs_\"+this.plugin_count);this.$cache.win.off(\"touchend.irs_\"+\n this.plugin_count);this.$cache.win.off(\"mouseup.irs_\"+this.plugin_count);m&&(this.$cache.body.off(\"mouseup.irs_\"+this.plugin_count),this.$cache.body.off(\"mouseleave.irs_\"+this.plugin_count));this.$cache.grid_labels=[];this.coords.big=[];this.coords.big_w=[];this.coords.big_p=[];this.coords.big_x=[];cancelAnimationFrame(this.raf_id)},bindEvents:function(){if(!this.no_diapason){this.$cache.body.on(\"touchmove.irs_\"+this.plugin_count,this.pointerMove.bind(this));this.$cache.body.on(\"mousemove.irs_\"+this.plugin_count,\n this.pointerMove.bind(this));this.$cache.win.on(\"touchend.irs_\"+this.plugin_count,this.pointerUp.bind(this));this.$cache.win.on(\"mouseup.irs_\"+this.plugin_count,this.pointerUp.bind(this));this.$cache.line.on(\"touchstart.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\"));this.$cache.line.on(\"mousedown.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\"));this.options.drag_interval&&\"double\"===this.options.type?(this.$cache.bar.on(\"touchstart.irs_\"+this.plugin_count,this.pointerDown.bind(this,\n \"both\")),this.$cache.bar.on(\"mousedown.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"both\"))):(this.$cache.bar.on(\"touchstart.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\")),this.$cache.bar.on(\"mousedown.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\")));\"single\"===this.options.type?(this.$cache.single.on(\"touchstart.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"single\")),this.$cache.s_single.on(\"touchstart.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"single\")),\n this.$cache.shad_single.on(\"touchstart.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\")),this.$cache.single.on(\"mousedown.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"single\")),this.$cache.s_single.on(\"mousedown.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"single\")),this.$cache.edge.on(\"mousedown.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\")),this.$cache.shad_single.on(\"mousedown.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\"))):(this.$cache.single.on(\"touchstart.irs_\"+\n this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.single.on(\"mousedown.irs_\"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.from.on(\"touchstart.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"from\")),this.$cache.s_from.on(\"touchstart.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"from\")),this.$cache.to.on(\"touchstart.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"to\")),this.$cache.s_to.on(\"touchstart.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"to\")),\n this.$cache.shad_from.on(\"touchstart.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\")),this.$cache.shad_to.on(\"touchstart.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\")),this.$cache.from.on(\"mousedown.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"from\")),this.$cache.s_from.on(\"mousedown.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"from\")),this.$cache.to.on(\"mousedown.irs_\"+this.plugin_count,this.pointerDown.bind(this,\"to\")),this.$cache.s_to.on(\"mousedown.irs_\"+\n this.plugin_count,this.pointerDown.bind(this,\"to\")),this.$cache.shad_from.on(\"mousedown.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\")),this.$cache.shad_to.on(\"mousedown.irs_\"+this.plugin_count,this.pointerClick.bind(this,\"click\")));if(this.options.keyboard)this.$cache.line.on(\"keydown.irs_\"+this.plugin_count,this.key.bind(this,\"keyboard\"));m&&(this.$cache.body.on(\"mouseup.irs_\"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.body.on(\"mouseleave.irs_\"+this.plugin_count,this.pointerUp.bind(this)))}},\n pointerMove:function(a){this.dragging&&(this.coords.x_pointer=(a.pageX||a.originalEvent.touches&&a.originalEvent.touches[0].pageX)-this.coords.x_gap,this.calc())},pointerUp:function(a){this.current_plugin===this.plugin_count&&this.is_active&&(this.is_active=!1,this.$cache.cont.find(\".state_hover\").removeClass(\"state_hover\"),this.force_redraw=!0,m&&f(\"*\").prop(\"unselectable\",!1),this.updateScene(),this.restoreOriginalMinInterval(),(f.contains(this.$cache.cont[0],a.target)||this.dragging)&&this.callOnFinish(),\n this.dragging=!1)},pointerDown:function(a,b){b.preventDefault();var d=b.pageX||b.originalEvent.touches&&b.originalEvent.touches[0].pageX;2!==b.button&&(\"both\"===a&&this.setTempMinInterval(),a||(a=this.target||\"from\"),this.current_plugin=this.plugin_count,this.target=a,this.dragging=this.is_active=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=d-this.coords.x_gap,this.calcPointerPercent(),this.changeLevel(a),m&&f(\"*\").prop(\"unselectable\",!0),this.$cache.line.trigger(\"focus\"),\n this.updateScene())},pointerClick:function(a,b){b.preventDefault();var d=b.pageX||b.originalEvent.touches&&b.originalEvent.touches[0].pageX;2!==b.button&&(this.current_plugin=this.plugin_count,this.target=a,this.is_click=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=+(d-this.coords.x_gap).toFixed(),this.force_redraw=!0,this.calc(),this.$cache.line.trigger(\"focus\"))},key:function(a,b){if(!(this.current_plugin!==this.plugin_count||b.altKey||b.ctrlKey||b.shiftKey||b.metaKey)){switch(b.which){case 83:case 65:case 40:case 37:b.preventDefault();\n this.moveByKey(!1);break;case 87:case 68:case 38:case 39:b.preventDefault(),this.moveByKey(!0)}return!0}},moveByKey:function(a){var b=this.coords.p_pointer,b=a?b+this.options.keyboard_step:b-this.options.keyboard_step;this.coords.x_pointer=this.toFixed(this.coords.w_rs/100*b);this.is_key=!0;this.calc()},setMinMax:function(){this.options&&(this.options.hide_min_max?(this.$cache.min[0].style.display=\"none\",this.$cache.max[0].style.display=\"none\"):(this.options.values.length?(this.$cache.min.html(this.decorate(this.options.p_values[this.options.min])),\n this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]))):(this.$cache.min.html(this.decorate(this._prettify(this.options.min),this.options.min)),this.$cache.max.html(this.decorate(this._prettify(this.options.max),this.options.max))),this.labels.w_min=this.$cache.min.outerWidth(!1),this.labels.w_max=this.$cache.max.outerWidth(!1)))},setTempMinInterval:function(){var a=this.result.to-this.result.from;null===this.old_min_interval&&(this.old_min_interval=this.options.min_interval);\n this.options.min_interval=a},restoreOriginalMinInterval:function(){null!==this.old_min_interval&&(this.options.min_interval=this.old_min_interval,this.old_min_interval=null)},calc:function(a){if(this.options){this.calc_count++;if(10===this.calc_count||a)this.calc_count=0,this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.calcHandlePercent();if(this.coords.w_rs){this.calcPointerPercent();a=this.getHandleX();\"both\"===this.target&&(this.coords.p_gap=0,a=this.getHandleX());\"click\"===this.target&&(this.coords.p_gap=\n this.coords.p_handle/2,a=this.getHandleX(),this.target=this.options.drag_interval?\"both_one\":this.chooseHandle(a));switch(this.target){case \"base\":var b=(this.options.max-this.options.min)/100;a=(this.result.from-this.options.min)/b;b=(this.result.to-this.options.min)/b;this.coords.p_single_real=this.toFixed(a);this.coords.p_from_real=this.toFixed(a);this.coords.p_to_real=this.toFixed(b);this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max);\n this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);this.target=null;break;case \"single\":if(this.options.from_fixed)break;\n this.coords.p_single_real=this.convertToRealPercent(a);this.coords.p_single_real=this.calcWithStep(this.coords.p_single_real);this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max);this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);break;case \"from\":if(this.options.from_fixed)break;this.coords.p_from_real=this.convertToRealPercent(a);this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real);this.coords.p_from_real>\n this.coords.p_to_real&&(this.coords.p_from_real=this.coords.p_to_real);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,\"from\");this.coords.p_from_real=this.checkMaxInterval(this.coords.p_from_real,this.coords.p_to_real,\"from\");this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);break;case \"to\":if(this.options.to_fixed)break;\n this.coords.p_to_real=this.convertToRealPercent(a);this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real);this.coords.p_to_real<this.coords.p_from_real&&(this.coords.p_to_real=this.coords.p_from_real);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,\"to\");this.coords.p_to_real=this.checkMaxInterval(this.coords.p_to_real,this.coords.p_from_real,\"to\");\n this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);break;case \"both\":if(this.options.from_fixed||this.options.to_fixed)break;a=this.toFixed(a+.001*this.coords.p_handle);this.coords.p_from_real=this.convertToRealPercent(a)-this.coords.p_gap_left;this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,\n this.coords.p_to_real,\"from\");this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_real=this.convertToRealPercent(a)+this.coords.p_gap_right;this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,\"to\");this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);\n break;case \"both_one\":if(!this.options.from_fixed&&!this.options.to_fixed){var d=this.convertToRealPercent(a);a=this.result.to_percent-this.result.from_percent;var c=a/2,b=d-c,d=d+c;0>b&&(b=0,d=b+a);100<d&&(d=100,b=d-a);this.coords.p_from_real=this.calcWithStep(b);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_real=this.calcWithStep(d);this.coords.p_to_real=\n this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real)}}\"single\"===this.options.type?(this.coords.p_bar_x=this.coords.p_handle/2,this.coords.p_bar_w=this.coords.p_single_fake,this.result.from_percent=this.coords.p_single_real,this.result.from=this.convertToValue(this.coords.p_single_real),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from])):(this.coords.p_bar_x=\n this.toFixed(this.coords.p_from_fake+this.coords.p_handle/2),this.coords.p_bar_w=this.toFixed(this.coords.p_to_fake-this.coords.p_from_fake),this.result.from_percent=this.coords.p_from_real,this.result.from=this.convertToValue(this.coords.p_from_real),this.result.to_percent=this.coords.p_to_real,this.result.to=this.convertToValue(this.coords.p_to_real),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from],this.result.to_value=this.options.values[this.result.to]));\n this.calcMinMax();this.calcLabels()}}},calcPointerPercent:function(){this.coords.w_rs?(0>this.coords.x_pointer||isNaN(this.coords.x_pointer)?this.coords.x_pointer=0:this.coords.x_pointer>this.coords.w_rs&&(this.coords.x_pointer=this.coords.w_rs),this.coords.p_pointer=this.toFixed(this.coords.x_pointer/this.coords.w_rs*100)):this.coords.p_pointer=0},convertToRealPercent:function(a){return a/(100-this.coords.p_handle)*100},convertToFakePercent:function(a){return a/100*(100-this.coords.p_handle)},getHandleX:function(){var a=\n 100-this.coords.p_handle,b=this.toFixed(this.coords.p_pointer-this.coords.p_gap);0>b?b=0:b>a&&(b=a);return b},calcHandlePercent:function(){this.coords.w_handle=\"single\"===this.options.type?this.$cache.s_single.outerWidth(!1):this.$cache.s_from.outerWidth(!1);this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100)},chooseHandle:function(a){return\"single\"===this.options.type?\"single\":a>=this.coords.p_from_real+(this.coords.p_to_real-this.coords.p_from_real)/2?this.options.to_fixed?\n \"from\":\"to\":this.options.from_fixed?\"to\":\"from\"},calcMinMax:function(){this.coords.w_rs&&(this.labels.p_min=this.labels.w_min/this.coords.w_rs*100,this.labels.p_max=this.labels.w_max/this.coords.w_rs*100)},calcLabels:function(){this.coords.w_rs&&!this.options.hide_from_to&&(\"single\"===this.options.type?(this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=this.coords.p_single_fake+this.coords.p_handle/\n 2-this.labels.p_single_fake/2):(this.labels.w_from=this.$cache.from.outerWidth(!1),this.labels.p_from_fake=this.labels.w_from/this.coords.w_rs*100,this.labels.p_from_left=this.coords.p_from_fake+this.coords.p_handle/2-this.labels.p_from_fake/2,this.labels.p_from_left=this.toFixed(this.labels.p_from_left),this.labels.p_from_left=this.checkEdges(this.labels.p_from_left,this.labels.p_from_fake),this.labels.w_to=this.$cache.to.outerWidth(!1),this.labels.p_to_fake=this.labels.w_to/this.coords.w_rs*100,\n this.labels.p_to_left=this.coords.p_to_fake+this.coords.p_handle/2-this.labels.p_to_fake/2,this.labels.p_to_left=this.toFixed(this.labels.p_to_left),this.labels.p_to_left=this.checkEdges(this.labels.p_to_left,this.labels.p_to_fake),this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=(this.labels.p_from_left+this.labels.p_to_left+this.labels.p_to_fake)/2-this.labels.p_single_fake/2,this.labels.p_single_left=\n this.toFixed(this.labels.p_single_left)),this.labels.p_single_left=this.checkEdges(this.labels.p_single_left,this.labels.p_single_fake))},updateScene:function(){this.raf_id&&(cancelAnimationFrame(this.raf_id),this.raf_id=null);clearTimeout(this.update_tm);this.update_tm=null;this.options&&(this.drawHandles(),this.is_active?this.raf_id=requestAnimationFrame(this.updateScene.bind(this)):this.update_tm=setTimeout(this.updateScene.bind(this),300))},drawHandles:function(){this.coords.w_rs=this.$cache.rs.outerWidth(!1);\n if(this.coords.w_rs){this.coords.w_rs!==this.coords.w_rs_old&&(this.target=\"base\",this.is_resize=!0);if(this.coords.w_rs!==this.coords.w_rs_old||this.force_redraw)this.setMinMax(),this.calc(!0),this.drawLabels(),this.options.grid&&(this.calcGridMargin(),this.calcGridLabels()),this.force_redraw=!0,this.coords.w_rs_old=this.coords.w_rs,this.drawShadow();if(this.coords.w_rs&&(this.dragging||this.force_redraw||this.is_key)){if(this.old_from!==this.result.from||this.old_to!==this.result.to||this.force_redraw||\n this.is_key){this.drawLabels();this.$cache.bar[0].style.left=this.coords.p_bar_x+\"%\";this.$cache.bar[0].style.width=this.coords.p_bar_w+\"%\";if(\"single\"===this.options.type)this.$cache.s_single[0].style.left=this.coords.p_single_fake+\"%\";else{this.$cache.s_from[0].style.left=this.coords.p_from_fake+\"%\";this.$cache.s_to[0].style.left=this.coords.p_to_fake+\"%\";if(this.old_from!==this.result.from||this.force_redraw)this.$cache.from[0].style.left=this.labels.p_from_left+\"%\";if(this.old_to!==this.result.to||\n this.force_redraw)this.$cache.to[0].style.left=this.labels.p_to_left+\"%\"}this.$cache.single[0].style.left=this.labels.p_single_left+\"%\";this.writeToInput();this.old_from===this.result.from&&this.old_to===this.result.to||this.is_start||(this.$cache.input.trigger(\"change\"),this.$cache.input.trigger(\"input\"));this.old_from=this.result.from;this.old_to=this.result.to;this.is_resize||this.is_update||this.is_start||this.is_finish||this.callOnChange();if(this.is_key||this.is_click||this.is_first_update)this.is_first_update=\n this.is_click=this.is_key=!1,this.callOnFinish();this.is_finish=this.is_resize=this.is_update=!1}this.force_redraw=this.is_click=this.is_key=this.is_start=!1}}},drawLabels:function(){if(this.options){var a=this.options.values.length,b=this.options.p_values,d;if(!this.options.hide_from_to)if(\"single\"===this.options.type)a=a?this.decorate(b[this.result.from]):this.decorate(this._prettify(this.result.from),this.result.from),this.$cache.single.html(a),this.calcLabels(),this.$cache.min[0].style.visibility=\n this.labels.p_single_left<this.labels.p_min+1?\"hidden\":\"visible\",this.$cache.max[0].style.visibility=this.labels.p_single_left+this.labels.p_single_fake>100-this.labels.p_max-1?\"hidden\":\"visible\";else{a?(this.options.decorate_both?(a=this.decorate(b[this.result.from]),a+=this.options.values_separator,a+=this.decorate(b[this.result.to])):a=this.decorate(b[this.result.from]+this.options.values_separator+b[this.result.to]),d=this.decorate(b[this.result.from]),b=this.decorate(b[this.result.to])):(this.options.decorate_both?\n (a=this.decorate(this._prettify(this.result.from),this.result.from),a+=this.options.values_separator,a+=this.decorate(this._prettify(this.result.to),this.result.to)):a=this.decorate(this._prettify(this.result.from)+this.options.values_separator+this._prettify(this.result.to),this.result.to),d=this.decorate(this._prettify(this.result.from),this.result.from),b=this.decorate(this._prettify(this.result.to),this.result.to));this.$cache.single.html(a);this.$cache.from.html(d);this.$cache.to.html(b);this.calcLabels();\n b=Math.min(this.labels.p_single_left,this.labels.p_from_left);a=this.labels.p_single_left+this.labels.p_single_fake;d=this.labels.p_to_left+this.labels.p_to_fake;var c=Math.max(a,d);this.labels.p_from_left+this.labels.p_from_fake>=this.labels.p_to_left?(this.$cache.from[0].style.visibility=\"hidden\",this.$cache.to[0].style.visibility=\"hidden\",this.$cache.single[0].style.visibility=\"visible\",this.result.from===this.result.to?(\"from\"===this.target?this.$cache.from[0].style.visibility=\"visible\":\"to\"===\n this.target?this.$cache.to[0].style.visibility=\"visible\":this.target||(this.$cache.from[0].style.visibility=\"visible\"),this.$cache.single[0].style.visibility=\"hidden\",c=d):(this.$cache.from[0].style.visibility=\"hidden\",this.$cache.to[0].style.visibility=\"hidden\",this.$cache.single[0].style.visibility=\"visible\",c=Math.max(a,d))):(this.$cache.from[0].style.visibility=\"visible\",this.$cache.to[0].style.visibility=\"visible\",this.$cache.single[0].style.visibility=\"hidden\");this.$cache.min[0].style.visibility=\n b<this.labels.p_min+1?\"hidden\":\"visible\";this.$cache.max[0].style.visibility=c>100-this.labels.p_max-1?\"hidden\":\"visible\"}}},drawShadow:function(){var a=this.options,b=this.$cache,d=\"number\"===typeof a.from_min&&!isNaN(a.from_min),c=\"number\"===typeof a.from_max&&!isNaN(a.from_max),e=\"number\"===typeof a.to_min&&!isNaN(a.to_min),g=\"number\"===typeof a.to_max&&!isNaN(a.to_max);\"single\"===a.type?a.from_shadow&&(d||c)?(d=this.convertToPercent(d?a.from_min:a.min),c=this.convertToPercent(c?a.from_max:a.max)-\n d,d=this.toFixed(d-this.coords.p_handle/100*d),c=this.toFixed(c-this.coords.p_handle/100*c),d+=this.coords.p_handle/2,b.shad_single[0].style.display=\"block\",b.shad_single[0].style.left=d+\"%\",b.shad_single[0].style.width=c+\"%\"):b.shad_single[0].style.display=\"none\":(a.from_shadow&&(d||c)?(d=this.convertToPercent(d?a.from_min:a.min),c=this.convertToPercent(c?a.from_max:a.max)-d,d=this.toFixed(d-this.coords.p_handle/100*d),c=this.toFixed(c-this.coords.p_handle/100*c),d+=this.coords.p_handle/2,b.shad_from[0].style.display=\n \"block\",b.shad_from[0].style.left=d+\"%\",b.shad_from[0].style.width=c+\"%\"):b.shad_from[0].style.display=\"none\",a.to_shadow&&(e||g)?(e=this.convertToPercent(e?a.to_min:a.min),a=this.convertToPercent(g?a.to_max:a.max)-e,e=this.toFixed(e-this.coords.p_handle/100*e),a=this.toFixed(a-this.coords.p_handle/100*a),e+=this.coords.p_handle/2,b.shad_to[0].style.display=\"block\",b.shad_to[0].style.left=e+\"%\",b.shad_to[0].style.width=a+\"%\"):b.shad_to[0].style.display=\"none\")},writeToInput:function(){\"single\"===\n this.options.type?(this.options.values.length?this.$cache.input.prop(\"value\",this.result.from_value):this.$cache.input.prop(\"value\",this.result.from),this.$cache.input.data(\"from\",this.result.from)):(this.options.values.length?this.$cache.input.prop(\"value\",this.result.from_value+this.options.input_values_separator+this.result.to_value):this.$cache.input.prop(\"value\",this.result.from+this.options.input_values_separator+this.result.to),this.$cache.input.data(\"from\",this.result.from),this.$cache.input.data(\"to\",\n this.result.to))},callOnStart:function(){this.writeToInput();if(this.options.onStart&&\"function\"===typeof this.options.onStart)this.options.onStart(this.result)},callOnChange:function(){this.writeToInput();if(this.options.onChange&&\"function\"===typeof this.options.onChange)this.options.onChange(this.result)},callOnFinish:function(){this.writeToInput();if(this.options.onFinish&&\"function\"===typeof this.options.onFinish)this.options.onFinish(this.result)},callOnUpdate:function(){this.writeToInput();\n if(this.options.onUpdate&&\"function\"===typeof this.options.onUpdate)this.options.onUpdate(this.result)},toggleInput:function(){this.$cache.input.toggleClass(\"irs-hidden-input\")},convertToPercent:function(a,b){var d=this.options.max-this.options.min;return d?this.toFixed((b?a:a-this.options.min)/(d/100)):(this.no_diapason=!0,0)},convertToValue:function(a){var b=this.options.min,d=this.options.max,c=b.toString().split(\".\")[1],e=d.toString().split(\".\")[1],g,l,f=0,k=0;if(0===a)return this.options.min;\n if(100===a)return this.options.max;c&&(f=g=c.length);e&&(f=l=e.length);g&&l&&(f=g>=l?g:l);0>b&&(k=Math.abs(b),b=+(b+k).toFixed(f),d=+(d+k).toFixed(f));a=(d-b)/100*a+b;(b=this.options.step.toString().split(\".\")[1])?a=+a.toFixed(b.length):(a/=this.options.step,a*=this.options.step,a=+a.toFixed(0));k&&(a-=k);k=b?+a.toFixed(b.length):this.toFixed(a);k<this.options.min?k=this.options.min:k>this.options.max&&(k=this.options.max);return k},calcWithStep:function(a){var b=Math.round(a/this.coords.p_step)*\n this.coords.p_step;100<b&&(b=100);100===a&&(b=100);return this.toFixed(b)},checkMinInterval:function(a,b,d){var c=this.options;if(!c.min_interval)return a;a=this.convertToValue(a);b=this.convertToValue(b);\"from\"===d?b-a<c.min_interval&&(a=b-c.min_interval):a-b<c.min_interval&&(a=b+c.min_interval);return this.convertToPercent(a)},checkMaxInterval:function(a,b,d){var c=this.options;if(!c.max_interval)return a;a=this.convertToValue(a);b=this.convertToValue(b);\"from\"===d?b-a>c.max_interval&&(a=b-c.max_interval):\n a-b>c.max_interval&&(a=b+c.max_interval);return this.convertToPercent(a)},checkDiapason:function(a,b,d){a=this.convertToValue(a);var c=this.options;\"number\"!==typeof b&&(b=c.min);\"number\"!==typeof d&&(d=c.max);a<b&&(a=b);a>d&&(a=d);return this.convertToPercent(a)},toFixed:function(a){a=a.toFixed(20);return+a},_prettify:function(a){return this.options.prettify_enabled?this.options.prettify&&\"function\"===typeof this.options.prettify?this.options.prettify(a):this.prettify(a):a},prettify:function(a){return a.toString().replace(/(\\d{1,3}(?=(?:\\d\\d\\d)+(?!\\d)))/g,\n \"$1\"+this.options.prettify_separator)},checkEdges:function(a,b){if(!this.options.force_edges)return this.toFixed(a);0>a?a=0:a>100-b&&(a=100-b);return this.toFixed(a)},validate:function(){var a=this.options,b=this.result,d=a.values,c=d.length,e,g;\"string\"===typeof a.min&&(a.min=+a.min);\"string\"===typeof a.max&&(a.max=+a.max);\"string\"===typeof a.from&&(a.from=+a.from);\"string\"===typeof a.to&&(a.to=+a.to);\"string\"===typeof a.step&&(a.step=+a.step);\"string\"===typeof a.from_min&&(a.from_min=+a.from_min);\n \"string\"===typeof a.from_max&&(a.from_max=+a.from_max);\"string\"===typeof a.to_min&&(a.to_min=+a.to_min);\"string\"===typeof a.to_max&&(a.to_max=+a.to_max);\"string\"===typeof a.keyboard_step&&(a.keyboard_step=+a.keyboard_step);\"string\"===typeof a.grid_num&&(a.grid_num=+a.grid_num);a.max<a.min&&(a.max=a.min);if(c)for(a.p_values=[],a.min=0,a.max=c-1,a.step=1,a.grid_num=a.max,a.grid_snap=!0,g=0;g<c;g++)e=+d[g],isNaN(e)?e=d[g]:(d[g]=e,e=this._prettify(e)),a.p_values.push(e);if(\"number\"!==typeof a.from||isNaN(a.from))a.from=\n a.min;if(\"number\"!==typeof a.to||isNaN(a.to))a.to=a.max;\"single\"===a.type?(a.from<a.min&&(a.from=a.min),a.from>a.max&&(a.from=a.max)):(a.from<a.min&&(a.from=a.min),a.from>a.max&&(a.from=a.max),a.to<a.min&&(a.to=a.min),a.to>a.max&&(a.to=a.max),this.update_check.from&&(this.update_check.from!==a.from&&a.from>a.to&&(a.from=a.to),this.update_check.to!==a.to&&a.to<a.from&&(a.to=a.from)),a.from>a.to&&(a.from=a.to),a.to<a.from&&(a.to=a.from));if(\"number\"!==typeof a.step||isNaN(a.step)||!a.step||0>a.step)a.step=\n 1;if(\"number\"!==typeof a.keyboard_step||isNaN(a.keyboard_step)||!a.keyboard_step||0>a.keyboard_step)a.keyboard_step=5;\"number\"===typeof a.from_min&&a.from<a.from_min&&(a.from=a.from_min);\"number\"===typeof a.from_max&&a.from>a.from_max&&(a.from=a.from_max);\"number\"===typeof a.to_min&&a.to<a.to_min&&(a.to=a.to_min);\"number\"===typeof a.to_max&&a.from>a.to_max&&(a.to=a.to_max);if(b){b.min!==a.min&&(b.min=a.min);b.max!==a.max&&(b.max=a.max);if(b.from<b.min||b.from>b.max)b.from=a.from;if(b.to<b.min||b.to>\n b.max)b.to=a.to}if(\"number\"!==typeof a.min_interval||isNaN(a.min_interval)||!a.min_interval||0>a.min_interval)a.min_interval=0;if(\"number\"!==typeof a.max_interval||isNaN(a.max_interval)||!a.max_interval||0>a.max_interval)a.max_interval=0;a.min_interval&&a.min_interval>a.max-a.min&&(a.min_interval=a.max-a.min);a.max_interval&&a.max_interval>a.max-a.min&&(a.max_interval=a.max-a.min)},decorate:function(a,b){var d=\"\",c=this.options;c.prefix&&(d+=c.prefix);d+=a;c.max_postfix&&(c.values.length&&a===c.p_values[c.max]?\n (d+=c.max_postfix,c.postfix&&(d+=\" \")):b===c.max&&(d+=c.max_postfix,c.postfix&&(d+=\" \")));c.postfix&&(d+=c.postfix);return d},updateFrom:function(){this.result.from=this.options.from;this.result.from_percent=this.convertToPercent(this.result.from);this.options.values&&(this.result.from_value=this.options.values[this.result.from])},updateTo:function(){this.result.to=this.options.to;this.result.to_percent=this.convertToPercent(this.result.to);this.options.values&&(this.result.to_value=this.options.values[this.result.to])},\n updateResult:function(){this.result.min=this.options.min;this.result.max=this.options.max;this.updateFrom();this.updateTo()},appendGrid:function(){if(this.options.grid){var a=this.options,b,d;b=a.max-a.min;var c=a.grid_num,e,g,f=4,h,k,m,n=\"\";this.calcGridMargin();a.grid_snap?(c=b/a.step,e=this.toFixed(a.step/(b/100))):e=this.toFixed(100/c);4<c&&(f=3);7<c&&(f=2);14<c&&(f=1);28<c&&(f=0);for(b=0;b<c+1;b++){h=f;g=this.toFixed(e*b);100<g&&(g=100,h-=2,0>h&&(h=0));this.coords.big[b]=g;k=(g-e*(b-1))/(h+1);\n for(d=1;d<=h&&0!==g;d++)m=this.toFixed(g-k*d),n+='<span class=\"irs-grid-pol small\" style=\"left: '+m+'%\"></span>';n+='<span class=\"irs-grid-pol\" style=\"left: '+g+'%\"></span>';d=this.convertToValue(g);d=a.values.length?a.p_values[d]:this._prettify(d);n+='<span class=\"irs-grid-text js-grid-text-'+b+'\" style=\"left: '+g+'%\">'+d+\"</span>\"}this.coords.big_num=Math.ceil(c+1);this.$cache.cont.addClass(\"irs-with-grid\");this.$cache.grid.html(n);this.cacheGridLabels()}},cacheGridLabels:function(){var a,b,d=this.coords.big_num;\n for(b=0;b<d;b++)a=this.$cache.grid.find(\".js-grid-text-\"+b),this.$cache.grid_labels.push(a);this.calcGridLabels()},calcGridLabels:function(){var a,b;b=[];var d=[],c=this.coords.big_num;for(a=0;a<c;a++)this.coords.big_w[a]=this.$cache.grid_labels[a].outerWidth(!1),this.coords.big_p[a]=this.toFixed(this.coords.big_w[a]/this.coords.w_rs*100),this.coords.big_x[a]=this.toFixed(this.coords.big_p[a]/2),b[a]=this.toFixed(this.coords.big[a]-this.coords.big_x[a]),d[a]=this.toFixed(b[a]+this.coords.big_p[a]);\n this.options.force_edges&&(b[0]<-this.coords.grid_gap&&(b[0]=-this.coords.grid_gap,d[0]=this.toFixed(b[0]+this.coords.big_p[0]),this.coords.big_x[0]=this.coords.grid_gap),d[c-1]>100+this.coords.grid_gap&&(d[c-1]=100+this.coords.grid_gap,b[c-1]=this.toFixed(d[c-1]-this.coords.big_p[c-1]),this.coords.big_x[c-1]=this.toFixed(this.coords.big_p[c-1]-this.coords.grid_gap)));this.calcGridCollision(2,b,d);this.calcGridCollision(4,b,d);for(a=0;a<c;a++)b=this.$cache.grid_labels[a][0],this.coords.big_x[a]!==\n Number.POSITIVE_INFINITY&&(b.style.marginLeft=-this.coords.big_x[a]+\"%\")},calcGridCollision:function(a,b,d){var c,e,g,f=this.coords.big_num;for(c=0;c<f;c+=a){e=c+a/2;if(e>=f)break;g=this.$cache.grid_labels[e][0];g.style.visibility=d[c]<=b[e]?\"visible\":\"hidden\"}},calcGridMargin:function(){this.options.grid_margin&&(this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.coords.w_rs&&(this.coords.w_handle=\"single\"===this.options.type?this.$cache.s_single.outerWidth(!1):this.$cache.s_from.outerWidth(!1),\n this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100),this.coords.grid_gap=this.toFixed(this.coords.p_handle/2-.1),this.$cache.grid[0].style.width=this.toFixed(100-this.coords.p_handle)+\"%\",this.$cache.grid[0].style.left=this.coords.grid_gap+\"%\"))},update:function(a){this.input&&(this.is_update=!0,this.options.from=this.result.from,this.options.to=this.result.to,this.update_check.from=this.result.from,this.update_check.to=this.result.to,this.options=f.extend(this.options,a),\n this.validate(),this.updateResult(a),this.toggleInput(),this.remove(),this.init(!0))},reset:function(){this.input&&(this.updateResult(),this.update())},destroy:function(){this.input&&(this.toggleInput(),this.$cache.input.prop(\"readonly\",!1),f.data(this.input,\"ionRangeSlider\",null),this.remove(),this.options=this.input=null)}};f.fn.ionRangeSlider=function(a){return this.each(function(){f.data(this,\"ionRangeSlider\")||f.data(this,\"ionRangeSlider\",new r(this,a,u++))})};(function(){for(var a=0,b=[\"ms\",\n \"moz\",\"webkit\",\"o\"],d=0;d<b.length&&!h.requestAnimationFrame;++d)h.requestAnimationFrame=h[b[d]+\"RequestAnimationFrame\"],h.cancelAnimationFrame=h[b[d]+\"CancelAnimationFrame\"]||h[b[d]+\"CancelRequestAnimationFrame\"];h.requestAnimationFrame||(h.requestAnimationFrame=function(b,d){var c=(new Date).getTime(),e=Math.max(0,16-(c-a)),f=h.setTimeout(function(){b(c+e)},e);a=c+e;return f});h.cancelAnimationFrame||(h.cancelAnimationFrame=function(a){clearTimeout(a)})})()});\n","Mageplaza_Core/js/jquery.autocomplete.min.js":"/**\n * Ajax Autocomplete for jQuery, version 1.3.0\n * (c) 2017 Tomas Kirda\n *\n * Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.\n * For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete\n */\n!function(a){\"use strict\";\"function\"==typeof define&&define.amd?define([\"jquery\"],a):a(\"object\"==typeof exports&&\"function\"==typeof require?require(\"jquery\"):jQuery)}(function(a){\"use strict\";function b(c,d){var e=a.noop,f=this,g={ajaxSettings:{},autoSelectFirst:!1,appendTo:document.body,serviceUrl:null,lookup:null,onSelect:null,width:\"auto\",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:b.formatResult,formatGroup:b.formatGroup,delimiter:null,zIndex:9999,type:\"GET\",noCache:!1,onSearchStart:e,onSearchComplete:e,onSearchError:e,preserveInput:!1,containerClass:\"autocomplete-suggestions\",tabDisabled:!1,dataType:\"text\",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:function(a,b,c){return-1!==a.value.toLowerCase().indexOf(c)},paramName:\"query\",transformResult:function(b){return\"string\"==typeof b?a.parseJSON(b):b},showNoSuggestionNotice:!1,noSuggestionNotice:\"No results\",orientation:\"bottom\",forceFixPosition:!1};f.element=c,f.el=a(c),f.suggestions=[],f.badQueries=[],f.selectedIndex=-1,f.currentValue=f.element.value,f.intervalId=0,f.cachedResponse={},f.onChangeInterval=null,f.onChange=null,f.isLocal=!1,f.suggestionsContainer=null,f.noSuggestionsContainer=null,f.options=a.extend({},g,d),f.classes={selected:\"autocomplete-selected\",suggestion:\"autocomplete-suggestion\"},f.hint=null,f.hintValue=\"\",f.selection=null,f.initialize(),f.setOptions(d)}var c=function(){return{escapeRegExChars:function(a){return a.replace(/[|\\\\{}()[\\]^$+*?.]/g,\"\\\\$&\")},createNode:function(a){var b=document.createElement(\"div\");return b.className=a,b.style.position=\"absolute\",b.style.display=\"none\",b}}}(),d={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40};b.utils=c,a.Autocomplete=b,b.formatResult=function(a,b){if(!b)return a.value;var d=\"(\"+c.escapeRegExChars(b)+\")\";return a.value.replace(new RegExp(d,\"gi\"),\"<strong>$1</strong>\").replace(/&/g,\"&\").replace(/</g,\"<\").replace(/>/g,\">\").replace(/\"/g,\""\").replace(/<(\\/?strong)>/g,\"<$1>\")},b.formatGroup=function(a,b){return'<div class=\"autocomplete-group\"><strong>'+b+\"</strong></div>\"},b.prototype={killerFn:null,initialize:function(){var c,d=this,e=\".\"+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute(\"autocomplete\",\"off\"),d.killerFn=function(b){a(b.target).closest(\".\"+d.options.containerClass).length||(d.killSuggestions(),d.disableKillerFn())},d.noSuggestionsContainer=a('<div class=\"autocomplete-no-suggestion\"></div>').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo),\"auto\"!==g.width&&c.css(\"width\",g.width),c.on(\"mouseover.autocomplete\",e,function(){d.activate(a(this).data(\"index\"))}),c.on(\"mouseout.autocomplete\",function(){d.selectedIndex=-1,c.children(\".\"+f).removeClass(f)}),c.on(\"click.autocomplete\",e,function(){return d.select(a(this).data(\"index\")),!1}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on(\"resize.autocomplete\",d.fixPositionCapture),d.el.on(\"keydown.autocomplete\",function(a){d.onKeyPress(a)}),d.el.on(\"keyup.autocomplete\",function(a){d.onKeyUp(a)}),d.el.on(\"blur.autocomplete\",function(){d.onBlur()}),d.el.on(\"focus.autocomplete\",function(){d.onFocus()}),d.el.on(\"change.autocomplete\",function(a){d.onKeyUp(a)}),d.el.on(\"input.autocomplete\",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.fixPosition(),a.el.val().length>=a.options.minChars&&a.onValueChange()},onBlur:function(){this.enableKillerFn()},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=c.options;a.extend(d,b),c.isLocal=a.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,\"bottom\"),a(c.suggestionsContainer).css({\"max-height\":d.maxHeight+\"px\",width:d.width+\"px\",\"z-index\":d.zIndex})},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue=\"\",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearInterval(a.onChangeInterval),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if(\"auto\"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?\"top\":\"bottom\"}if(\"top\"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css(\"opacity\");b.visible||c.css(\"opacity\",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.left-=n.left,b.visible||c.css(\"opacity\",o).hide()}\"auto\"===b.options.width&&(i.width=b.el.outerWidth()+\"px\"),c.css(i)}},enableKillerFn:function(){var b=this;a(document).on(\"click.autocomplete\",b.killerFn)},disableKillerFn:function(){var b=this;a(document).off(\"click.autocomplete\",b.killerFn)},killSuggestions:function(){var a=this;a.stopKillSuggestions(),a.intervalId=window.setInterval(function(){a.visible&&(a.options.preserveInput||a.el.val(a.currentValue),a.hide()),a.stopKillSuggestions()},50)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return\"number\"==typeof d?d===c:document.selection?(a=document.selection.createRange(),a.moveStart(\"character\",-c),c===a.text.length):!0},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===d.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case d.ESC:b.el.val(b.currentValue),b.hide();break;case d.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case d.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(-1===b.selectedIndex)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case d.RETURN:if(-1===b.selectedIndex)return void b.hide();b.select(b.selectedIndex);break;case d.UP:b.moveUp();break;case d.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case d.UP:case d.DOWN:return}clearInterval(b.onChangeInterval),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeInterval=setInterval(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearInterval(b.onChangeInterval),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.length<c.minChars?b.hide():b.getSuggestions(e))},isExactMatch:function(a){var b=this.suggestions;return 1===b.length&&b[0].value.toLowerCase()===a.toLowerCase()},getQuery:function(b){var c,d=this.options.delimiter;return d?(c=b.split(d),a.trim(c[c.length-1])):b},getSuggestionsLocal:function(b){var c,d=this,e=d.options,f=b.toLowerCase(),g=e.lookupFilter,h=parseInt(e.lookupLimit,10);return c={suggestions:a.grep(e.lookup,function(a){return g(a,b,f)})},h&&c.suggestions.length>h&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,d=h.ignoreParams?null:h.params,h.onSearchStart.call(g.element,h.params)!==!1){if(a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+\"?\"+a.param(d||{}),c=g.cachedResponse[e]),c&&a.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearInterval(b.onChangeInterval),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(!this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m=\"\",n=function(a,c){var f=a.data[e];return b===f?\"\":(b=f,d.formatGroup(a,b))};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='<div class=\"'+h+'\" data-index=\"'+a+'\">'+f(b,g,a)+\"</div>\"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j,c.suggestions),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children(\".\"+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=a(b.suggestionsContainer),d=a(b.noSuggestionsContainer);this.adjustContainerWidth(),d.detach(),c.empty(),c.append(d),b.fixPosition(),c.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);\"auto\"===d.width?(b=c.el.outerWidth(),e.css(\"width\",b>0?b:300)):\"flex\"===d.width&&e.css(\"width\",\"\")},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c=\"\",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&\"string\"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||\"\").toLowerCase(),-1===a.inArray(b,[\"auto\",\"bottom\",\"top\"])&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&!a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find(\".\"+d.classes.suggestion);return f.find(\".\"+e).removeClass(e),d.selectedIndex=b,-1!==d.selectedIndex&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a),b.disableKillerFn()},moveUp:function(){var b=this;if(-1!==b.selectedIndex)return 0===b.selectedIndex?(a(b.suggestionsContainer).children().first().removeClass(b.classes.selected),b.selectedIndex=-1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,f>e?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||c.el.val(c.getValue(c.suggestions[b].value)),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(\".autocomplete\").removeData(\"autocomplete\"),b.disableKillerFn(),a(window).off(\"resize.autocomplete\",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.autocomplete=a.fn.devbridgeAutocomplete=function(c,d){var e=\"autocomplete\";return arguments.length?this.each(function(){var f=a(this),g=f.data(e);\"string\"==typeof c?g&&\"function\"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))}):this.first().data(e)}});","Mageplaza_Core/js/bootstrap.min.js":"/*!\n * Bootstrap v5.0.2 (https://getbootstrap.com/)\n * Copyright 2011-2021 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\n!function(t,e){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=e(require(\"@popperjs/core\")):\"function\"==typeof define&&define.amd?define([\"@popperjs/core\"],e):(t=\"undefined\"!=typeof globalThis?globalThis:t||self).bootstrap=e(t.Popper)}(this,(function(t){\"use strict\";function e(t){if(t&&t.__esModule)return t;var e=Object.create(null);return t&&Object.keys(t).forEach((function(s){if(\"default\"!==s){var i=Object.getOwnPropertyDescriptor(t,s);Object.defineProperty(e,s,i.get?i:{enumerable:!0,get:function(){return t[s]}})}})),e.default=t,Object.freeze(e)}var s=e(t);const i={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter(t=>t.matches(e)),parents(t,e){const s=[];let i=t.parentNode;for(;i&&i.nodeType===Node.ELEMENT_NODE&&3!==i.nodeType;)i.matches(e)&&s.push(i),i=i.parentNode;return s},prev(t,e){let s=t.previousElementSibling;for(;s;){if(s.matches(e))return[s];s=s.previousElementSibling}return[]},next(t,e){let s=t.nextElementSibling;for(;s;){if(s.matches(e))return[s];s=s.nextElementSibling}return[]}},n=t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t},o=t=>{let e=t.getAttribute(\"data-bs-target\");if(!e||\"#\"===e){let s=t.getAttribute(\"href\");if(!s||!s.includes(\"#\")&&!s.startsWith(\".\"))return null;s.includes(\"#\")&&!s.startsWith(\"#\")&&(s=\"#\"+s.split(\"#\")[1]),e=s&&\"#\"!==s?s.trim():null}return e},r=t=>{const e=o(t);return e&&document.querySelector(e)?e:null},a=t=>{const e=o(t);return e?document.querySelector(e):null},l=t=>{t.dispatchEvent(new Event(\"transitionend\"))},c=t=>!(!t||\"object\"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),h=t=>c(t)?t.jquery?t[0]:t:\"string\"==typeof t&&t.length>0?i.findOne(t):null,d=(t,e,s)=>{Object.keys(s).forEach(i=>{const n=s[i],o=e[i],r=o&&c(o)?\"element\":null==(a=o)?\"\"+a:{}.toString.call(a).match(/\\s([a-z]+)/i)[1].toLowerCase();var a;if(!new RegExp(n).test(r))throw new TypeError(`${t.toUpperCase()}: Option \"${i}\" provided type \"${r}\" but expected type \"${n}\".`)})},u=t=>!(!c(t)||0===t.getClientRects().length)&&\"visible\"===getComputedStyle(t).getPropertyValue(\"visibility\"),g=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains(\"disabled\")||(void 0!==t.disabled?t.disabled:t.hasAttribute(\"disabled\")&&\"false\"!==t.getAttribute(\"disabled\")),p=t=>{if(!document.documentElement.attachShadow)return null;if(\"function\"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?p(t.parentNode):null},f=()=>{},m=t=>t.offsetHeight,_=()=>{const{jQuery:t}=window;return t&&!document.body.hasAttribute(\"data-bs-no-jquery\")?t:null},b=[],v=()=>\"rtl\"===document.documentElement.dir,y=t=>{var e;e=()=>{const e=_();if(e){const s=t.NAME,i=e.fn[s];e.fn[s]=t.jQueryInterface,e.fn[s].Constructor=t,e.fn[s].noConflict=()=>(e.fn[s]=i,t.jQueryInterface)}},\"loading\"===document.readyState?(b.length||document.addEventListener(\"DOMContentLoaded\",()=>{b.forEach(t=>t())}),b.push(e)):e()},w=t=>{\"function\"==typeof t&&t()},E=(t,e,s=!0)=>{if(!s)return void w(t);const i=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:s}=window.getComputedStyle(t);const i=Number.parseFloat(e),n=Number.parseFloat(s);return i||n?(e=e.split(\",\")[0],s=s.split(\",\")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(s))):0})(e)+5;let n=!1;const o=({target:s})=>{s===e&&(n=!0,e.removeEventListener(\"transitionend\",o),w(t))};e.addEventListener(\"transitionend\",o),setTimeout(()=>{n||l(e)},i)},A=(t,e,s,i)=>{let n=t.indexOf(e);if(-1===n)return t[!s&&i?t.length-1:0];const o=t.length;return n+=s?1:-1,i&&(n=(n+o)%o),t[Math.max(0,Math.min(n,o-1))]},T=/[^.]*(?=\\..*)\\.|.*/,C=/\\..*/,k=/::\\d+$/,L={};let O=1;const D={mouseenter:\"mouseover\",mouseleave:\"mouseout\"},I=/^(mouseenter|mouseleave)/i,N=new Set([\"click\",\"dblclick\",\"mouseup\",\"mousedown\",\"contextmenu\",\"mousewheel\",\"DOMMouseScroll\",\"mouseover\",\"mouseout\",\"mousemove\",\"selectstart\",\"selectend\",\"keydown\",\"keypress\",\"keyup\",\"orientationchange\",\"touchstart\",\"touchmove\",\"touchend\",\"touchcancel\",\"pointerdown\",\"pointermove\",\"pointerup\",\"pointerleave\",\"pointercancel\",\"gesturestart\",\"gesturechange\",\"gestureend\",\"focus\",\"blur\",\"change\",\"reset\",\"select\",\"submit\",\"focusin\",\"focusout\",\"load\",\"unload\",\"beforeunload\",\"resize\",\"move\",\"DOMContentLoaded\",\"readystatechange\",\"error\",\"abort\",\"scroll\"]);function S(t,e){return e&&`${e}::${O++}`||t.uidEvent||O++}function x(t){const e=S(t);return t.uidEvent=e,L[e]=L[e]||{},L[e]}function M(t,e,s=null){const i=Object.keys(t);for(let n=0,o=i.length;n<o;n++){const o=t[i[n]];if(o.originalHandler===e&&o.delegationSelector===s)return o}return null}function P(t,e,s){const i=\"string\"==typeof e,n=i?s:e;let o=R(t);return N.has(o)||(o=t),[i,n,o]}function j(t,e,s,i,n){if(\"string\"!=typeof e||!t)return;if(s||(s=i,i=null),I.test(e)){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};i?i=t(i):s=t(s)}const[o,r,a]=P(e,s,i),l=x(t),c=l[a]||(l[a]={}),h=M(c,r,o?s:null);if(h)return void(h.oneOff=h.oneOff&&n);const d=S(r,e.replace(T,\"\")),u=o?function(t,e,s){return function i(n){const o=t.querySelectorAll(e);for(let{target:r}=n;r&&r!==this;r=r.parentNode)for(let a=o.length;a--;)if(o[a]===r)return n.delegateTarget=r,i.oneOff&&B.off(t,n.type,e,s),s.apply(r,[n]);return null}}(t,s,i):function(t,e){return function s(i){return i.delegateTarget=t,s.oneOff&&B.off(t,i.type,e),e.apply(t,[i])}}(t,s);u.delegationSelector=o?s:null,u.originalHandler=r,u.oneOff=n,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function H(t,e,s,i,n){const o=M(e[s],i,n);o&&(t.removeEventListener(s,o,Boolean(n)),delete e[s][o.uidEvent])}function R(t){return t=t.replace(C,\"\"),D[t]||t}const B={on(t,e,s,i){j(t,e,s,i,!1)},one(t,e,s,i){j(t,e,s,i,!0)},off(t,e,s,i){if(\"string\"!=typeof e||!t)return;const[n,o,r]=P(e,s,i),a=r!==e,l=x(t),c=e.startsWith(\".\");if(void 0!==o){if(!l||!l[r])return;return void H(t,l,r,o,n?s:null)}c&&Object.keys(l).forEach(s=>{!function(t,e,s,i){const n=e[s]||{};Object.keys(n).forEach(o=>{if(o.includes(i)){const i=n[o];H(t,e,s,i.originalHandler,i.delegationSelector)}})}(t,l,s,e.slice(1))});const h=l[r]||{};Object.keys(h).forEach(s=>{const i=s.replace(k,\"\");if(!a||e.includes(i)){const e=h[s];H(t,l,r,e.originalHandler,e.delegationSelector)}})},trigger(t,e,s){if(\"string\"!=typeof e||!t)return null;const i=_(),n=R(e),o=e!==n,r=N.has(n);let a,l=!0,c=!0,h=!1,d=null;return o&&i&&(a=i.Event(e,s),i(t).trigger(a),l=!a.isPropagationStopped(),c=!a.isImmediatePropagationStopped(),h=a.isDefaultPrevented()),r?(d=document.createEvent(\"HTMLEvents\"),d.initEvent(n,l,!0)):d=new CustomEvent(e,{bubbles:l,cancelable:!0}),void 0!==s&&Object.keys(s).forEach(t=>{Object.defineProperty(d,t,{get:()=>s[t]})}),h&&d.preventDefault(),c&&t.dispatchEvent(d),d.defaultPrevented&&void 0!==a&&a.preventDefault(),d}},$=new Map;var W={set(t,e,s){$.has(t)||$.set(t,new Map);const i=$.get(t);i.has(e)||0===i.size?i.set(e,s):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(i.keys())[0]}.`)},get:(t,e)=>$.has(t)&&$.get(t).get(e)||null,remove(t,e){if(!$.has(t))return;const s=$.get(t);s.delete(e),0===s.size&&$.delete(t)}};class q{constructor(t){(t=h(t))&&(this._element=t,W.set(this._element,this.constructor.DATA_KEY,this))}dispose(){W.remove(this._element,this.constructor.DATA_KEY),B.off(this._element,this.constructor.EVENT_KEY),Object.getOwnPropertyNames(this).forEach(t=>{this[t]=null})}_queueCallback(t,e,s=!0){E(t,e,s)}static getInstance(t){return W.get(t,this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,\"object\"==typeof e?e:null)}static get VERSION(){return\"5.0.2\"}static get NAME(){throw new Error('You have to implement the static method \"NAME\", for each component!')}static get DATA_KEY(){return\"bs.\"+this.NAME}static get EVENT_KEY(){return\".\"+this.DATA_KEY}}class z extends q{static get NAME(){return\"alert\"}close(t){const e=t?this._getRootElement(t):this._element,s=this._triggerCloseEvent(e);null===s||s.defaultPrevented||this._removeElement(e)}_getRootElement(t){return a(t)||t.closest(\".alert\")}_triggerCloseEvent(t){return B.trigger(t,\"close.bs.alert\")}_removeElement(t){t.classList.remove(\"show\");const e=t.classList.contains(\"fade\");this._queueCallback(()=>this._destroyElement(t),t,e)}_destroyElement(t){t.remove(),B.trigger(t,\"closed.bs.alert\")}static jQueryInterface(t){return this.each((function(){const e=z.getOrCreateInstance(this);\"close\"===t&&e[t](this)}))}static handleDismiss(t){return function(e){e&&e.preventDefault(),t.close(this)}}}B.on(document,\"click.bs.alert.data-api\",'[data-bs-dismiss=\"alert\"]',z.handleDismiss(new z)),y(z);class F extends q{static get NAME(){return\"button\"}toggle(){this._element.setAttribute(\"aria-pressed\",this._element.classList.toggle(\"active\"))}static jQueryInterface(t){return this.each((function(){const e=F.getOrCreateInstance(this);\"toggle\"===t&&e[t]()}))}}function U(t){return\"true\"===t||\"false\"!==t&&(t===Number(t).toString()?Number(t):\"\"===t||\"null\"===t?null:t)}function K(t){return t.replace(/[A-Z]/g,t=>\"-\"+t.toLowerCase())}B.on(document,\"click.bs.button.data-api\",'[data-bs-toggle=\"button\"]',t=>{t.preventDefault();const e=t.target.closest('[data-bs-toggle=\"button\"]');F.getOrCreateInstance(e).toggle()}),y(F);const V={setDataAttribute(t,e,s){t.setAttribute(\"data-bs-\"+K(e),s)},removeDataAttribute(t,e){t.removeAttribute(\"data-bs-\"+K(e))},getDataAttributes(t){if(!t)return{};const e={};return Object.keys(t.dataset).filter(t=>t.startsWith(\"bs\")).forEach(s=>{let i=s.replace(/^bs/,\"\");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=U(t.dataset[s])}),e},getDataAttribute:(t,e)=>U(t.getAttribute(\"data-bs-\"+K(e))),offset(t){const e=t.getBoundingClientRect();return{top:e.top+document.body.scrollTop,left:e.left+document.body.scrollLeft}},position:t=>({top:t.offsetTop,left:t.offsetLeft})},Q={interval:5e3,keyboard:!0,slide:!1,pause:\"hover\",wrap:!0,touch:!0},X={interval:\"(number|boolean)\",keyboard:\"boolean\",slide:\"(boolean|string)\",pause:\"(string|boolean)\",wrap:\"boolean\",touch:\"boolean\"},Y=\"next\",G=\"prev\",Z=\"left\",J=\"right\",tt={ArrowLeft:J,ArrowRight:Z};class et extends q{constructor(t,e){super(t),this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this.touchStartX=0,this.touchDeltaX=0,this._config=this._getConfig(e),this._indicatorsElement=i.findOne(\".carousel-indicators\",this._element),this._touchSupported=\"ontouchstart\"in document.documentElement||navigator.maxTouchPoints>0,this._pointerEvent=Boolean(window.PointerEvent),this._addEventListeners()}static get Default(){return Q}static get NAME(){return\"carousel\"}next(){this._slide(Y)}nextWhenVisible(){!document.hidden&&u(this._element)&&this.next()}prev(){this._slide(G)}pause(t){t||(this._isPaused=!0),i.findOne(\".carousel-item-next, .carousel-item-prev\",this._element)&&(l(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null}cycle(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config&&this._config.interval&&!this._isPaused&&(this._updateInterval(),this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))}to(t){this._activeElement=i.findOne(\".active.carousel-item\",this._element);const e=this._getItemIndex(this._activeElement);if(t>this._items.length-1||t<0)return;if(this._isSliding)return void B.one(this._element,\"slid.bs.carousel\",()=>this.to(t));if(e===t)return this.pause(),void this.cycle();const s=t>e?Y:G;this._slide(s,this._items[t])}_getConfig(t){return t={...Q,...V.getDataAttributes(this._element),...\"object\"==typeof t?t:{}},d(\"carousel\",t,X),t}_handleSwipe(){const t=Math.abs(this.touchDeltaX);if(t<=40)return;const e=t/this.touchDeltaX;this.touchDeltaX=0,e&&this._slide(e>0?J:Z)}_addEventListeners(){this._config.keyboard&&B.on(this._element,\"keydown.bs.carousel\",t=>this._keydown(t)),\"hover\"===this._config.pause&&(B.on(this._element,\"mouseenter.bs.carousel\",t=>this.pause(t)),B.on(this._element,\"mouseleave.bs.carousel\",t=>this.cycle(t))),this._config.touch&&this._touchSupported&&this._addTouchEventListeners()}_addTouchEventListeners(){const t=t=>{!this._pointerEvent||\"pen\"!==t.pointerType&&\"touch\"!==t.pointerType?this._pointerEvent||(this.touchStartX=t.touches[0].clientX):this.touchStartX=t.clientX},e=t=>{this.touchDeltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this.touchStartX},s=t=>{!this._pointerEvent||\"pen\"!==t.pointerType&&\"touch\"!==t.pointerType||(this.touchDeltaX=t.clientX-this.touchStartX),this._handleSwipe(),\"hover\"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(t=>this.cycle(t),500+this._config.interval))};i.find(\".carousel-item img\",this._element).forEach(t=>{B.on(t,\"dragstart.bs.carousel\",t=>t.preventDefault())}),this._pointerEvent?(B.on(this._element,\"pointerdown.bs.carousel\",e=>t(e)),B.on(this._element,\"pointerup.bs.carousel\",t=>s(t)),this._element.classList.add(\"pointer-event\")):(B.on(this._element,\"touchstart.bs.carousel\",e=>t(e)),B.on(this._element,\"touchmove.bs.carousel\",t=>e(t)),B.on(this._element,\"touchend.bs.carousel\",t=>s(t)))}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=tt[t.key];e&&(t.preventDefault(),this._slide(e))}_getItemIndex(t){return this._items=t&&t.parentNode?i.find(\".carousel-item\",t.parentNode):[],this._items.indexOf(t)}_getItemByOrder(t,e){const s=t===Y;return A(this._items,e,s,this._config.wrap)}_triggerSlideEvent(t,e){const s=this._getItemIndex(t),n=this._getItemIndex(i.findOne(\".active.carousel-item\",this._element));return B.trigger(this._element,\"slide.bs.carousel\",{relatedTarget:t,direction:e,from:n,to:s})}_setActiveIndicatorElement(t){if(this._indicatorsElement){const e=i.findOne(\".active\",this._indicatorsElement);e.classList.remove(\"active\"),e.removeAttribute(\"aria-current\");const s=i.find(\"[data-bs-target]\",this._indicatorsElement);for(let e=0;e<s.length;e++)if(Number.parseInt(s[e].getAttribute(\"data-bs-slide-to\"),10)===this._getItemIndex(t)){s[e].classList.add(\"active\"),s[e].setAttribute(\"aria-current\",\"true\");break}}}_updateInterval(){const t=this._activeElement||i.findOne(\".active.carousel-item\",this._element);if(!t)return;const e=Number.parseInt(t.getAttribute(\"data-bs-interval\"),10);e?(this._config.defaultInterval=this._config.defaultInterval||this._config.interval,this._config.interval=e):this._config.interval=this._config.defaultInterval||this._config.interval}_slide(t,e){const s=this._directionToOrder(t),n=i.findOne(\".active.carousel-item\",this._element),o=this._getItemIndex(n),r=e||this._getItemByOrder(s,n),a=this._getItemIndex(r),l=Boolean(this._interval),c=s===Y,h=c?\"carousel-item-start\":\"carousel-item-end\",d=c?\"carousel-item-next\":\"carousel-item-prev\",u=this._orderToDirection(s);if(r&&r.classList.contains(\"active\"))return void(this._isSliding=!1);if(this._isSliding)return;if(this._triggerSlideEvent(r,u).defaultPrevented)return;if(!n||!r)return;this._isSliding=!0,l&&this.pause(),this._setActiveIndicatorElement(r),this._activeElement=r;const g=()=>{B.trigger(this._element,\"slid.bs.carousel\",{relatedTarget:r,direction:u,from:o,to:a})};if(this._element.classList.contains(\"slide\")){r.classList.add(d),m(r),n.classList.add(h),r.classList.add(h);const t=()=>{r.classList.remove(h,d),r.classList.add(\"active\"),n.classList.remove(\"active\",d,h),this._isSliding=!1,setTimeout(g,0)};this._queueCallback(t,n,!0)}else n.classList.remove(\"active\"),r.classList.add(\"active\"),this._isSliding=!1,g();l&&this.cycle()}_directionToOrder(t){return[J,Z].includes(t)?v()?t===Z?G:Y:t===Z?Y:G:t}_orderToDirection(t){return[Y,G].includes(t)?v()?t===G?Z:J:t===G?J:Z:t}static carouselInterface(t,e){const s=et.getOrCreateInstance(t,e);let{_config:i}=s;\"object\"==typeof e&&(i={...i,...e});const n=\"string\"==typeof e?e:i.slide;if(\"number\"==typeof e)s.to(e);else if(\"string\"==typeof n){if(void 0===s[n])throw new TypeError(`No method named \"${n}\"`);s[n]()}else i.interval&&i.ride&&(s.pause(),s.cycle())}static jQueryInterface(t){return this.each((function(){et.carouselInterface(this,t)}))}static dataApiClickHandler(t){const e=a(this);if(!e||!e.classList.contains(\"carousel\"))return;const s={...V.getDataAttributes(e),...V.getDataAttributes(this)},i=this.getAttribute(\"data-bs-slide-to\");i&&(s.interval=!1),et.carouselInterface(e,s),i&&et.getInstance(e).to(i),t.preventDefault()}}B.on(document,\"click.bs.carousel.data-api\",\"[data-bs-slide], [data-bs-slide-to]\",et.dataApiClickHandler),B.on(window,\"load.bs.carousel.data-api\",()=>{const t=i.find('[data-bs-ride=\"carousel\"]');for(let e=0,s=t.length;e<s;e++)et.carouselInterface(t[e],et.getInstance(t[e]))}),y(et);const st={toggle:!0,parent:\"\"},it={toggle:\"boolean\",parent:\"(string|element)\"};class nt extends q{constructor(t,e){super(t),this._isTransitioning=!1,this._config=this._getConfig(e),this._triggerArray=i.find(`[data-bs-toggle=\"collapse\"][href=\"#${this._element.id}\"],[data-bs-toggle=\"collapse\"][data-bs-target=\"#${this._element.id}\"]`);const s=i.find('[data-bs-toggle=\"collapse\"]');for(let t=0,e=s.length;t<e;t++){const e=s[t],n=r(e),o=i.find(n).filter(t=>t===this._element);null!==n&&o.length&&(this._selector=n,this._triggerArray.push(e))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}static get Default(){return st}static get NAME(){return\"collapse\"}toggle(){this._element.classList.contains(\"show\")?this.hide():this.show()}show(){if(this._isTransitioning||this._element.classList.contains(\"show\"))return;let t,e;this._parent&&(t=i.find(\".show, .collapsing\",this._parent).filter(t=>\"string\"==typeof this._config.parent?t.getAttribute(\"data-bs-parent\")===this._config.parent:t.classList.contains(\"collapse\")),0===t.length&&(t=null));const s=i.findOne(this._selector);if(t){const i=t.find(t=>s!==t);if(e=i?nt.getInstance(i):null,e&&e._isTransitioning)return}if(B.trigger(this._element,\"show.bs.collapse\").defaultPrevented)return;t&&t.forEach(t=>{s!==t&&nt.collapseInterface(t,\"hide\"),e||W.set(t,\"bs.collapse\",null)});const n=this._getDimension();this._element.classList.remove(\"collapse\"),this._element.classList.add(\"collapsing\"),this._element.style[n]=0,this._triggerArray.length&&this._triggerArray.forEach(t=>{t.classList.remove(\"collapsed\"),t.setAttribute(\"aria-expanded\",!0)}),this.setTransitioning(!0);const o=\"scroll\"+(n[0].toUpperCase()+n.slice(1));this._queueCallback(()=>{this._element.classList.remove(\"collapsing\"),this._element.classList.add(\"collapse\",\"show\"),this._element.style[n]=\"\",this.setTransitioning(!1),B.trigger(this._element,\"shown.bs.collapse\")},this._element,!0),this._element.style[n]=this._element[o]+\"px\"}hide(){if(this._isTransitioning||!this._element.classList.contains(\"show\"))return;if(B.trigger(this._element,\"hide.bs.collapse\").defaultPrevented)return;const t=this._getDimension();this._element.style[t]=this._element.getBoundingClientRect()[t]+\"px\",m(this._element),this._element.classList.add(\"collapsing\"),this._element.classList.remove(\"collapse\",\"show\");const e=this._triggerArray.length;if(e>0)for(let t=0;t<e;t++){const e=this._triggerArray[t],s=a(e);s&&!s.classList.contains(\"show\")&&(e.classList.add(\"collapsed\"),e.setAttribute(\"aria-expanded\",!1))}this.setTransitioning(!0),this._element.style[t]=\"\",this._queueCallback(()=>{this.setTransitioning(!1),this._element.classList.remove(\"collapsing\"),this._element.classList.add(\"collapse\"),B.trigger(this._element,\"hidden.bs.collapse\")},this._element,!0)}setTransitioning(t){this._isTransitioning=t}_getConfig(t){return(t={...st,...t}).toggle=Boolean(t.toggle),d(\"collapse\",t,it),t}_getDimension(){return this._element.classList.contains(\"width\")?\"width\":\"height\"}_getParent(){let{parent:t}=this._config;t=h(t);const e=`[data-bs-toggle=\"collapse\"][data-bs-parent=\"${t}\"]`;return i.find(e,t).forEach(t=>{const e=a(t);this._addAriaAndCollapsedClass(e,[t])}),t}_addAriaAndCollapsedClass(t,e){if(!t||!e.length)return;const s=t.classList.contains(\"show\");e.forEach(t=>{s?t.classList.remove(\"collapsed\"):t.classList.add(\"collapsed\"),t.setAttribute(\"aria-expanded\",s)})}static collapseInterface(t,e){let s=nt.getInstance(t);const i={...st,...V.getDataAttributes(t),...\"object\"==typeof e&&e?e:{}};if(!s&&i.toggle&&\"string\"==typeof e&&/show|hide/.test(e)&&(i.toggle=!1),s||(s=new nt(t,i)),\"string\"==typeof e){if(void 0===s[e])throw new TypeError(`No method named \"${e}\"`);s[e]()}}static jQueryInterface(t){return this.each((function(){nt.collapseInterface(this,t)}))}}B.on(document,\"click.bs.collapse.data-api\",'[data-bs-toggle=\"collapse\"]',(function(t){(\"A\"===t.target.tagName||t.delegateTarget&&\"A\"===t.delegateTarget.tagName)&&t.preventDefault();const e=V.getDataAttributes(this),s=r(this);i.find(s).forEach(t=>{const s=nt.getInstance(t);let i;s?(null===s._parent&&\"string\"==typeof e.parent&&(s._config.parent=e.parent,s._parent=s._getParent()),i=\"toggle\"):i=e,nt.collapseInterface(t,i)})})),y(nt);const ot=new RegExp(\"ArrowUp|ArrowDown|Escape\"),rt=v()?\"top-end\":\"top-start\",at=v()?\"top-start\":\"top-end\",lt=v()?\"bottom-end\":\"bottom-start\",ct=v()?\"bottom-start\":\"bottom-end\",ht=v()?\"left-start\":\"right-start\",dt=v()?\"right-start\":\"left-start\",ut={offset:[0,2],boundary:\"clippingParents\",reference:\"toggle\",display:\"dynamic\",popperConfig:null,autoClose:!0},gt={offset:\"(array|string|function)\",boundary:\"(string|element)\",reference:\"(string|element|object)\",display:\"string\",popperConfig:\"(null|object|function)\",autoClose:\"(boolean|string)\"};class pt extends q{constructor(t,e){super(t),this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}static get Default(){return ut}static get DefaultType(){return gt}static get NAME(){return\"dropdown\"}toggle(){g(this._element)||(this._element.classList.contains(\"show\")?this.hide():this.show())}show(){if(g(this._element)||this._menu.classList.contains(\"show\"))return;const t=pt.getParentFromElement(this._element),e={relatedTarget:this._element};if(!B.trigger(this._element,\"show.bs.dropdown\",e).defaultPrevented){if(this._inNavbar)V.setDataAttribute(this._menu,\"popper\",\"none\");else{if(void 0===s)throw new TypeError(\"Bootstrap's dropdowns require Popper (https://popper.js.org)\");let e=this._element;\"parent\"===this._config.reference?e=t:c(this._config.reference)?e=h(this._config.reference):\"object\"==typeof this._config.reference&&(e=this._config.reference);const i=this._getPopperConfig(),n=i.modifiers.find(t=>\"applyStyles\"===t.name&&!1===t.enabled);this._popper=s.createPopper(e,this._menu,i),n&&V.setDataAttribute(this._menu,\"popper\",\"static\")}\"ontouchstart\"in document.documentElement&&!t.closest(\".navbar-nav\")&&[].concat(...document.body.children).forEach(t=>B.on(t,\"mouseover\",f)),this._element.focus(),this._element.setAttribute(\"aria-expanded\",!0),this._menu.classList.toggle(\"show\"),this._element.classList.toggle(\"show\"),B.trigger(this._element,\"shown.bs.dropdown\",e)}}hide(){if(g(this._element)||!this._menu.classList.contains(\"show\"))return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_addEventListeners(){B.on(this._element,\"click.bs.dropdown\",t=>{t.preventDefault(),this.toggle()})}_completeHide(t){B.trigger(this._element,\"hide.bs.dropdown\",t).defaultPrevented||(\"ontouchstart\"in document.documentElement&&[].concat(...document.body.children).forEach(t=>B.off(t,\"mouseover\",f)),this._popper&&this._popper.destroy(),this._menu.classList.remove(\"show\"),this._element.classList.remove(\"show\"),this._element.setAttribute(\"aria-expanded\",\"false\"),V.removeDataAttribute(this._menu,\"popper\"),B.trigger(this._element,\"hidden.bs.dropdown\",t))}_getConfig(t){if(t={...this.constructor.Default,...V.getDataAttributes(this._element),...t},d(\"dropdown\",t,this.constructor.DefaultType),\"object\"==typeof t.reference&&!c(t.reference)&&\"function\"!=typeof t.reference.getBoundingClientRect)throw new TypeError(\"dropdown\".toUpperCase()+': Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.');return t}_getMenuElement(){return i.next(this._element,\".dropdown-menu\")[0]}_getPlacement(){const t=this._element.parentNode;if(t.classList.contains(\"dropend\"))return ht;if(t.classList.contains(\"dropstart\"))return dt;const e=\"end\"===getComputedStyle(this._menu).getPropertyValue(\"--bs-position\").trim();return t.classList.contains(\"dropup\")?e?at:rt:e?ct:lt}_detectNavbar(){return null!==this._element.closest(\".navbar\")}_getOffset(){const{offset:t}=this._config;return\"string\"==typeof t?t.split(\",\").map(t=>Number.parseInt(t,10)):\"function\"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:\"preventOverflow\",options:{boundary:this._config.boundary}},{name:\"offset\",options:{offset:this._getOffset()}}]};return\"static\"===this._config.display&&(t.modifiers=[{name:\"applyStyles\",enabled:!1}]),{...t,...\"function\"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const s=i.find(\".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)\",this._menu).filter(u);s.length&&A(s,e,\"ArrowDown\"===t,!s.includes(e)).focus()}static dropdownInterface(t,e){const s=pt.getOrCreateInstance(t,e);if(\"string\"==typeof e){if(void 0===s[e])throw new TypeError(`No method named \"${e}\"`);s[e]()}}static jQueryInterface(t){return this.each((function(){pt.dropdownInterface(this,t)}))}static clearMenus(t){if(t&&(2===t.button||\"keyup\"===t.type&&\"Tab\"!==t.key))return;const e=i.find('[data-bs-toggle=\"dropdown\"]');for(let s=0,i=e.length;s<i;s++){const i=pt.getInstance(e[s]);if(!i||!1===i._config.autoClose)continue;if(!i._element.classList.contains(\"show\"))continue;const n={relatedTarget:i._element};if(t){const e=t.composedPath(),s=e.includes(i._menu);if(e.includes(i._element)||\"inside\"===i._config.autoClose&&!s||\"outside\"===i._config.autoClose&&s)continue;if(i._menu.contains(t.target)&&(\"keyup\"===t.type&&\"Tab\"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;\"click\"===t.type&&(n.clickEvent=t)}i._completeHide(n)}}static getParentFromElement(t){return a(t)||t.parentNode}static dataApiKeydownHandler(t){if(/input|textarea/i.test(t.target.tagName)?\"Space\"===t.key||\"Escape\"!==t.key&&(\"ArrowDown\"!==t.key&&\"ArrowUp\"!==t.key||t.target.closest(\".dropdown-menu\")):!ot.test(t.key))return;const e=this.classList.contains(\"show\");if(!e&&\"Escape\"===t.key)return;if(t.preventDefault(),t.stopPropagation(),g(this))return;const s=()=>this.matches('[data-bs-toggle=\"dropdown\"]')?this:i.prev(this,'[data-bs-toggle=\"dropdown\"]')[0];return\"Escape\"===t.key?(s().focus(),void pt.clearMenus()):\"ArrowUp\"===t.key||\"ArrowDown\"===t.key?(e||s().click(),void pt.getInstance(s())._selectMenuItem(t)):void(e&&\"Space\"!==t.key||pt.clearMenus())}}B.on(document,\"keydown.bs.dropdown.data-api\",'[data-bs-toggle=\"dropdown\"]',pt.dataApiKeydownHandler),B.on(document,\"keydown.bs.dropdown.data-api\",\".dropdown-menu\",pt.dataApiKeydownHandler),B.on(document,\"click.bs.dropdown.data-api\",pt.clearMenus),B.on(document,\"keyup.bs.dropdown.data-api\",pt.clearMenus),B.on(document,\"click.bs.dropdown.data-api\",'[data-bs-toggle=\"dropdown\"]',(function(t){t.preventDefault(),pt.dropdownInterface(this)})),y(pt);class ft{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,\"paddingRight\",e=>e+t),this._setElementAttributes(\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",\"paddingRight\",e=>e+t),this._setElementAttributes(\".sticky-top\",\"marginRight\",e=>e-t)}_disableOverFlow(){this._saveInitialAttribute(this._element,\"overflow\"),this._element.style.overflow=\"hidden\"}_setElementAttributes(t,e,s){const i=this.getWidth();this._applyManipulationCallback(t,t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+i)return;this._saveInitialAttribute(t,e);const n=window.getComputedStyle(t)[e];t.style[e]=s(Number.parseFloat(n))+\"px\"})}reset(){this._resetElementAttributes(this._element,\"overflow\"),this._resetElementAttributes(this._element,\"paddingRight\"),this._resetElementAttributes(\".fixed-top, .fixed-bottom, .is-fixed, .sticky-top\",\"paddingRight\"),this._resetElementAttributes(\".sticky-top\",\"marginRight\")}_saveInitialAttribute(t,e){const s=t.style[e];s&&V.setDataAttribute(t,e,s)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,t=>{const s=V.getDataAttribute(t,e);void 0===s?t.style.removeProperty(e):(V.removeDataAttribute(t,e),t.style[e]=s)})}_applyManipulationCallback(t,e){c(t)?e(t):i.find(t,this._element).forEach(e)}isOverflowing(){return this.getWidth()>0}}const mt={isVisible:!0,isAnimated:!1,rootElement:\"body\",clickCallback:null},_t={isVisible:\"boolean\",isAnimated:\"boolean\",rootElement:\"(element|string)\",clickCallback:\"(function|null)\"};class bt{constructor(t){this._config=this._getConfig(t),this._isAppended=!1,this._element=null}show(t){this._config.isVisible?(this._append(),this._config.isAnimated&&m(this._getElement()),this._getElement().classList.add(\"show\"),this._emulateAnimation(()=>{w(t)})):w(t)}hide(t){this._config.isVisible?(this._getElement().classList.remove(\"show\"),this._emulateAnimation(()=>{this.dispose(),w(t)})):w(t)}_getElement(){if(!this._element){const t=document.createElement(\"div\");t.className=\"modal-backdrop\",this._config.isAnimated&&t.classList.add(\"fade\"),this._element=t}return this._element}_getConfig(t){return(t={...mt,...\"object\"==typeof t?t:{}}).rootElement=h(t.rootElement),d(\"backdrop\",t,_t),t}_append(){this._isAppended||(this._config.rootElement.appendChild(this._getElement()),B.on(this._getElement(),\"mousedown.bs.backdrop\",()=>{w(this._config.clickCallback)}),this._isAppended=!0)}dispose(){this._isAppended&&(B.off(this._element,\"mousedown.bs.backdrop\"),this._element.remove(),this._isAppended=!1)}_emulateAnimation(t){E(t,this._getElement(),this._config.isAnimated)}}const vt={backdrop:!0,keyboard:!0,focus:!0},yt={backdrop:\"(boolean|string)\",keyboard:\"boolean\",focus:\"boolean\"};class wt extends q{constructor(t,e){super(t),this._config=this._getConfig(e),this._dialog=i.findOne(\".modal-dialog\",this._element),this._backdrop=this._initializeBackDrop(),this._isShown=!1,this._ignoreBackdropClick=!1,this._isTransitioning=!1,this._scrollBar=new ft}static get Default(){return vt}static get NAME(){return\"modal\"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||B.trigger(this._element,\"show.bs.modal\",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isAnimated()&&(this._isTransitioning=!0),this._scrollBar.hide(),document.body.classList.add(\"modal-open\"),this._adjustDialog(),this._setEscapeEvent(),this._setResizeEvent(),B.on(this._element,\"click.dismiss.bs.modal\",'[data-bs-dismiss=\"modal\"]',t=>this.hide(t)),B.on(this._dialog,\"mousedown.dismiss.bs.modal\",()=>{B.one(this._element,\"mouseup.dismiss.bs.modal\",t=>{t.target===this._element&&(this._ignoreBackdropClick=!0)})}),this._showBackdrop(()=>this._showElement(t)))}hide(t){if(t&&[\"A\",\"AREA\"].includes(t.target.tagName)&&t.preventDefault(),!this._isShown||this._isTransitioning)return;if(B.trigger(this._element,\"hide.bs.modal\").defaultPrevented)return;this._isShown=!1;const e=this._isAnimated();e&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),B.off(document,\"focusin.bs.modal\"),this._element.classList.remove(\"show\"),B.off(this._element,\"click.dismiss.bs.modal\"),B.off(this._dialog,\"mousedown.dismiss.bs.modal\"),this._queueCallback(()=>this._hideModal(),this._element,e)}dispose(){[window,this._dialog].forEach(t=>B.off(t,\".bs.modal\")),this._backdrop.dispose(),super.dispose(),B.off(document,\"focusin.bs.modal\")}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new bt({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_getConfig(t){return t={...vt,...V.getDataAttributes(this._element),...\"object\"==typeof t?t:{}},d(\"modal\",t,yt),t}_showElement(t){const e=this._isAnimated(),s=i.findOne(\".modal-body\",this._dialog);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display=\"block\",this._element.removeAttribute(\"aria-hidden\"),this._element.setAttribute(\"aria-modal\",!0),this._element.setAttribute(\"role\",\"dialog\"),this._element.scrollTop=0,s&&(s.scrollTop=0),e&&m(this._element),this._element.classList.add(\"show\"),this._config.focus&&this._enforceFocus(),this._queueCallback(()=>{this._config.focus&&this._element.focus(),this._isTransitioning=!1,B.trigger(this._element,\"shown.bs.modal\",{relatedTarget:t})},this._dialog,e)}_enforceFocus(){B.off(document,\"focusin.bs.modal\"),B.on(document,\"focusin.bs.modal\",t=>{document===t.target||this._element===t.target||this._element.contains(t.target)||this._element.focus()})}_setEscapeEvent(){this._isShown?B.on(this._element,\"keydown.dismiss.bs.modal\",t=>{this._config.keyboard&&\"Escape\"===t.key?(t.preventDefault(),this.hide()):this._config.keyboard||\"Escape\"!==t.key||this._triggerBackdropTransition()}):B.off(this._element,\"keydown.dismiss.bs.modal\")}_setResizeEvent(){this._isShown?B.on(window,\"resize.bs.modal\",()=>this._adjustDialog()):B.off(window,\"resize.bs.modal\")}_hideModal(){this._element.style.display=\"none\",this._element.setAttribute(\"aria-hidden\",!0),this._element.removeAttribute(\"aria-modal\"),this._element.removeAttribute(\"role\"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(\"modal-open\"),this._resetAdjustments(),this._scrollBar.reset(),B.trigger(this._element,\"hidden.bs.modal\")})}_showBackdrop(t){B.on(this._element,\"click.dismiss.bs.modal\",t=>{this._ignoreBackdropClick?this._ignoreBackdropClick=!1:t.target===t.currentTarget&&(!0===this._config.backdrop?this.hide():\"static\"===this._config.backdrop&&this._triggerBackdropTransition())}),this._backdrop.show(t)}_isAnimated(){return this._element.classList.contains(\"fade\")}_triggerBackdropTransition(){if(B.trigger(this._element,\"hidePrevented.bs.modal\").defaultPrevented)return;const{classList:t,scrollHeight:e,style:s}=this._element,i=e>document.documentElement.clientHeight;!i&&\"hidden\"===s.overflowY||t.contains(\"modal-static\")||(i||(s.overflowY=\"hidden\"),t.add(\"modal-static\"),this._queueCallback(()=>{t.remove(\"modal-static\"),i||this._queueCallback(()=>{s.overflowY=\"\"},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),s=e>0;(!s&&t&&!v()||s&&!t&&v())&&(this._element.style.paddingLeft=e+\"px\"),(s&&!t&&!v()||!s&&t&&v())&&(this._element.style.paddingRight=e+\"px\")}_resetAdjustments(){this._element.style.paddingLeft=\"\",this._element.style.paddingRight=\"\"}static jQueryInterface(t,e){return this.each((function(){const s=wt.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===s[t])throw new TypeError(`No method named \"${t}\"`);s[t](e)}}))}}B.on(document,\"click.bs.modal.data-api\",'[data-bs-toggle=\"modal\"]',(function(t){const e=a(this);[\"A\",\"AREA\"].includes(this.tagName)&&t.preventDefault(),B.one(e,\"show.bs.modal\",t=>{t.defaultPrevented||B.one(e,\"hidden.bs.modal\",()=>{u(this)&&this.focus()})}),wt.getOrCreateInstance(e).toggle(this)})),y(wt);const Et={backdrop:!0,keyboard:!0,scroll:!1},At={backdrop:\"boolean\",keyboard:\"boolean\",scroll:\"boolean\"};class Tt extends q{constructor(t,e){super(t),this._config=this._getConfig(e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._addEventListeners()}static get NAME(){return\"offcanvas\"}static get Default(){return Et}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||B.trigger(this._element,\"show.bs.offcanvas\",{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._element.style.visibility=\"visible\",this._backdrop.show(),this._config.scroll||((new ft).hide(),this._enforceFocusOnElement(this._element)),this._element.removeAttribute(\"aria-hidden\"),this._element.setAttribute(\"aria-modal\",!0),this._element.setAttribute(\"role\",\"dialog\"),this._element.classList.add(\"show\"),this._queueCallback(()=>{B.trigger(this._element,\"shown.bs.offcanvas\",{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(B.trigger(this._element,\"hide.bs.offcanvas\").defaultPrevented||(B.off(document,\"focusin.bs.offcanvas\"),this._element.blur(),this._isShown=!1,this._element.classList.remove(\"show\"),this._backdrop.hide(),this._queueCallback(()=>{this._element.setAttribute(\"aria-hidden\",!0),this._element.removeAttribute(\"aria-modal\"),this._element.removeAttribute(\"role\"),this._element.style.visibility=\"hidden\",this._config.scroll||(new ft).reset(),B.trigger(this._element,\"hidden.bs.offcanvas\")},this._element,!0)))}dispose(){this._backdrop.dispose(),super.dispose(),B.off(document,\"focusin.bs.offcanvas\")}_getConfig(t){return t={...Et,...V.getDataAttributes(this._element),...\"object\"==typeof t?t:{}},d(\"offcanvas\",t,At),t}_initializeBackDrop(){return new bt({isVisible:this._config.backdrop,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:()=>this.hide()})}_enforceFocusOnElement(t){B.off(document,\"focusin.bs.offcanvas\"),B.on(document,\"focusin.bs.offcanvas\",e=>{document===e.target||t===e.target||t.contains(e.target)||t.focus()}),t.focus()}_addEventListeners(){B.on(this._element,\"click.dismiss.bs.offcanvas\",'[data-bs-dismiss=\"offcanvas\"]',()=>this.hide()),B.on(this._element,\"keydown.dismiss.bs.offcanvas\",t=>{this._config.keyboard&&\"Escape\"===t.key&&this.hide()})}static jQueryInterface(t){return this.each((function(){const e=Tt.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t]||t.startsWith(\"_\")||\"constructor\"===t)throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}B.on(document,\"click.bs.offcanvas.data-api\",'[data-bs-toggle=\"offcanvas\"]',(function(t){const e=a(this);if([\"A\",\"AREA\"].includes(this.tagName)&&t.preventDefault(),g(this))return;B.one(e,\"hidden.bs.offcanvas\",()=>{u(this)&&this.focus()});const s=i.findOne(\".offcanvas.show\");s&&s!==e&&Tt.getInstance(s).hide(),Tt.getOrCreateInstance(e).toggle(this)})),B.on(window,\"load.bs.offcanvas.data-api\",()=>i.find(\".offcanvas.show\").forEach(t=>Tt.getOrCreateInstance(t).show())),y(Tt);const Ct=new Set([\"background\",\"cite\",\"href\",\"itemtype\",\"longdesc\",\"poster\",\"src\",\"xlink:href\"]),kt=/^(?:(?:https?|mailto|ftp|tel|file):|[^#&/:?]*(?:[#/?]|$))/i,Lt=/^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i,Ot=(t,e)=>{const s=t.nodeName.toLowerCase();if(e.includes(s))return!Ct.has(s)||Boolean(kt.test(t.nodeValue)||Lt.test(t.nodeValue));const i=e.filter(t=>t instanceof RegExp);for(let t=0,e=i.length;t<e;t++)if(i[t].test(s))return!0;return!1};function Dt(t,e,s){if(!t.length)return t;if(s&&\"function\"==typeof s)return s(t);const i=(new window.DOMParser).parseFromString(t,\"text/html\"),n=Object.keys(e),o=[].concat(...i.body.querySelectorAll(\"*\"));for(let t=0,s=o.length;t<s;t++){const s=o[t],i=s.nodeName.toLowerCase();if(!n.includes(i)){s.remove();continue}const r=[].concat(...s.attributes),a=[].concat(e[\"*\"]||[],e[i]||[]);r.forEach(t=>{Ot(t,a)||s.removeAttribute(t.nodeName)})}return i.body.innerHTML}const It=new RegExp(\"(^|\\\\s)bs-tooltip\\\\S+\",\"g\"),Nt=new Set([\"sanitize\",\"allowList\",\"sanitizeFn\"]),St={animation:\"boolean\",template:\"string\",title:\"(string|element|function)\",trigger:\"string\",delay:\"(number|object)\",html:\"boolean\",selector:\"(string|boolean)\",placement:\"(string|function)\",offset:\"(array|string|function)\",container:\"(string|element|boolean)\",fallbackPlacements:\"array\",boundary:\"(string|element)\",customClass:\"(string|function)\",sanitize:\"boolean\",sanitizeFn:\"(null|function)\",allowList:\"object\",popperConfig:\"(null|object|function)\"},xt={AUTO:\"auto\",TOP:\"top\",RIGHT:v()?\"left\":\"right\",BOTTOM:\"bottom\",LEFT:v()?\"right\":\"left\"},Mt={animation:!0,template:'<div class=\"tooltip\" role=\"tooltip\"><div class=\"tooltip-arrow\"></div><div class=\"tooltip-inner\"></div></div>',trigger:\"hover focus\",title:\"\",delay:0,html:!1,selector:!1,placement:\"top\",offset:[0,0],container:!1,fallbackPlacements:[\"top\",\"right\",\"bottom\",\"left\"],boundary:\"clippingParents\",customClass:\"\",sanitize:!0,sanitizeFn:null,allowList:{\"*\":[\"class\",\"dir\",\"id\",\"lang\",\"role\",/^aria-[\\w-]*$/i],a:[\"target\",\"href\",\"title\",\"rel\"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:[\"src\",\"srcset\",\"alt\",\"title\",\"width\",\"height\"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},popperConfig:null},Pt={HIDE:\"hide.bs.tooltip\",HIDDEN:\"hidden.bs.tooltip\",SHOW:\"show.bs.tooltip\",SHOWN:\"shown.bs.tooltip\",INSERTED:\"inserted.bs.tooltip\",CLICK:\"click.bs.tooltip\",FOCUSIN:\"focusin.bs.tooltip\",FOCUSOUT:\"focusout.bs.tooltip\",MOUSEENTER:\"mouseenter.bs.tooltip\",MOUSELEAVE:\"mouseleave.bs.tooltip\"};class jt extends q{constructor(t,e){if(void 0===s)throw new TypeError(\"Bootstrap's tooltips require Popper (https://popper.js.org)\");super(t),this._isEnabled=!0,this._timeout=0,this._hoverState=\"\",this._activeTrigger={},this._popper=null,this._config=this._getConfig(e),this.tip=null,this._setListeners()}static get Default(){return Mt}static get NAME(){return\"tooltip\"}static get Event(){return Pt}static get DefaultType(){return St}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(t){if(this._isEnabled)if(t){const e=this._initializeOnDelegatedTarget(t);e._activeTrigger.click=!e._activeTrigger.click,e._isWithActiveTrigger()?e._enter(null,e):e._leave(null,e)}else{if(this.getTipElement().classList.contains(\"show\"))return void this._leave(null,this);this._enter(null,this)}}dispose(){clearTimeout(this._timeout),B.off(this._element.closest(\".modal\"),\"hide.bs.modal\",this._hideModalHandler),this.tip&&this.tip.remove(),this._popper&&this._popper.destroy(),super.dispose()}show(){if(\"none\"===this._element.style.display)throw new Error(\"Please use show on visible elements\");if(!this.isWithContent()||!this._isEnabled)return;const t=B.trigger(this._element,this.constructor.Event.SHOW),e=p(this._element),i=null===e?this._element.ownerDocument.documentElement.contains(this._element):e.contains(this._element);if(t.defaultPrevented||!i)return;const o=this.getTipElement(),r=n(this.constructor.NAME);o.setAttribute(\"id\",r),this._element.setAttribute(\"aria-describedby\",r),this.setContent(),this._config.animation&&o.classList.add(\"fade\");const a=\"function\"==typeof this._config.placement?this._config.placement.call(this,o,this._element):this._config.placement,l=this._getAttachment(a);this._addAttachmentClass(l);const{container:c}=this._config;W.set(o,this.constructor.DATA_KEY,this),this._element.ownerDocument.documentElement.contains(this.tip)||(c.appendChild(o),B.trigger(this._element,this.constructor.Event.INSERTED)),this._popper?this._popper.update():this._popper=s.createPopper(this._element,o,this._getPopperConfig(l)),o.classList.add(\"show\");const h=\"function\"==typeof this._config.customClass?this._config.customClass():this._config.customClass;h&&o.classList.add(...h.split(\" \")),\"ontouchstart\"in document.documentElement&&[].concat(...document.body.children).forEach(t=>{B.on(t,\"mouseover\",f)});const d=this.tip.classList.contains(\"fade\");this._queueCallback(()=>{const t=this._hoverState;this._hoverState=null,B.trigger(this._element,this.constructor.Event.SHOWN),\"out\"===t&&this._leave(null,this)},this.tip,d)}hide(){if(!this._popper)return;const t=this.getTipElement();if(B.trigger(this._element,this.constructor.Event.HIDE).defaultPrevented)return;t.classList.remove(\"show\"),\"ontouchstart\"in document.documentElement&&[].concat(...document.body.children).forEach(t=>B.off(t,\"mouseover\",f)),this._activeTrigger.click=!1,this._activeTrigger.focus=!1,this._activeTrigger.hover=!1;const e=this.tip.classList.contains(\"fade\");this._queueCallback(()=>{this._isWithActiveTrigger()||(\"show\"!==this._hoverState&&t.remove(),this._cleanTipClass(),this._element.removeAttribute(\"aria-describedby\"),B.trigger(this._element,this.constructor.Event.HIDDEN),this._popper&&(this._popper.destroy(),this._popper=null))},this.tip,e),this._hoverState=\"\"}update(){null!==this._popper&&this._popper.update()}isWithContent(){return Boolean(this.getTitle())}getTipElement(){if(this.tip)return this.tip;const t=document.createElement(\"div\");return t.innerHTML=this._config.template,this.tip=t.children[0],this.tip}setContent(){const t=this.getTipElement();this.setElementContent(i.findOne(\".tooltip-inner\",t),this.getTitle()),t.classList.remove(\"fade\",\"show\")}setElementContent(t,e){if(null!==t)return c(e)?(e=h(e),void(this._config.html?e.parentNode!==t&&(t.innerHTML=\"\",t.appendChild(e)):t.textContent=e.textContent)):void(this._config.html?(this._config.sanitize&&(e=Dt(e,this._config.allowList,this._config.sanitizeFn)),t.innerHTML=e):t.textContent=e)}getTitle(){let t=this._element.getAttribute(\"data-bs-original-title\");return t||(t=\"function\"==typeof this._config.title?this._config.title.call(this._element):this._config.title),t}updateAttachment(t){return\"right\"===t?\"end\":\"left\"===t?\"start\":t}_initializeOnDelegatedTarget(t,e){const s=this.constructor.DATA_KEY;return(e=e||W.get(t.delegateTarget,s))||(e=new this.constructor(t.delegateTarget,this._getDelegateConfig()),W.set(t.delegateTarget,s,e)),e}_getOffset(){const{offset:t}=this._config;return\"string\"==typeof t?t.split(\",\").map(t=>Number.parseInt(t,10)):\"function\"==typeof t?e=>t(e,this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:\"flip\",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:\"offset\",options:{offset:this._getOffset()}},{name:\"preventOverflow\",options:{boundary:this._config.boundary}},{name:\"arrow\",options:{element:`.${this.constructor.NAME}-arrow`}},{name:\"onChange\",enabled:!0,phase:\"afterWrite\",fn:t=>this._handlePopperPlacementChange(t)}],onFirstUpdate:t=>{t.options.placement!==t.placement&&this._handlePopperPlacementChange(t)}};return{...e,...\"function\"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_addAttachmentClass(t){this.getTipElement().classList.add(\"bs-tooltip-\"+this.updateAttachment(t))}_getAttachment(t){return xt[t.toUpperCase()]}_setListeners(){this._config.trigger.split(\" \").forEach(t=>{if(\"click\"===t)B.on(this._element,this.constructor.Event.CLICK,this._config.selector,t=>this.toggle(t));else if(\"manual\"!==t){const e=\"hover\"===t?this.constructor.Event.MOUSEENTER:this.constructor.Event.FOCUSIN,s=\"hover\"===t?this.constructor.Event.MOUSELEAVE:this.constructor.Event.FOCUSOUT;B.on(this._element,e,this._config.selector,t=>this._enter(t)),B.on(this._element,s,this._config.selector,t=>this._leave(t))}}),this._hideModalHandler=()=>{this._element&&this.hide()},B.on(this._element.closest(\".modal\"),\"hide.bs.modal\",this._hideModalHandler),this._config.selector?this._config={...this._config,trigger:\"manual\",selector:\"\"}:this._fixTitle()}_fixTitle(){const t=this._element.getAttribute(\"title\"),e=typeof this._element.getAttribute(\"data-bs-original-title\");(t||\"string\"!==e)&&(this._element.setAttribute(\"data-bs-original-title\",t||\"\"),!t||this._element.getAttribute(\"aria-label\")||this._element.textContent||this._element.setAttribute(\"aria-label\",t),this._element.setAttribute(\"title\",\"\"))}_enter(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger[\"focusin\"===t.type?\"focus\":\"hover\"]=!0),e.getTipElement().classList.contains(\"show\")||\"show\"===e._hoverState?e._hoverState=\"show\":(clearTimeout(e._timeout),e._hoverState=\"show\",e._config.delay&&e._config.delay.show?e._timeout=setTimeout(()=>{\"show\"===e._hoverState&&e.show()},e._config.delay.show):e.show())}_leave(t,e){e=this._initializeOnDelegatedTarget(t,e),t&&(e._activeTrigger[\"focusout\"===t.type?\"focus\":\"hover\"]=e._element.contains(t.relatedTarget)),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=\"out\",e._config.delay&&e._config.delay.hide?e._timeout=setTimeout(()=>{\"out\"===e._hoverState&&e.hide()},e._config.delay.hide):e.hide())}_isWithActiveTrigger(){for(const t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1}_getConfig(t){const e=V.getDataAttributes(this._element);return Object.keys(e).forEach(t=>{Nt.has(t)&&delete e[t]}),(t={...this.constructor.Default,...e,...\"object\"==typeof t&&t?t:{}}).container=!1===t.container?document.body:h(t.container),\"number\"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),\"number\"==typeof t.title&&(t.title=t.title.toString()),\"number\"==typeof t.content&&(t.content=t.content.toString()),d(\"tooltip\",t,this.constructor.DefaultType),t.sanitize&&(t.template=Dt(t.template,t.allowList,t.sanitizeFn)),t}_getDelegateConfig(){const t={};if(this._config)for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute(\"class\").match(It);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}_handlePopperPlacementChange(t){const{state:e}=t;e&&(this.tip=e.elements.popper,this._cleanTipClass(),this._addAttachmentClass(this._getAttachment(e.placement)))}static jQueryInterface(t){return this.each((function(){const e=jt.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}y(jt);const Ht=new RegExp(\"(^|\\\\s)bs-popover\\\\S+\",\"g\"),Rt={...jt.Default,placement:\"right\",offset:[0,8],trigger:\"click\",content:\"\",template:'<div class=\"popover\" role=\"tooltip\"><div class=\"popover-arrow\"></div><h3 class=\"popover-header\"></h3><div class=\"popover-body\"></div></div>'},Bt={...jt.DefaultType,content:\"(string|element|function)\"},$t={HIDE:\"hide.bs.popover\",HIDDEN:\"hidden.bs.popover\",SHOW:\"show.bs.popover\",SHOWN:\"shown.bs.popover\",INSERTED:\"inserted.bs.popover\",CLICK:\"click.bs.popover\",FOCUSIN:\"focusin.bs.popover\",FOCUSOUT:\"focusout.bs.popover\",MOUSEENTER:\"mouseenter.bs.popover\",MOUSELEAVE:\"mouseleave.bs.popover\"};class Wt extends jt{static get Default(){return Rt}static get NAME(){return\"popover\"}static get Event(){return $t}static get DefaultType(){return Bt}isWithContent(){return this.getTitle()||this._getContent()}getTipElement(){return this.tip||(this.tip=super.getTipElement(),this.getTitle()||i.findOne(\".popover-header\",this.tip).remove(),this._getContent()||i.findOne(\".popover-body\",this.tip).remove()),this.tip}setContent(){const t=this.getTipElement();this.setElementContent(i.findOne(\".popover-header\",t),this.getTitle());let e=this._getContent();\"function\"==typeof e&&(e=e.call(this._element)),this.setElementContent(i.findOne(\".popover-body\",t),e),t.classList.remove(\"fade\",\"show\")}_addAttachmentClass(t){this.getTipElement().classList.add(\"bs-popover-\"+this.updateAttachment(t))}_getContent(){return this._element.getAttribute(\"data-bs-content\")||this._config.content}_cleanTipClass(){const t=this.getTipElement(),e=t.getAttribute(\"class\").match(Ht);null!==e&&e.length>0&&e.map(t=>t.trim()).forEach(e=>t.classList.remove(e))}static jQueryInterface(t){return this.each((function(){const e=Wt.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}y(Wt);const qt={offset:10,method:\"auto\",target:\"\"},zt={offset:\"number\",method:\"string\",target:\"(string|element)\"};class Ft extends q{constructor(t,e){super(t),this._scrollElement=\"BODY\"===this._element.tagName?window:this._element,this._config=this._getConfig(e),this._selector=`${this._config.target} .nav-link, ${this._config.target} .list-group-item, ${this._config.target} .dropdown-item`,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,B.on(this._scrollElement,\"scroll.bs.scrollspy\",()=>this._process()),this.refresh(),this._process()}static get Default(){return qt}static get NAME(){return\"scrollspy\"}refresh(){const t=this._scrollElement===this._scrollElement.window?\"offset\":\"position\",e=\"auto\"===this._config.method?t:this._config.method,s=\"position\"===e?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),i.find(this._selector).map(t=>{const n=r(t),o=n?i.findOne(n):null;if(o){const t=o.getBoundingClientRect();if(t.width||t.height)return[V[e](o).top+s,n]}return null}).filter(t=>t).sort((t,e)=>t[0]-e[0]).forEach(t=>{this._offsets.push(t[0]),this._targets.push(t[1])})}dispose(){B.off(this._scrollElement,\".bs.scrollspy\"),super.dispose()}_getConfig(t){if(\"string\"!=typeof(t={...qt,...V.getDataAttributes(this._element),...\"object\"==typeof t&&t?t:{}}).target&&c(t.target)){let{id:e}=t.target;e||(e=n(\"scrollspy\"),t.target.id=e),t.target=\"#\"+e}return d(\"scrollspy\",t,zt),t}_getScrollTop(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop}_getScrollHeight(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)}_getOffsetHeight(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height}_process(){const t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),s=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),t>=s){const t=this._targets[this._targets.length-1];this._activeTarget!==t&&this._activate(t)}else{if(this._activeTarget&&t<this._offsets[0]&&this._offsets[0]>0)return this._activeTarget=null,void this._clear();for(let e=this._offsets.length;e--;)this._activeTarget!==this._targets[e]&&t>=this._offsets[e]&&(void 0===this._offsets[e+1]||t<this._offsets[e+1])&&this._activate(this._targets[e])}}_activate(t){this._activeTarget=t,this._clear();const e=this._selector.split(\",\").map(e=>`${e}[data-bs-target=\"${t}\"],${e}[href=\"${t}\"]`),s=i.findOne(e.join(\",\"));s.classList.contains(\"dropdown-item\")?(i.findOne(\".dropdown-toggle\",s.closest(\".dropdown\")).classList.add(\"active\"),s.classList.add(\"active\")):(s.classList.add(\"active\"),i.parents(s,\".nav, .list-group\").forEach(t=>{i.prev(t,\".nav-link, .list-group-item\").forEach(t=>t.classList.add(\"active\")),i.prev(t,\".nav-item\").forEach(t=>{i.children(t,\".nav-link\").forEach(t=>t.classList.add(\"active\"))})})),B.trigger(this._scrollElement,\"activate.bs.scrollspy\",{relatedTarget:t})}_clear(){i.find(this._selector).filter(t=>t.classList.contains(\"active\")).forEach(t=>t.classList.remove(\"active\"))}static jQueryInterface(t){return this.each((function(){const e=Ft.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}B.on(window,\"load.bs.scrollspy.data-api\",()=>{i.find('[data-bs-spy=\"scroll\"]').forEach(t=>new Ft(t))}),y(Ft);class Ut extends q{static get NAME(){return\"tab\"}show(){if(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&this._element.classList.contains(\"active\"))return;let t;const e=a(this._element),s=this._element.closest(\".nav, .list-group\");if(s){const e=\"UL\"===s.nodeName||\"OL\"===s.nodeName?\":scope > li > .active\":\".active\";t=i.find(e,s),t=t[t.length-1]}const n=t?B.trigger(t,\"hide.bs.tab\",{relatedTarget:this._element}):null;if(B.trigger(this._element,\"show.bs.tab\",{relatedTarget:t}).defaultPrevented||null!==n&&n.defaultPrevented)return;this._activate(this._element,s);const o=()=>{B.trigger(t,\"hidden.bs.tab\",{relatedTarget:this._element}),B.trigger(this._element,\"shown.bs.tab\",{relatedTarget:t})};e?this._activate(e,e.parentNode,o):o()}_activate(t,e,s){const n=(!e||\"UL\"!==e.nodeName&&\"OL\"!==e.nodeName?i.children(e,\".active\"):i.find(\":scope > li > .active\",e))[0],o=s&&n&&n.classList.contains(\"fade\"),r=()=>this._transitionComplete(t,n,s);n&&o?(n.classList.remove(\"show\"),this._queueCallback(r,t,!0)):r()}_transitionComplete(t,e,s){if(e){e.classList.remove(\"active\");const t=i.findOne(\":scope > .dropdown-menu .active\",e.parentNode);t&&t.classList.remove(\"active\"),\"tab\"===e.getAttribute(\"role\")&&e.setAttribute(\"aria-selected\",!1)}t.classList.add(\"active\"),\"tab\"===t.getAttribute(\"role\")&&t.setAttribute(\"aria-selected\",!0),m(t),t.classList.contains(\"fade\")&&t.classList.add(\"show\");let n=t.parentNode;if(n&&\"LI\"===n.nodeName&&(n=n.parentNode),n&&n.classList.contains(\"dropdown-menu\")){const e=t.closest(\".dropdown\");e&&i.find(\".dropdown-toggle\",e).forEach(t=>t.classList.add(\"active\")),t.setAttribute(\"aria-expanded\",!0)}s&&s()}static jQueryInterface(t){return this.each((function(){const e=Ut.getOrCreateInstance(this);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t]()}}))}}B.on(document,\"click.bs.tab.data-api\",'[data-bs-toggle=\"tab\"], [data-bs-toggle=\"pill\"], [data-bs-toggle=\"list\"]',(function(t){[\"A\",\"AREA\"].includes(this.tagName)&&t.preventDefault(),g(this)||Ut.getOrCreateInstance(this).show()})),y(Ut);const Kt={animation:\"boolean\",autohide:\"boolean\",delay:\"number\"},Vt={animation:!0,autohide:!0,delay:5e3};class Qt extends q{constructor(t,e){super(t),this._config=this._getConfig(e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get DefaultType(){return Kt}static get Default(){return Vt}static get NAME(){return\"toast\"}show(){B.trigger(this._element,\"show.bs.toast\").defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add(\"fade\"),this._element.classList.remove(\"hide\"),m(this._element),this._element.classList.add(\"showing\"),this._queueCallback(()=>{this._element.classList.remove(\"showing\"),this._element.classList.add(\"show\"),B.trigger(this._element,\"shown.bs.toast\"),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this._element.classList.contains(\"show\")&&(B.trigger(this._element,\"hide.bs.toast\").defaultPrevented||(this._element.classList.remove(\"show\"),this._queueCallback(()=>{this._element.classList.add(\"hide\"),B.trigger(this._element,\"hidden.bs.toast\")},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this._element.classList.contains(\"show\")&&this._element.classList.remove(\"show\"),super.dispose()}_getConfig(t){return t={...Vt,...V.getDataAttributes(this._element),...\"object\"==typeof t&&t?t:{}},d(\"toast\",t,this.constructor.DefaultType),t}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(t,e){switch(t.type){case\"mouseover\":case\"mouseout\":this._hasMouseInteraction=e;break;case\"focusin\":case\"focusout\":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const s=t.relatedTarget;this._element===s||this._element.contains(s)||this._maybeScheduleHide()}_setListeners(){B.on(this._element,\"click.dismiss.bs.toast\",'[data-bs-dismiss=\"toast\"]',()=>this.hide()),B.on(this._element,\"mouseover.bs.toast\",t=>this._onInteraction(t,!0)),B.on(this._element,\"mouseout.bs.toast\",t=>this._onInteraction(t,!1)),B.on(this._element,\"focusin.bs.toast\",t=>this._onInteraction(t,!0)),B.on(this._element,\"focusout.bs.toast\",t=>this._onInteraction(t,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=Qt.getOrCreateInstance(this,t);if(\"string\"==typeof t){if(void 0===e[t])throw new TypeError(`No method named \"${t}\"`);e[t](this)}}))}}return y(Qt),{Alert:z,Button:F,Carousel:et,Collapse:nt,Dropdown:pt,Modal:wt,Offcanvas:Tt,Popover:Wt,ScrollSpy:Ft,Tab:Ut,Toast:Qt,Tooltip:jt}}));\n//# sourceMappingURL=bootstrap.min.js.map\n","Mageplaza_Core/js/jscolor.min.js":"/**\n * jscolor - JavaScript Color Picker\n *\n * @link http://jscolor.com\n * @license For open source use: GPLv3\n * For commercial use: JSColor Commercial License\n * @author Jan Odvarko\n *\n * See usage examples at http://jscolor.com/examples/\n */\"use strict\";window.jscolor||(window.jscolor=function(){var e={register:function(){e.attachDOMReadyEvent(e.init),e.attachEvent(document,\"mousedown\",e.onDocumentMouseDown),e.attachEvent(document,\"touchstart\",e.onDocumentTouchStart),e.attachEvent(window,\"resize\",e.onWindowResize)},init:function(){e.jscolor.lookupClass&&e.jscolor.installByClassName(e.jscolor.lookupClass)},tryInstallOnElements:function(t,n){var r=new RegExp(\"(^|\\\\s)(\"+n+\")(\\\\s*(\\\\{[^}]*\\\\})|\\\\s|$)\",\"i\");for(var i=0;i<t.length;i+=1){if(t[i].type!==undefined&&t[i].type.toLowerCase()==\"color\"&&e.isColorAttrSupported)continue;var s;if(!t[i].jscolor&&t[i].className&&(s=t[i].className.match(r))){var o=t[i],u=null,a=e.getDataAttr(o,\"jscolor\");a!==null?u=a:s[4]&&(u=s[4]);var f={};if(u)try{f=(new Function(\"return (\"+u+\")\"))()}catch(l){e.warn(\"Error parsing jscolor options: \"+l+\":\\n\"+u)}o.jscolor=new e.jscolor(o,f)}}},isColorAttrSupported:function(){var e=document.createElement(\"input\");if(e.setAttribute){e.setAttribute(\"type\",\"color\");if(e.type.toLowerCase()==\"color\")return!0}return!1}(),isCanvasSupported:function(){var e=document.createElement(\"canvas\");return!!e.getContext&&!!e.getContext(\"2d\")}(),fetchElement:function(e){return typeof e==\"string\"?document.getElementById(e):e},isElementType:function(e,t){return e.nodeName.toLowerCase()===t.toLowerCase()},getDataAttr:function(e,t){var n=\"data-\"+t,r=e.getAttribute(n);return r!==null?r:null},attachEvent:function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent(\"on\"+t,n)},detachEvent:function(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent&&e.detachEvent(\"on\"+t,n)},_attachedGroupEvents:{},attachGroupEvent:function(t,n,r,i){e._attachedGroupEvents.hasOwnProperty(t)||(e._attachedGroupEvents[t]=[]),e._attachedGroupEvents[t].push([n,r,i]),e.attachEvent(n,r,i)},detachGroupEvents:function(t){if(e._attachedGroupEvents.hasOwnProperty(t)){for(var n=0;n<e._attachedGroupEvents[t].length;n+=1){var r=e._attachedGroupEvents[t][n];e.detachEvent(r[0],r[1],r[2])}delete e._attachedGroupEvents[t]}},attachDOMReadyEvent:function(e){var t=!1,n=function(){t||(t=!0,e())};if(document.readyState===\"complete\"){setTimeout(n,1);return}if(document.addEventListener)document.addEventListener(\"DOMContentLoaded\",n,!1),window.addEventListener(\"load\",n,!1);else if(document.attachEvent){document.attachEvent(\"onreadystatechange\",function(){document.readyState===\"complete\"&&(document.detachEvent(\"onreadystatechange\",arguments.callee),n())}),window.attachEvent(\"onload\",n);if(document.documentElement.doScroll&&window==window.top){var r=function(){if(!document.body)return;try{document.documentElement.doScroll(\"left\"),n()}catch(e){setTimeout(r,1)}};r()}}},warn:function(e){window.console&&window.console.warn&&window.console.warn(e)},preventDefault:function(e){e.preventDefault&&e.preventDefault(),e.returnValue=!1},captureTarget:function(t){t.setCapture&&(e._capturedTarget=t,e._capturedTarget.setCapture())},releaseTarget:function(){e._capturedTarget&&(e._capturedTarget.releaseCapture(),e._capturedTarget=null)},fireEvent:function(e,t){if(!e)return;if(document.createEvent){var n=document.createEvent(\"HTMLEvents\");n.initEvent(t,!0,!0),e.dispatchEvent(n)}else if(document.createEventObject){var n=document.createEventObject();e.fireEvent(\"on\"+t,n)}else e[\"on\"+t]&&e[\"on\"+t]()},classNameToList:function(e){return e.replace(/^\\s+|\\s+$/g,\"\").split(/\\s+/)},hasClass:function(e,t){return t?-1!=(\" \"+e.className.replace(/\\s+/g,\" \")+\" \").indexOf(\" \"+t+\" \"):!1},setClass:function(t,n){var r=e.classNameToList(n);for(var i=0;i<r.length;i+=1)e.hasClass(t,r[i])||(t.className+=(t.className?\" \":\"\")+r[i])},unsetClass:function(t,n){var r=e.classNameToList(n);for(var i=0;i<r.length;i+=1){var s=new RegExp(\"^\\\\s*\"+r[i]+\"\\\\s*|\"+\"\\\\s*\"+r[i]+\"\\\\s*$|\"+\"\\\\s+\"+r[i]+\"(\\\\s+)\",\"g\");t.className=t.className.replace(s,\"$1\")}},getStyle:function(e){return window.getComputedStyle?window.getComputedStyle(e):e.currentStyle},setStyle:function(){var e=document.createElement(\"div\"),t=function(t){for(var n=0;n<t.length;n+=1)if(t[n]in e.style)return t[n]},n={borderRadius:t([\"borderRadius\",\"MozBorderRadius\",\"webkitBorderRadius\"]),boxShadow:t([\"boxShadow\",\"MozBoxShadow\",\"webkitBoxShadow\"])};return function(e,t,r){switch(t.toLowerCase()){case\"opacity\":var i=Math.round(parseFloat(r)*100);e.style.opacity=r,e.style.filter=\"alpha(opacity=\"+i+\")\";break;default:e.style[n[t]]=r}}}(),setBorderRadius:function(t,n){e.setStyle(t,\"borderRadius\",n||\"0\")},setBoxShadow:function(t,n){e.setStyle(t,\"boxShadow\",n||\"none\")},getElementPos:function(t,n){var r=0,i=0,s=t.getBoundingClientRect();r=s.left,i=s.top;if(!n){var o=e.getViewPos();r+=o[0],i+=o[1]}return[r,i]},getElementSize:function(e){return[e.offsetWidth,e.offsetHeight]},getAbsPointerPos:function(e){e||(e=window.event);var t=0,n=0;return typeof e.changedTouches!=\"undefined\"&&e.changedTouches.length?(t=e.changedTouches[0].clientX,n=e.changedTouches[0].clientY):typeof e.clientX==\"number\"&&(t=e.clientX,n=e.clientY),{x:t,y:n}},getRelPointerPos:function(e){e||(e=window.event);var t=e.target||e.srcElement,n=t.getBoundingClientRect(),r=0,i=0,s=0,o=0;return typeof e.changedTouches!=\"undefined\"&&e.changedTouches.length?(s=e.changedTouches[0].clientX,o=e.changedTouches[0].clientY):typeof e.clientX==\"number\"&&(s=e.clientX,o=e.clientY),r=s-n.left,i=o-n.top,{x:r,y:i}},getViewPos:function(){var e=document.documentElement;return[(window.pageXOffset||e.scrollLeft)-(e.clientLeft||0),(window.pageYOffset||e.scrollTop)-(e.clientTop||0)]},getViewSize:function(){var e=document.documentElement;return[window.innerWidth||e.clientWidth,window.innerHeight||e.clientHeight]},redrawPosition:function(){if(e.picker&&e.picker.owner){var t=e.picker.owner,n,r;t.fixed?(n=e.getElementPos(t.targetElement,!0),r=[0,0]):(n=e.getElementPos(t.targetElement),r=e.getViewPos());var i=e.getElementSize(t.targetElement),s=e.getViewSize(),o=e.getPickerOuterDims(t),u,a,f;switch(t.position.toLowerCase()){case\"left\":u=1,a=0,f=-1;break;case\"right\":u=1,a=0,f=1;break;case\"top\":u=0,a=1,f=-1;break;default:u=0,a=1,f=1}var l=(i[a]+o[a])/2;if(!t.smartPosition)var c=[n[u],n[a]+i[a]-l+l*f];else var c=[-r[u]+n[u]+o[u]>s[u]?-r[u]+n[u]+i[u]/2>s[u]/2&&n[u]+i[u]-o[u]>=0?n[u]+i[u]-o[u]:n[u]:n[u],-r[a]+n[a]+i[a]+o[a]-l+l*f>s[a]?-r[a]+n[a]+i[a]/2>s[a]/2&&n[a]+i[a]-l-l*f>=0?n[a]+i[a]-l-l*f:n[a]+i[a]-l+l*f:n[a]+i[a]-l+l*f>=0?n[a]+i[a]-l+l*f:n[a]+i[a]-l-l*f];var h=c[u],p=c[a],d=t.fixed?\"fixed\":\"absolute\",v=(c[0]+o[0]>n[0]||c[0]<n[0]+i[0])&&c[1]+o[1]<n[1]+i[1];e._drawPosition(t,h,p,d,v)}},_drawPosition:function(t,n,r,i,s){var o=s?0:t.shadowBlur;e.picker.wrap.style.position=i,e.picker.wrap.style.left=n+\"px\",e.picker.wrap.style.top=r+\"px\",e.setBoxShadow(e.picker.boxS,t.shadow?new e.BoxShadow(0,o,t.shadowBlur,0,t.shadowColor):null)},getPickerDims:function(t){var n=!!e.getSliderComponent(t),r=[2*t.insetWidth+2*t.padding+t.width+(n?2*t.insetWidth+e.getPadToSliderPadding(t)+t.sliderSize:0),2*t.insetWidth+2*t.padding+t.height+(t.closable?2*t.insetWidth+t.padding+t.buttonHeight:0)];return r},getPickerOuterDims:function(t){var n=e.getPickerDims(t);return[n[0]+2*t.borderWidth,n[1]+2*t.borderWidth]},getPadToSliderPadding:function(e){return Math.max(e.padding,1.5*(2*e.pointerBorderWidth+e.pointerThickness))},getPadYComponent:function(e){switch(e.mode.charAt(1).toLowerCase()){case\"v\":return\"v\"}return\"s\"},getSliderComponent:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case\"s\":return\"s\";case\"v\":return\"v\"}return null},onDocumentMouseDown:function(t){t||(t=window.event);var n=t.target||t.srcElement;n._jscLinkedInstance?n._jscLinkedInstance.showOnClick&&n._jscLinkedInstance.show():n._jscControlName?e.onControlPointerStart(t,n,n._jscControlName,\"mouse\"):e.picker&&e.picker.owner&&e.picker.owner.hide()},onDocumentTouchStart:function(t){t||(t=window.event);var n=t.target||t.srcElement;n._jscLinkedInstance?n._jscLinkedInstance.showOnClick&&n._jscLinkedInstance.show():n._jscControlName?e.onControlPointerStart(t,n,n._jscControlName,\"touch\"):e.picker&&e.picker.owner&&e.picker.owner.hide()},onWindowResize:function(t){e.redrawPosition()},onParentScroll:function(t){e.picker&&e.picker.owner&&e.picker.owner.hide()},_pointerMoveEvent:{mouse:\"mousemove\",touch:\"touchmove\"},_pointerEndEvent:{mouse:\"mouseup\",touch:\"touchend\"},_pointerOrigin:null,_capturedTarget:null,onControlPointerStart:function(t,n,r,i){var s=n._jscInstance;e.preventDefault(t),e.captureTarget(n);var o=function(s,o){e.attachGroupEvent(\"drag\",s,e._pointerMoveEvent[i],e.onDocumentPointerMove(t,n,r,i,o)),e.attachGroupEvent(\"drag\",s,e._pointerEndEvent[i],e.onDocumentPointerEnd(t,n,r,i))};o(document,[0,0]);if(window.parent&&window.frameElement){var u=window.frameElement.getBoundingClientRect(),a=[-u.left,-u.top];o(window.parent.window.document,a)}var f=e.getAbsPointerPos(t),l=e.getRelPointerPos(t);e._pointerOrigin={x:f.x-l.x,y:f.y-l.y};switch(r){case\"pad\":switch(e.getSliderComponent(s)){case\"s\":s.hsv[1]===0&&s.fromHSV(null,100,null);break;case\"v\":s.hsv[2]===0&&s.fromHSV(null,null,100)}e.setPad(s,t,0,0);break;case\"sld\":e.setSld(s,t,0)}e.dispatchFineChange(s)},onDocumentPointerMove:function(t,n,r,i,s){return function(t){var i=n._jscInstance;switch(r){case\"pad\":t||(t=window.event),e.setPad(i,t,s[0],s[1]),e.dispatchFineChange(i);break;case\"sld\":t||(t=window.event),e.setSld(i,t,s[1]),e.dispatchFineChange(i)}}},onDocumentPointerEnd:function(t,n,r,i){return function(t){var r=n._jscInstance;e.detachGroupEvents(\"drag\"),e.releaseTarget(),e.dispatchChange(r)}},dispatchChange:function(t){t.valueElement&&e.isElementType(t.valueElement,\"input\")&&e.fireEvent(t.valueElement,\"change\")},dispatchFineChange:function(e){if(e.onFineChange){var t;typeof e.onFineChange==\"string\"?t=new Function(e.onFineChange):t=e.onFineChange,t.call(e)}},setPad:function(t,n,r,i){var s=e.getAbsPointerPos(n),o=r+s.x-e._pointerOrigin.x-t.padding-t.insetWidth,u=i+s.y-e._pointerOrigin.y-t.padding-t.insetWidth,a=o*(360/(t.width-1)),f=100-u*(100/(t.height-1));switch(e.getPadYComponent(t)){case\"s\":t.fromHSV(a,f,null,e.leaveSld);break;case\"v\":t.fromHSV(a,null,f,e.leaveSld)}},setSld:function(t,n,r){var i=e.getAbsPointerPos(n),s=r+i.y-e._pointerOrigin.y-t.padding-t.insetWidth,o=100-s*(100/(t.height-1));switch(e.getSliderComponent(t)){case\"s\":t.fromHSV(null,o,null,e.leavePad);break;case\"v\":t.fromHSV(null,null,o,e.leavePad)}},_vmlNS:\"jsc_vml_\",_vmlCSS:\"jsc_vml_css_\",_vmlReady:!1,initVML:function(){if(!e._vmlReady){var t=document;t.namespaces[e._vmlNS]||t.namespaces.add(e._vmlNS,\"urn:schemas-microsoft-com:vml\");if(!t.styleSheets[e._vmlCSS]){var n=[\"shape\",\"shapetype\",\"group\",\"background\",\"path\",\"formulas\",\"handles\",\"fill\",\"stroke\",\"shadow\",\"textbox\",\"textpath\",\"imagedata\",\"line\",\"polyline\",\"curve\",\"rect\",\"roundrect\",\"oval\",\"arc\",\"image\"],r=t.createStyleSheet();r.owningElement.id=e._vmlCSS;for(var i=0;i<n.length;i+=1)r.addRule(e._vmlNS+\"\\\\:\"+n[i],\"behavior:url(#default#VML);\")}e._vmlReady=!0}},createPalette:function(){var t={elm:null,draw:null};if(e.isCanvasSupported){var n=document.createElement(\"canvas\"),r=n.getContext(\"2d\"),i=function(e,t,i){n.width=e,n.height=t,r.clearRect(0,0,n.width,n.height);var s=r.createLinearGradient(0,0,n.width,0);s.addColorStop(0,\"#F00\"),s.addColorStop(1/6,\"#FF0\"),s.addColorStop(2/6,\"#0F0\"),s.addColorStop(.5,\"#0FF\"),s.addColorStop(4/6,\"#00F\"),s.addColorStop(5/6,\"#F0F\"),s.addColorStop(1,\"#F00\"),r.fillStyle=s,r.fillRect(0,0,n.width,n.height);var o=r.createLinearGradient(0,0,0,n.height);switch(i.toLowerCase()){case\"s\":o.addColorStop(0,\"rgba(255,255,255,0)\"),o.addColorStop(1,\"rgba(255,255,255,1)\");break;case\"v\":o.addColorStop(0,\"rgba(0,0,0,0)\"),o.addColorStop(1,\"rgba(0,0,0,1)\")}r.fillStyle=o,r.fillRect(0,0,n.width,n.height)};t.elm=n,t.draw=i}else{e.initVML();var s=document.createElement(\"div\");s.style.position=\"relative\",s.style.overflow=\"hidden\";var o=document.createElement(e._vmlNS+\":fill\");o.type=\"gradient\",o.method=\"linear\",o.angle=\"90\",o.colors=\"16.67% #F0F, 33.33% #00F, 50% #0FF, 66.67% #0F0, 83.33% #FF0\";var u=document.createElement(e._vmlNS+\":rect\");u.style.position=\"absolute\",u.style.left=\"-1px\",u.style.top=\"-1px\",u.stroked=!1,u.appendChild(o),s.appendChild(u);var a=document.createElement(e._vmlNS+\":fill\");a.type=\"gradient\",a.method=\"linear\",a.angle=\"180\",a.opacity=\"0\";var f=document.createElement(e._vmlNS+\":rect\");f.style.position=\"absolute\",f.style.left=\"-1px\",f.style.top=\"-1px\",f.stroked=!1,f.appendChild(a),s.appendChild(f);var i=function(e,t,n){s.style.width=e+\"px\",s.style.height=t+\"px\",u.style.width=f.style.width=e+1+\"px\",u.style.height=f.style.height=t+1+\"px\",o.color=\"#F00\",o.color2=\"#F00\";switch(n.toLowerCase()){case\"s\":a.color=a.color2=\"#FFF\";break;case\"v\":a.color=a.color2=\"#000\"}};t.elm=s,t.draw=i}return t},createSliderGradient:function(){var t={elm:null,draw:null};if(e.isCanvasSupported){var n=document.createElement(\"canvas\"),r=n.getContext(\"2d\"),i=function(e,t,i,s){n.width=e,n.height=t,r.clearRect(0,0,n.width,n.height);var o=r.createLinearGradient(0,0,0,n.height);o.addColorStop(0,i),o.addColorStop(1,s),r.fillStyle=o,r.fillRect(0,0,n.width,n.height)};t.elm=n,t.draw=i}else{e.initVML();var s=document.createElement(\"div\");s.style.position=\"relative\",s.style.overflow=\"hidden\";var o=document.createElement(e._vmlNS+\":fill\");o.type=\"gradient\",o.method=\"linear\",o.angle=\"180\";var u=document.createElement(e._vmlNS+\":rect\");u.style.position=\"absolute\",u.style.left=\"-1px\",u.style.top=\"-1px\",u.stroked=!1,u.appendChild(o),s.appendChild(u);var i=function(e,t,n,r){s.style.width=e+\"px\",s.style.height=t+\"px\",u.style.width=e+1+\"px\",u.style.height=t+1+\"px\",o.color=n,o.color2=r};t.elm=s,t.draw=i}return t},leaveValue:1,leaveStyle:2,leavePad:4,leaveSld:8,BoxShadow:function(){var e=function(e,t,n,r,i,s){this.hShadow=e,this.vShadow=t,this.blur=n,this.spread=r,this.color=i,this.inset=!!s};return e.prototype.toString=function(){var e=[Math.round(this.hShadow)+\"px\",Math.round(this.vShadow)+\"px\",Math.round(this.blur)+\"px\",Math.round(this.spread)+\"px\",this.color];return this.inset&&e.push(\"inset\"),e.join(\" \")},e}(),jscolor:function(t,n){function i(e,t,n){e/=255,t/=255,n/=255;var r=Math.min(Math.min(e,t),n),i=Math.max(Math.max(e,t),n),s=i-r;if(s===0)return[null,0,100*i];var o=e===r?3+(n-t)/s:t===r?5+(e-n)/s:1+(t-e)/s;return[60*(o===6?0:o),100*(s/i),100*i]}function s(e,t,n){var r=255*(n/100);if(e===null)return[r,r,r];e/=60,t/=100;var i=Math.floor(e),s=i%2?e-i:1-(e-i),o=r*(1-t),u=r*(1-t*s);switch(i){case 6:case 0:return[r,u,o];case 1:return[u,r,o];case 2:return[o,r,u];case 3:return[o,u,r];case 4:return[u,o,r];case 5:return[r,o,u]}}function o(){e.unsetClass(d.targetElement,d.activeClass),e.picker.wrap.parentNode.removeChild(e.picker.wrap),delete e.picker.owner}function u(){function l(){var e=d.insetColor.split(/\\s+/),n=e.length<2?e[0]:e[1]+\" \"+e[0]+\" \"+e[0]+\" \"+e[1];t.btn.style.borderColor=n}d._processParentElementsInDOM(),e.picker||(e.picker={owner:null,wrap:document.createElement(\"div\"),box:document.createElement(\"div\"),boxS:document.createElement(\"div\"),boxB:document.createElement(\"div\"),pad:document.createElement(\"div\"),padB:document.createElement(\"div\"),padM:document.createElement(\"div\"),padPal:e.createPalette(),cross:document.createElement(\"div\"),crossBY:document.createElement(\"div\"),crossBX:document.createElement(\"div\"),crossLY:document.createElement(\"div\"),crossLX:document.createElement(\"div\"),sld:document.createElement(\"div\"),sldB:document.createElement(\"div\"),sldM:document.createElement(\"div\"),sldGrad:e.createSliderGradient(),sldPtrS:document.createElement(\"div\"),sldPtrIB:document.createElement(\"div\"),sldPtrMB:document.createElement(\"div\"),sldPtrOB:document.createElement(\"div\"),btn:document.createElement(\"div\"),btnT:document.createElement(\"span\")},e.picker.pad.appendChild(e.picker.padPal.elm),e.picker.padB.appendChild(e.picker.pad),e.picker.cross.appendChild(e.picker.crossBY),e.picker.cross.appendChild(e.picker.crossBX),e.picker.cross.appendChild(e.picker.crossLY),e.picker.cross.appendChild(e.picker.crossLX),e.picker.padB.appendChild(e.picker.cross),e.picker.box.appendChild(e.picker.padB),e.picker.box.appendChild(e.picker.padM),e.picker.sld.appendChild(e.picker.sldGrad.elm),e.picker.sldB.appendChild(e.picker.sld),e.picker.sldB.appendChild(e.picker.sldPtrOB),e.picker.sldPtrOB.appendChild(e.picker.sldPtrMB),e.picker.sldPtrMB.appendChild(e.picker.sldPtrIB),e.picker.sldPtrIB.appendChild(e.picker.sldPtrS),e.picker.box.appendChild(e.picker.sldB),e.picker.box.appendChild(e.picker.sldM),e.picker.btn.appendChild(e.picker.btnT),e.picker.box.appendChild(e.picker.btn),e.picker.boxB.appendChild(e.picker.box),e.picker.wrap.appendChild(e.picker.boxS),e.picker.wrap.appendChild(e.picker.boxB));var t=e.picker,n=!!e.getSliderComponent(d),r=e.getPickerDims(d),i=2*d.pointerBorderWidth+d.pointerThickness+2*d.crossSize,s=e.getPadToSliderPadding(d),o=Math.min(d.borderRadius,Math.round(d.padding*Math.PI)),u=\"crosshair\";t.wrap.style.clear=\"both\",t.wrap.style.width=r[0]+2*d.borderWidth+\"px\",t.wrap.style.height=r[1]+2*d.borderWidth+\"px\",t.wrap.style.zIndex=d.zIndex,t.box.style.width=r[0]+\"px\",t.box.style.height=r[1]+\"px\",t.boxS.style.position=\"absolute\",t.boxS.style.left=\"0\",t.boxS.style.top=\"0\",t.boxS.style.width=\"100%\",t.boxS.style.height=\"100%\",e.setBorderRadius(t.boxS,o+\"px\"),t.boxB.style.position=\"relative\",t.boxB.style.border=d.borderWidth+\"px solid\",t.boxB.style.borderColor=d.borderColor,t.boxB.style.background=d.backgroundColor,e.setBorderRadius(t.boxB,o+\"px\"),t.padM.style.background=t.sldM.style.background=\"#FFF\",e.setStyle(t.padM,\"opacity\",\"0\"),e.setStyle(t.sldM,\"opacity\",\"0\"),t.pad.style.position=\"relative\",t.pad.style.width=d.width+\"px\",t.pad.style.height=d.height+\"px\",t.padPal.draw(d.width,d.height,e.getPadYComponent(d)),t.padB.style.position=\"absolute\",t.padB.style.left=d.padding+\"px\",t.padB.style.top=d.padding+\"px\",t.padB.style.border=d.insetWidth+\"px solid\",t.padB.style.borderColor=d.insetColor,t.padM._jscInstance=d,t.padM._jscControlName=\"pad\",t.padM.style.position=\"absolute\",t.padM.style.left=\"0\",t.padM.style.top=\"0\",t.padM.style.width=d.padding+2*d.insetWidth+d.width+s/2+\"px\",t.padM.style.height=r[1]+\"px\",t.padM.style.cursor=u,t.cross.style.position=\"absolute\",t.cross.style.left=t.cross.style.top=\"0\",t.cross.style.width=t.cross.style.height=i+\"px\",t.crossBY.style.position=t.crossBX.style.position=\"absolute\",t.crossBY.style.background=t.crossBX.style.background=d.pointerBorderColor,t.crossBY.style.width=t.crossBX.style.height=2*d.pointerBorderWidth+d.pointerThickness+\"px\",t.crossBY.style.height=t.crossBX.style.width=i+\"px\",t.crossBY.style.left=t.crossBX.style.top=Math.floor(i/2)-Math.floor(d.pointerThickness/2)-d.pointerBorderWidth+\"px\",t.crossBY.style.top=t.crossBX.style.left=\"0\",t.crossLY.style.position=t.crossLX.style.position=\"absolute\",t.crossLY.style.background=t.crossLX.style.background=d.pointerColor,t.crossLY.style.height=t.crossLX.style.width=i-2*d.pointerBorderWidth+\"px\",t.crossLY.style.width=t.crossLX.style.height=d.pointerThickness+\"px\",t.crossLY.style.left=t.crossLX.style.top=Math.floor(i/2)-Math.floor(d.pointerThickness/2)+\"px\",t.crossLY.style.top=t.crossLX.style.left=d.pointerBorderWidth+\"px\",t.sld.style.overflow=\"hidden\",t.sld.style.width=d.sliderSize+\"px\",t.sld.style.height=d.height+\"px\",t.sldGrad.draw(d.sliderSize,d.height,\"#000\",\"#000\"),t.sldB.style.display=n?\"block\":\"none\",t.sldB.style.position=\"absolute\",t.sldB.style.right=d.padding+\"px\",t.sldB.style.top=d.padding+\"px\",t.sldB.style.border=d.insetWidth+\"px solid\",t.sldB.style.borderColor=d.insetColor,t.sldM._jscInstance=d,t.sldM._jscControlName=\"sld\",t.sldM.style.display=n?\"block\":\"none\",t.sldM.style.position=\"absolute\",t.sldM.style.right=\"0\",t.sldM.style.top=\"0\",t.sldM.style.width=d.sliderSize+s/2+d.padding+2*d.insetWidth+\"px\",t.sldM.style.height=r[1]+\"px\",t.sldM.style.cursor=\"default\",t.sldPtrIB.style.border=t.sldPtrOB.style.border=d.pointerBorderWidth+\"px solid \"+d.pointerBorderColor,t.sldPtrOB.style.position=\"absolute\",t.sldPtrOB.style.left=-(2*d.pointerBorderWidth+d.pointerThickness)+\"px\",t.sldPtrOB.style.top=\"0\",t.sldPtrMB.style.border=d.pointerThickness+\"px solid \"+d.pointerColor,t.sldPtrS.style.width=d.sliderSize+\"px\",t.sldPtrS.style.height=m+\"px\",t.btn.style.display=d.closable?\"block\":\"none\",t.btn.style.position=\"absolute\",t.btn.style.left=d.padding+\"px\",t.btn.style.bottom=d.padding+\"px\",t.btn.style.padding=\"0 15px\",t.btn.style.height=d.buttonHeight+\"px\",t.btn.style.border=d.insetWidth+\"px solid\",l(),t.btn.style.color=d.buttonColor,t.btn.style.font=\"12px sans-serif\",t.btn.style.textAlign=\"center\";try{t.btn.style.cursor=\"pointer\"}catch(c){t.btn.style.cursor=\"hand\"}t.btn.onmousedown=function(){d.hide()},t.btnT.style.lineHeight=d.buttonHeight+\"px\",t.btnT.innerHTML=\"\",t.btnT.appendChild(document.createTextNode(d.closeText)),a(),f(),e.picker.owner&&e.picker.owner!==d&&e.unsetClass(e.picker.owner.targetElement,d.activeClass),e.picker.owner=d,e.isElementType(v,\"body\")?e.redrawPosition():e._drawPosition(d,0,0,\"relative\",!1),t.wrap.parentNode!=v&&v.appendChild(t.wrap),e.setClass(d.targetElement,d.activeClass)}function a(){switch(e.getPadYComponent(d)){case\"s\":var t=1;break;case\"v\":var t=2}var n=Math.round(d.hsv[0]/360*(d.width-1)),r=Math.round((1-d.hsv[t]/100)*(d.height-1)),i=2*d.pointerBorderWidth+d.pointerThickness+2*d.crossSize,o=-Math.floor(i/2);e.picker.cross.style.left=n+o+\"px\",e.picker.cross.style.top=r+o+\"px\";switch(e.getSliderComponent(d)){case\"s\":var u=s(d.hsv[0],100,d.hsv[2]),a=s(d.hsv[0],0,d.hsv[2]),f=\"rgb(\"+Math.round(u[0])+\",\"+Math.round(u[1])+\",\"+Math.round(u[2])+\")\",l=\"rgb(\"+Math.round(a[0])+\",\"+Math.round(a[1])+\",\"+Math.round(a[2])+\")\";e.picker.sldGrad.draw(d.sliderSize,d.height,f,l);break;case\"v\":var c=s(d.hsv[0],d.hsv[1],100),f=\"rgb(\"+Math.round(c[0])+\",\"+Math.round(c[1])+\",\"+Math.round(c[2])+\")\",l=\"#000\";e.picker.sldGrad.draw(d.sliderSize,d.height,f,l)}}function f(){var t=e.getSliderComponent(d);if(t){switch(t){case\"s\":var n=1;break;case\"v\":var n=2}var r=Math.round((1-d.hsv[n]/100)*(d.height-1));e.picker.sldPtrOB.style.top=r-(2*d.pointerBorderWidth+d.pointerThickness)-Math.floor(m/2)+\"px\"}}function l(){return e.picker&&e.picker.owner===d}function c(){d.importColor()}this.value=null,this.valueElement=t,this.styleElement=t,this.required=!0,this.refine=!0,this.hash=!1,this.uppercase=!0,this.onFineChange=null,this.activeClass=\"jscolor-active\",this.minS=0,this.maxS=100,this.minV=0,this.maxV=100,this.hsv=[0,0,100],this.rgb=[255,255,255],this.width=181,this.height=101,this.showOnClick=!0,this.mode=\"HSV\",this.position=\"bottom\",this.smartPosition=!0,this.sliderSize=16,this.crossSize=8,this.closable=!1,this.closeText=\"Close\",this.buttonColor=\"#000000\",this.buttonHeight=18,this.padding=12,this.backgroundColor=\"#FFFFFF\",this.borderWidth=1,this.borderColor=\"#BBBBBB\",this.borderRadius=8,this.insetWidth=1,this.insetColor=\"#BBBBBB\",this.shadow=!0,this.shadowBlur=15,this.shadowColor=\"rgba(0,0,0,0.2)\",this.pointerColor=\"#4C4C4C\",this.pointerBorderColor=\"#FFFFFF\",this.pointerBorderWidth=1,this.pointerThickness=2,this.zIndex=1e3,this.container=null;for(var r in n)n.hasOwnProperty(r)&&(this[r]=n[r]);this.hide=function(){l()&&o()},this.show=function(){u()},this.redraw=function(){l()&&u()},this.importColor=function(){this.valueElement?e.isElementType(this.valueElement,\"input\")?this.refine?!this.required&&/^\\s*$/.test(this.valueElement.value)?(this.valueElement.value=\"\",this.styleElement&&(this.styleElement.style.backgroundImage=this.styleElement._jscOrigStyle.backgroundImage,this.styleElement.style.backgroundColor=this.styleElement._jscOrigStyle.backgroundColor,this.styleElement.style.color=this.styleElement._jscOrigStyle.color),this.exportColor(e.leaveValue|e.leaveStyle)):this.fromString(this.valueElement.value)||this.exportColor():this.fromString(this.valueElement.value,e.leaveValue)||(this.styleElement&&(this.styleElement.style.backgroundImage=this.styleElement._jscOrigStyle.backgroundImage,this.styleElement.style.backgroundColor=this.styleElement._jscOrigStyle.backgroundColor,this.styleElement.style.color=this.styleElement._jscOrigStyle.color),this.exportColor(e.leaveValue|e.leaveStyle)):this.exportColor():this.exportColor()},this.exportColor=function(t){if(!(t&e.leaveValue)&&this.valueElement){var n=this.toString();this.uppercase&&(n=n.toUpperCase()),this.hash&&(n=\"#\"+n),e.isElementType(this.valueElement,\"input\")?this.valueElement.value=n:this.valueElement.innerHTML=n}t&e.leaveStyle||this.styleElement&&(this.styleElement.style.backgroundImage=\"none\",this.styleElement.style.backgroundColor=\"#\"+this.toString(),this.styleElement.style.color=this.isLight()?\"#000\":\"#FFF\"),!(t&e.leavePad)&&l()&&a(),!(t&e.leaveSld)&&l()&&f()},this.fromHSV=function(e,t,n,r){if(e!==null){if(isNaN(e))return!1;e=Math.max(0,Math.min(360,e))}if(t!==null){if(isNaN(t))return!1;t=Math.max(0,Math.min(100,this.maxS,t),this.minS)}if(n!==null){if(isNaN(n))return!1;n=Math.max(0,Math.min(100,this.maxV,n),this.minV)}this.rgb=s(e===null?this.hsv[0]:this.hsv[0]=e,t===null?this.hsv[1]:this.hsv[1]=t,n===null?this.hsv[2]:this.hsv[2]=n),this.exportColor(r)},this.fromRGB=function(e,t,n,r){if(e!==null){if(isNaN(e))return!1;e=Math.max(0,Math.min(255,e))}if(t!==null){if(isNaN(t))return!1;t=Math.max(0,Math.min(255,t))}if(n!==null){if(isNaN(n))return!1;n=Math.max(0,Math.min(255,n))}var o=i(e===null?this.rgb[0]:e,t===null?this.rgb[1]:t,n===null?this.rgb[2]:n);o[0]!==null&&(this.hsv[0]=Math.max(0,Math.min(360,o[0]))),o[2]!==0&&(this.hsv[1]=o[1]===null?null:Math.max(0,this.minS,Math.min(100,this.maxS,o[1]))),this.hsv[2]=o[2]===null?null:Math.max(0,this.minV,Math.min(100,this.maxV,o[2]));var u=s(this.hsv[0],this.hsv[1],this.hsv[2]);this.rgb[0]=u[0],this.rgb[1]=u[1],this.rgb[2]=u[2],this.exportColor(r)},this.fromString=function(e,t){var n;if(n=e.match(/^\\W*([0-9A-F]{3}([0-9A-F]{3})?)\\W*$/i))return n[1].length===6?this.fromRGB(parseInt(n[1].substr(0,2),16),parseInt(n[1].substr(2,2),16),parseInt(n[1].substr(4,2),16),t):this.fromRGB(parseInt(n[1].charAt(0)+n[1].charAt(0),16),parseInt(n[1].charAt(1)+n[1].charAt(1),16),parseInt(n[1].charAt(2)+n[1].charAt(2),16),t),!0;if(n=e.match(/^\\W*rgba?\\(([^)]*)\\)\\W*$/i)){var r=n[1].split(\",\"),i=/^\\s*(\\d*)(\\.\\d+)?\\s*$/,s,o,u;if(r.length>=3&&(s=r[0].match(i))&&(o=r[1].match(i))&&(u=r[2].match(i))){var a=parseFloat((s[1]||\"0\")+(s[2]||\"\")),f=parseFloat((o[1]||\"0\")+(o[2]||\"\")),l=parseFloat((u[1]||\"0\")+(u[2]||\"\"));return this.fromRGB(a,f,l,t),!0}}return!1},this.toString=function(){return(256|Math.round(this.rgb[0])).toString(16).substr(1)+(256|Math.round(this.rgb[1])).toString(16).substr(1)+(256|Math.round(this.rgb[2])).toString(16).substr(1)},this.toHEXString=function(){return\"#\"+this.toString().toUpperCase()},this.toRGBString=function(){return\"rgb(\"+Math.round(this.rgb[0])+\",\"+Math.round(this.rgb[1])+\",\"+Math.round(this.rgb[2])+\")\"},this.isLight=function(){return.213*this.rgb[0]+.715*this.rgb[1]+.072*this.rgb[2]>127.5},this._processParentElementsInDOM=function(){if(this._linkedElementsProcessed)return;this._linkedElementsProcessed=!0;var t=this.targetElement;do{var n=e.getStyle(t);n&&n.position.toLowerCase()===\"fixed\"&&(this.fixed=!0),t!==this.targetElement&&(t._jscEventsAttached||(e.attachEvent(t,\"scroll\",e.onParentScroll),t._jscEventsAttached=!0))}while((t=t.parentNode)&&!e.isElementType(t,\"body\"))};if(typeof t==\"string\"){var h=t,p=document.getElementById(h);p?this.targetElement=p:e.warn(\"Could not find target element with ID '\"+h+\"'\")}else t?this.targetElement=t:e.warn(\"Invalid target element: '\"+t+\"'\");if(this.targetElement._jscLinkedInstance){e.warn(\"Cannot link jscolor twice to the same element. Skipping.\");return}this.targetElement._jscLinkedInstance=this,this.valueElement=e.fetchElement(this.valueElement),this.styleElement=e.fetchElement(this.styleElement);var d=this,v=this.container?e.fetchElement(this.container):document.getElementsByTagName(\"body\")[0],m=3;if(e.isElementType(this.targetElement,\"button\"))if(this.targetElement.onclick){var g=this.targetElement.onclick;this.targetElement.onclick=function(e){return g.call(this,e),!1}}else this.targetElement.onclick=function(){return!1};if(this.valueElement&&e.isElementType(this.valueElement,\"input\")){var y=function(){d.fromString(d.valueElement.value,e.leaveValue),e.dispatchFineChange(d)};e.attachEvent(this.valueElement,\"keyup\",y),e.attachEvent(this.valueElement,\"input\",y),e.attachEvent(this.valueElement,\"blur\",c),this.valueElement.setAttribute(\"autocomplete\",\"off\")}this.styleElement&&(this.styleElement._jscOrigStyle={backgroundImage:this.styleElement.style.backgroundImage,backgroundColor:this.styleElement.style.backgroundColor,color:this.styleElement.style.color}),this.value?this.fromString(this.value)||this.exportColor():this.importColor()}};return e.jscolor.lookupClass=\"jscolor\",e.jscolor.installByClassName=function(t){var n=document.getElementsByTagName(\"input\"),r=document.getElementsByTagName(\"button\");e.tryInstallOnElements(n,t),e.tryInstallOnElements(r,t)},e.register(),e.jscolor}());","Mageplaza_Core/js/help.js":"/**\n * Mageplaza\n *\n * NOTICE OF LICENSE\n *\n * This source file is subject to the mageplaza.com license that is\n * available through the world-wide-web at this URL:\n * https://www.mageplaza.com/LICENSE.txt\n *\n * DISCLAIMER\n *\n * Do not edit or add to this file if you wish to upgrade this extension to newer\n * version in the future.\n *\n * @category Mageplaza\n * @package Mageplaza_Core\n * @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)\n * @license https://www.mageplaza.com/LICENSE.txt\n */\n\nrequire([\n 'jquery',\n 'underscore'\n], function ($, _) {\n 'use strict';\n\n var mpHelpDb = {\n 'admin/system_config/index': [\n {\n 'css_selector': '#general_single_store_mode_enabled',\n 'type': 'link',\n 'text': 'How to enable Single Store Mode, {link}.',\n 'url': 'https://www.mageplaza.com/kb/how-enable-single-store-mode-magento-2.html',\n 'anchor': 'learn more'\n }\n ],\n 'theme/design_config/edit/scope/websites/scope_id': [\n {\n 'css_selector': 'input[name*=\"header_welcome\"]',\n 'type': 'link',\n 'text': 'How to change the welcome message, {link}.',\n 'url': 'https://www.mageplaza.com/kb/how-change-welcome-message-magento-2.html',\n 'anchor': 'learn more'\n }\n ],\n 'system_config/edit/section/contact': [\n {\n 'css_selector': '#contact_contact_enabled',\n 'type': 'link',\n 'text': 'How to configure Contact Us form, {link}.',\n 'url': 'https://www.mageplaza.com/kb/how-configure-contacts-email-address-magento-2.html',\n 'anchor': 'learn more'\n }\n ],\n //Not Configuration\n 'catalog/product/edit': [\n {\n 'css_selector': '#media_gallery_content',\n 'type': 'link',\n 'text': 'How to upload Images Product, {link}.',\n 'url': 'https://www.mageplaza.com/kb/how-to-upload-images-product-in-magento-2.html',\n 'anchor': 'learn more'\n }\n ],\n 'type/configurable/key/': [\n {\n 'css_selector': '.page-actions-placeholder',\n 'type': 'link',\n 'text': 'Create Configurable Product, {link}.',\n 'url': 'https://www.mageplaza.com/kb/how-create-configurable-product-magento-2.html',\n 'anchor': 'learn more'\n }\n ],\n 'system_config/edit/section/general': [\n {\n 'css_selector': '#general_region_state_required',\n 'type': 'link',\n 'text': 'How to setup State, {link}.',\n 'url': 'https://www.mageplaza.com/kb/how-setup-locale-state-country-magento-2.html#set-up-state',\n 'anchor': 'learn more'\n },\n {\n 'css_selector': '#general_country_default',\n 'type': 'link',\n 'text': 'How to setup Country, {link}.',\n 'url': 'https://www.mageplaza.com/kb/how-setup-locale-state-country-magento-2.html#set-up-country',\n 'anchor': 'learn more'\n },\n {\n 'css_selector': '#general_locale_timezone',\n 'type': 'link',\n 'text': 'How to setup Locale, {link}.',\n 'url': 'https://www.mageplaza.com/kb/how-setup-locale-state-country-magento-2.html#login-magento-2',\n 'anchor': 'learn more'\n },\n {\n 'css_selector': '#general_store_information_name',\n 'type': 'link',\n 'text': 'How to setup store information, {link}.',\n 'url': 'https://www.mageplaza.com/kb/how-setup-store-information-magento-2.html',\n 'anchor': 'learn more'\n }\n\n ],\n 'system_config/edit/section/trans_email': [\n {\n 'css_selector': '#trans_email_ident_sales_email',\n 'type': 'link',\n 'text': 'About 79% of visitors drop their shopping cart at the checkout page. This proven abandoned cart email templates that can improve that number, {link}.',\n 'url': 'https://pages.mageplaza.com/abandoned-cart-email-templates-for-magento/',\n 'anchor': 'learn more'\n },\n ],\n 'system_config/edit/section/newsletter': [\n {\n 'css_selector': '#newsletter_subscription_success_email_template',\n 'type': 'link',\n 'text': 'Welcome emails generate 4 times the total open rates and 5 times the click rates compared to other bulk promotions. Get proven welcome email templates, {link}.',\n 'url': 'https://pages.mageplaza.com/welcome-email-templates-for-magento-2/',\n 'anchor': 'get a copy'\n }\n\n\n ],\n 'admin/email_template/new': [\n {\n 'css_selector': '#template_select',\n 'type': 'link',\n 'text': 'Get {link} templates that convert',\n 'url': 'https://pages.mageplaza.com/bundle-of-email-follow-up-templates/',\n 'anchor': 'bundle of follow up emails'\n }\n\n\n ]\n };\n\n function buildHtml(data) {\n var link = '<a href=\"' + data.url + '?utm_source=store&utm_medium=link&utm_campaign=mageplaza-helps\" target=\"_blank\">' + data.anchor + '</a>';\n var text = data.text.replace('{link}', link);\n\n return '<p class=\"note\">' + text + '</p>';\n }\n\n var url = window.location.href;\n for (var path in mpHelpDb) {\n if (mpHelpDb.hasOwnProperty(path) && url.search(path)) {\n var datas = mpHelpDb[path];\n _.each(datas, function (data) {\n var html = buildHtml(data);\n html && $(html).insertAfter(data.css_selector); //only insert if html is not empty\n });\n }\n }\n});","Mageplaza_Core/js/process/popup.js":"/**\n * Mageplaza\n *\n * NOTICE OF LICENSE\n *\n * This source file is subject to the Mageplaza.com license that is\n * available through the world-wide-web at this URL:\n * https://www.mageplaza.com/LICENSE.txt\n *\n * DISCLAIMER\n *\n * Do not edit or add to this file if you wish to upgrade this extension to newer\n * version in the future.\n *\n * @category Mageplaza\n * @package Mageplaza_Core\n * @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)\n * @license https://www.mageplaza.com/LICENSE.txt\n */\n\ndefine([\n 'jquery',\n 'Magento_Ui/js/modal/confirm',\n 'Magento_Ui/js/modal/alert',\n 'Magento_Ui/js/modal/modal'\n], function ($, confirmation, alert) {\n \"use strict\";\n var btnProcess = $('#mp-btn-progress'),\n isStopBtnClicked = false;\n\n $.widget('mageplaza.mpProcessBar', {\n options: {\n index: 0,\n itemError: 0,\n confirmMessage: $.mage.__('Do you want to proceed with the process?')\n },\n\n _create: function () {\n this.initListener();\n },\n\n initListener: function () {\n var self = this;\n\n btnProcess.on('click', function (event) {\n event.preventDefault();\n if (self.options.isEnabled === '0') {\n alert({\n title: $.mage.__('Warning'),\n content: $.mage.__('The module has been disabled.')\n });\n\n return;\n }\n self.openConfirmModal();\n });\n },\n\n openConfirmModal: function () {\n var collection = this.options.collection;\n\n if (collection.length > 0) {\n this.getConfirmModal();\n } else {\n alert({\n title: $.mage.__('Warning'),\n content: $.mage.__('You need to scan all images before starting optimization process.')\n });\n }\n },\n\n getConfirmModal: function () {\n var self = this;\n self.options.index = 0;\n confirmation({\n title: $.mage.__('Action'),\n content: this.options.confirmMessage,\n actions: {\n confirm: function () {\n var processModal = $('#mp-process-modal');\n isStopBtnClicked = false;\n processModal.modal({\n 'type': 'popup',\n 'title': $.mage.__('Processing...'),\n 'responsive': true,\n 'modalClass': 'mp-process-modal-popup',\n 'buttons': [\n {\n text: $.mage.__('Stop'),\n class: 'mp-action-stop action-primary',\n click: function () {\n isStopBtnClicked = true;\n confirmation({\n content: $.mage.__('Are you sure you want to stop processing?'),\n actions: {\n confirm: function () {\n processModal.modal('closeModal');\n },\n cancel: function () {\n isStopBtnClicked = false;\n self.loadAjax();\n }\n }\n });\n }\n },\n {\n text: $.mage.__('Close'),\n class: 'mp-action-close action-secondary',\n click: function () {\n processModal.modal('closeModal');\n }\n },\n {\n text: $.mage.__('Reprocess'),\n class: 'mp-action-reprocess action-primary',\n click: function () {\n self.processLoading();\n }\n }\n ]\n });\n\n $('.action-close').hide();\n $('#mp-process-modal-content').remove();\n $('#mp-process-modal-content-line').remove();\n $('.modal-footer').after('<div id=\"mp-process-modal-content\" style=\"padding: 2rem 3rem;\"></div>')\n .after('<div style=\"padding:0 3rem\"><div id=\"mp-process-modal-content-line\" style=\"height: 1px; background:#DCDCDC;\"></div></div>');\n $('.modal-slide .modal-content').css('padding-bottom', 'unset');\n $('.modal-popup .modal-footer').css('padding-top', 'unset');\n processModal.modal('openModal');\n self.processLoading();\n }\n }\n });\n },\n\n processLoading: function () {\n this.options.index = 0;\n this.options.itemError = 0;\n var parentElement = document.querySelectorAll(\"#mp-error-item\"),\n progressBar = $('#mp-progress-bar');\n parentElement.forEach(function (element) {\n element.parentNode.removeChild(element);\n });\n $('.mp-process-modal-popup .modal-title').text($.mage.__('Processing...'));\n progressBar.width('0%');\n $('#mp-process-modal-percent').text('0/0 (0.00%)');\n progressBar.removeClass('progress-bar-success');\n progressBar.removeClass('progress-bar-danger');\n progressBar.removeClass('progress-bar-info');\n progressBar.addClass('progress-bar-info');\n this.loadAjax();\n },\n\n loadAjax: function () {\n if (isStopBtnClicked) {\n return;\n }\n\n var self = this,\n collection = this.options.collection,\n progressBar = $('#mp-progress-bar'),\n modalPercent = $('#mp-process-modal-percent'),\n item = collection[this.options.index],\n collectionLength = collection.length,\n percent = 100 * (this.options.index + 1) / collectionLength,\n btnClose = $('button.mp-action-close'),\n btnStop = $('button.mp-action-stop'),\n btnReprocess = $('button.mp-action-reprocess'),\n popupTitle = $('.mp-process-modal-popup .modal-title');\n\n btnStop.show();\n btnReprocess.hide();\n btnClose.hide();\n if (this.options.itemError === collectionLength) {\n popupTitle.text($.mage.__('Process failed'));\n btnClose.css({\n 'position': 'relative',\n 'left': '-5px'\n });\n btnStop.hide();\n btnClose.show();\n btnReprocess.show();\n\n return;\n }\n\n if (this.options.index >= collectionLength) {\n if (this.options.itemError !== 0) {\n popupTitle.text($.mage.__('Complete'));\n progressBar.removeClass('progress-bar-info');\n progressBar.addClass('progress-bar-success');\n btnStop.hide();\n btnReprocess.show();\n btnClose.show();\n\n return;\n } else {\n popupTitle.text($.mage.__('Complete'));\n progressBar.removeClass('progress-bar-info');\n progressBar.addClass('progress-bar-success');\n btnStop.hide();\n btnClose.show();\n\n return;\n }\n }\n\n self.options.index++;\n\n return $.ajax({\n url: this.options.url,\n data: {\n item_id: item.id,\n item_name: item.name,\n form_key: window.FORM_KEY\n }\n }).done(function (data) {\n if (data.status === 'Error') {\n self.options.itemError++;\n if (percent === 100 && self.options.itemError === collectionLength) {\n progressBar.removeClass('progress-bar-info');\n progressBar.addClass('progress-bar-danger');\n\n }\n self.getContent(percent, data.item_error, data.status);\n }\n\n progressBar.width(percent.toFixed(2) + '%');\n modalPercent.text(self.options.index + '/' + collectionLength + ' (' + percent.toFixed(2) + '%)');\n\n self.loadAjax();\n }).fail(function (data) {\n self.getContent(percent, data.item_error, data.status);\n self.loadAjax();\n });\n },\n\n getContent: function (percent, itemError, status) {\n var modalContent = $('#mp-process-modal-content');\n\n modalContent.append('<p id=\"mp-error-item\" style=\"text-align: left\">' + '<strong style=\"color: red\">' + status + '</strong>' + ': ' + itemError + '</p>');\n }\n });\n\n return $.mageplaza.mpProcessBar;\n});\n","StripeIntegration_Payments/js/stripe.js":"// Copyright \u00a9 Stripe, Inc\n//\n// @package StripeIntegration_Payments\n// @version 4.2.0\ndefine(\n [\n 'stripejs'\n ],\n function ()\n {\n 'use strict';\n\n // Warning: This file should be kept lightweight as it is loaded on nearly all pages.\n\n return (window.stripe = {\n\n // Properties\n version: \"4.2.0\",\n stripeJs: null,\n\n initStripe: function(params, callback)\n {\n if (typeof callback == \"undefined\")\n callback = null;\n\n var message = null;\n\n if (!this.stripeJs)\n {\n try\n {\n var options = {};\n if (params.options)\n {\n options = params.options;\n }\n\n this.stripeJs = Stripe(params.apiKey, options);\n }\n catch (e)\n {\n if (typeof e != \"undefined\" && typeof e.message != \"undefined\")\n message = 'Could not initialize Stripe.js: ' + e.message;\n else\n message = 'Could not initialize Stripe.js';\n }\n\n if (this.stripeJs && typeof params.appInfo != \"undefined\")\n {\n try\n {\n this.stripeJs.registerAppInfo(params.appInfo);\n }\n catch (e)\n {\n console.warn(e);\n }\n }\n }\n\n if (callback)\n callback(message);\n else if (message)\n console.error(message);\n },\n\n authenticateCustomer: function(intentId, done) {\n try {\n var isPaymentIntent = intentId.startsWith('pi_');\n var isSetupIntent = intentId.startsWith('seti_');\n\n var handleIntent = function(result) {\n if (result.error)\n return done(result.error);\n\n var intent = result.paymentIntent || result.setupIntent;\n var requiresActionStatuses = [\"requires_action\", \"requires_source_action\"];\n\n if (requiresActionStatuses.includes(intent.status))\n {\n if (intent.next_action && intent.next_action.type === \"verify_with_microdeposits\")\n {\n window.location = intent.next_action.verify_with_microdeposits.hosted_verification_url;\n }\n else\n {\n stripe.stripeJs.handleNextAction({\n clientSecret: intent.client_secret\n })\n .then(function(result)\n {\n if (result && result.error)\n {\n return done(result.error.message);\n }\n\n return done();\n });\n }\n }\n else\n {\n return done();\n }\n };\n\n if (isPaymentIntent) {\n this.stripeJs.retrievePaymentIntent(intentId).then(handleIntent);\n } else if (isSetupIntent) {\n this.stripeJs.retrieveSetupIntent(intentId).then(handleIntent);\n } else {\n throw new Error(\"Invalid intent ID\");\n }\n } catch (e) {\n done(e.message);\n }\n }\n });\n }\n);\n","StripeIntegration_Payments/js/admin_cardelement.js":"var billingDetails = null;\nvar cardElement = null;\nvar params = null;\n\nvar getBillingDetails = function()\n{\n if (!order)\n return null;\n\n var data = order.serializeData(order.billingAddressContainer).toObject();\n\n var details = {\n address: {\n city: data[\"order[billing_address][city]\"],\n country: data[\"order[billing_address][country_id]\"],\n line1: data[\"order[billing_address][street][0]\"],\n line2: data[\"order[billing_address][street][1]\"],\n postal_code: data[\"order[billing_address][postcode]\"],\n state: data[\"order[billing_address][region]\"],\n },\n email: jQuery(\"#email\").val(),\n name: data[\"order[billing_address][firstname]\"] + \" \" + data[\"order[billing_address][lastname]\"],\n phone: data[\"order[billing_address][telephone]\"]\n };\n\n return details;\n};\n\nvar disableCardValidation = function()\n{\n // Disable server side card validation\n if (typeof AdminOrder != 'undefined' && AdminOrder.prototype.loadArea && typeof AdminOrder.prototype._loadArea == 'undefined')\n {\n AdminOrder.prototype._loadArea = AdminOrder.prototype.loadArea;\n AdminOrder.prototype.loadArea = function(area, indicator, params)\n {\n if (typeof area == \"object\" && area.indexOf('card_validation') >= 0)\n area = area.splice(area.indexOf('card_validation'), 0);\n\n if (area.length > 0)\n return this._loadArea(area, indicator, params);\n };\n }\n};\n\ndefine([\n 'StripeIntegration_Payments/js/stripe',\n 'jquery',\n 'mage/translate',\n 'domReady!',\n 'mage/mage'\n],\nfunction(stripe, $, $t)\n{\n var params = null;\n\n var hideError = function()\n {\n try\n {\n $('label.stripe.mage-error').hide();\n }\n catch (e)\n {\n\n }\n };\n\n var showError = function(message)\n {\n try\n {\n $('#edit_form').trigger('processStop');\n var errorContainer = $('label.stripe.mage-error')[0];\n $(errorContainer).text(message);\n errorContainer.show();\n $(\"#order-methods\")[0].scrollIntoView({\n behavior: \"smooth\",\n block: \"start\"\n });\n return false;\n }\n catch (e)\n {\n console.warn(message);\n }\n };\n\n var onPaymentMethodChange = function()\n {\n hideError();\n\n if (this.id == 'new_card')\n {\n $(\"#new_card_container\").show();\n }\n else\n {\n $(\"#new_card_container\").hide();\n }\n };\n\n var onCardElementChange = function(event)\n {\n hideError();\n };\n\n var onSubmitOrder = function(e)\n {\n hideError();\n\n var $editForm = $('#edit_form');\n if (!$editForm.valid())\n return;\n\n if (!isStripeMethodSelected())\n return order._submit();\n\n var countSavedMethods = $('div.saved-payment-method-option').length;\n if (countSavedMethods > 0)\n {\n var selection = $('input[name=\"payment[payment_method]\"]:checked');\n if (selection.length == 0)\n {\n return showError($t(\"Please select a payment method.\"));\n }\n\n if (selection[0].id != \"new_card\")\n return order._submit();\n }\n\n $('#edit_form').trigger('processStart');\n var options = {\n type: 'card',\n card: cardElement\n };\n\n var billingDetails = getBillingDetails();\n if (billingDetails)\n options.billing_details = billingDetails;\n\n stripe.stripeJs.createPaymentMethod(options)\n .then(function(result)\n {\n if (result.error)\n {\n return showError(result.error.message);\n }\n\n if (countSavedMethods > 0)\n selection[0].value = result.paymentMethod.id;\n else\n $('input[name=\"payment[payment_method]\"]').val(result.paymentMethod.id);\n\n order._submit();\n });\n\n return false;\n };\n\n var isStripeMethodSelected = function()\n {\n var methods = $('[name^=\"payment[\"]');\n\n if (methods.length === 0)\n return false;\n\n var stripe = methods.filter(function(index, value)\n {\n if (value.id == \"p_method_stripe_payments\")\n return value;\n });\n\n if (stripe.length == 0)\n return false;\n\n return stripe[0].checked;\n };\n\n var initCardElement = function(params)\n {\n // Check if #stripe-card-element is already present\n if ($('#stripe-card-element').length == 0)\n {\n return;\n }\n\n if ($('div.saved-payment-method-option').length == 0)\n {\n $(\"#new_card_container\").show();\n }\n else\n {\n $('input[type=radio][name=\"payment[payment_method]\"]').on('change', onPaymentMethodChange);\n }\n\n var elements = stripe.stripeJs.elements({\n locale: params.locale\n });\n\n var options = {\n hidePostalCode: true,\n style: {\n base: {\n // iconColor: '#c4f0ff',\n // color: '#fff',\n // fontWeight: '500',\n fontFamily: '\"Open Sans\",\"Helvetica Neue\", Helvetica, Arial, sans-serif',\n fontSize: '16px',\n // fontSmoothing: 'antialiased',\n // ':-webkit-autofill': {\n // color: '#fce883',\n // },\n // '::placeholder': {\n // color: '#87BBFD',\n // },\n },\n // invalid: {\n // iconColor: '#FFC7EE',\n // color: '#FFC7EE',\n // },\n }\n };\n\n cardElement = elements.create('card', options);\n cardElement.mount('#stripe-card-element');\n cardElement.on('change', onCardElementChange);\n };\n\n var bindOrderSubmit = function()\n {\n if (typeof order == 'undefined')\n return false;\n\n if (typeof order._submit == \"undefined\")\n {\n order._submit = order.submit;\n }\n\n order.submit = onSubmitOrder;\n\n return true;\n };\n\n var init = function()\n {\n disableCardValidation();\n bindOrderSubmit();\n\n var dataForm = $('#payment_form_stripe_payments');\n dataForm.mage('validation', {});\n\n stripe.initStripe(params, function(err)\n {\n if (err)\n {\n console.error(err);\n return;\n }\n\n initCardElement(params);\n });\n };\n\n return function(config)\n {\n params = config;\n\n // If #order-billing_method_form is already fully rendered, call init\n if (document.getElementById('order-billing_method_form'))\n {\n init();\n }\n\n // When #order-billing_method is re-added to the DOM, call init()\n var observer = new MutationObserver(function(mutations)\n {\n mutations.forEach(function(mutation)\n {\n if (mutation.addedNodes && mutation.addedNodes.length > 0)\n {\n mutation.addedNodes.forEach(function(node)\n {\n if (node.id == 'order-billing_method_form')\n {\n init();\n }\n });\n }\n });\n });\n\n observer.observe(document.body, { childList: true, subtree: true });\n\n return config;\n };\n});\n","StripeIntegration_Payments/js/view/ui_components/setup_element.js":"define(\n [\n 'ko',\n 'uiComponent',\n 'StripeIntegration_Payments/js/action/list-payment-methods',\n 'StripeIntegration_Payments/js/action/add-payment-method',\n 'StripeIntegration_Payments/js/action/delete-payment-method',\n 'StripeIntegration_Payments/js/stripe',\n 'Magento_Ui/js/model/messageList',\n 'Magento_Customer/js/model/customer',\n 'mage/translate',\n 'jquery',\n 'mage/storage',\n 'Magento_Customer/js/customer-data',\n 'Magento_Ui/js/model/messages',\n 'uiLayout'\n ],\n function (\n ko,\n Component,\n listPaymentMethodsAction,\n addPaymentMethodAction,\n deletePaymentMethodAction,\n stripe,\n globalMessageList,\n customer,\n $t,\n $,\n storage,\n customerData,\n messagesModel,\n layout\n ) {\n 'use strict';\n\n return Component.extend({\n externalRedirectUrl: null,\n defaults: {\n template: 'StripeIntegration_Payments/setup_element',\n },\n elements: null,\n initParams: null,\n\n initObservable: function ()\n {\n this._super()\n .observe([\n 'paymentElement',\n 'isPaymentFormComplete',\n 'isPaymentFormVisible',\n 'isLoading',\n 'stripePaymentsError',\n 'permanentError',\n 'isOrderPlaced',\n 'isInitialized',\n 'savedPaymentMethods',\n 'processingSavedPaymentMethods'\n ]);\n\n var self = this;\n\n this.isPaymentFormVisible(false);\n this.isOrderPlaced(false);\n this.isInitialized(false);\n this.processingSavedPaymentMethods(false);\n\n this.hasPaymentMethods = ko.computed(this.hasPaymentMethodsComputed.bind(this));\n\n this.messageContainer = new messagesModel();\n\n var messagesComponent = {\n parent: this.name,\n name: this.name + '.messages',\n displayArea: 'messages',\n component: 'Magento_Ui/js/view/messages',\n config: {\n messageContainer: this.messageContainer,\n autoHideTimeOut: -1\n }\n };\n\n layout([messagesComponent]);\n\n return this;\n },\n\n getStripeParam: function(param)\n {\n if (typeof window.initParams == \"undefined\")\n return null;\n\n if (typeof window.initParams[param] == \"undefined\")\n return null;\n\n return window.initParams[param];\n },\n\n onPaymentElementContainerRendered: function()\n {\n var self = this;\n this.isLoading(true);\n this.listPaymentMethods();\n var initParams = window.initParams;\n\n stripe.initStripe(initParams, function(err)\n {\n if (err)\n return self.crash(err);\n\n self.initSetupElement(initParams);\n });\n },\n\n onContainerRendered: function()\n {\n this.onPaymentElementContainerRendered();\n },\n\n crash: function(message)\n {\n this.isLoading(false);\n this.permanentError($t(\"Sorry, an error has occurred. Please contact us for assistance.\"));\n console.error(\"Error: \" + message);\n },\n\n softCrash: function(message)\n {\n this.showError($t(\"Sorry, an error has occurred. Please contact us for assistance.\"));\n this.stripePaymentsError(message);\n console.error(\"Error: \" + message);\n },\n\n initSetupElement: function(params)\n {\n if (document.getElementById('stripe-setup-element') === null)\n return this.crash(\"Cannot initialize Payment Element on a DOM that does not contain a div.stripe-setup-element.\");\n\n if (!stripe.stripeJs)\n return this.crash(\"Stripe.js could not be initialized.\");\n\n var elements = this.elements = stripe.stripeJs.elements({\n mode: \"setup\",\n setup_future_usage: \"on_session\",\n locale: params.locale,\n currency: params.currency,\n appearance: this.getStripePaymentElementOptions(),\n paymentMethodCreation: \"manual\"\n });\n\n this.paymentElement = elements.create('payment');\n this.paymentElement.mount('#stripe-setup-element');\n this.paymentElement.on('change', this.onChange.bind(this));\n this.isLoading(false);\n },\n\n onChange: function(event)\n {\n this.isLoading(false);\n this.isPaymentFormComplete(event.complete);\n },\n\n getStripePaymentElementOptions: function()\n {\n return {\n theme: 'stripe',\n variables: {\n colorText: '#32325d',\n fontFamily: '\"Open Sans\",\"Helvetica Neue\", Helvetica, Arial, sans-serif',\n },\n };\n },\n\n getAddressField: function(field)\n {\n var address = [];\n\n if (typeof address[field] == \"undefined\")\n return null;\n\n if (typeof address[field] !== \"string\" && typeof address[field] !== \"object\")\n return null;\n\n if (address[field].length == 0)\n return null;\n\n return address[field];\n },\n\n getBillingDetails: function()\n {\n var details = {};\n var address = {};\n\n if (this.getAddressField('city'))\n address.city = this.getAddressField('city');\n\n if (this.getAddressField('countryId'))\n address.country = this.getAddressField('countryId');\n\n if (this.getAddressField('postcode'))\n address.postal_code = this.getAddressField('postcode');\n\n if (this.getAddressField('region'))\n address.state = this.getAddressField('region');\n\n if (this.getAddressField('street'))\n {\n var street = this.getAddressField('street');\n address.line1 = street[0];\n\n if (street.length > 1)\n address.line2 = street[1];\n }\n\n if (Object.keys(address).length > 0)\n details.address = address;\n\n if (this.getAddressField('telephone'))\n details.phone = this.getAddressField('telephone');\n\n if (this.getAddressField('firstname'))\n details.name = this.getAddressField('firstname') + ' ' + this.getAddressField('lastname');\n\n if (customerData.email)\n details.email = customerData.email;\n\n if (Object.keys(details).length > 0)\n return details;\n\n return null;\n },\n\n config: function()\n {\n return self.initParams;\n },\n\n onClick: function(result, outcome, response)\n {\n if (!this.isPaymentFormComplete())\n return this.showError($t('Please complete the payment method details.'));\n\n this.clearErrors();\n\n this.isLoading(true);\n var onPaymentMethodCreated = this.onPaymentMethodCreated.bind(this);\n var onFail = this.onFail.bind(this);\n\n this.createPaymentMethod(onPaymentMethodCreated, onFail);\n },\n\n createPaymentMethod: function(onPaymentMethodCreated, onFail)\n {\n var paymentMethodData = {\n elements: this.elements,\n params: {}\n };\n\n this.elements.submit().then(function()\n {\n stripe.stripeJs.createPaymentMethod(paymentMethodData).then(onPaymentMethodCreated, onFail);\n }, onFail);\n\n },\n\n setNewPaymentMethods: function(newMethods, isDuplicate)\n {\n this.savedPaymentMethods(newMethods);\n\n if (isDuplicate)\n {\n this.showSuccessMessage($t(\"An existing payment method has been updated.\"));\n }\n else\n {\n this.showSuccessMessage($t(\"The payment method has been saved.\"));\n }\n\n this.clearFormData();\n },\n\n onPaymentMethodCreated: function(result)\n {\n var self = this;\n\n if (result.error)\n {\n this.showError(result.error.message);\n }\n else\n {\n addPaymentMethodAction(result.paymentMethod.id, function(response, status, xhr)\n {\n self.isLoading(false);\n if (status == \"success\")\n {\n try\n {\n var data = JSON.parse(response);\n\n var methods = self.savedPaymentMethods();\n if (!methods)\n {\n methods = [];\n }\n\n var isDuplicate = false;\n var newMethods = [];\n\n for (var i in methods)\n {\n if (methods[i].fingerprint != data.fingerprint)\n {\n newMethods.push(methods[i]);\n }\n else\n {\n isDuplicate = true;\n }\n }\n\n newMethods.push(data);\n\n if (data.client_secret)\n {\n stripe.authenticateCustomer(data.client_secret, function(err)\n {\n if (err)\n {\n self.showError($t(\"Sorry, the payment method could not be saved: \" + err));\n return;\n }\n\n self.setNewPaymentMethods(newMethods, isDuplicate);\n });\n }\n else\n {\n self.setNewPaymentMethods(newMethods, isDuplicate);\n }\n }\n catch (e)\n {\n console.warn(e);\n self.showError($t(\"The payment method could not be saved: %1\").replace(\"%1\", e.message));\n }\n }\n else if (response && response.responseJSON && response.responseJSON.message)\n {\n self.showError(response.responseJSON.message);\n }\n else\n {\n self.showError(\"Sorry, the payment methods could not be added.\");\n console.warn(response);\n }\n });\n }\n },\n\n clearFormData: function()\n {\n this.paymentElement.clear();\n $('html, body').animate({ scrollTop: $(\"#my-saved-payment-methods-table\").offset().top - 100}, 500);\n },\n\n onFail: function(result)\n {\n this.showError(\"Could not set up the payment method. Please try again.\");\n console.error(result);\n },\n\n showError: function(message)\n {\n this.isLoading(false);\n this.messageContainer.addErrorMessage({ \"message\": message });\n },\n\n showSuccessMessage: function(message)\n {\n this.isLoading(false);\n this.messageContainer.addSuccessMessage({ \"message\": message });\n },\n\n validate: function(elm)\n {\n return true;\n },\n\n getCode: function()\n {\n return 'stripe_payments';\n },\n\n clearErrors: function()\n {\n this.messageContainer.clear();\n this.stripePaymentsError(null);\n },\n\n hasPaymentMethodsComputed: function()\n {\n return this.savedPaymentMethods() && this.savedPaymentMethods().length > 0;\n },\n\n removePaymentMethod: function(fingerprint)\n {\n var methods = this.savedPaymentMethods();\n if (!methods)\n {\n methods = [];\n }\n\n var newMethods = [];\n\n for (var i in methods)\n {\n if (methods[i].fingerprint != fingerprint)\n {\n newMethods.push(methods[i]);\n }\n }\n\n return newMethods;\n },\n\n deletePaymentMethod: function(paymentMethod)\n {\n var sure = confirm($t(\"Are you sure you want to delete this payment method?\"));\n\n if (!sure)\n return;\n\n var self = this;\n this.processingSavedPaymentMethods(true);\n deletePaymentMethodAction(paymentMethod.id, paymentMethod.fingerprint, function(response, status, xhr)\n {\n self.processingSavedPaymentMethods(false);\n if (status == \"success\")\n {\n try\n {\n var data = JSON.parse(response);\n self.showSuccessMessage(data);\n\n var newMethods = self.removePaymentMethod(paymentMethod.fingerprint);\n self.savedPaymentMethods(newMethods);\n }\n catch (e)\n {\n self.showError($t(\"The payment methods could not be deleted: %1\").replace(\"%1\", e.message));\n }\n }\n else if (response && response.responseJSON && response.responseJSON.message)\n {\n self.showError(response.responseJSON.message);\n }\n else\n {\n self.showError($t(\"The payment methods could not be deleted: %1\").replace(\"%1\", response));\n }\n });\n },\n\n listPaymentMethods: function()\n {\n var self = this;\n this.processingSavedPaymentMethods(true);\n\n listPaymentMethodsAction(function(response, status, xhr)\n {\n self.processingSavedPaymentMethods(false);\n if (status == \"success\")\n {\n try\n {\n var data = JSON.parse(response);\n var methods = [];\n\n for (var fingerprint in data)\n {\n methods.push(data[fingerprint]);\n }\n\n self.savedPaymentMethods(methods);\n }\n catch (e)\n {\n console.warn(e);\n console.warn(response);\n }\n }\n });\n }\n\n });\n }\n);\n","StripeIntegration_Payments/js/action/list-payment-methods.js":"define(\n [\n 'mage/url',\n 'mage/storage'\n ],\n function (\n urlBuilder,\n storage\n ) {\n 'use strict';\n return function (callback)\n {\n var serviceUrl = urlBuilder.build('rest/V1/stripe/payments/list_payment_methods');\n\n return storage.get(serviceUrl).always(callback);\n };\n }\n);\n","StripeIntegration_Payments/js/action/add-payment-method.js":"define(\n [\n 'mage/url',\n 'mage/storage'\n ],\n function (\n urlBuilder,\n storage\n ) {\n 'use strict';\n return function (paymentMethodId, callback)\n {\n var serviceUrl = urlBuilder.build('rest/V1/stripe/payments/add_payment_method');\n\n var payload = {\n paymentMethodId: paymentMethodId\n };\n\n return storage.post(serviceUrl, JSON.stringify(payload)).always(callback);\n };\n }\n);\n","StripeIntegration_Payments/js/action/delete-payment-method.js":"define(\n [\n 'mage/url',\n 'mage/storage'\n ],\n function (\n urlBuilder,\n storage\n ) {\n 'use strict';\n return function (paymentMethodId, fingerprint, callback)\n {\n var serviceUrl = urlBuilder.build('rest/V1/stripe/payments/delete_payment_method');\n\n var payload = {\n paymentMethodId: paymentMethodId\n };\n\n if (fingerprint)\n {\n payload.fingerprint = fingerprint;\n }\n\n return storage.post(serviceUrl, JSON.stringify(payload)).always(callback);\n };\n }\n);\n","StripeIntegration_Payments/js/components/use-config-settings.js":"define([\n 'Magento_Ui/js/form/element/single-checkbox'\n], function (checkbox) {\n 'use strict';\n\n return checkbox.extend({\n defaults: {\n valueFromConfig: '',\n linkedValue: '',\n disableParent: false,\n listens: {\n disabled: 'processState',\n checked: 'processState onCheckedChanged'\n },\n imports: {\n readOnly: 'ns = ${ $.ns }, index = subscription_options:disabled'\n }\n },\n\n /**\n * @returns {Element}\n */\n initObservable: function () {\n return this\n ._super()\n .observe(['valueFromConfig', 'linkedValue', 'disableParent']);\n },\n\n /**\n * Handle checked and disabled changes to calculate disableParent value\n */\n processState: function () {\n this.disableParent(this.checked() || this.readOnly);\n\n if (this.readOnly) {\n this.disable();\n }\n },\n\n /**\n * @inheritdoc\n */\n onCheckedChanged: function (newChecked) {\n if (newChecked) {\n this.linkedValue(this.valueFromConfig());\n }\n\n this._super(newChecked);\n }\n });\n});\n","Webkul_PrivateShop/js/wysiwyg.js":"/**\n * Webkul Software\n *\n * @category Webkul\n * @package Webkul_PrivateShop\n * @author Webkul Software Private Limited\n * @copyright Webkul Software Private Limited (https://webkul.com)\n * @license https://store.webkul.com/license.html\n */\ndefine(\n [\n 'jquery'\n ],\n function ($) {\n $.widget(\n 'webkul.wysiwyg',\n {\n _create: function () {\n $(\".action-show-hide\").click(function(){\n setTimeout(\n function() \n {\n $(\".action-add-image\").css('display','none');\n $(\".mce-container.mce-flow-layout-item.mce-last.mce-btn-group\").css('display','none');\n }, 100);\n });\n setTimeout(\n function() \n {\n $(\".mce-container.mce-flow-layout-item.mce-last.mce-btn-group\").css('display','none');\n }, 300);\n },\n }\n );\n return $.webkul.wysiwyg;\n }\n);\n","Webkul_PrivateShop/js/grid/massactions.js":"/**\n * Webkul Software\n *\n * @category Webkul\n * @package Webkul_PrivateShop\n * @author Webkul Software Private Limited\n * @copyright Webkul Software Private Limited (https://webkul.com)\n * @license https://store.webkul.com/license.html\n */\ndefine([\n 'jquery',\n 'uiRegistry',\n 'mageUtils',\n 'Magento_Ui/js/modal/confirm',\n 'Magento_Ui/js/modal/alert',\n 'Magento_Ui/js/modal/modal',\n 'mage/translate'\n], function (\n $,\n registry,\n utils,\n confirm,\n alert,\n modal,\n $t\n) {\n 'use strict';\n return function (Massaction) {\n return Massaction.extend({\n /**\n * @inheritDoc\n */\n applyAction: function (actionIndex) {\n var data = this.getSelections(),\n action,\n callback;\n\n if (!data.total) {\n alert({\n content: this.noItemsMsg\n });\n\n return this;\n }\n\n action = this.getAction(actionIndex);\n callback = this._getCallback(action, data);\n action.confirm ?\n this._confirm(action, callback) :\n callback();\n if (action.type == 'private_group') {\n registry.get('assign_group_from.assign_group_from.data.ids', function (input) {\n input.value(JSON.stringify(data.selected));\n });\n registry.get('assign_product_from.assign_product_from.data.ids', function (input) {\n input.value(JSON.stringify(data.selected));\n });\n }\n return this;\n }\n });\n }\n });\n","Webkul_PrivateShop/js/components/select.js":"/**\n * Webkul Software\n *\n * @category Webkul\n * @package Webkul_PrivateShop\n * @author Webkul Software Private Limited\n * @copyright Webkul Software Private Limited (https://webkul.com)\n * @license https://store.webkul.com/license.html\n */\ndefine([\n 'uiRegistry',\n 'Magento_Ui/js/form/element/select'\n], function (registry, Select) {\n 'use strict';\n return Select.extend({\n initialize: function () {\n var self = this;\n registry.get('product_form.product_form.product-details.container_is_private_product.is_private_product', function (input) {\n if (parseInt(input.value()) == 1) {\n registry.get('product_form.product_form.product-details.parent2', function (parent2) {\n parent2.setVisible(true);\n });\n registry.get('product_form.product_form.product-details.parent', function (parent) {\n parent.setVisible(false);\n });\n } else {\n registry.get('product_form.product_form.product-details.parent', function (parent) {\n parent.setVisible(true);\n });\n registry.get('product_form.product_form.product-details.parent2', function (parent2) {\n parent2.setVisible(false);\n });\n }\n input.value.subscribe(function (newValue) {\n if (parseInt(newValue) == 1) {\n registry.get('product_form.product_form.product-details.parent2', function (parent2) {\n parent2.setVisible(true);\n });\n registry.get('product_form.product_form.product-details.parent', function (parent) {\n parent.setVisible(false);\n });\n } else {\n registry.get('product_form.product_form.product-details.parent', function (parent) {\n parent.setVisible(true);\n });\n registry.get('product_form.product_form.product-details.parent2', function (parent2) {\n parent2.setVisible(false);\n });\n }\n })\n });\n this._super();\n }\n });\n});\n","Webkul_PrivateShop/js/components/assign-group.js":"/**\n * Webkul Software\n *\n * @category Webkul\n * @package Webkul_PrivateShop\n * @author Webkul Software Private Limited\n * @copyright Webkul Software Private Limited (https://webkul.com)\n * @license https://store.webkul.com/license.html\n */\ndefine([\n 'Magento_Ui/js/form/element/ui-select',\n 'uiRegistry'\n], function (Select, registry) {\n 'use strict';\n return Select.extend({\n\n defaults: {\n imports: {\n update: 'product_form.product_form.product-details.container_is_private_product.is_private_product:value',\n customerUpdate: 'customer_form.customer_form_data_source:data.private_shop.data:value'\n }\n },\n\n initialize: function () {\n this._super();\n },\n\n /**\n * @param {String} value\n */\n update: function (value) {\n if (value == 1) {\n this.validation = { 'required-entry': true }\n } else {\n this.validation = { 'required-entry': false }\n }\n },\n customerUpdate: function (value) {\n if(registry.get('index = is_groups_data') !== undefined){\n registry.get('index = is_groups_data').value(this.hasData());\n }\n },\n\n /**\n * Parse data and set it to options.\n *\n * @param {Object} data - Response data object.\n * @returns {Object}\n */\n setParsed: function (data) {\n var option = this.parseData(data);\n if (data.error) {\n return this;\n }\n this.options([]);\n this.setOption(option);\n this.set('newOption', option);\n },\n /**\n * Normalize option object.\n *\n * @param {Object} data - Option object.\n * @returns {Object}\n */\n parseData: function (data) {\n return {\n value: data.customer.entity_id,\n label: data.customer.name\n };\n }\n });\n});\n","Webkul_PrivateShop/js/form/element/store-select.js":"/**\n * Webkul Software\n *\n * @category Webkul\n * @package Webkul_PrivateShop\n * @author Webkul Software Private Limited\n * @copyright Webkul Software Private Limited (https://webkul.com)\n * @license https://store.webkul.com/license.html\n */\ndefine([\n 'jquery',\n 'underscore',\n 'uiRegistry',\n 'Magento_Ui/js/form/element/select',\n 'mage/url'\n], function ($, _, uiRegistry, select, url) {\n 'use strict';\n return select.extend({\n\n initialize: function (){\n var status = this._super().initialValue;\n this.fieldDepend(status);\n return this;\n },\n\n\n /**\n * On value change handler.\n *\n * @param {String} value\n */\n onUpdate: function (value) {\n\n this.fieldDepend(value);\n return this._super();\n },\n\n /**\n * Update field dependency\n *\n * @param {String} value\n */\n fieldDepend: function (value) {\n setTimeout(function () {\n var selectType = uiRegistry.get('index = storeviews');\n if(selectType) {\n $.ajax({\n success:(function (data) {\n selectType.show();\n })\n });\n } \n }, 500);\n return this;\n }\n });\n});","Magento_AsynchronousOperations/js/insert-form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/components/insert-form',\n 'uiRegistry'\n], function (Insert, registry) {\n 'use strict';\n\n return Insert.extend({\n defaults: {\n modalProvider: '${ $.parentName }',\n titlePrefix: '',\n imports: {\n changeModalTitle: '${ $.modalProvider }:state'\n },\n listens: {\n responseData: 'afterRetry'\n },\n modules: {\n modal: '${ $.modalProvider }',\n notificationListing: '${ $.columnsProvider }'\n }\n },\n\n /** @inheritdoc */\n initConfig: function () {\n var modalTitleProvider;\n\n this._super();\n modalTitleProvider = this.modalTitleProvider.split(':');\n this.modalTitleTarget = modalTitleProvider[0];\n this.modalTitlePath = modalTitleProvider[1];\n },\n\n /**\n * Change modal title.\n *\n * @param {Boolean} change\n */\n changeModalTitle: function (change) {\n if (change) {\n registry.get(this.modalTitleTarget, function (target) {\n this.modal().setTitle(this.titlePrefix + target.get(this.modalTitlePath));\n }.bind(this));\n } else {\n this.modal().setTitle('');\n }\n },\n\n /**\n * Action after retry operation.\n *\n * @param {Object} data\n */\n afterRetry: function (data) {\n if (!data.error) {\n this.modal().closeModal();\n this.notificationListing().reload();\n }\n }\n });\n});\n","Magento_AsynchronousOperations/js/grid/listing.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_AdminNotification/js/grid/listing',\n 'Magento_Ui/js/modal/alert',\n 'mage/translate',\n 'underscore',\n 'jquery'\n], function (Listing, uiAlert, $t, _, $) {\n 'use strict';\n\n return Listing.extend({\n defaults: {\n isAllowed: true,\n ajaxSettings: {\n method: 'POST',\n data: {},\n url: '${ $.dismissUrl }'\n }\n },\n\n /** @inheritdoc */\n initialize: function () {\n _.bindAll(this, 'reload', 'onError');\n\n return this._super();\n },\n\n /**\n * Dismiss all items.\n */\n dismissAll: function () {\n var toDismiss = [];\n\n _.each(this.rows, function (row) {\n if (row.dismiss) {\n toDismiss.push(row.uuid);\n }\n });\n toDismiss.length && this.dismiss(toDismiss);\n },\n\n /**\n * Dismiss action.\n *\n * @param {Array} items\n */\n dismiss: function (items) {\n var config = _.extend({}, this.ajaxSettings);\n\n config.data.uuid = items;\n this.showLoader();\n\n $.ajax(config)\n .done(this.reload)\n .fail(this.onError);\n },\n\n /**\n * Success callback for dismiss request.\n */\n reload: function () {\n this.source.reload({\n refresh: true\n });\n },\n\n /**\n * Error callback for dismiss request.\n *\n * @param {Object} xhr\n */\n onError: function (xhr) {\n this.hideLoader();\n\n if (xhr.statusText === 'abort') {\n return;\n }\n\n uiAlert({\n content: $t('Something went wrong.')\n });\n }\n });\n});\n","Magento_AsynchronousOperations/js/form/error.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/element/abstract'\n], function (Abstract) {\n 'use strict';\n\n return Abstract.extend({\n /** @inheritdoc */\n onUpdate: function () {\n this.bubble('update', this.hasChanged());\n }\n });\n});\n","Magento_Backend/js/delete-with-confirm.js":"/**\n *\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery',\n 'Magento_Backend/js/validate-store'\n], function ($, validateStore) {\n 'use strict';\n\n $.widget('mage.deleteWithConfirm', validateStore, {});\n\n return $.mage.deleteWithConfirm;\n});\n","Magento_Backend/js/save-with-confirm.js":"/**\n *\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery',\n 'Magento_Backend/js/validate-store'\n], function ($, validateStore) {\n 'use strict';\n\n $.widget('mage.saveWithConfirm', validateStore, {\n\n /**\n * Check is it need to show confirmation popup\n *\n * @returns {Boolean}\n */\n _needConfirm: function () {\n\n var storeData = this.settings.storeData,\n\n /* edit store view*/\n storeViewEdit = $('[name=\"store[store_id]\"]').length,\n groupId = $('[name=\"store[group_id]\"]').val(),\n isNewStoreView = !$('[name=\"store[store_id]\"]').val(),\n\n /* edit store */\n storeEdit = $('[name=\"group[group_id]\"]').length,\n storeId = $('[name=\"group[group_id]\"]').val(),\n rootCategoryId = $('[name=\"group[root_category_id]\"]').val(),\n defaultStoreView = $('[name=\"group[default_store_id]\"]').val(),\n\n /* edit website */\n websiteEdit = $('[name=\"website[website_id]\"]').length,\n defaultStore = $('[name=\"website[default_group_id]\"]').val(),\n\n /* conditions */\n storeViewUpdated = storeViewEdit && (isNewStoreView || storeData['group_id'] !== groupId),\n storeUpdated = storeEdit && storeId &&\n (rootCategoryId !== null && storeData['root_category_id'] !== rootCategoryId ||\n defaultStoreView !== null && storeData['default_store_id'] !== defaultStoreView),\n websiteUpdated = websiteEdit && defaultStore !== null && storeData['default_group_id'] !== defaultStore;\n\n return storeViewUpdated || storeUpdated || websiteUpdated;\n }\n });\n\n return $.mage.saveWithConfirm;\n});\n","Magento_Backend/js/media-uploader.js":"/**\n *\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\n\n/*global byteConvert*/\ndefine([\n 'jquery',\n 'mage/template',\n 'Magento_Ui/js/modal/alert',\n 'Magento_Ui/js/form/element/file-uploader',\n 'mage/translate',\n 'jquery/file-uploader'\n], function ($, mageTemplate, alert, FileUploader) {\n 'use strict';\n\n var fileUploader = new FileUploader({\n dataScope: '',\n isMultipleFiles: true\n });\n\n fileUploader.initUploader();\n\n $.widget('mage.mediaUploader', {\n\n /**\n *\n * @private\n */\n _create: function () {\n var self = this,\n progressTmpl = mageTemplate('[data-template=\"uploader\"]'),\n isResizeEnabled = this.options.isResizeEnabled,\n resizeConfiguration = {\n action: 'resizeImage',\n maxWidth: this.options.maxWidth,\n maxHeight: this.options.maxHeight\n };\n\n if (!isResizeEnabled) {\n resizeConfiguration = {\n action: 'resizeImage'\n };\n }\n\n this.element.find('input[type=file]').fileupload({\n dataType: 'json',\n formData: {\n 'form_key': window.FORM_KEY\n },\n dropZone: this.element.find('input[type=file]').closest('[role=\"dialog\"]'),\n sequentialUploads: true,\n acceptFileTypes: /(\\.|\\/)(gif|jpe?g|png)$/i,\n maxFileSize: this.options.maxFileSize,\n\n /**\n * @param {Object} e\n * @param {Object} data\n */\n add: function (e, data) {\n var fileSize,\n tmpl;\n\n $.each(data.files, function (index, file) {\n fileSize = typeof file.size == 'undefined' ?\n $.mage.__('We could not detect a size.') :\n byteConvert(file.size);\n\n data.fileId = Math.random().toString(33).substr(2, 18);\n\n tmpl = progressTmpl({\n data: {\n name: file.name,\n size: fileSize,\n id: data.fileId\n }\n });\n\n $(tmpl).appendTo(self.element);\n });\n\n $(this).fileupload('process', data).done(function () {\n data.submit();\n });\n },\n\n /**\n * @param {Object} e\n * @param {Object} data\n */\n done: function (e, data) {\n if (data.result && !data.result.error) {\n self.element.trigger('addItem', data.result);\n } else {\n fileUploader.aggregateError(data.files[0].name, data.result.error);\n }\n\n self.element.find('#' + data.fileId).remove();\n },\n\n /**\n * @param {Object} e\n * @param {Object} data\n */\n progress: function (e, data) {\n var progress = parseInt(data.loaded / data.total * 100, 10),\n progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar';\n\n self.element.find(progressSelector).css('width', progress + '%');\n },\n\n /**\n * @param {Object} e\n * @param {Object} data\n */\n fail: function (e, data) {\n var progressSelector = '#' + data.fileId;\n\n self.element.find(progressSelector).removeClass('upload-progress').addClass('upload-failure')\n .delay(2000)\n .hide('highlight')\n .remove();\n },\n\n stop: fileUploader.uploaderConfig.stop\n });\n\n this.element.find('input[type=file]').fileupload('option', {\n processQueue: [{\n action: 'loadImage',\n fileTypes: /^image\\/(gif|jpeg|png)$/\n },\n resizeConfiguration,\n {\n action: 'saveImage'\n }]\n });\n }\n });\n\n return $.mage.mediaUploader;\n});\n","Magento_Backend/js/validate-store.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery',\n 'jquery/ui',\n 'mage/dataPost',\n 'mage/backend/validation',\n 'Magento_Ui/js/modal/confirm'\n], function ($, jqueryUi, dataPost, validation, modalConfirm) {\n 'use strict';\n\n $.widget('mage.storeValidation', {\n\n /**\n * Validation creation\n * @protected\n */\n _create: function () {\n var form = this.element[0],\n validator = $.data(form, 'validator');\n\n if (validator && validator.settings) {\n validator.settings.submitHandler = this._saveHandler;\n validator.settings.confirmCallback = this._needConfirm;\n $.extend(validator.settings, this.options);\n $.data(form, 'validator', validator);\n }\n },\n\n /**\n * Check is it need to show confirmation popup\n *\n * @returns {Boolean}\n */\n _needConfirm: function () {\n return true;\n },\n\n /**\n * Save form with confirmation if needed\n *\n * @param {Object} form\n * @private\n */\n _saveHandler: function (form) {\n var formData = {},\n requestData = {},\n options = $.data(form, 'validator').settings;\n\n if ($(form).validation('isValid')) {\n $.each($(form).serializeArray(), function () {\n formData[this.name] = this.value || '';\n });\n requestData = {\n action: $(form).attr('action'),\n data: formData\n };\n\n if (options.confirmCallback.call(this)) {\n modalConfirm({\n title: $.mage.__('Warning message'),\n content: $.mage.__('This operation can take a long time'),\n actions: {\n /**\n * 'Confirm' action handler.\n */\n confirm: function () {\n $('body').trigger('processStart');\n dataPost().postData(requestData);\n }\n }\n });\n } else {\n dataPost().postData(requestData);\n }\n }\n }\n });\n\n return $.mage.storeValidation;\n});\n","Magento_Backend/js/store-switcher.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'jquery'\n], function ($) {\n 'use strict';\n\n /**\n * @param {Object} storeSwitchConfig\n */\n return function (storeSwitchConfig) {\n var scopeSwitcherHandler;\n\n (function () {\n var storesList = $('[data-role=stores-list]');\n\n storesList.on('click', '[data-value]', function (event) {\n var val = $(event.target).data('value'),\n role = $(event.target).data('role'),\n switcher = $('[data-role=' + role + ']');\n\n event.preventDefault();\n\n if (!switcher.val() || val !== switcher.val()) {\n\n /* Set the value & trigger event */\n switcher.val(val).trigger('change');\n }\n });\n })($);\n\n /**\n * Switch store scope\n *\n * @param {Object} obj\n * @return void\n */\n function switchScope(obj) {\n var switcher = $(obj),\n scopeId = switcher.val(),\n scopeParams = '',\n switcherParams = {};\n\n if (scopeId) {\n scopeParams = switcher.data('param') + '/' + scopeId + '/';\n }\n\n if (obj.switchParams) {\n scopeParams += obj.switchParams;\n }\n\n /**\n * Reload function for switcher\n */\n function reload() {\n var url;\n\n if (!storeSwitchConfig.isUsingIframe) {\n\n if (storeSwitchConfig.switchUrl && storeSwitchConfig.switchUrl.length > 0) {\n url = storeSwitchConfig.switchUrl + scopeParams;\n\n /* eslint-disable no-undef */\n setLocation(url);\n }\n\n } else {\n $('#preview_selected_store').val(scopeId);\n $('#preview_form').trigger('submit');\n\n $('.store-switcher .dropdown-menu li a').each(function () {\n var $this = $(this);\n\n if ($this.data('role') === 'store-view-id' && $this.data('value') === scopeId) {\n $('#store-change-button').html($this.text());\n }\n });\n\n $('#store-change-button').trigger('click');\n }\n }\n\n if (typeof scopeSwitcherHandler !== 'undefined') {\n switcherParams = {\n scopeId: scopeId,\n scopeParams: scopeParams,\n useConfirm: storeSwitchConfig.useConfirm\n };\n\n scopeSwitcherHandler(switcherParams);\n } else if (storeSwitchConfig.useConfirm) {\n require([\n 'Magento_Ui/js/modal/confirm',\n 'mage/translate'\n ], function (confirm, $t) {\n confirm({\n content: $t('Please confirm scope switching. All data that hasn\\'t been saved will be lost.'),\n actions: {\n\n /**\n * Confirm action\n */\n confirm: function () {\n reload();\n },\n\n /**\n * Cancel action\n */\n cancel: function () {\n obj.value = storeSwitchConfig.storeId ? storeSwitchConfig.storeId : '';\n }\n }\n });\n });\n } else {\n reload();\n }\n }\n\n window.scopeSwitcherHandler = scopeSwitcherHandler;\n window.switchScope = switchScope;\n };\n});\n","Magento_Backend/js/translate.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/* eslint-disable strict */\ndefine([\n 'jquery',\n 'mage/mage'\n], function ($) {\n $.extend(true, $, {\n mage: {\n translate: (function () {\n /**\n * Key-value translations storage\n * @type {Object}\n * @private\n */\n var _data = {};\n\n /**\n * Add new translation (two string parameters) or several translations (object)\n */\n this.add = function () {\n if (arguments.length > 1) {\n _data[arguments[0]] = arguments[1];\n } else if (typeof arguments[0] === 'object') {\n $.extend(_data, arguments[0]);\n }\n };\n\n /**\n * Make a translation with parsing (to handle case when _data represents tuple)\n * @param {String} text\n * @return {String}\n */\n this.translate = function (text) {\n return typeof _data[text] === 'string' ? _data[text] : text;\n };\n\n return this;\n }())\n }\n });\n $.mage.__ = $.proxy($.mage.translate.translate, $.mage.translate);\n\n return $.mage.__;\n});\n","Magento_Backend/js/dashboard/chart.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/*global FORM_KEY*/\ndefine([\n 'jquery',\n 'chartJs',\n 'jquery-ui-modules/widget',\n 'chartjs/chartjs-adapter-moment',\n 'chartjs/es6-shim.min',\n 'moment'\n], function ($, Chart) {\n 'use strict';\n\n $.widget('mage.dashboardChart', {\n options: {\n updateUrl: '',\n periodSelect: null,\n periodUnits: [],\n precision: 0,\n type: ''\n },\n chart: null,\n\n /**\n * @private\n */\n _create: function () {\n this.createChart();\n\n if (this.options.periodSelect) {\n $(document).on('change', this.options.periodSelect, this.refreshChartData.bind(this));\n\n this.period = $(this.options.periodSelect).val();\n }\n },\n\n /**\n * @public\n */\n createChart: function () {\n this.chart = new Chart(this.element, this.getChartSettings());\n this.refreshChartData();\n },\n\n /**\n * @public\n */\n refreshChartData: function () {\n var data = {\n 'form_key': FORM_KEY\n };\n\n if (this.options.periodSelect) {\n this.period = data.period = $(this.options.periodSelect).val();\n }\n\n $.ajax({\n url: this.options.updateUrl,\n showLoader: true,\n data: data,\n dataType: 'json',\n type: 'POST',\n success: this.updateChart.bind(this)\n });\n },\n\n /**\n * @public\n * @param {Object} response\n */\n updateChart: function (response) {\n $(this.element).toggle(response.data.length > 0);\n $(this.element).next('.dashboard-diagram-nodata').toggle(response.data.length === 0);\n\n this.chart.options.scales.xAxis.time.unit = this.options.periodUnits[this.period] ?\n this.options.periodUnits[this.period] : 'hour';\n this.chart.data.datasets[0].data = response.data;\n this.chart.data.datasets[0].label = response.label;\n this.chart.update();\n },\n\n /**\n * @returns {Object} chart object configuration\n */\n getChartSettings: function () {\n return {\n type: 'bar',\n data: {\n datasets: [{\n yAxisID: 'yAxis',\n xAxisID: 'xAxis',\n data: [],\n backgroundColor: '#f1d4b3',\n borderColor: '#eb5202',\n borderWidth: 1\n }]\n },\n options: {\n legend: {\n onClick: this.handleChartLegendClick,\n position: 'bottom'\n },\n scales: {\n xAxis: {\n offset: true,\n type: 'time',\n ticks: {\n source: 'data'\n }\n },\n yAxis: {\n ticks: {\n beginAtZero: true,\n precision: this.options.precision\n }\n }\n }\n }\n };\n },\n\n /**\n * @public\n */\n handleChartLegendClick: function () {\n // don't hide dataset on clicking into legend item\n }\n });\n\n return $.mage.dashboardChart;\n});\n","Magento_Backend/js/dashboard/totals.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/*global FORM_KEY*/\ndefine([\n 'jquery',\n 'jquery-ui-modules/widget'\n], function ($) {\n 'use strict';\n\n $.widget('mage.dashboardTotals', {\n options: {\n updateUrl: '',\n periodSelect: null\n },\n elementId: null,\n\n /**\n * @private\n */\n _create: function () {\n this.elementId = $(this.element).attr('id');\n\n if (this.options.periodSelect) {\n $(document).on('change', this.options.periodSelect, $.proxy(function () {\n this.refreshTotals();\n }, this));\n }\n },\n\n /**\n * @public\n */\n refreshTotals: function () {\n var periodParam = '';\n\n if (this.options.periodSelect && $(this.options.periodSelect).val()) {\n periodParam = 'period/' + $(this.options.periodSelect).val() + '/';\n }\n\n $.ajax({\n url: this.options.updateUrl + periodParam,\n showLoader: true,\n data: {\n 'form_key': FORM_KEY\n },\n dataType: 'html',\n type: 'POST',\n success: $.proxy(function (response) {\n $('#' + this.elementId).replaceWith(response);\n }, this)\n });\n }\n });\n\n return $.mage.dashboardTotals;\n});\n","Magento_Backend/js/bootstrap/editor.js":"/**\n *\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\nrequire([\n 'Magento_Variable/variables',\n 'mage/adminhtml/browser'\n]);\n","Magento_Sales/order/giftoptions_tooltip.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'prototype'\n], function () {\n 'use strict';\n\n var GiftOptionsTooltip = Class.create();\n\n GiftOptionsTooltip.prototype = {\n _tooltipLines: [],\n _tooltipWindow: null,\n _tooltipWindowContent: null,\n _targetLinks: [],\n _eventMouseOver: null,\n _eventMouseOut: null,\n _styleOptions: null,\n _tooltipContentLoaderFunction: null,\n\n /**\n * Initialize tooltip object\n */\n initialize: function () {\n var options = Object.extend({\n 'delta_x': 30,\n 'delta_y': 0,\n zindex: 1000\n });\n\n this._styleOptions = options;\n this._eventMouseOver = this.showTooltip.bindAsEventListener(this);\n this._eventMouseOut = this.hideTooltip.bindAsEventListener(this);\n },\n\n /**\n * Set gift options tooltip window\n *\n * @param {String} windowId\n * @param {String} contentId\n *\n * @return boolean success\n */\n setTooltipWindow: function (windowId, contentId) {\n if (!$(windowId) || !$(contentId)) {\n return false;\n }\n this._tooltipWindow = $(windowId);\n this._tooltipWindowContent = $(contentId);\n $(document.body).insert({\n bottom: this._tooltipWindow\n });\n this.hideTooltip();\n\n return true;\n },\n\n /**\n * Add tooltip to specified link\n *\n * @param {String} linkId\n * @param {String} itemId - identifier of the item related to link\n *\n * @return boolean success\n */\n addTargetLink: function (linkId, itemId) {\n if ($(linkId)) {\n this._targetLinks[linkId] = [];\n this._targetLinks[linkId].object = $(linkId);\n this._targetLinks[linkId].itemId = itemId;\n this._registerEvents(this._targetLinks[linkId].object);\n\n return true;\n }\n\n return false;\n },\n\n /**\n * Detach event listeners from target links when tooltip is destroyed\n */\n destroy: function () {\n var linkId;\n\n for (linkId in this._targetLinks) { //eslint-disable-line guard-for-in\n Event.stopObserving(this._targetLinks[linkId].object, 'mouseover', this._eventMouseOver);\n Event.stopObserving(this._targetLinks[linkId].object, 'mouseout', this._eventMouseOut);\n }\n },\n\n /**\n * Register event listeners\n *\n * @param {HTMLElement} element\n */\n _registerEvents: function (element) {\n Event.observe(element, 'mouseover', this._eventMouseOver);\n Event.observe(element, 'mouseout', this._eventMouseOut);\n },\n\n /**\n * Move tooltip to mouse position\n *\n * @param {Prototype.Event} event\n */\n _moveTooltip: function (event) {\n var mouseX, mouseY;\n\n Event.stop(event);\n mouseX = Event.pointerX(event);\n mouseY = Event.pointerY(event);\n\n this.setStyles(mouseX, mouseY);\n },\n\n /**\n * Show tooltip\n *\n * @param {Object} event\n *\n * @return boolean success\n */\n showTooltip: function (event) {\n var link, itemId, tooltipContent;\n\n Event.stop(event);\n\n if (this._tooltipWindow) {\n link = Event.element(event);\n itemId = this._targetLinks[link.id].itemId;\n tooltipContent = '';\n\n if (Object.isFunction(this._tooltipContentLoaderFunction)) {\n tooltipContent = this._tooltipContentLoaderFunction(itemId);\n }\n\n if (tooltipContent != '') { //eslint-disable-line eqeqeq\n this._updateTooltipWindowContent(tooltipContent);\n this._moveTooltip(event);\n new Element.show(this._tooltipWindow);\n\n return true;\n }\n }\n\n return false;\n },\n\n /**\n * Set tooltip window styles\n *\n * @param {Number} x\n * @param {Number} y\n */\n setStyles: function (x, y) {\n Element.setStyle(this._tooltipWindow, {\n position: 'absolute',\n top: y + this._styleOptions['delta_y'] + 'px',\n left: x + this._styleOptions['delta_x'] + 'px',\n zindex: this._styleOptions.zindex\n });\n },\n\n /**\n * Hide tooltip\n */\n hideTooltip: function () {\n if (this._tooltipWindow) {\n new Element.hide(this._tooltipWindow);\n }\n },\n\n /**\n * Set gift options tooltip content loader function\n * This function should accept at least one parameter that will serve as an item ID\n *\n * @param {Function} loaderFunction - loader function\n */\n setTooltipContentLoaderFunction: function (loaderFunction) {\n this._tooltipContentLoaderFunction = loaderFunction;\n },\n\n /**\n * Update tooltip window content\n *\n * @param {String} content\n */\n _updateTooltipWindowContent: function (content) {\n this._tooltipWindowContent.update(content);\n }\n };\n\n window.giftOptionsTooltip = new GiftOptionsTooltip();\n});\n","Magento_Sales/order/view/post-wrapper.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'jquery',\n 'Magento_Ui/js/modal/confirm',\n 'mage/translate'\n], function ($, confirm) {\n 'use strict';\n\n /**\n * @param {String} url\n * @returns {jQuery}\n */\n function getForm(url) {\n return $('<form>', {\n 'action': url,\n 'method': 'POST'\n }).append($('<input>', {\n 'name': 'form_key',\n 'value': window.FORM_KEY,\n 'type': 'hidden'\n }));\n }\n\n $(document).on('click', '#order-view-cancel-button', function () {\n var msg = $.mage.__('Are you sure you want to cancel this order?'),\n url = $('#order-view-cancel-button').data('url');\n\n confirm({\n 'content': msg,\n 'actions': {\n\n /**\n * 'Confirm' action handler.\n */\n confirm: function () {\n getForm(url).appendTo('body').trigger('submit');\n }\n }\n });\n\n return false;\n });\n\n $(document).on('click', '#order-view-hold-button', function () {\n var url = $('#order-view-hold-button').data('url');\n\n getForm(url).appendTo('body').trigger('submit');\n });\n\n $(document).on('click', '#order-view-unhold-button', function () {\n var url = $('#order-view-unhold-button').data('url');\n\n getForm(url).appendTo('body').trigger('submit');\n });\n});\n","Magento_Sales/order/create/form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/* global AdminOrder */\ndefine([\n 'jquery',\n 'Magento_Sales/order/create/scripts'\n], function (jQuery) {\n 'use strict';\n\n var $el = jQuery('#edit_form'),\n config,\n baseUrl,\n order,\n payment;\n\n if (!$el.length || !$el.data('order-config')) {\n return;\n }\n\n config = $el.data('order-config');\n baseUrl = $el.data('load-base-url');\n\n order = new AdminOrder(config);\n order.setLoadBaseUrl(baseUrl);\n\n payment = {\n switchMethod: order.switchPaymentMethod.bind(order)\n };\n\n window.order = order;\n window.payment = payment;\n});\n","Magento_Sales/order/create/giftmessage.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n/********************* GIFT OPTIONS POPUP ***********************/\n/********************* GIFT OPTIONS SET ***********************/\n\ndefine([\n 'jquery',\n 'jquery/ui',\n 'mage/translate',\n 'mage/validation',\n 'prototype'\n], function (jQuery) {\n\n window.giftMessagesController = {\n toogleRequired: function (source, objects) {\n if (!$(source).value.blank()) {\n objects.each(function (item) {\n $(item).addClassName('required-entry');\n var label = findFieldLabel($(item));\n\n if (label) {\n var span = label.down('span');\n\n if (!span) {\n Element.insert(label, {\n bottom: ' <span class=\"required\">*</span>'\n });\n }\n }\n });\n } else {\n objects.each(function (item) {\n if ($(source).formObj && $(source).formObj.validator) {\n $(source).formObj.validator.reset(item);\n }\n $(item).removeClassName('required-entry');\n var label = findFieldLabel($(item));\n\n if (label) {\n var span = label.down('span');\n\n if (span) {\n Element.remove(span);\n }\n }\n // Hide validation advices if exist\n if ($(item) && $(item).advices) {\n $(item).advices.each(function (pair) {\n if (pair.value != null) pair.value.hide();\n });\n }\n });\n }\n },\n toogleGiftMessage: function (container) {\n if (!$(container).toogleGiftMessage) {\n $(container).toogleGiftMessage = true;\n $(this.getFieldId(container, 'edit')).show();\n $(container).down('.action-link').addClassName('open');\n $(container).down('.default-text').hide();\n $(container).down('.close-text').show();\n } else {\n $(container).toogleGiftMessage = false;\n $(this.getFieldId(container, 'message')).formObj = $(this.getFieldId(container, 'form'));\n var form = jQuery('#' + this.getFieldId(container, 'form'));\n\n jQuery('#' + this.getFieldId(container, 'form')).validate({\n errorClass: 'mage-error'\n });\n\n if (!form.valid()) {\n return false;\n }\n\n new Ajax.Request($(this.getFieldId(container, 'form')).action, {\n parameters: Form.serialize($(this.getFieldId(container, 'form')), true),\n loaderArea: container,\n onComplete: function (transport) {\n\n $(container).down('.action-link').removeClassName('open');\n $(container).down('.default-text').show();\n $(container).down('.close-text').hide();\n $(this.getFieldId(container, 'edit')).hide();\n\n if (transport.responseText.match(/YES/g)) {\n $(container).down('.default-text').down('.edit').show();\n $(container).down('.default-text').down('.add').hide();\n } else {\n $(container).down('.default-text').down('.add').show();\n $(container).down('.default-text').down('.edit').hide();\n }\n\n }.bind(this)\n });\n }\n\n return false;\n },\n saveGiftMessage: function (container) {\n $(this.getFieldId(container, 'message')).formObj = $(this.getFieldId(container, 'form'));\n\n var form = jQuery('#' + this.getFieldId(container, 'form'));\n\n form.validate({\n errorClass: 'mage-error'\n });\n\n if (!form.valid()) {\n return;\n }\n\n new Ajax.Request($(this.getFieldId(container, 'form')).action, {\n parameters: Form.serialize($(this.getFieldId(container, 'form')), true),\n loaderArea: container,\n onSuccess: function (response) {\n var message = '<div class=\"messages\"><div class=\"message message-success success\">' +\n response.responseText +\n '<div data-ui-id=\"messages-message-success\"></div></div></div>';\n\n jQuery('#messages').html(message);\n jQuery(document).scrollTop(0);\n }\n });\n },\n getFieldId: function (container, name) {\n return container + '_' + name;\n }\n };\n\n function findFieldLabel(field) {\n var tdField = $(field).up('td');\n\n if (tdField) {\n var tdLabel = tdField.previous('td');\n\n if (tdLabel) {\n var label = tdLabel.down('label');\n\n if (label) {\n return label;\n }\n }\n }\n\n return false;\n }\n\n window.findFieldLabel = findFieldLabel;\n\n window.GiftOptionsPopup = Class.create();\n GiftOptionsPopup.prototype = {\n //giftOptionsWindowMask: null,\n giftOptionsWindow: null,\n\n initialize: function () {\n $$('.action-link').each(function (el) {\n Event.observe(el, 'click', this.showItemGiftOptions.bind(this));\n }, this);\n\n // Move gift options popup to start of body, because soon it will contain FORM tag that can break DOM layout if within other FORM\n var oldPopupContainer = $('gift_options_configure');\n\n if (oldPopupContainer) {\n oldPopupContainer.remove();\n }\n\n var newPopupContainer = $('gift_options_configure_new');\n\n $(document.body).insert({\n top: newPopupContainer\n });\n newPopupContainer.id = 'gift_options_configure';\n\n // Put controls container inside a FORM tag so we can use Validator\n var form = new Element('form', {\n action: '#', id: 'gift_options_configuration_form', method: 'post'\n });\n var formContents = $('gift_options_form_contents');\n\n if (formContents) {\n formContents.parentNode.appendChild(form);\n form.appendChild(formContents);\n }\n\n this.giftOptionsWindow = $('gift_options_configure');\n\n jQuery(this.giftOptionsWindow).dialog({\n autoOpen: false,\n modal: true,\n resizable: false,\n dialogClass: 'gift-options-popup',\n minWidth: 500,\n width: '75%',\n position: {\n my: 'left+12.5% top',\n at: 'center top',\n of: 'body'\n },\n open: function () {\n jQuery(this).closest('.ui-dialog').addClass('ui-dialog-active');\n\n var topMargin = jQuery(this).closest('.ui-dialog').children('.ui-dialog-titlebar').outerHeight() + 30;\n\n jQuery(this).closest('.ui-dialog').css({\n 'margin-top' : topMargin,\n 'z-index': 1000\n });\n jQuery(this).closest('.ui-dialog').nextAll('.ui-widget-overlay').css('z-index', 999);\n },\n close: function () {\n jQuery(this).closest('.ui-dialog').removeClass('ui-dialog-active');\n }\n });\n },\n\n showItemGiftOptions: function (event) {\n var element = Event.element(event).id;\n var itemId = element.sub('gift_options_link_', '');\n\n jQuery(this.giftOptionsWindow).dialog('open');\n\n this.setTitle(itemId);\n\n Event.observe($('gift_options_cancel_button'), 'click', this.onCloseButton.bind(this));\n Event.observe($('gift_options_ok_button'), 'click', this.onOkButton.bind(this));\n Event.stop(event);\n },\n\n setTitle: function (itemId) {\n var productTitleElement = $('order_item_' + itemId + '_title');\n var productTitle = '';\n\n if (productTitleElement) {\n productTitle = productTitleElement.innerHTML;\n }\n jQuery(this.giftOptionsWindow).dialog({\n title: jQuery.mage.__('Gift Options for ') + productTitle\n });\n },\n\n onOkButton: function () {\n var giftOptionsForm = jQuery('#gift_options_configuration_form');\n\n if (!giftOptionsForm.validate({\n errorClass: 'mage-error'\n }).valid()) {\n return false;\n }\n\n if (typeof (giftOptionsForm[0].reset) === 'function') {\n giftOptionsForm[0].reset();\n }\n this.closeWindow();\n\n return true;\n },\n\n onCloseButton: function () {\n this.closeWindow();\n },\n\n closeWindow: function () {\n jQuery(this.giftOptionsWindow).dialog('close');\n }\n };\n\n window.GiftMessageSet = Class.create();\n\n GiftMessageSet.prototype = {\n destPrefix: 'current_item_giftmessage_',\n sourcePrefix: 'giftmessage_',\n fields: ['sender', 'recipient', 'message'],\n isObserved: false,\n callback: null,\n\n initialize: function () {\n $$('.action-link').each(function (el) {\n Event.observe(el, 'click', this.setData.bind(this));\n }, this);\n },\n\n setData: function (event) {\n var element = Event.element(event).id;\n\n this.id = element.sub('gift_options_link_', '');\n\n if ($('gift-message-form-data-' + this.id)) {\n this.fields.each(function (el) {\n if ($(this.sourcePrefix + this.id + '_' + el) && $(this.destPrefix + el)) {\n $(this.destPrefix + el).value = $(this.sourcePrefix + this.id + '_' + el).value;\n }\n }, this);\n $('gift_options_giftmessage').show();\n } else if ($('gift_options_giftmessage')) {\n $('gift_options_giftmessage').hide();\n }\n\n if (!this.isObserved) {\n Event.observe('gift_options_ok_button', 'click', this.saveData.bind(this));\n this.isObserved = true;\n }\n },\n\n prepareSaveData: function () {\n var hash = $H();\n\n $$('div[id^=gift_options_data_]').each(function (el) {\n var fields = el.select('input', 'select', 'textarea');\n var data = Form.serializeElements(fields, true);\n\n hash.update(data);\n });\n\n return hash;\n },\n\n setSaveCallback: function (callback) {\n if (typeof callback == 'function') {\n this.callback = callback;\n }\n },\n\n saveData: function (event) {\n this.fields.each(function (el) {\n if ($(this.sourcePrefix + this.id + '_' + el) && $(this.destPrefix + el)) {\n $(this.sourcePrefix + this.id + '_' + el).value = $(this.destPrefix + el).value;\n }\n }, this);\n\n if ($(this.sourcePrefix + this.id + '_form')) {\n $(this.sourcePrefix + this.id + '_form').request();\n } else if (typeof order != 'undefined') {\n var data = this.prepareSaveData();\n var self = this;\n\n jQuery.when(order.loadArea(['items'], true, data.toObject())).done(function () {\n if (self.callback !== null) {\n self.callback();\n }\n });\n }\n }\n };\n\n});\n","Magento_Sales/order/create/scripts.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n define([\n 'jquery',\n 'Magento_Ui/js/modal/confirm',\n 'Magento_Ui/js/modal/alert',\n 'mage/template',\n 'text!Magento_Sales/templates/order/create/shipping/reload.html',\n 'text!Magento_Sales/templates/order/create/payment/reload.html',\n 'mage/translate',\n 'prototype',\n 'Magento_Catalog/catalog/product/composite/configure',\n 'Magento_Ui/js/lib/view/utils/async'\n], function (jQuery, confirm, alert, template, shippingTemplate, paymentTemplate) {\n\n window.AdminOrder = new Class.create();\n\n AdminOrder.prototype = {\n initialize: function (data) {\n if (!data) data = {};\n this.loadBaseUrl = false;\n this.customerId = data.customer_id ? data.customer_id : false;\n this.storeId = data.store_id ? data.store_id : false;\n this.quoteId = data['quote_id'] ? data['quote_id'] : false;\n this.currencyId = false;\n this.currencySymbol = data.currency_symbol ? data.currency_symbol : '';\n this.addresses = data.addresses ? data.addresses : $H({});\n this.shippingAsBilling = data.shippingAsBilling ? data.shippingAsBilling : false;\n this.gridProducts = $H({});\n this.gridProductsGift = $H({});\n this.billingAddressContainer = '';\n this.shippingAddressContainer = '';\n this.isShippingMethodReseted = data.shipping_method_reseted ? data.shipping_method_reseted : false;\n this.overlayData = $H({});\n this.giftMessageDataChanged = false;\n this.productConfigureAddFields = {};\n this.productPriceBase = {};\n this.collectElementsValue = true;\n this.isOnlyVirtualProduct = false;\n this.excludedPaymentMethods = [];\n this.summarizePrice = true;\n this.selectAddressEvent = false;\n this.shippingTemplate = template(shippingTemplate, {\n data: {\n title: jQuery.mage.__('Shipping Method'),\n linkText: jQuery.mage.__('Get shipping methods and rates')\n }\n });\n this.paymentTemplate = template(paymentTemplate, {\n data: {\n title: jQuery.mage.__('Payment Method'),\n linkText: jQuery.mage.__('Get available payment methods')\n }\n });\n\n jQuery.async('#order-items', (function () {\n this.dataArea = new OrderFormArea('data', $(this.getAreaId('data')), this);\n this.itemsArea = Object.extend(new OrderFormArea('items', $(this.getAreaId('items')), this), {\n addControlButton: function (button) {\n var controlButtonArea = $(this.node).select('.actions')[0];\n if (typeof controlButtonArea != 'undefined') {\n var buttons = controlButtonArea.childElements();\n for (var i = 0; i < buttons.length; i++) {\n if (buttons[i].innerHTML.include(button.getLabel())) {\n return;\n }\n }\n button.insertIn(controlButtonArea, 'top');\n }\n }\n });\n\n var searchButtonId = 'add_products',\n searchButton = new ControlButton(jQuery.mage.__('Add Products'), searchButtonId),\n searchAreaId = this.getAreaId('search');\n searchButton.onClick = function () {\n $(searchAreaId).show();\n var el = this;\n window.setTimeout(function () {\n el.remove();\n }, 10);\n };\n\n jQuery.async('#order-items .admin__page-section-title', (function () {\n this.dataArea.onLoad = this.dataArea.onLoad.wrap(function (proceed) {\n proceed();\n this._parent.itemsArea.setNode($(this._parent.getAreaId('items')));\n this._parent.itemsArea.onLoad();\n });\n\n this.itemsArea.onLoad = this.itemsArea.onLoad.wrap(function (proceed) {\n proceed();\n if ($(searchAreaId) && !jQuery('#' + searchAreaId).is(':visible') && !$(searchButtonId)) {\n this.addControlButton(searchButton);\n }\n });\n this.areasLoaded();\n this.itemsArea.onLoad();\n\n }).bind(this));\n\n }).bind(this));\n\n jQuery('#edit_form')\n .on('submitOrder', function () {\n jQuery(this).trigger('realOrder');\n })\n .on('realOrder', this._realSubmit.bind(this));\n },\n\n areasLoaded: function () {\n },\n\n itemsLoaded: function () {\n },\n\n dataLoaded: function () {\n this.dataShow();\n },\n\n setLoadBaseUrl: function (url) {\n this.loadBaseUrl = url;\n },\n\n setAddresses: function (addresses) {\n this.addresses = addresses;\n },\n\n addExcludedPaymentMethod: function (method) {\n this.excludedPaymentMethods.push(method);\n },\n\n setCustomerId: function (id) {\n this.customerId = id;\n this.loadArea('header', true);\n $(this.getAreaId('header')).callback = 'setCustomerAfter';\n $('back_order_top_button').hide();\n $('reset_order_top_button').show();\n },\n\n setCustomerAfter: function () {\n this.customerSelectorHide();\n if (this.storeId) {\n $(this.getAreaId('data')).callback = 'dataLoaded';\n this.loadArea(['data'], true);\n } else {\n this.storeSelectorShow();\n }\n },\n\n setStoreId: function (id) {\n this.storeId = id;\n this.storeSelectorHide();\n this.sidebarShow();\n //this.loadArea(['header', 'sidebar','data'], true);\n this.dataShow();\n this.loadArea(['header', 'data'], true);\n location.reload();\n },\n\n setCurrencyId: function (id) {\n this.currencyId = id;\n //this.loadArea(['sidebar', 'data'], true);\n this.loadArea(['data'], true);\n },\n\n setCurrencySymbol: function (symbol) {\n this.currencySymbol = symbol;\n },\n\n selectAddress: function (el, container) {\n var id = el.value;\n if (id.length == 0) {\n id = '0';\n }\n\n this.selectAddressEvent = true;\n if (this.addresses[id]) {\n this.fillAddressFields(container, this.addresses[id]);\n } else {\n this.fillAddressFields(container, {});\n }\n this.selectAddressEvent = false;\n\n var data = this.serializeData(container);\n data[el.name] = id;\n\n this.resetPaymentMethod();\n if (this.isShippingField(container) && !this.isShippingMethodReseted) {\n this.resetShippingMethod(data);\n } else {\n this.saveData(data);\n }\n },\n\n /**\n * Checks if the field belongs to the shipping address.\n *\n * @param {String} fieldId\n * @return {Boolean}\n */\n isShippingField: function (fieldId) {\n if (this.shippingAsBilling) {\n return fieldId.include('billing');\n }\n\n return fieldId.include('shipping');\n },\n\n /**\n * Checks if the field belongs to the billing address.\n *\n * @param {String} fieldId\n * @return {Boolean}\n */\n isBillingField: function (fieldId) {\n return fieldId.include('billing');\n },\n\n /**\n * Binds events on container form fields.\n *\n * @param {String} container\n */\n bindAddressFields: function (container) {\n var fields = $(container).select('input', 'select', 'textarea'),\n i;\n\n for (i = 0; i < fields.length; i++) {\n jQuery(fields[i]).change(this.changeAddressField.bind(this));\n }\n },\n\n /**\n * Triggers on each form's element changes.\n *\n * @param {Event} event\n */\n changeAddressField: function (event) {\n var field = Event.element(event),\n re = /[^\\[]*\\[([^\\]]*)_address\\]\\[([^\\]]*)\\](\\[(\\d)\\])?/,\n matchRes = field.name.match(re),\n type,\n name,\n data,\n resetShipping = false;\n\n if (!matchRes) {\n return;\n }\n\n type = matchRes[1];\n name = matchRes[2];\n\n if (this.isBillingField(field.id)) {\n data = this.serializeData(this.billingAddressContainer);\n } else {\n data = this.serializeData(this.shippingAddressContainer);\n }\n data = data.toObject();\n\n if (type === 'billing' && this.shippingAsBilling) {\n this.syncAddressField(this.shippingAddressContainer, field.name, field);\n resetShipping = true;\n }\n\n if (type === 'shipping' && !this.shippingAsBilling) {\n resetShipping = true;\n }\n\n if (resetShipping) {\n data['reset_shipping'] = true;\n }\n\n if (name !== 'customer_address_id' && this.selectAddressEvent === false) {\n if (this.shippingAsBilling) {\n $('order-shipping_address_customer_address_id').value = '';\n }\n\n $('order-' + type + '_address_customer_address_id').value = '';\n }\n\n data['order[' + type + '_address][customer_address_id]'] = null;\n data['shipping_as_billing'] = +this.shippingAsBilling;\n\n if (name === 'customer_address_id') {\n data['order[' + type + '_address][customer_address_id]'] =\n $('order-' + type + '_address_customer_address_id').value;\n }\n\n if (name === 'country_id' && this.selectAddressEvent === false) {\n $('order-' + type + '_address_customer_address_id').value = '';\n }\n\n this.resetPaymentMethod();\n\n if (data['reset_shipping']) {\n this.resetShippingMethod();\n } else {\n this.saveData(data);\n\n if (name === 'country_id' || name === 'customer_address_id') {\n this.loadArea(['shipping_method', 'billing_method', 'totals', 'items'], true, data);\n }\n }\n },\n\n /**\n * Set address container form field value.\n *\n * @param {String} container - container ID\n * @param {String} fieldName - form field name\n * @param {*} fieldValue - form field value\n */\n syncAddressField: function (container, fieldName, fieldValue) {\n var syncName;\n\n if (this.isBillingField(fieldName)) {\n syncName = fieldName.replace('billing', 'shipping');\n }\n\n $(container).select('[name=\"' + syncName + '\"]').each(function (element) {\n if (~['input', 'textarea', 'select'].indexOf(element.tagName.toLowerCase())) {\n if (element.type === \"checkbox\") {\n element.checked = fieldValue.checked;\n } else {\n element.value = fieldValue.value;\n }\n }\n });\n },\n\n fillAddressFields: function (container, data) {\n var regionIdElem = false;\n var regionIdElemValue = false;\n\n var fields = $(container).select('input', 'select', 'textarea');\n var re = /[^\\[]*\\[[^\\]]*\\]\\[([^\\]]*)\\](\\[(\\d)\\])?/;\n for (var i = 0; i < fields.length; i++) {\n // skip input type file @Security error code: 1000\n if (fields[i].tagName.toLowerCase() == 'input' && fields[i].type.toLowerCase() == 'file') {\n continue;\n }\n var matchRes = fields[i].name.match(re);\n if (matchRes === null) {\n continue;\n }\n var name = matchRes[1];\n var index = matchRes[3];\n\n if (index) {\n // multiply line\n if (data[name]) {\n var values = data[name].split(\"\\n\");\n fields[i].value = values[index] ? values[index] : '';\n } else {\n fields[i].value = '';\n }\n } else if (fields[i].tagName.toLowerCase() == 'select' && fields[i].multiple) {\n // multiselect\n if (data[name]) {\n values = [''];\n if (Object.isString(data[name])) {\n values = data[name].split(',');\n } else if (Object.isArray(data[name])) {\n values = data[name];\n }\n fields[i].setValue(values);\n }\n } else {\n fields[i].setValue(data[name] ? data[name] : '');\n }\n\n if (fields[i].changeUpdater) {\n fields[i].changeUpdater();\n }\n\n if (name == 'region' && data['region_id'] && !data['region']) {\n fields[i].value = data['region_id'];\n }\n\n jQuery(fields[i]).trigger('change');\n }\n },\n\n disableShippingAddress: function (flag) {\n this.shippingAsBilling = flag;\n if ($('order-shipping_address_customer_address_id')) {\n $('order-shipping_address_customer_address_id').disabled = flag;\n }\n if ($(this.shippingAddressContainer)) {\n var dataFields = $(this.shippingAddressContainer).select('input', 'select', 'textarea');\n for (var i = 0; i < dataFields.length; i++) {\n dataFields[i].disabled = flag;\n\n if (this.isOnlyVirtualProduct) {\n dataFields[i].setValue('');\n }\n }\n var buttons = $(this.shippingAddressContainer).select('button');\n // Add corresponding class to buttons while disabling them\n for (i = 0; i < buttons.length; i++) {\n buttons[i].disabled = flag;\n if (flag) {\n buttons[i].addClassName('disabled');\n } else {\n buttons[i].removeClassName('disabled');\n }\n }\n }\n },\n\n /**\n * Equals shipping and billing addresses.\n *\n * @param {Boolean} flag\n */\n setShippingAsBilling: function (flag) {\n var data,\n areasToLoad = ['billing_method', 'shipping_address', 'shipping_method', 'totals', 'giftmessage'];\n\n this.disableShippingAddress(flag);\n data = this.serializeData(flag ? this.billingAddressContainer : this.shippingAddressContainer);\n data = data.toObject();\n data['shipping_as_billing'] = flag ? 1 : 0;\n data['reset_shipping'] = 1;\n // set customer_address_id to null for shipping address in order to treat it as new from backend\n // Checkbox(Same As Billing Address) uncheck event\n data['order[shipping_address][customer_address_id]'] = null;\n this.loadArea(areasToLoad, true, data);\n },\n\n /**\n * Replace shipping method area.\n */\n resetShippingMethod: function () {\n if (!this.isOnlyVirtualProduct) {\n $(this.getAreaId('shipping_method')).update(this.shippingTemplate);\n }\n },\n\n /**\n * Replace payment method area.\n */\n resetPaymentMethod: function () {\n $(this.getAreaId('billing_method')).update(this.paymentTemplate);\n },\n\n /**\n * Loads shipping options according to address data.\n *\n * @return {Boolean}\n */\n loadShippingRates: function () {\n var addressContainer = this.shippingAsBilling ?\n 'billingAddressContainer' :\n 'shippingAddressContainer',\n data = this.serializeData(this[addressContainer]).toObject();\n\n data['collect_shipping_rates'] = 1;\n this.isShippingMethodReseted = false;\n this.loadArea(['shipping_method', 'totals'], true, data);\n\n return false;\n },\n\n setShippingMethod: function (method) {\n var data = {};\n\n data['order[shipping_method]'] = method;\n this.loadArea([\n 'shipping_method',\n 'totals',\n 'billing_method'\n ], true, data);\n },\n\n /**\n * Updates available payment\n * methods list according to order data.\n *\n * @return boolean\n */\n loadPaymentMethods: function () {\n var data = this.serializeData(this.billingAddressContainer).toObject();\n\n this.loadArea(['billing_method', 'totals'], true, data);\n\n return false;\n },\n\n switchPaymentMethod: function(method){\n if (this.paymentMethod !== method) {\n jQuery('#edit_form')\n .off('submitOrder')\n .on('submitOrder', function(){\n jQuery(this).trigger('realOrder');\n });\n }\n jQuery('#edit_form').trigger('changePaymentMethod', [method]);\n this.setPaymentMethod(method);\n var data = {};\n data['order[payment_method]'] = method;\n this.loadArea(['card_validation'], true, data);\n },\n\n setPaymentMethod: function (method) {\n if (this.paymentMethod && $('payment_form_' + this.paymentMethod)) {\n var form = 'payment_form_' + this.paymentMethod;\n [form + '_before', form, form + '_after'].each(function (el) {\n var block = $(el);\n if (block) {\n block.hide();\n block.select('input', 'select', 'textarea').each(function (field) {\n field.disabled = true;\n });\n }\n });\n }\n\n if (!this.paymentMethod || method) {\n $('order-billing_method_form').select('input', 'select', 'textarea').each(function (elem) {\n if (elem.type != 'radio') elem.disabled = true;\n })\n }\n\n if ($('payment_form_' + method)) {\n jQuery('#' + this.getAreaId('billing_method')).trigger('contentUpdated');\n this.paymentMethod = method;\n var form = 'payment_form_' + method;\n [form + '_before', form, form + '_after'].each(function (el) {\n var block = $(el);\n if (block) {\n block.show();\n block.select('input', 'select', 'textarea').each(function (field) {\n field.disabled = false;\n if (!el.include('_before') && !el.include('_after') && !field.bindChange) {\n field.bindChange = true;\n field.paymentContainer = form;\n field.method = method;\n field.observe('change', this.changePaymentData.bind(this))\n }\n }, this);\n }\n }, this);\n }\n },\n\n changePaymentData: function (event) {\n var elem = Event.element(event);\n if (elem && elem.method) {\n var data = this.getPaymentData(elem.method);\n if (data) {\n this.loadArea(['card_validation'], true, data);\n } else {\n return;\n }\n }\n },\n\n getPaymentData: function (currentMethod) {\n if (typeof (currentMethod) == 'undefined') {\n if (this.paymentMethod) {\n currentMethod = this.paymentMethod;\n } else {\n return false;\n }\n }\n if (this.isPaymentValidationAvailable() == false) {\n return false;\n }\n var data = {};\n var fields = $('payment_form_' + currentMethod).select('input', 'select');\n for (var i = 0; i < fields.length; i++) {\n data[fields[i].name] = fields[i].getValue();\n }\n if ((typeof data['payment[cc_type]']) != 'undefined' && (!data['payment[cc_type]'] || !data['payment[cc_number]'])) {\n return false;\n }\n return data;\n },\n\n applyCoupon: function (code) {\n this.loadArea(['items', 'shipping_method', 'totals', 'billing_method'], true, {\n 'order[coupon][code]': code,\n reset_shipping: true\n });\n this.orderItemChanged = false;\n jQuery('html, body').animate({\n scrollTop: 0\n });\n },\n\n addProduct: function (id) {\n this.loadArea(['items', 'shipping_method', 'totals', 'billing_method'], true, {\n add_product: id,\n reset_shipping: true\n });\n },\n\n removeQuoteItem: function (id) {\n this.loadArea(['items', 'shipping_method', 'totals', 'billing_method'], true,\n {remove_item: id, from: 'quote', reset_shipping: true});\n },\n\n moveQuoteItem: function (id, to) {\n this.loadArea(['sidebar_' + to, 'items', 'shipping_method', 'totals', 'billing_method'], this.getAreaId('items'),\n {move_item: id, to: to, reset_shipping: true});\n },\n\n productGridShow: function (buttonElement) {\n this.productGridShowButton = buttonElement;\n Element.hide(buttonElement);\n this.showArea('search');\n },\n\n productGridRowInit: function (grid, row) {\n var checkbox = $(row).select('.checkbox')[0];\n var inputs = $(row).select('.input-text');\n if (checkbox && inputs.length > 0) {\n checkbox.inputElements = inputs;\n for (var i = 0; i < inputs.length; i++) {\n var input = inputs[i];\n input.checkboxElement = checkbox;\n\n var product = this.gridProducts.get(checkbox.value);\n if (product) {\n var defaultValue = product[input.name];\n if (defaultValue) {\n if (input.name == 'giftmessage') {\n input.checked = true;\n } else {\n input.value = defaultValue;\n }\n }\n }\n\n input.disabled = !checkbox.checked || input.hasClassName('input-inactive');\n\n Event.observe(input, 'keyup', this.productGridRowInputChange.bind(this));\n Event.observe(input, 'change', this.productGridRowInputChange.bind(this));\n }\n }\n },\n\n productGridRowInputChange: function (event) {\n var element = Event.element(event);\n if (element && element.checkboxElement && element.checkboxElement.checked) {\n if (element.name != 'giftmessage' || element.checked) {\n this.gridProducts.get(element.checkboxElement.value)[element.name] = element.value;\n } else if (element.name == 'giftmessage' && this.gridProducts.get(element.checkboxElement.value)[element.name]) {\n delete (this.gridProducts.get(element.checkboxElement.value)[element.name]);\n }\n }\n },\n\n productGridRowClick: function (grid, event) {\n var trElement = Event.findElement(event, 'tr');\n var qtyElement = trElement.select('input[name=\"qty\"]')[0];\n var eventElement = Event.element(event);\n\n if (eventElement.tagName === 'LABEL'\n && trElement.querySelector('#' + eventElement.htmlFor)\n && trElement.querySelector('#' + eventElement.htmlFor).type === 'checkbox'\n ) {\n event.stopPropagation();\n trElement.querySelector('#' + eventElement.htmlFor).trigger('click');\n return;\n }\n\n var isInputCheckbox = (eventElement.tagName === 'INPUT' && eventElement.type === 'checkbox');\n var isInputQty = grid.targetElement && grid.targetElement.tagName === 'INPUT' && grid.targetElement.name === 'qty';\n if (trElement && !isInputQty) {\n var checkbox = Element.select(trElement, 'input[type=\"checkbox\"]')[0];\n var confLink = Element.select(trElement, 'a')[0];\n var priceColl = Element.select(trElement, '.price')[0];\n if (checkbox) {\n // processing non composite product\n if (confLink.readAttribute('disabled')) {\n var checked = isInputCheckbox ? checkbox.checked : !checkbox.checked;\n grid.setCheckboxChecked(checkbox, checked);\n // processing composite product\n } else if (isInputCheckbox && !checkbox.checked) {\n grid.setCheckboxChecked(checkbox, false);\n // processing composite product\n } else if (!isInputCheckbox || (isInputCheckbox && checkbox.checked)) {\n var listType = confLink.readAttribute('list_type');\n var productId = confLink.readAttribute('product_id');\n if (typeof this.productPriceBase[productId] == 'undefined') {\n var priceBase = priceColl.innerHTML.match(/.*?([\\d,]+\\.?\\d*)/);\n if (!priceBase) {\n this.productPriceBase[productId] = 0;\n } else {\n this.productPriceBase[productId] = parseFloat(priceBase[1].replace(/,/g, ''));\n }\n }\n productConfigure.setConfirmCallback(listType, function () {\n // sync qty of popup and qty of grid\n var confirmedCurrentQty = productConfigure.getCurrentConfirmedQtyElement();\n if (qtyElement && confirmedCurrentQty && !isNaN(confirmedCurrentQty.value)) {\n qtyElement.value = confirmedCurrentQty.value;\n }\n // calc and set product price\n var productPrice = this._calcProductPrice();\n if (this._isSummarizePrice()) {\n productPrice += this.productPriceBase[productId];\n }\n productPrice = parseFloat(Math.round(productPrice + \"e+2\") + \"e-2\");\n priceColl.innerHTML = this.currencySymbol + productPrice.toFixed(2);\n // and set checkbox checked\n grid.setCheckboxChecked(checkbox, true);\n }.bind(this));\n productConfigure.setCancelCallback(listType, function () {\n if (!$(productConfigure.confirmedCurrentId) || !$(productConfigure.confirmedCurrentId).innerHTML) {\n grid.setCheckboxChecked(checkbox, false);\n }\n });\n productConfigure.setShowWindowCallback(listType, function () {\n // sync qty of grid and qty of popup\n var formCurrentQty = productConfigure.getCurrentFormQtyElement();\n if (formCurrentQty && qtyElement && !isNaN(qtyElement.value)) {\n formCurrentQty.value = qtyElement.value;\n }\n }.bind(this));\n productConfigure.showItemConfiguration(listType, productId);\n }\n }\n }\n },\n\n /**\n * Is need to summarize price\n */\n _isSummarizePrice: function (elm) {\n if (elm && elm.hasAttribute('summarizePrice')) {\n this.summarizePrice = parseInt(elm.readAttribute('summarizePrice'));\n }\n return this.summarizePrice;\n },\n /**\n * Calc product price through its options\n */\n _calcProductPrice: function () {\n var productPrice = 0;\n var getPriceFields = function (elms) {\n var productPrice = 0;\n var getPrice = function (elm) {\n var optQty = 1;\n if (elm.hasAttribute('qtyId')) {\n if (!$(elm.getAttribute('qtyId')).value) {\n return 0;\n } else {\n optQty = parseFloat($(elm.getAttribute('qtyId')).value);\n }\n }\n if (elm.hasAttribute('price') && !elm.disabled) {\n return parseFloat(elm.readAttribute('price')) * optQty;\n }\n return 0;\n };\n for (var i = 0; i < elms.length; i++) {\n if (elms[i].type == 'select-one' || elms[i].type == 'select-multiple') {\n for (var ii = 0; ii < elms[i].options.length; ii++) {\n if (elms[i].options[ii].selected) {\n if (this._isSummarizePrice(elms[i].options[ii])) {\n productPrice += getPrice(elms[i].options[ii]);\n } else {\n productPrice = getPrice(elms[i].options[ii]);\n }\n }\n }\n } else if (((elms[i].type == 'checkbox' || elms[i].type == 'radio') && elms[i].checked)\n || ((elms[i].type == 'file' || elms[i].type == 'text' || elms[i].type == 'textarea' || elms[i].type == 'hidden')\n && Form.Element.getValue(elms[i]))\n ) {\n if (this._isSummarizePrice(elms[i])) {\n productPrice += getPrice(elms[i]);\n } else {\n productPrice = getPrice(elms[i]);\n }\n }\n }\n return productPrice;\n }.bind(this);\n productPrice += getPriceFields($(productConfigure.confirmedCurrentId).getElementsByTagName('input'));\n productPrice += getPriceFields($(productConfigure.confirmedCurrentId).getElementsByTagName('select'));\n productPrice += getPriceFields($(productConfigure.confirmedCurrentId).getElementsByTagName('textarea'));\n return productPrice;\n },\n\n productGridCheckboxCheck: function (grid, element, checked) {\n if (checked) {\n if (element.inputElements) {\n this.gridProducts.set(element.value, {});\n var product = this.gridProducts.get(element.value);\n for (var i = 0; i < element.inputElements.length; i++) {\n var input = element.inputElements[i];\n if (!input.hasClassName('input-inactive')) {\n input.disabled = false;\n if (input.name == 'qty' && !input.value) {\n input.value = 1;\n }\n }\n\n if (input.checked || input.name != 'giftmessage') {\n product[input.name] = input.value;\n } else if (product[input.name]) {\n delete (product[input.name]);\n }\n }\n }\n } else {\n if (element.inputElements) {\n for (var i = 0; i < element.inputElements.length; i++) {\n element.inputElements[i].disabled = true;\n }\n }\n this.gridProducts.unset(element.value);\n }\n grid.reloadParams = {'products[]': this.gridProducts.keys()};\n },\n\n productGridFilterKeyPress: function (grid, event) {\n var returnKey = parseInt(Event.KEY_RETURN || 13, 10);\n\n if (event.keyCode === returnKey) {\n if (typeof event.stopPropagation === 'function') {\n event.stopPropagation();\n }\n\n if (typeof event.preventDefault === 'function') {\n event.preventDefault();\n }\n }\n },\n\n /**\n * Submit configured products to quote\n */\n productGridAddSelected: function () {\n if (this.productGridShowButton) Element.show(this.productGridShowButton);\n var area = ['search', 'items', 'shipping_method', 'totals', 'giftmessage', 'billing_method'];\n // prepare additional fields and filtered items of products\n var fieldsPrepare = {};\n var itemsFilter = [];\n var products = this.gridProducts.toObject();\n for (var productId in products) {\n itemsFilter.push(productId);\n var paramKey = 'item[' + productId + ']';\n for (var productParamKey in products[productId]) {\n paramKey += '[' + productParamKey + ']';\n fieldsPrepare[paramKey] = products[productId][productParamKey];\n }\n }\n this.productConfigureSubmit('product_to_add', area, fieldsPrepare, itemsFilter);\n productConfigure.clean('quote_items');\n this.hideArea('search');\n this.gridProducts = $H({});\n },\n\n selectCustomer: function (grid, event) {\n var element = Event.findElement(event, 'tr');\n if (element.title) {\n this.setCustomerId(element.title);\n }\n },\n\n customerSelectorHide: function () {\n this.hideArea('customer-selector');\n },\n\n customerSelectorShow: function () {\n this.showArea('customer-selector');\n },\n\n storeSelectorHide: function () {\n this.hideArea('store-selector');\n },\n\n storeSelectorShow: function () {\n this.showArea('store-selector');\n },\n\n dataHide: function () {\n this.hideArea('data');\n },\n\n dataShow: function () {\n if ($('submit_order_top_button')) {\n $('submit_order_top_button').show();\n }\n this.showArea('data');\n },\n\n clearShoppingCart: function (confirmMessage) {\n var self = this;\n\n confirm({\n content: confirmMessage,\n actions: {\n confirm: function () {\n self.collectElementsValue = false;\n order.sidebarApplyChanges({'sidebar[empty_customer_cart]': 1});\n self.collectElementsValue = true;\n }\n }\n });\n },\n\n sidebarApplyChanges: function (auxiliaryParams) {\n if ($(this.getAreaId('sidebar'))) {\n var data = {};\n if (this.collectElementsValue) {\n var elems = $(this.getAreaId('sidebar')).select('input');\n for (var i = 0; i < elems.length; i++) {\n if (elems[i].getValue()) {\n data[elems[i].name] = elems[i].getValue();\n }\n }\n }\n if (auxiliaryParams instanceof Object) {\n for (var paramName in auxiliaryParams) {\n data[paramName] = String(auxiliaryParams[paramName]);\n }\n }\n data.reset_shipping = true;\n this.loadArea(['sidebar', 'items', 'shipping_method', 'billing_method', 'totals', 'giftmessage'], true, data);\n }\n },\n\n sidebarHide: function () {\n if (this.storeId === false && $('page:left') && $('page:container')) {\n $('page:left').hide();\n $('page:container').removeClassName('container');\n $('page:container').addClassName('container-collapsed');\n }\n },\n\n sidebarShow: function () {\n if ($('page:left') && $('page:container')) {\n $('page:left').show();\n $('page:container').removeClassName('container-collapsed');\n $('page:container').addClassName('container');\n }\n },\n\n /**\n * Show configuration of product and add handlers on submit form\n *\n * @param productId\n */\n sidebarConfigureProduct: function (listType, productId, itemId) {\n // create additional fields\n var params = {},\n isWishlist = !!itemId;\n params.reset_shipping = true;\n params.add_product = productId;\n this.prepareParams(params);\n for (var i in params) {\n if (params[i] === null) {\n unset(params[i]);\n } else if (typeof (params[i]) == 'boolean') {\n params[i] = params[i] ? 1 : 0;\n }\n }\n var fields = [];\n for (var name in params) {\n fields.push(new Element('input', {type: 'hidden', name: name, value: params[name]}));\n }\n // add additional fields before triggered submit\n productConfigure.setBeforeSubmitCallback(listType, function () {\n productConfigure.addFields(fields);\n }.bind(this));\n // response handler\n productConfigure.setOnLoadIFrameCallback(listType, function (response) {\n var areas = ['items', 'shipping_method', 'billing_method', 'totals', 'giftmessage'];\n\n if (!response.ok) {\n return;\n }\n if (isWishlist) {\n this.removeSidebarItem(itemId, 'wishlist').done(function () {\n this.loadArea(areas, true);\n }.bind(this));\n } else {\n this.loadArea(areas, true);\n }\n }.bind(this));\n // show item configuration\n itemId = itemId ? itemId : productId;\n productConfigure.showItemConfiguration(listType, itemId);\n return false;\n },\n\n removeSidebarItem: function (id, from) {\n return this.loadArea(['sidebar_' + from], 'sidebar_data_' + from, {\n remove_item: id,\n from: from\n });\n },\n\n itemsUpdate: function () {\n var area = ['sidebar', 'items', 'shipping_method', 'billing_method', 'totals', 'giftmessage'];\n // prepare additional fields\n var fieldsPrepare = {update_items: 1};\n var info = $('order-items_grid').select('input', 'select', 'textarea');\n for (var i = 0; i < info.length; i++) {\n if (!info[i].disabled && (info[i].type != 'checkbox' || info[i].checked)) {\n fieldsPrepare[info[i].name] = info[i].getValue();\n }\n }\n fieldsPrepare = Object.extend(fieldsPrepare, this.productConfigureAddFields);\n this.productConfigureSubmit('quote_items', area, fieldsPrepare);\n this.orderItemChanged = false;\n },\n\n itemsOnchangeBind: function () {\n var elems = $('order-items_grid').select('input', 'select', 'textarea');\n for (var i = 0; i < elems.length; i++) {\n if (!elems[i].bindOnchange) {\n elems[i].bindOnchange = true;\n elems[i].observe('change', this.itemChange.bind(this))\n }\n }\n },\n\n itemChange: function (event) {\n this.giftmessageOnItemChange(event);\n this.orderItemChanged = true;\n },\n\n /**\n * Submit batch of configured products\n *\n * @param listType\n * @param area\n * @param fieldsPrepare\n * @param itemsFilter\n */\n productConfigureSubmit: function (listType, area, fieldsPrepare, itemsFilter) {\n // prepare loading areas and build url\n area = this.prepareArea(area);\n this.loadingAreas = area;\n var url = this.loadBaseUrl + 'block/' + area + '?isAjax=true';\n\n // prepare additional fields\n fieldsPrepare = this.prepareParams(fieldsPrepare);\n fieldsPrepare.reset_shipping = 1;\n fieldsPrepare.json = 1;\n\n // create fields\n var fields = [];\n for (var name in fieldsPrepare) {\n fields.push(new Element('input', {type: 'hidden', name: name, value: fieldsPrepare[name]}));\n }\n productConfigure.addFields(fields);\n\n // filter items\n if (itemsFilter) {\n productConfigure.addItemsFilter(listType, itemsFilter);\n }\n\n // prepare and do submit\n productConfigure.addListType(listType, {urlSubmit: url});\n productConfigure.setOnLoadIFrameCallback(listType, function (response) {\n this.loadAreaResponseHandler(response);\n }.bind(this));\n productConfigure.submit(listType);\n // clean\n this.productConfigureAddFields = {};\n },\n\n /**\n * Show configuration of quote item\n *\n * @param itemId\n */\n showQuoteItemConfiguration: function (itemId) {\n var listType = 'quote_items';\n var qtyElement = $('order-items_grid').select('input[name=\"item\\[' + itemId + '\\]\\[qty\\]\"]')[0];\n productConfigure.setConfirmCallback(listType, function () {\n // sync qty of popup and qty of grid\n var confirmedCurrentQty = productConfigure.getCurrentConfirmedQtyElement();\n if (qtyElement && confirmedCurrentQty && !isNaN(confirmedCurrentQty.value)) {\n qtyElement.value = confirmedCurrentQty.value;\n }\n this.productConfigureAddFields['item[' + itemId + '][configured]'] = 1;\n this.itemsUpdate();\n\n }.bind(this));\n productConfigure.setShowWindowCallback(listType, function () {\n // sync qty of grid and qty of popup\n var formCurrentQty = productConfigure.getCurrentFormQtyElement();\n if (formCurrentQty && qtyElement && !isNaN(qtyElement.value)) {\n formCurrentQty.value = qtyElement.value;\n }\n }.bind(this));\n productConfigure.showItemConfiguration(listType, itemId);\n },\n\n accountFieldsBind: function (container) {\n if ($(container)) {\n var fields = $(container).select('input', 'select', 'textarea');\n for (var i = 0; i < fields.length; i++) {\n if (fields[i].id == 'group_id') {\n fields[i].observe('change', this.accountGroupChange.bind(this))\n } else {\n fields[i].observe('change', this.accountFieldChange.bind(this))\n }\n }\n }\n },\n\n accountGroupChange: function () {\n this.loadArea(['data'], true, this.serializeData('order-form_account').toObject());\n },\n\n accountFieldChange: function () {\n this.saveData(this.serializeData('order-form_account'));\n },\n\n commentFieldsBind: function (container) {\n if ($(container)) {\n var fields = $(container).select('input', 'textarea');\n for (var i = 0; i < fields.length; i++)\n fields[i].observe('change', this.commentFieldChange.bind(this))\n }\n },\n\n commentFieldChange: function () {\n this.saveData(this.serializeData('order-comment'));\n },\n\n giftmessageFieldsBind: function (container) {\n if ($(container)) {\n var fields = $(container).select('input', 'textarea');\n for (var i = 0; i < fields.length; i++)\n fields[i].observe('change', this.giftmessageFieldChange.bind(this))\n }\n },\n\n giftmessageFieldChange: function () {\n this.giftMessageDataChanged = true;\n },\n\n giftmessageOnItemChange: function (event) {\n var element = Event.element(event);\n if (element.name.indexOf(\"giftmessage\") != -1 && element.type == \"checkbox\" && !element.checked) {\n var messages = $(\"order-giftmessage\").select('textarea');\n var name;\n for (var i = 0; i < messages.length; i++) {\n name = messages[i].id.split(\"_\");\n if (name.length < 2) continue;\n if (element.name.indexOf(\"[\" + name[1] + \"]\") != -1 && messages[i].value != \"\") {\n alert({\n content: \"First, clean the Message field in Gift Message form\"\n });\n element.checked = true;\n }\n }\n }\n },\n\n loadArea: function (area, indicator, params) {\n var deferred = new jQuery.Deferred();\n var url = this.loadBaseUrl;\n if (area) {\n area = this.prepareArea(area);\n url += 'block/' + area;\n }\n if (indicator === true) indicator = 'html-body';\n params = this.prepareParams(params);\n params.json = true;\n if (!this.loadingAreas) this.loadingAreas = [];\n if (indicator) {\n this.loadingAreas = area;\n new Ajax.Request(url, {\n parameters: params,\n loaderArea: indicator,\n onSuccess: function (transport) {\n var response = transport.responseText.evalJSON();\n this.loadAreaResponseHandler(response);\n deferred.resolve();\n }.bind(this)\n });\n } else {\n new Ajax.Request(url, {\n parameters: params,\n loaderArea: indicator,\n onSuccess: function (transport) {\n deferred.resolve();\n }\n });\n }\n if (typeof productConfigure != 'undefined' && area instanceof Array && area.indexOf('items') != -1) {\n productConfigure.clean('quote_items');\n }\n return deferred.promise();\n },\n\n loadAreaResponseHandler: function (response) {\n if (response.error) {\n alert({\n content: response.message\n });\n }\n if (response.ajaxExpired && response.ajaxRedirect) {\n setLocation(response.ajaxRedirect);\n }\n if (!this.loadingAreas) {\n this.loadingAreas = [];\n }\n if (typeof this.loadingAreas == 'string') {\n this.loadingAreas = [this.loadingAreas];\n }\n if (this.loadingAreas.indexOf('message') == -1) {\n this.loadingAreas.push('message');\n }\n if (response.header) {\n jQuery('.page-actions-inner').attr('data-title', response.header);\n }\n\n for (var i = 0; i < this.loadingAreas.length; i++) {\n var id = this.loadingAreas[i];\n if ($(this.getAreaId(id))) {\n if ((id in response) && id !== 'message' || response[id]) {\n $(this.getAreaId(id)).update(response[id]);\n }\n if ($(this.getAreaId(id)).callback) {\n this[$(this.getAreaId(id)).callback]();\n }\n }\n }\n },\n\n prepareArea: function (area) {\n if (this.giftMessageDataChanged) {\n return area.without('giftmessage');\n }\n return area;\n },\n\n saveData: function (data) {\n this.loadArea(false, false, data);\n },\n\n showArea: function (area) {\n var id = this.getAreaId(area);\n if ($(id)) {\n $(id).show();\n this.areaOverlay();\n }\n },\n\n hideArea: function (area) {\n var id = this.getAreaId(area);\n if ($(id)) {\n $(id).hide();\n this.areaOverlay();\n }\n },\n\n areaOverlay: function () {\n $H(order.overlayData).each(function (e) {\n e.value.fx();\n });\n },\n\n getAreaId: function (area) {\n return 'order-' + area;\n },\n\n prepareParams: function (params) {\n if (!params) {\n params = {};\n }\n if (!params.customer_id) {\n params.customer_id = this.customerId;\n }\n if (!params.store_id) {\n params.store_id = this.storeId;\n }\n if (!params.currency_id) {\n params.currency_id = this.currencyId;\n }\n if (!params.form_key) {\n params.form_key = FORM_KEY;\n }\n\n if (this.isPaymentValidationAvailable()) {\n var data = this.serializeData('order-billing_method');\n if (data) {\n data.each(function (value) {\n params[value[0]] = value[1];\n });\n }\n } else {\n params['payment[method]'] = this.paymentMethod;\n }\n return params;\n },\n\n /**\n * Prevent from sending credit card information to server for some payment methods\n *\n * @returns {boolean}\n */\n isPaymentValidationAvailable: function () {\n return ((typeof this.paymentMethod) == 'undefined'\n || this.excludedPaymentMethods.indexOf(this.paymentMethod) == -1);\n },\n\n /**\n * Serializes container form elements data.\n *\n * @param {String} container\n * @return {Object}\n */\n serializeData: function (container) {\n var fields = $(container).select('input', 'select', 'textarea'),\n data = Form.serializeElements(fields, true);\n\n return $H(data);\n },\n\n toggleCustomPrice: function (checkbox, elemId, tierBlock) {\n if (checkbox.checked) {\n $(elemId).disabled = false;\n $(elemId).show();\n if ($(tierBlock)) $(tierBlock).hide();\n } else {\n $(elemId).disabled = true;\n $(elemId).hide();\n if ($(tierBlock)) $(tierBlock).show();\n }\n },\n\n submit: function () {\n var $editForm = jQuery('#edit_form'),\n beforeSubmitOrderEvent;\n\n if ($editForm.valid()) {\n $editForm.trigger('processStart');\n beforeSubmitOrderEvent = jQuery.Event('beforeSubmitOrder');\n $editForm.trigger(beforeSubmitOrderEvent);\n if (beforeSubmitOrderEvent.result !== false) {\n $editForm.trigger('submitOrder');\n }\n }\n },\n\n _realSubmit: function () {\n var disableAndSave = function () {\n disableElements('save');\n jQuery('#edit_form').on('invalid-form.validate', function () {\n enableElements('save');\n jQuery('#edit_form').trigger('processStop');\n jQuery('#edit_form').off('invalid-form.validate');\n });\n jQuery('#edit_form').triggerHandler('save');\n }\n if (this.orderItemChanged) {\n var self = this;\n\n jQuery('#edit_form').trigger('processStop');\n\n confirm({\n content: jQuery.mage.__('You have item changes'),\n actions: {\n confirm: function () {\n jQuery('#edit_form').trigger('processStart');\n disableAndSave();\n },\n cancel: function () {\n self.itemsUpdate();\n }\n }\n });\n } else {\n disableAndSave();\n }\n },\n\n overlay: function (elId, show, observe) {\n if (typeof (show) == 'undefined') {\n show = true;\n }\n\n var orderObj = this;\n var obj = this.overlayData.get(elId);\n if (!obj) {\n obj = {\n show: show,\n el: elId,\n order: orderObj,\n fx: function (event) {\n this.order.processOverlay(this.el, this.show);\n }\n };\n obj.bfx = obj.fx.bindAsEventListener(obj);\n this.overlayData.set(elId, obj);\n } else {\n obj.show = show;\n Event.stopObserving(window, 'resize', obj.bfx);\n }\n\n Event.observe(window, 'resize', obj.bfx);\n\n this.processOverlay(elId, show);\n },\n\n processOverlay: function (elId, show) {\n var el = $(elId);\n\n if (!el) {\n return;\n }\n\n var parentEl = el.up(1);\n if (show) {\n parentEl.removeClassName('ignore-validate');\n } else {\n parentEl.addClassName('ignore-validate');\n }\n\n if (Prototype.Browser.IE) {\n parentEl.select('select').each(function (elem) {\n if (show) {\n elem.needShowOnSuccess = false;\n elem.style.visibility = '';\n } else {\n elem.style.visibility = 'hidden';\n elem.needShowOnSuccess = true;\n }\n });\n }\n\n parentEl.setStyle({position: 'relative'});\n el.setStyle({\n display: show ? 'none' : ''\n });\n },\n\n validateVat: function (parameters) {\n var params = {\n country: $(parameters.countryElementId).value,\n vat: $(parameters.vatElementId).value\n };\n\n if (this.storeId !== false) {\n params.store_id = this.storeId;\n }\n\n var currentCustomerGroupId = $(parameters.groupIdHtmlId)\n ? $(parameters.groupIdHtmlId).value : '';\n\n new Ajax.Request(parameters.validateUrl, {\n parameters: params,\n onSuccess: function (response) {\n var message = '';\n var groupActionRequired = null;\n try {\n response = response.responseText.evalJSON();\n\n if (null === response.group) {\n if (true === response.valid) {\n message = parameters.vatValidMessage;\n } else if (true === response.success) {\n message = parameters.vatInvalidMessage.replace(/%s/, params.vat);\n } else {\n message = parameters.vatValidationFailedMessage;\n }\n } else {\n if (true === response.valid) {\n message = parameters.vatValidAndGroupValidMessage;\n if (0 === response.group) {\n message = parameters.vatValidAndGroupInvalidMessage;\n groupActionRequired = 'inform';\n } else if (currentCustomerGroupId != response.group) {\n message = parameters.vatValidAndGroupChangeMessage;\n groupActionRequired = 'change';\n }\n } else if (response.success) {\n message = parameters.vatInvalidMessage.replace(/%s/, params.vat);\n groupActionRequired = 'inform';\n } else {\n message = parameters.vatValidationFailedMessage;\n groupActionRequired = 'inform';\n }\n }\n } catch (e) {\n message = parameters.vatValidationFailedMessage;\n }\n if (null === groupActionRequired) {\n alert({\n content: message\n });\n } else {\n this.processCustomerGroupChange(\n parameters.groupIdHtmlId,\n message,\n parameters.vatCustomerGroupMessage,\n parameters.vatGroupErrorMessage,\n response.group,\n groupActionRequired\n );\n }\n }.bind(this)\n });\n },\n\n processCustomerGroupChange: function (groupIdHtmlId, message, customerGroupMessage, errorMessage, groupId, action) {\n var groupMessage = '';\n try {\n var currentCustomerGroupId = $(groupIdHtmlId).value;\n var currentCustomerGroupTitle =\n $$('#' + groupIdHtmlId + ' > option[value=' + currentCustomerGroupId + ']')[0].text;\n var customerGroupOption = $$('#' + groupIdHtmlId + ' > option[value=' + groupId + ']')[0];\n groupMessage = customerGroupMessage.replace(/%s/, customerGroupOption.text);\n } catch (e) {\n groupMessage = errorMessage;\n if (action === 'change') {\n message = '';\n action = 'inform';\n }\n }\n\n if (action === 'change') {\n var confirmText = message.replace(/%s/, customerGroupOption.text);\n confirmText = confirmText.replace(/%s/, currentCustomerGroupTitle);\n confirm({\n content: confirmText,\n actions: {\n confirm: function() {\n $$('#' + groupIdHtmlId + ' option').each(function (o) {\n o.selected = o.readAttribute('value') == groupId;\n });\n this.accountGroupChange();\n }.bind(this)\n }\n })\n } else if (action === 'inform') {\n alert({\n content: message + '\\n' + groupMessage\n });\n }\n }\n };\n\n window.OrderFormArea = Class.create();\n OrderFormArea.prototype = {\n _name: null,\n _node: null,\n _parent: null,\n _callbackName: null,\n\n initialize: function (name, node, parent) {\n if (!node)\n return;\n this._name = name;\n this._parent = parent;\n this._callbackName = node.callback;\n if (typeof this._callbackName == 'undefined') {\n this._callbackName = name + 'Loaded';\n node.callback = this._callbackName;\n }\n parent[this._callbackName] = parent[this._callbackName].wrap((function (proceed) {\n proceed();\n this.onLoad();\n }).bind(this));\n\n this.setNode(node);\n },\n\n setNode: function (node) {\n if (!node.callback) {\n node.callback = this._callbackName;\n }\n this.node = node;\n },\n\n onLoad: function () {\n }\n };\n\n window.ControlButton = Class.create();\n\n ControlButton.prototype = {\n _label: '',\n _node: null,\n\n initialize: function (label, id) {\n this._label = label;\n this._node = new Element('button', {\n 'class': 'action-secondary action-add',\n 'type': 'button'\n });\n if (typeof id !== 'undefined') {\n this._node.setAttribute('id', id)\n }\n },\n\n onClick: function () {\n },\n\n insertIn: function (element, position) {\n var node = Object.extend(this._node),\n content = {};\n node.observe('click', this.onClick);\n node.update('<span>' + this._label + '</span>');\n content[position] = node;\n Element.insert(element, content);\n },\n\n getLabel: function () {\n return this._label;\n }\n };\n});\n","Magento_Sales/order/edit/message.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'jquery',\n 'jquery/ui',\n 'Magento_Ui/js/modal/modal',\n 'mage/translate'\n], function ($) {\n 'use strict';\n\n $.widget('mage.orderEditDialog', {\n options: {\n url: null,\n message: null,\n modal: null\n },\n\n /**\n * @protected\n */\n _create: function () {\n this._prepareDialog();\n },\n\n /**\n * Show modal\n */\n showDialog: function () {\n this.options.dialog.html(this.options.message).modal('openModal');\n },\n\n /**\n * Redirect to edit page\n */\n redirect: function () {\n window.location = this.options.url;\n },\n\n /**\n * Prepare modal\n * @protected\n */\n _prepareDialog: function () {\n var self = this;\n\n this.options.dialog = $('<div class=\"ui-dialog-content ui-widget-content\"></div>').modal({\n type: 'popup',\n modalClass: 'edit-order-popup',\n title: $.mage.__('Edit Order'),\n buttons: [{\n text: $.mage.__('Ok'),\n 'class': 'action-primary',\n\n /** @inheritdoc */\n click: function () {\n self.redirect();\n }\n }]\n });\n }\n });\n\n return $.mage.orderEditDialog;\n});\n","Magento_Sales/order/edit/address/form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery'\n], function ($) {\n 'use strict';\n\n /**\n * Currently Magento App stores both region_id and region (as text) values.\n * To prevent missing region (as text) we need to copy it in hidden field.\n * @param {Array} config\n * @param {String} element\n */\n return function (config, element) {\n var form = $(element),\n regionId = form.find('#region_id'),\n\n /**\n * Set region callback\n */\n setRegion = function () {\n form.find('#region').val(regionId.filter(':visible').find(':selected').text());\n };\n\n if (regionId.is('visible')) {\n setRegion();\n }\n\n regionId.on('change', setRegion);\n form.find('#country_id').on('change', setRegion);\n };\n});\n","Magento_Sales/js/grid/columns/multiselect.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/grid/columns/multiselect'\n], function (Multiselect) {\n 'use strict';\n\n return Multiselect.extend({\n /**\n * Prevent calling this.selectAll(); in parent\n *\n * @returns {Object}\n */\n updateState: function () {\n var selected = this.selected().length,\n totalRecords = this.totalRecords();\n\n if (totalRecords && selected === totalRecords && !this.preserveSelectionsOnFilter) {\n return this;\n }\n return this._super();\n }\n });\n});\n","Magento_Sales/js/bootstrap/order-create-index.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\nrequire([\n 'Magento_Sales/order/create/giftmessage'\n]);\n","Magento_Sales/js/bootstrap/order-post-action.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\nrequire([\n 'Magento_Sales/order/view/post-wrapper'\n]);\n","Magento_Customer/js/address/default-address.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/components/button',\n 'underscore'\n], function (Button, _) {\n 'use strict';\n\n return Button.extend({\n defaults: {\n entityId: null,\n parentId: null,\n listens: {\n entity: 'changeVisibility'\n }\n },\n\n /**\n * Apply action on target component,\n * but previously create this component from template if it is not existed\n *\n * @param {Object} action - action configuration\n */\n applyAction: function (action) {\n if (action.params && action.params[0]) {\n action.params[0]['entity_id'] = this.entityId;\n action.params[0]['parent_id'] = this.parentId;\n } else {\n action.params = [{\n 'entity_id': this.entityId,\n 'parent_id': this.parentId\n }];\n }\n\n this._super();\n },\n\n /**\n * Change visibility of the default address shipping/billing blocks\n *\n * @param {Object} entity - customer address\n */\n changeVisibility: function (entity) {\n this.visible(!_.isEmpty(entity));\n }\n });\n});\n","Magento_Customer/js/grid/massactions.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/grid/massactions',\n 'Magento_Ui/js/modal/alert',\n 'underscore',\n 'jquery',\n 'mage/translate'\n], function (Massactions, uiAlert, _, $, $t) {\n 'use strict';\n\n return Massactions.extend({\n defaults: {\n ajaxSettings: {\n method: 'POST',\n dataType: 'json'\n },\n listens: {\n massaction: 'onAction'\n }\n },\n\n /**\n * Reload customer addresses listing\n *\n * @param {Object} data\n */\n onAction: function (data) {\n if (data.action === 'delete') {\n this.source.reload({\n refresh: true\n });\n }\n },\n\n /**\n * Default action callback. Send selections data\n * via POST request.\n *\n * @param {Object} action - Action data.\n * @param {Object} data - Selections data.\n */\n defaultCallback: function (action, data) {\n var itemsType, selections;\n\n if (action.isAjax) {\n itemsType = data.excludeMode ? 'excluded' : 'selected';\n selections = {};\n\n selections[itemsType] = data[itemsType];\n\n if (!selections[itemsType].length) {\n selections[itemsType] = false;\n }\n\n _.extend(selections, data.params || {});\n\n this.request(action.url, selections).done(function (response) {\n if (!response.error) {\n this.trigger('massaction', {\n action: action.type,\n data: selections\n });\n }\n }.bind(this));\n } else {\n this._super();\n }\n },\n\n /**\n * Send customer address listing mass action ajax request\n *\n * @param {String} href\n * @param {Object} data\n */\n request: function (href, data) {\n var settings = _.extend({}, this.ajaxSettings, {\n url: href,\n data: data\n });\n\n $('body').trigger('processStart');\n\n return $.ajax(settings)\n .done(function (response) {\n if (response.error) {\n uiAlert({\n content: response.message\n });\n }\n })\n .fail(function () {\n uiAlert({\n content: $t('Sorry, there has been an error processing your request. Please try again later.')\n });\n })\n .always(function () {\n $('body').trigger('processStop');\n });\n }\n });\n});\n","Magento_Customer/js/grid/filters/chips.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/grid/filters/chips'\n], function (Chips) {\n 'use strict';\n\n return Chips.extend({\n\n /**\n * Clear previous filters while initializing element to prevent filters sharing between customers\n *\n * @param {Object} elem\n */\n initElement: function (elem) {\n this.clear();\n this._super(elem);\n }\n });\n});\n","Magento_Customer/js/grid/filters/filters.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/grid/filters/filters'\n], function (Filters) {\n 'use strict';\n\n return Filters.extend({\n defaults: {\n chipsConfig: {\n name: '${ $.name }_chips',\n provider: '${ $.chipsConfig.name }',\n component: 'Magento_Customer/js/grid/filters/chips'\n }\n }\n });\n});\n","Magento_Customer/js/grid/columns/actions.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/grid/columns/actions',\n 'Magento_Ui/js/modal/alert',\n 'underscore',\n 'jquery',\n 'mage/translate'\n], function (Actions, uiAlert, _, $, $t) {\n 'use strict';\n\n return Actions.extend({\n defaults: {\n ajaxSettings: {\n method: 'POST',\n dataType: 'json'\n },\n listens: {\n action: 'onAction'\n },\n ignoreTmpls: {\n fieldAction: true,\n options: true,\n action: true\n }\n },\n\n /**\n * Reload customer address listing data source after customer address delete action\n *\n * @param {Object} data\n */\n onAction: function (data) {\n if (data.action === 'delete') {\n this.source().reload({\n refresh: true\n });\n }\n },\n\n /**\n * Default action callback. Redirects to\n * the specified in action's data url.\n *\n * @param {String} actionIndex - Action's identifier.\n * @param {(Number|String)} recordId - Id of the record associated\n * with a specified action.\n * @param {Object} action - Action's data.\n */\n defaultCallback: function (actionIndex, recordId, action) {\n if (action.isAjax) {\n this.request(action.href).done(function (response) {\n var data;\n\n if (!response.error) {\n data = _.findWhere(this.rows, {\n _rowIndex: action.rowIndex\n });\n\n this.trigger('action', {\n action: actionIndex,\n data: data\n });\n }\n }.bind(this));\n\n } else {\n this._super();\n }\n },\n\n /**\n * Send customer address listing ajax request\n *\n * @param {String} href\n */\n request: function (href) {\n var settings = _.extend({}, this.ajaxSettings, {\n url: href,\n data: {\n 'form_key': window.FORM_KEY\n }\n });\n\n $('body').trigger('processStart');\n\n return $.ajax(settings)\n .done(function (response) {\n if (response.error) {\n uiAlert({\n content: response.message\n });\n }\n })\n .fail(function () {\n uiAlert({\n content: $t('Sorry, there has been an error processing your request. Please try again later.')\n });\n })\n .always(function () {\n $('body').trigger('processStop');\n });\n }\n });\n});\n","Magento_Customer/js/form/components/form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery',\n 'Magento_Ui/js/modal/alert',\n 'Magento_Ui/js/modal/confirm',\n 'Magento_Ui/js/form/form',\n 'underscore',\n 'mage/translate'\n], function ($, uiAlert, uiConfirm, Form, _, $t) {\n 'use strict';\n\n return Form.extend({\n defaults: {\n deleteConfirmationMessage: '',\n ajaxSettings: {\n method: 'POST',\n dataType: 'json'\n }\n },\n\n /**\n * Delete customer address by provided url.\n * Will call confirmation message to be sure that user is really wants to delete this address\n *\n * @param {String} url - ajax url\n */\n deleteAddress: function (url) {\n var that = this;\n\n uiConfirm({\n content: this.deleteConfirmationMessage,\n actions: {\n /** @inheritdoc */\n confirm: function () {\n that._delete(url);\n }\n }\n });\n },\n\n /**\n * Perform asynchronous DELETE request to server.\n * @param {String} url - ajax url\n * @returns {Deferred}\n */\n _delete: function (url) {\n var settings = _.extend({}, this.ajaxSettings, {\n url: url,\n data: {\n 'form_key': window.FORM_KEY\n }\n }),\n that = this;\n\n $('body').trigger('processStart');\n\n return $.ajax(settings)\n .done(function (response) {\n if (response.error) {\n uiAlert({\n content: response.message\n });\n } else {\n that.trigger('deleteAddressAction', that.source.get('data.entity_id'));\n }\n })\n .fail(function () {\n uiAlert({\n content: $t('Sorry, there has been an error processing your request. Please try again later.')\n });\n })\n .always(function () {\n $('body').trigger('processStop');\n });\n\n }\n });\n});\n","Magento_Customer/js/form/components/insert-form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/components/insert-form'\n], function (Insert) {\n 'use strict';\n\n return Insert.extend({\n defaults: {\n listens: {\n responseData: 'onResponse'\n },\n modules: {\n addressListing: '${ $.addressListingProvider }',\n addressModal: '${ $.addressModalProvider }'\n }\n },\n\n /**\n * Close modal, reload customer address listing and save customer address\n *\n * @param {Object} responseData\n */\n onResponse: function (responseData) {\n var data;\n\n if (!responseData.error) {\n this.addressModal().closeModal();\n this.addressListing().reload({\n refresh: true\n });\n data = this.externalSource().get('data');\n this.saveAddress(responseData, data);\n }\n },\n\n /**\n * Save customer address to customer form data source\n *\n * @param {Object} responseData\n * @param {Object} data - customer address\n */\n saveAddress: function (responseData, data) {\n data['entity_id'] = responseData.data['entity_id'];\n\n if (parseFloat(data['default_billing'])) {\n this.source.set('data.default_billing_address', data);\n } else if (\n parseFloat(this.source.get('data.default_billing_address')['entity_id']) === data['entity_id']\n ) {\n this.source.set('data.default_billing_address', []);\n }\n\n if (parseFloat(data['default_shipping'])) {\n this.source.set('data.default_shipping_address', data);\n } else if (\n parseFloat(this.source.get('data.default_shipping_address')['entity_id']) === data['entity_id']\n ) {\n this.source.set('data.default_shipping_address', []);\n }\n },\n\n /**\n * Event method that closes \"Edit customer address\" modal and refreshes grid after customer address\n * was removed through \"Delete\" button on the \"Edit customer address\" modal\n *\n * @param {String} id - customer address ID to delete\n */\n onAddressDelete: function (id) {\n this.addressModal().closeModal();\n this.addressListing().reload({\n refresh: true\n });\n this.addressListing()._delete([parseFloat(id)]);\n }\n });\n});\n","Magento_Customer/js/form/components/insert-listing.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/components/insert-listing',\n 'underscore'\n], function (Insert, _) {\n 'use strict';\n\n return Insert.extend({\n\n /**\n * On action call\n *\n * @param {Object} data - customer address and actions\n */\n onAction: function (data) {\n this[data.action + 'Action'].call(this, data.data);\n },\n\n /**\n * On mass action call\n *\n * @param {Object} data - customer address\n */\n onMassAction: function (data) {\n this[data.action + 'Massaction'].call(this, data.data);\n },\n\n /**\n * Set default billing address\n *\n * @param {Object} data - customer address\n */\n setDefaultBillingAction: function (data) {\n this.source.set('data.default_billing_address', data);\n },\n\n /**\n * Set default shipping address\n *\n * @param {Object} data - customer address\n */\n setDefaultShippingAction: function (data) {\n this.source.set('data.default_shipping_address', data);\n },\n\n /**\n * Delete customer address\n *\n * @param {Object} data - customer address\n */\n deleteAction: function (data) {\n this._delete([parseFloat(data[data['id_field_name']])]);\n },\n\n /**\n * Mass action delete\n *\n * @param {Object} data - customer address\n */\n deleteMassaction: function (data) {\n var ids = data.selected || this.selections().selected();\n\n ids = _.map(ids, function (val) {\n return parseFloat(val);\n });\n\n this._delete(ids);\n },\n\n /**\n * Delete customer address and selections by provided ids.\n *\n * @param {Array} ids\n */\n _delete: function (ids) {\n var defaultShippingId = parseFloat(this.source.get('data.default_shipping_address.entity_id')),\n defaultBillingId = parseFloat(this.source.get('data.default_billing_address.entity_id'));\n\n if (ids.indexOf(defaultShippingId) !== -1) {\n this.source.set('data.default_shipping_address', []);\n }\n\n if (ids.indexOf(defaultBillingId) !== -1) {\n this.source.set('data.default_billing_address', []);\n }\n\n _.each(ids, function (id) {\n this.selections().deselect(id.toString(), false);\n }, this);\n }\n });\n});\n","Magento_Customer/js/form/element/country.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/element/country'\n], function (Country) {\n 'use strict';\n\n return Country.extend({\n defaults: {\n countryScope: 'data.country'\n },\n\n /**\n * Set country to customer address form\n *\n * @param {String} value - country\n */\n setDifferedFromDefault: function (value) {\n this._super();\n\n if (value) {\n this.source.set(this.countryScope, this.indexedOptions[value].label);\n }\n }\n });\n});\n","Magento_Customer/js/form/element/region.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/element/region'\n], function (Region) {\n 'use strict';\n\n return Region.extend({\n defaults: {\n regionScope: 'data.region'\n },\n\n /**\n * Set region to customer address form\n *\n * @param {String} value - region\n */\n setDifferedFromDefault: function (value) {\n this._super();\n\n if (parseFloat(value)) {\n this.source.set(this.regionScope, this.indexedOptions[value].label);\n }\n }\n });\n});\n","Magento_Customer/js/form/element/website.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/element/website',\n 'uiRegistry',\n 'underscore'\n], function (Website, registry, _) {\n 'use strict';\n\n return Website.extend({\n /**\n * On value change handler.\n *\n * @param {String} value\n */\n onUpdate: function (value) {\n var groupIdFieldKey = 'group_id',\n sendEmailStoreIdFieldKey = 'sendemail_store_id',\n groupId = registry.get('index = ' + groupIdFieldKey),\n sendEmailStoreId = registry.get('index = ' + sendEmailStoreIdFieldKey),\n customerAttributes = registry.filter('parentScope = data.customer'),\n option = this.getOption(value);\n\n customerAttributes.forEach(element => {\n var requiredWebsites = element.validation['required-entry-website'];\n\n if (!_.isArray(requiredWebsites)) {\n return;\n }\n if (requiredWebsites.includes(parseInt(value, 10))) {\n element.validation['required-entry'] = true;\n element.required(true);\n } else {\n delete element.validation['required-entry'];\n element.required(false);\n }\n });\n\n if (groupId) {\n groupId.value(option[groupIdFieldKey]);\n }\n\n if (sendEmailStoreId && option['default_store_view_id']) {\n sendEmailStoreId.value(option['default_store_view_id']);\n }\n return this._super();\n }\n });\n});\n","Magento_Customer/js/bootstrap/customer-post-action.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\nrequire([\n 'Magento_Customer/edit/post-wrapper'\n]);\n","Magento_Customer/edit/post-wrapper.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'jquery',\n 'Magento_Ui/js/modal/confirm',\n 'mage/translate'\n], function ($, confirm) {\n 'use strict';\n\n /**\n * @param {String} url\n * @returns {Object}\n */\n function getForm(url) {\n return $('<form>', {\n 'action': url,\n 'method': 'POST'\n }).append($('<input>', {\n 'name': 'form_key',\n 'value': window.FORM_KEY,\n 'type': 'hidden'\n }));\n }\n\n $('#customer-edit-delete-button').on('click', function () {\n var msg = $.mage.__('Are you sure you want to do this?'),\n url = $('#customer-edit-delete-button').data('url');\n\n confirm({\n 'content': msg,\n 'actions': {\n\n /**\n * 'Confirm' action handler.\n */\n confirm: function () {\n getForm(url).appendTo('body').submit();\n }\n }\n });\n\n return false;\n });\n});\n","Magento_Integration/js/integration.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * jQuery plugin is added.\n *\n * @api\n */\ndefine([\n 'jquery',\n 'Magento_Ui/js/modal/alert',\n 'jquery/ui',\n 'mage/translate',\n 'Magento_Ui/js/modal/modal'\n], function ($, alert) {\n 'use strict';\n\n $.widget('mage.integration', {\n /**\n * Options common to all instances of this widget.\n * @type {Object}\n */\n options: {\n /**\n * URL of the integration grid.\n * @type {String}\n */\n gridUrl: ''\n },\n\n /**\n * Bind event handler for the action when admin clicks \"Save & Activate\" button.\n * @private\n */\n _create: function () {\n if ($('#save-split-button-activate').length) {\n // We're on the \"New integration\" page - bind related handler\n this._form = $('#edit_form');\n this._form.on('saveAndActivate', $.proxy(this._saveAndActivate, this));\n }\n },\n\n /**\n * Save new integration, then kick off the activate dialog.\n * @private\n */\n _saveAndActivate: function () {\n if (this._form.validation && !this._form.validation('isValid')) {\n return false;\n }\n\n $.ajax({\n url: this._form.prop('action'),\n type: 'post',\n data: this._form.serialize(),\n dataType: 'json',\n context: this,\n\n /** @inheritdoc */\n beforeSend: function () {\n $('body').trigger('processStart');\n },\n\n /** @inheritdoc */\n success: function (data) {\n var integrationName, that;\n\n if (data._redirect) {\n window.location.href = data._redirect;\n } else if (data.integrationId) {\n integrationName = $('#integration_properties_name').val();\n window.integration.popup.show($('<span>').attr({\n 'data-row-dialog': 'permissions',\n 'data-row-id': data.integrationId,\n // We do escaping here instead of the place of actual output because _showPopup()\n // actually receives dialog window title from couple of places: from here and from the grid.\n // The issue is we always should escape values in the grid, so that value is already\n // escaped. To avoid double escaping we do it here instead of the output.\n 'data-row-name': $('<div>').text(integrationName).html(),\n 'data-row-is-reauthorize': '0',\n 'data-row-is-token-exchange': data.isTokenExchange\n }));\n that = this;\n $('#integration-popup-container').on('dialogclose', function () {\n $('body').trigger('processStart');\n window.location.href = that.options.gridUrl;\n\n return false;\n });\n }\n },\n\n /** @inheritdoc */\n error: function (jqXHR, status, error) {\n alert({\n content: $.mage.__('Sorry, something went wrong. Please try again later.')\n });\n window.console && console.log(status + ': ' + error + '\\nResponse text:\\n' + jqXHR.responseText);\n },\n\n /** @inheritdoc */\n complete: function () {\n $('body').trigger('processStop');\n }\n });\n\n return true;\n }\n });\n\n /**\n * @param {*} permissionsDialogUrl\n * @param {*} tokensDialogUrl\n * @param {*} tokensExchangeUrl\n * @param {*} gridUrl\n * @param {*} successCallbackUrl\n * @return {Object}\n * @constructor\n */\n window.Integration = function (\n permissionsDialogUrl,\n tokensDialogUrl,\n tokensExchangeUrl,\n gridUrl,\n successCallbackUrl\n ) {\n var url = {\n permissions: permissionsDialogUrl,\n tokens: tokensDialogUrl,\n tokensExchange: tokensExchangeUrl,\n grid: gridUrl\n },\n IdentityLogin = {\n win: null,\n strLocation: null,\n checker: null,\n isCalledBack: false,\n //Info popup dialog. Should be hidden when login window is closed\n jqInfoDialog: $('#integration-popup-container'),\n successCallbackUrl: successCallbackUrl,\n Constants: {\n /*\n This interval is set such that it adjusts to the child window closing timeout of 1000 ms. This will\n give the checker function enough time to detect if the successCallback has been invoked\n */\n CHECKER_INTERVAL: 500,\n //Login screen size plus some buffer\n WIDTH: 680,\n HEIGHT: 510,\n // subtract pixels(30) and width(680) from screen width to move popup from extreme left\n LEFT: screen.width - 680 - 30,\n // subtract pixels(300) and height(300) from screen height to move from top\n TOP: screen.height - 510 - 300\n },\n\n /**\n * @param {*} identityCallbackUrl\n * @param {*} consumerKey\n * @param {*} jqInfoDialog\n */\n invokePopup: function (identityCallbackUrl, consumerKey, jqInfoDialog) {\n var param;\n\n // Callback should be invoked only once. Reset callback flag on subsequent invocations.\n IdentityLogin.isCalledBack = false;\n IdentityLogin.jqInfoDialog = jqInfoDialog;\n param = $.param({\n 'oauth_consumer_key': consumerKey,\n 'success_call_back': IdentityLogin.successCallbackUrl\n });\n IdentityLogin.win = window.open(identityCallbackUrl + '?' + param, '',\n 'top=' + IdentityLogin.Constants.TOP +\n ', left=' + IdentityLogin.Constants.LEFT +\n ', width=' + IdentityLogin.Constants.WIDTH +\n ', height=' + IdentityLogin.Constants.HEIGHT + ',scrollbars=no');\n\n if (IdentityLogin.checker != null) {\n //Clear any previous check\n clearInterval(IdentityLogin.checker);\n }\n //Polling to detect url of the child window.\n IdentityLogin.checker = setInterval(\n IdentityLogin.fnCheckLocation, IdentityLogin.Constants.CHECKER_INTERVAL\n );\n },\n\n /**\n * Function to check the location of the child popup window.\n * Once detected if the callback is successful, parent window will be reloaded\n */\n fnCheckLocation: function () {\n if (IdentityLogin.win == null) {\n return;\n }\n // Check to see if the location has changed.\n try {\n //Is the success callback invoked\n if (IdentityLogin.win.closed ||\n IdentityLogin.win.location.href == IdentityLogin.successCallbackUrl //eslint-disable-line eqeqeq\n ) {\n //Stop the polling\n clearInterval(IdentityLogin.checker);\n $('body').trigger('processStart');\n //Check for window closed\n window.location.href = url.grid;\n IdentityLogin.jqInfoDialog.modal('closeModal');\n }\n } catch (e) {\n //squash. In case Window closed without success callback, clear polling\n if (IdentityLogin.win.closed) {\n IdentityLogin.jqInfoDialog.modal('closeModal');\n clearInterval(IdentityLogin.checker);\n }\n\n return;\n }\n }\n },\n\n /**\n * @param {Object} popupWindow\n * @return {Boolean}\n */\n isPopupBlocked = function (popupWindow) {\n try {\n popupWindow.focus();\n } catch (e) {\n alert({\n content: $.mage.__('Popup Blocker is enabled! Please add this site to your exception list.')\n });\n\n return true;\n }\n\n return false;\n },\n\n /**\n * @param {*} dialog\n * @param {*} title\n * @param {*} okButton\n * @param {*} ajaxUrl\n * @private\n */\n _showPopup = function (dialog, title, okButton, ajaxUrl) {\n $.ajax({\n url: ajaxUrl,\n cache: false,\n data: {\n 'form_key': window.FORM_KEY\n },\n method: 'GET',\n\n /** @inheritdoc */\n beforeSend: function () {\n // Show the spinner\n $('body').trigger('processStart');\n },\n\n /** @inheritdoc */\n success: function (result) {\n var redirect = result._redirect,\n identityLinkUrl, consumerKey, popupHtml, popup, resultObj, buttons, dialogProperties;\n\n if (redirect) {\n window.location.href = redirect;\n\n return;\n }\n\n identityLinkUrl = null;\n consumerKey = null;\n popupHtml = null;\n popup = $('#integration-popup-container');\n\n try {\n resultObj = typeof result === 'string' ?\n JSON.parse(result) :\n result;\n\n identityLinkUrl = resultObj['identity_link_url'];\n consumerKey = resultObj['oauth_consumer_key'];\n popupHtml = resultObj['popup_content'];\n\n } catch (e) {\n //This is expected if result is not json. Do nothing.\n }\n\n if (identityLinkUrl && consumerKey && popupHtml) {\n IdentityLogin.invokePopup(identityLinkUrl, consumerKey, popup);\n\n if (isPopupBlocked(IdentityLogin.win)) {\n return;\n }\n } else {\n popupHtml = result;\n }\n\n if (popup.length === 0) {\n popup = $('<div></div>');\n }\n popup.html(popupHtml);\n\n buttons = [];\n dialogProperties = {\n title: title,\n type: 'slide',\n dialogClass: dialog == 'permissions' ? 'integration-dialog' : 'integration-dialog no-close' //eslint-disable-line\n };\n\n // Add confirmation button to the list of dialog buttons. okButton not set for tokenExchange dialog\n if (okButton) {\n buttons.push(okButton);\n }\n // Add button only if its not empty\n if (buttons.length > 0) {\n dialogProperties.buttons = buttons;\n }\n popup.modal(dialogProperties);\n popup.modal('openModal');\n },\n\n /** @inheritdoc */\n error: function (jqXHR, status, error) {\n alert({\n content: $.mage.__('Sorry, something went wrong. Please try again later.')\n });\n window.console && console.log(status + ': ' + error + '\\nResponse text:\\n' + jqXHR.responseText);\n },\n\n /** @inheritdoc */\n complete: function () {\n // Hide the spinner\n $('body').trigger('processStop');\n }\n });\n };\n\n return {\n popup: {\n /**\n * @param {*} ctx\n */\n show: function (ctx) {\n var dialog = $(ctx).attr('data-row-dialog'),\n isReauthorize = $(ctx).attr('data-row-is-reauthorize'),\n isTokenExchange = $(ctx).attr('data-row-is-token-exchange'),\n integrationId, ajaxUrl, integrationName, okButton;\n\n if (!url.hasOwnProperty(dialog)) {\n throw 'Invalid dialog type';\n }\n\n integrationId = $(ctx).attr('data-row-id');\n\n if (!integrationId) {\n throw 'Unable to find integration ID';\n }\n\n // Replace placeholders in URL\n ajaxUrl = url[dialog].replace(':id', integrationId).replace(':isReauthorize', isReauthorize);\n\n try {\n // Get integration name either from current element or from neighbor column\n integrationName = $(ctx).attr('data-row-name') ||\n $(ctx).parents('tr').find('.col-name').html().trim(); // eslint-disable-line jquery-no-trim\n\n if (integrationName.indexOf('<span') > -1) {\n // Remove unsecure URL warning from popup window title if it is present\n integrationName = integrationName.substring(0, integrationName.indexOf('<span'));\n }\n } catch (e) {\n throw 'Unable to find integration name';\n }\n\n okButton = {\n permissions: {\n text: isReauthorize == '1' ? $.mage.__('Reauthorize') : $.mage.__('Allow'), //eslint-disable-line\n 'class': 'action-primary',\n attr: {\n 'data-row-id': integrationId,\n 'data-row-name': integrationName,\n 'data-row-dialog': isTokenExchange == '1' ? 'tokensExchange' : 'tokens', //eslint-disable-line\n 'data-row-is-reauthorize': isReauthorize,\n 'data-row-is-token-exchange': isTokenExchange\n },\n\n /**\n * Click.\n */\n click: function () {\n // Find the 'Allow' button and clone - it has all necessary data, but is going to be\n // destroyed along with the current dialog\n var context = this.modal.find('button.action-primary').clone(true);\n\n this.closeModal();\n this.modal.remove();\n // Make popup out of data we saved from 'Allow' button\n window.integration.popup.show(context);\n }\n },\n tokens: {\n text: $.mage.__('Done'),\n 'class': 'action-primary',\n\n /**\n * Click.\n */\n click: function () {\n // Integration has been activated at the point of generating tokens\n window.location.href = url.grid;\n }\n }\n };\n\n _showPopup(dialog, integrationName, okButton[dialog], ajaxUrl);\n }\n }\n };\n };\n\n return $.mage.integration;\n});\n","Magento_User/js/roles-tree.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n 'jquery',\n 'jquery/ui',\n 'jquery/jstree/jquery.jstree'\n], function ($) {\n 'use strict';\n\n $.widget('mage.rolesTree', {\n options: {\n treeInitData: {},\n editFormSelector: '',\n resourceFieldName: 'resource[]',\n checkboxVisible: true\n },\n\n /** @inheritdoc */\n _create: function () {\n this.element.jstree({\n plugins: ['checkbox'],\n checkbox: {\n // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n three_state: false,\n // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n visible: this.options.checkboxVisible,\n cascade: 'undetermined'\n },\n core: {\n data: this.options.treeInitData,\n themes: {\n dots: false\n }\n }\n });\n this._bind();\n },\n\n /**\n * @private\n */\n _destroy: function () {\n this.element.jstree('destroy');\n },\n\n /**\n * @private\n */\n _bind: function () {\n this.element.on('select_node.jstree', $.proxy(this._selectChildNodes, this));\n this.element.on('deselect_node.jstree', $.proxy(this._deselectChildNodes, this));\n this.element.on('changed.jstree', $.proxy(this._changedNode, this));\n },\n\n /**\n * @param {Event} event\n * @param {Object} selected\n * @private\n */\n _selectChildNodes: function (event, selected) {\n // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n selected.instance.open_node(selected.node);\n selected.node.children.each(function (id) {\n var selector = '[id=\"' + id + '\"]';\n\n selected.instance.select_node(\n selected.instance.get_node($(selector), false)\n );\n });\n // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n },\n\n /**\n * @param {Event} event\n * @param {Object} selected\n * @private\n */\n _deselectChildNodes: function (event, selected) {\n selected.node.children.each(function (id) {\n var selector = '[id=\"' + id + '\"]';\n\n // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n selected.instance.deselect_node(\n selected.instance.get_node($(selector), false)\n );\n // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n });\n },\n\n /**\n * Add selected resources to form to be send later\n *\n * @param {Event} event\n * @param {Object} selected\n * @private\n */\n _changedNode: function (event, selected) {\n var form = $(this.options.editFormSelector),\n fieldName = this.options.resourceFieldName,\n items = selected.selected.concat($(this.element).jstree('get_undetermined'));\n\n if (this.options.editFormSelector === '') {\n return;\n }\n form.find('input[name=\"' + this.options.resourceFieldName + '\"]').remove();\n items.each(function (id) {\n $('<input>', {\n type: 'hidden',\n name: fieldName,\n value: id\n }).appendTo(form);\n });\n }\n });\n\n return $.mage.rolesTree;\n});\n","Magento_User/js/delete-user-account.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery'\n], function ($) {\n 'use strict';\n\n var postData;\n\n return function (params, elem) {\n\n elem.on('click', function () {\n\n postData = {\n 'data': {\n 'user_id': params.objId,\n 'current_password': $('[name=\"current_password\"]').val()\n }\n };\n\n if ($.validator.validateElement($('[name=\"current_password\"]'))) {\n window.deleteConfirm(params.message, params.url, postData);\n }\n });\n };\n});\n","Magento_Cms/js/folder-tree.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'jquery',\n 'jquery/ui',\n 'jquery/jstree/jquery.jstree'\n], function ($) {\n 'use strict';\n\n $.widget('mage.folderTree', {\n options: {\n root: 'root',\n rootName: 'Root',\n url: '',\n currentPath: ['root'],\n tree: {\n core: {\n themes: {\n dots: false\n },\n // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n check_callback: true\n // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n }\n }\n },\n\n /** @inheritdoc */\n _create: function () {\n var options = this.options,\n treeOptions = $.extend(\n true,\n {},\n options.tree,\n {\n core: {\n data: {\n url: options.url,\n type: 'POST',\n dataType: 'text',\n dataFilter: $.proxy(function (data) {\n return this._convertData(JSON.parse(data));\n }, this),\n\n /**\n * @param {HTMLElement} node\n * @return {Object}\n */\n data: function (node) {\n return {\n node: node.id === 'root' ? null : node.id,\n 'form_key': window.FORM_KEY\n };\n }\n }\n }\n }\n );\n\n this.element.jstree(treeOptions)\n .on('ready.jstree', $.proxy(this.treeLoaded, this))\n .on('load_node.jstree', $.proxy(this._createRootNode, this));\n },\n\n /**\n * Tree loaded.\n */\n treeLoaded: function () {\n var path = this.options.currentPath,\n tree = this.element,\n lastExistentFolderEl,\n\n /**\n * Recursively open folders specified in path array.\n */\n recursiveOpen = function () {\n var folderEl = $('[data-id=\"' + path.pop() + '\"]');\n\n // if folder doesn't exist, select the last opened folder\n if (!folderEl.length) {\n tree.jstree('select_node', lastExistentFolderEl);\n\n return;\n }\n\n lastExistentFolderEl = folderEl;\n\n if (path.length) {\n tree.jstree('open_node', folderEl, recursiveOpen);\n } else {\n tree.jstree('open_node', folderEl, function () {\n tree.jstree('select_node', folderEl);\n });\n }\n };\n\n recursiveOpen();\n },\n\n /**\n * Create tree root node\n *\n * @param {jQuery.Event} event\n * @param {Object} data\n * @private\n */\n _createRootNode: function (event, data) {\n var rootNode, children;\n\n // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n if (data.node.id === '#') {\n rootNode = {\n id: this.options.root,\n text: this.options.rootName,\n li_attr: {\n 'data-id': this.options.root\n }\n };\n children = data.node.children;\n\n data.instance.element.jstree().create_node(null, rootNode, 'first', function () {\n data.instance.element.jstree().move_node(children, rootNode.id);\n });\n }\n // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n },\n\n /**\n * @param {*} data\n * @return {*}\n * @private\n */\n _convertData: function (data) {\n return $.map(data, function (node) {\n\n return {\n id: node.id,\n text: node.text,\n path: node.path,\n // jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n li_attr: {\n 'data-id': node.id\n },\n // jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n children: node.children\n };\n });\n }\n });\n\n return $.mage.folderTree;\n});\n","Magento_Email/js/variables.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/* global Variables, updateElementAtCursor */\ndefine([\n 'jquery',\n 'mage/translate',\n 'Magento_Ui/js/modal/modal',\n 'jquery/ui',\n 'prototype'\n], function (jQuery, $t) {\n 'use strict';\n\n window.Variables = {\n textareaElementId: null,\n variablesContent: null,\n dialogWindow: null,\n dialogWindowId: 'variables-chooser',\n overlayShowEffectOptions: null,\n overlayHideEffectOptions: null,\n insertFunction: 'Variables.insertVariable',\n variablesValue: [],\n\n /**\n * @param {*} textareaElementId\n * @param {Function} insertFunction\n */\n init: function (textareaElementId, insertFunction) {\n if ($(textareaElementId)) {\n this.textareaElementId = textareaElementId;\n }\n\n if (insertFunction) {\n this.insertFunction = insertFunction;\n }\n },\n\n /**\n * reset data.\n */\n resetData: function () {\n this.variablesContent = null;\n this.dialogWindow = null;\n },\n\n /**\n * @param {Object} variables\n */\n openVariableChooser: function (variables) {\n if (this.variablesContent == null && variables) {\n this.variablesContent = '<ul class=\"insert-variable\">';\n variables.each(function (variableGroup) {\n if (variableGroup.label && variableGroup.value) {\n this.variablesContent += '<li><b>' + variableGroup.label.escapeHTML() + '</b></li>';\n variableGroup.value.each(function (variable) {\n if (variable.value && variable.label) {\n this.variablesValue.push(variable.value);\n this.variablesContent += '<li>' +\n this.prepareVariableRow(this.variablesValue.length, variable.label) + '</li>';\n }\n }.bind(this));\n }\n }.bind(this));\n this.variablesContent += '</ul>';\n }\n\n if (this.variablesContent) {\n this.openDialogWindow(this.variablesContent);\n }\n },\n\n /**\n * @param {*} variablesContent\n */\n openDialogWindow: function (variablesContent) {\n var windowId = this.dialogWindowId;\n\n jQuery('<div id=\"' + windowId + '\">' + variablesContent + '</div>').modal({\n title: $t('Insert Variable...'),\n type: 'slide',\n buttons: [],\n\n /** @inheritdoc */\n closed: function (e, modal) {\n modal.modal.remove();\n }\n });\n\n jQuery('#' + windowId).modal('openModal');\n },\n\n /**\n * Close dialog window.\n */\n closeDialogWindow: function () {\n jQuery('#' + this.dialogWindowId).modal('closeModal');\n },\n\n /**\n * @param {Number} index\n * @param {*} varLabel\n * @return {String}\n */\n prepareVariableRow: function (index, varLabel) {\n return '<a href=\"#\" onclick=\"' +\n this.insertFunction +\n '(' +\n index +\n ');return false;\">' +\n varLabel.escapeHTML() +\n '</a>';\n },\n\n /**\n * @param {*} variable\n */\n insertVariable: function (variable) {\n var windowId = this.dialogWindowId,\n textareaElm, scrollPos;\n\n jQuery('#' + windowId).modal('closeModal');\n textareaElm = $(this.textareaElementId);\n\n if (textareaElm) {\n scrollPos = textareaElm.scrollTop;\n\n if (!isNaN(variable)) {\n updateElementAtCursor(textareaElm, Variables.variablesValue[variable - 1]);\n } else {\n updateElementAtCursor(textareaElm, variable);\n }\n textareaElm.focus();\n textareaElm.scrollTop = scrollPos;\n jQuery(textareaElm).trigger('change');\n textareaElm = null;\n }\n }\n };\n\n window.MagentovariablePlugin = {\n editor: null,\n variables: null,\n textareaId: null,\n\n /**\n * @param {*} editor\n */\n setEditor: function (editor) {\n this.editor = editor;\n },\n\n /**\n * @param {String} url\n * @param {*} textareaId\n */\n loadChooser: function (url, textareaId) {\n this.textareaId = textareaId;\n\n if (this.variables == null) {\n new Ajax.Request(url, {\n parameters: {},\n onComplete: function (transport) {\n if (transport.responseText.isJSON()) {\n Variables.init(null, 'MagentovariablePlugin.insertVariable');\n this.variables = transport.responseText.evalJSON();\n this.openChooser(this.variables);\n }\n }.bind(this)\n });\n } else {\n this.openChooser(this.variables);\n }\n },\n\n /**\n * @param {*} variables\n */\n openChooser: function (variables) {\n Variables.openVariableChooser(variables);\n },\n\n /**\n * @param {*} value\n */\n insertVariable: function (value) {\n if (this.textareaId) {\n Variables.init(this.textareaId);\n Variables.insertVariable(value);\n } else {\n Variables.closeDialogWindow();\n this.editor.execCommand('mceInsertContent', false, value);\n }\n }\n };\n});\n","Magento_Theme/js/form.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'prototype'\n], function () {\n 'use strict';\n\n /**\n * @param {*} selected\n * @param {Object} defaultsById\n */\n function parentThemeOnChange(selected, defaultsById) {\n var statusBar = $$('.tab-item-link')[0],\n isChanged = statusBar.hasClassName('changed'),\n defaults;\n\n if (!isChanged) {\n defaults = defaultsById[selected];\n $('theme_title').value = defaults['theme_title'];\n }\n }\n\n window.parentThemeOnChange = parentThemeOnChange;\n});\n","Magento_Theme/js/sortable.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * JQuery UI Widget declaration: 'mage.sortable'\n *\n * @api\n */\ndefine([\n 'jquery',\n 'jquery/ui'\n], function ($) {\n 'use strict';\n\n /**\n * Widget panel\n */\n $.widget('mage.sortable', $.ui.sortable, {\n options: {\n moveUpEvent: 'moveUp',\n moveDownEvent: 'moveDown'\n },\n\n /** @inheritdoc */\n _create: function () {\n this._super();\n this.initButtons();\n this.bind();\n },\n\n /**\n * Init buttons.\n */\n initButtons: function () {\n this.element.find('input.up').on('click', $.proxy(function (event) {\n $('body').trigger(this.options.moveUpEvent, {\n item: $(event.target).parent('li')\n });\n }, this));\n this.element.find('input.down').on('click', $.proxy(function (event) {\n $('body').trigger(this.options.moveDownEvent, {\n item: $(event.target).parent('li')\n });\n }, this));\n },\n\n /**\n * Bind.\n */\n bind: function () {\n var $body = $('body');\n\n $body.on(this.options.moveUpEvent, $.proxy(this._onMoveUp, this));\n $body.on(this.options.moveDownEvent, $.proxy(this._onMoveDown, this));\n },\n\n /**\n * @param {jQuery.Event} event\n * @param {Object} data\n * @private\n */\n _onMoveUp: function (event, data) {\n data.item.insertBefore(data.item.prev());\n },\n\n /**\n * @param {jQuery.Event} event\n * @param {Object} data\n * @private\n */\n _onMoveDown: function (event, data) {\n data.item.insertAfter(data.item.next());\n }\n });\n\n return $.mage.sortable;\n});\n","Magento_Theme/js/bootstrap.js":"/**\n *\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\nrequire([\n 'jquery/fileUploader/jquery.fileupload-ui',\n 'mage/adminhtml/browser',\n 'Magento_Theme/js/form'\n]);\n","Magento_Theme/js/custom-js-list.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'jquery',\n 'mage/template',\n 'jquery/ui'\n], function ($, mageTemplate) {\n 'use strict';\n\n $.widget('theme.themeJsList', {\n options: {\n templateId: null,\n emptyTemplateId: null,\n refreshFileListEvent: null,\n prefixItemId: '',\n suffixItemId: ''\n },\n\n /**\n * Initialize widget\n *\n * @protected\n */\n _create: function () {\n this._bind();\n },\n\n /**\n * Bind event handlers\n *\n * @protected\n */\n _bind: function () {\n $('body').on(this.options.refreshFileListEvent, $.proxy(this._onRefreshList, this));\n },\n\n /**\n * Render js files list\n *\n * @param {jQuery.Event} event\n * @param {Object} data\n * @protected\n */\n _onRefreshList: function (event, data) {\n $(this.element).html('');\n\n if (data.jsList.length) {\n this._renderList(data.jsList);\n } else {\n this._renderEmptyList();\n }\n },\n\n /**\n * Get item js list id\n *\n * @param {*} fileId\n * @return {String}\n * @protected\n */\n _getItemId: function (fileId) {\n return this.options.prefixItemId + fileId + this.options.suffixItemId;\n },\n\n /**\n * Render js list\n *\n * @param {Array} jsList\n * @protected\n */\n _renderList: function (jsList) {\n var itemTmpl,\n index,\n tmpl;\n\n for (index = 0; index < jsList.length; index++) {\n itemTmpl = $('<li></li>').html($(this.options.templateId).html());\n\n $(itemTmpl).attr('class', $(this.options.templateId).attr('class'));\n\n itemTmpl.attr('id', this._getItemId(jsList[index].id));\n\n tmpl = mageTemplate(itemTmpl.html(), {\n data: jsList[index]\n });\n\n itemTmpl.html(tmpl);\n\n itemTmpl.removeClass('no-display');\n itemTmpl.appendTo(this.element);\n }\n },\n\n /**\n * Set empty js list\n *\n * @protected\n */\n _renderEmptyList: function () {\n var itemTmpl = $('<li></li>').html($(this.options.emptyTemplateId).html());\n\n $(itemTmpl).attr('class', $(this.options.emptyTemplateId).attr('class'));\n\n itemTmpl.attr('id', 'empty-js-list');\n itemTmpl.removeClass('no-display');\n itemTmpl.appendTo(this.element);\n }\n });\n});\n","Magento_Theme/js/form/component/robots-reset-button.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n 'Magento_Ui/js/form/components/button',\n 'uiRegistry'\n], function (Button, registry) {\n 'use strict';\n\n return Button.extend({\n defaults: {\n customInstructionField: '${ $.parentName }.custom_instructions',\n label: '',\n buttonTpl: 'Magento_Theme/form/element/button'\n },\n\n /**\n * @private\n * @param {String} json\n * @return {String}\n */\n _parseJson: function (json) {\n return JSON.parse(json);\n },\n\n /**\n * @param {String} defaultRobotsTxt\n */\n reset: function (defaultRobotsTxt) {\n var customInstructions = registry.get(this.customInstructionField);\n\n if (customInstructions) {\n customInstructions.set('value', this._parseJson(defaultRobotsTxt));\n }\n }\n });\n});\n","Magento_Eav/js/input-types.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery',\n 'mage/translate'\n], function ($) {\n 'use strict';\n\n return function (config) {\n $('select#frontend_input').each(function () {\n var select = $(this),\n currentValue = select.find('option:selected').val(),\n compatibleTypes = config.inputTypes,\n enabledTypes = [],\n iterator,\n warning = $('<label>')\n .hide()\n .text($.mage.__('These changes affect all related products.'))\n .addClass('mage-error')\n .attr({\n generated: true, for: select.attr('id')\n }),\n hint = $('<p>')\n .hide()\n .addClass('note')\n .attr({\n generated: true\n }),\n hints = config.hints,\n\n /**\n * Toggle hint about changes types\n */\n toggleWarning = function () {\n if (select.find('option:selected').val() === currentValue) {\n warning.hide();\n } else {\n warning.show();\n }\n },\n\n /**\n * Toggle hint\n */\n toggleHint = function () {\n if (typeof hints[select.find('option:selected').val()] !== 'undefined') {\n select.after(hint.show().text(hints[select.find('option:selected').val()]));\n } else {\n hint.hide();\n }\n },\n\n /**\n * Remove unsupported options\n */\n removeOption = function () {\n if (!~enabledTypes.indexOf($(this).val())) {\n $(this).remove();\n }\n };\n\n // find enabled types for switching dor current input type\n for (iterator = 0; iterator < compatibleTypes.length; iterator++) {\n if (compatibleTypes[iterator].indexOf(currentValue) >= 0) {\n enabledTypes = compatibleTypes[iterator];\n }\n }\n\n // Check current type (allow only compatible types)\n if (~enabledTypes.indexOf(currentValue)) {\n // Enable select and keep only available options (all other will be removed)\n select.prop('disabled', false).find('option').each(removeOption);\n // Add warning on page and event for show/hide it\n select.after(warning).on('change', toggleWarning);\n }\n //bind hint toggling on change event\n select.on('change', toggleHint);\n //show hint for currently selected value\n toggleHint();\n });\n };\n});\n","Magento_CatalogInventory/js/components/use-config-min-sale-qty.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/element/single-checkbox',\n 'underscore',\n 'uiRegistry'\n], function (checkbox, _, registry) {\n 'use strict';\n\n return checkbox.extend({\n defaults: {\n valueFromConfig: ''\n },\n\n /**\n * @returns {Element}\n */\n initObservable: function () {\n return this\n ._super()\n .observe(['valueFromConfig']);\n },\n\n /**\n * @inheritdoc\n */\n initialize: function () {\n this._super();\n this.onCheckedChanged(this.checked());\n\n return this;\n },\n\n /**\n * @inheritdoc\n */\n onCheckedChanged: function (newChecked) {\n var valueFromConfig = this.valueFromConfig();\n\n if (newChecked && (_.isArray(valueFromConfig) && valueFromConfig.length === 0 || valueFromConfig === 1)) {\n this.changeVisibleDisabled(this.inputField, true, true, 1);\n } else if (newChecked && _.isObject(valueFromConfig)) {\n this.changeVisibleDisabled(this.inputField, false, true, null);\n this.changeVisibleDisabled(this.dynamicRowsField, true, true, null);\n } else if (newChecked && _.isNumber(valueFromConfig)) {\n this.changeVisibleDisabled(this.inputField, true, true, null);\n this.changeVisibleDisabled(this.dynamicRowsField, false, true, null);\n } else {\n this.changeVisibleDisabled(this.inputField, true, this.disabled() || false, null);\n this.changeVisibleDisabled(this.dynamicRowsField, false, true, null);\n }\n\n this._super(newChecked);\n },\n\n /**\n * Change visible and disabled\n *\n * @param {String} filter\n * @param {Boolean} visible\n * @param {Boolean} disabled\n * @param {Null|Number} valueFromConfig\n */\n changeVisibleDisabled: function (filter, visible, disabled, valueFromConfig) {\n registry.async(filter)(\n function (currentComponent) {\n var initialValue = currentComponent.initialValue;\n\n if (_.isString(initialValue) || initialValue === 0 || valueFromConfig === 1) {\n currentComponent.value(1);\n } else if (initialValue) {\n currentComponent.value(initialValue);\n }\n\n currentComponent.visible(visible);\n currentComponent.disabled(disabled);\n }\n );\n }\n });\n});\n","Magento_CatalogInventory/js/components/qty-validator-changer.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/element/abstract'\n], function (Abstract) {\n 'use strict';\n\n return Abstract.extend({\n defaults: {\n valueUpdate: 'input'\n },\n\n /**\n * Change validator\n */\n handleChanges: function (value) {\n var isDigits = value !== 1;\n\n this.validation['validate-integer'] = isDigits;\n this.validation['less-than-equals-to'] = isDigits ? 99999999 : 99999999.9999;\n this.validate();\n }\n });\n});\n","Magento_CatalogInventory/js/components/use-config-settings.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/element/single-checkbox'\n], function (checkbox) {\n 'use strict';\n\n return checkbox.extend({\n defaults: {\n valueFromConfig: '',\n linkedValue: '',\n disableParent: false,\n listens: {\n disabled: 'processState',\n checked: 'processState onCheckedChanged'\n },\n imports: {\n readOnly: 'ns = ${ $.ns }, index = stock_data:disabled'\n }\n },\n\n /**\n * @returns {Element}\n */\n initObservable: function () {\n return this\n ._super()\n .observe(['valueFromConfig', 'linkedValue', 'disableParent']);\n },\n\n /**\n * Handle checked and disabled changes to calculate disableParent value\n */\n processState: function () {\n this.disableParent(this.checked() || this.readOnly);\n\n if (this.readOnly) {\n this.disable();\n }\n },\n\n /**\n * @inheritdoc\n */\n onCheckedChanged: function (newChecked) {\n if (newChecked) {\n this.linkedValue(this.valueFromConfig());\n }\n\n this._super(newChecked);\n }\n });\n});\n","Magento_Downloadable/downloadable-type-handler.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery',\n 'Magento_Catalog/js/product/weight-handler',\n 'Magento_Catalog/catalog/type-events'\n], function ($, weight, productType) {\n 'use strict';\n\n return {\n $checkbox: $('[data-action=change-type-product-downloadable]'),\n $items: $('#product_info_tabs_downloadable_items'),\n $tab: null,\n isDownloadable: false,\n\n /**\n * Show\n */\n show: function () {\n this.$checkbox.prop('checked', true);\n this.$items.show();\n },\n\n /**\n * Hide\n */\n hide: function () {\n this.$checkbox.prop('checked', false);\n this.$items.hide();\n },\n\n /**\n * Constructor component\n * @param {Object} data - this backend data\n */\n 'Magento_Downloadable/downloadable-type-handler': function (data) {\n this.$tab = $('[data-tab=' + data.tabId + ']');\n this.isDownloadable = data.isDownloadable;\n this.bindAll();\n this._initType();\n },\n\n /**\n * Bind all\n */\n bindAll: function () {\n this.$checkbox.on('change', function (event) {\n $(document).trigger('setTypeProduct', $(event.target).prop('checked') ?\n 'downloadable' :\n productType.type.init === 'downloadable' ? 'virtual' : productType.type.init\n );\n });\n\n $(document).on('changeTypeProduct', this._initType.bind(this));\n },\n\n /**\n * Init type\n * @private\n */\n _initType: function () {\n if (productType.type.current === 'downloadable') {\n weight.change(false);\n weight.$weightSwitcher().one('change', function () {\n $(document).trigger(\n 'setTypeProduct',\n productType.type.init === 'downloadable' ? 'virtual' : productType.type.init\n );\n });\n this.show();\n } else {\n this.hide();\n }\n }\n };\n});\n","Magento_Downloadable/js/components/price-handler.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'Magento_Ui/js/form/element/abstract'\n], function (Element) {\n 'use strict';\n\n return Element.extend({\n defaults: {\n linksPurchasedSeparately: '0',\n useDefaultPrice: false,\n listens: {\n linksPurchasedSeparately: 'changeDisabledStatus',\n useDefaultPrice: 'changeDisabledStatus'\n }\n },\n\n /**\n * Invokes initialize method of parent class,\n * contains initialization logic\n */\n initialize: function () {\n this._super();\n this.changeDisabledStatus();\n\n return this;\n },\n\n /**\n * Disable/enable price field\n */\n changeDisabledStatus: function () {\n if (this.linksPurchasedSeparately === '1') {\n if (this.useDefaultPrice) {\n this.disabled(true);\n } else {\n this.disabled(false);\n }\n } else {\n this.disabled(true);\n }\n }\n });\n});\n","Magento_Downloadable/js/components/upload-type-handler.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'Magento_Ui/js/form/element/select',\n 'uiRegistry'\n], function (Select, registry) {\n 'use strict';\n\n return Select.extend({\n defaults: {\n listens: {\n value: 'changeTypeUpload'\n },\n typeUrl: 'file',\n typeFile: 'link_url',\n filterPlaceholder: 'ns = ${ $.ns }, parentScope = ${ $.parentScope }'\n },\n\n /**\n * Initialize component.\n * @returns {Element}\n */\n initialize: function () {\n return this\n ._super()\n .changeTypeUpload(this.initialValue);\n },\n\n /**\n * Callback that fires when 'value' property is updated.\n *\n * @param {String} currentValue\n * @returns {*}\n */\n onUpdate: function (currentValue) {\n this.changeTypeUpload(currentValue);\n\n return this._super();\n },\n\n /**\n * Change visibility for typeUrl/typeFile based on current value.\n *\n * @param {String} currentValue\n */\n changeTypeUpload: function (currentValue) {\n var componentFile = this.filterPlaceholder + ', index=' + this.typeFile,\n componentUrl = this.filterPlaceholder + ', index=' + this.typeUrl;\n\n switch (currentValue) {\n\n case 'file':\n this.changeVisible(componentFile, true);\n this.changeVisible(componentUrl, false);\n break;\n\n case 'url':\n this.changeVisible(componentFile, false);\n this.changeVisible(componentUrl, true);\n break;\n }\n },\n\n /**\n * Change visible\n *\n * @param {String} filter\n * @param {Boolean} visible\n */\n changeVisible: function (filter, visible) {\n registry.async(filter)(\n function (currentComponent) {\n currentComponent.visible(visible);\n }\n );\n }\n });\n});\n","Magento_Downloadable/js/components/is-downloadable-handler.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'Magento_Ui/js/form/element/single-checkbox'\n], function (Element) {\n 'use strict';\n\n return Element.extend({\n defaults: {\n listens: {\n disabled: 'changeVisibility'\n },\n modules: {\n samplesFieldset: '${ $.samplesFieldset }',\n linksFieldset: '${ $.linksFieldset}'\n }\n },\n\n /**\n * Change visibility for samplesFieldset & linksFieldset based on current statuses of checkbox.\n */\n changeVisibility: function () {\n if (this.samplesFieldset() && this.linksFieldset()) {\n if (this.checked() && !this.disabled()) {\n this.samplesFieldset().visible(true);\n this.linksFieldset().visible(true);\n } else {\n this.samplesFieldset().visible(false);\n this.linksFieldset().visible(false);\n }\n }\n },\n\n /**\n * Handle checked state changes for checkbox / radio button.\n *\n * @param {Boolean} newChecked\n */\n onCheckedChanged: function (newChecked) {\n this.changeVisibility();\n this._super(newChecked);\n }\n });\n});\n","Magento_Downloadable/js/components/use-price-default-handler.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'Magento_Ui/js/form/element/single-checkbox'\n], function (Element) {\n 'use strict';\n\n return Element.extend({\n defaults: {\n linksPurchasedSeparately: '0',\n listens: {\n linksPurchasedSeparately: 'changeVisibleStatus'\n }\n },\n\n /**\n * Change visibility of checkbox\n */\n changeVisibleStatus: function () {\n if (this.linksPurchasedSeparately === '1') {\n this.visible(true);\n } else {\n this.visible(false);\n }\n }\n });\n});\n","Magento_Downloadable/js/components/file-uploader.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'Magento_Ui/js/form/element/file-uploader'\n], function (Element) {\n 'use strict';\n\n return Element.extend({\n defaults: {\n fileInputName: ''\n },\n\n /**\n * Adds provided file to the files list.\n *\n * @param {Object} file\n * @returns {FileUploder} Chainable.\n */\n addFile: function (file) {\n var processedFile = this.processFile(file),\n tmpFile = [],\n resultFile = {\n 'file': processedFile.file,\n 'name': processedFile.name,\n 'size': processedFile.size,\n 'status': processedFile.status ? processedFile.status : 'new'\n };\n\n tmpFile[0] = resultFile;\n\n this.isMultipleFiles ?\n this.value.push(tmpFile) :\n this.value(tmpFile);\n\n return this;\n }\n });\n});\n","Magento_Review/js/rating.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery',\n 'jquery/ui'\n], function ($) {\n 'use strict';\n\n $.widget('marketing.ratingControl', {\n options: {\n colorFilled: '#333',\n colorUnfilled: '#CCCCCC',\n colorHover: '#f30'\n },\n\n /** @inheritdoc */\n _create: function () {\n this._labels = this.element.find('label');\n this._bind();\n },\n\n /**\n * @private\n */\n _bind: function () {\n this._labels.on({\n click: $.proxy(function (e) {\n $(e.currentTarget).prev().prop('checked', true);\n this._updateRating();\n }, this),\n\n hover: $.proxy(function (e) {\n this._updateHover($(e.currentTarget), this.options.colorHover);\n }, this),\n\n mouseleave: $.proxy(function (e) {\n this._updateHover($(e.currentTarget), this.options.colorUnfilled);\n }, this)\n });\n\n this._updateRating();\n },\n\n /**\n * @param {jQuery} elem\n * @param {String} color\n * @private\n */\n _updateHover: function (elem, color) {\n elem.nextAll('label').addBack().filter(function () {\n return !$(this).data('checked');\n }).css('color', color);\n },\n\n /**\n * @private\n */\n _updateRating: function () {\n var checkedInputs = this.element.find('input[type=\"radio\"]:checked');\n\n checkedInputs.nextAll('label').addBack().css('color', this.options.colorFilled).data('checked', true);\n checkedInputs.prevAll('label').css('color', this.options.colorUnfilled).data('checked', false);\n },\n\n /**\n * Remove rating when form reset\n */\n removeRating: function () {\n var checkedInputs = this.element.find('input[type=\"radio\"]');\n\n checkedInputs.nextAll('label').css('color', this.options.colorUnfilled).data('checked', false);\n }\n });\n\n});\n","Magento_ConfigurableProduct/js/configurable.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**************************** CONFIGURABLE PRODUCT **************************/\n/* global Product, optionsPrice */\ndefine([\n 'jquery',\n 'mage/template',\n 'mage/translate',\n 'prototype'\n], function (jQuery, mageTemplate) {\n 'use strict';\n\n if (typeof Product == 'undefined') {\n window.Product = {};\n }\n\n Product.Config = Class.create();\n Product.Config.prototype = {\n /**\n * Initialize function.\n *\n * @param {Object} config\n */\n initialize: function (config) {\n var separatorIndex, paramsStr, urlValues, i, childSettings, prevSetting, nextSetting;\n\n // Magic preprocessing\n // TODO MAGETWO-31539\n config.taxConfig = {\n showBothPrices: false,\n inclTaxTitle: jQuery.mage.__('Incl. Tax')\n };\n\n this.config = config;\n this.taxConfig = this.config.taxConfig;\n\n if (config.containerId) {\n this.settings = $$('#' + config.containerId + ' ' + '.super-attribute-select');\n } else {\n this.settings = $$('.super-attribute-select');\n }\n this.state = new Hash();\n this.priceTemplate = mageTemplate(this.config.template);\n this.prices = config.prices;\n this.values = {};\n\n // Set default values from config\n if (config.defaultValues) {\n this.values = config.defaultValues;\n }\n\n // Overwrite defaults by url\n separatorIndex = window.location.href.indexOf('#');\n\n if (separatorIndex != -1) { //eslint-disable-line eqeqeq\n paramsStr = window.location.href.substr(separatorIndex + 1);\n urlValues = paramsStr.toQueryParams();\n\n for (i in urlValues) { //eslint-disable-line guard-for-in\n this.values[i] = urlValues[i];\n }\n }\n\n // Overwrite defaults by inputs values if needed\n if (config.inputsInitialized) {\n this.values = {};\n this.settings.each(function (element) {\n var attributeId;\n\n if (element.value) {\n attributeId = element.id.replace(/[a-z]*/, '');\n this.values[attributeId] = element.value;\n }\n }.bind(this));\n }\n\n // Put events to check select reloads\n this.settings.each(function (element) {\n Event.observe(element, 'change', this.configure.bind(this));\n }.bind(this));\n\n // fill state\n this.settings.each(function (element) {\n var attributeId = element.id.replace(/[a-z]*/, '');\n\n if (attributeId && this.config.attributes[attributeId]) {\n element.config = this.config.attributes[attributeId];\n element.attributeId = attributeId;\n this.state[attributeId] = false;\n }\n }.bind(this));\n\n // Init settings dropdown\n childSettings = [];\n\n for (i = this.settings.length - 1; i >= 0; i--) {\n prevSetting = this.settings[i - 1] ? this.settings[i - 1] : false;\n nextSetting = this.settings[i + 1] ? this.settings[i + 1] : false;\n\n if (i === 0) {\n this.fillSelect(this.settings[i]);\n } else {\n this.settings[i].disabled = true;\n }\n $(this.settings[i]).childSettings = childSettings.clone();\n $(this.settings[i]).prevSetting = prevSetting;\n $(this.settings[i]).nextSetting = nextSetting;\n childSettings.push(this.settings[i]);\n }\n\n // Set values to inputs\n this.configureForValues();\n document.observe('dom:loaded', this.configureForValues.bind(this));\n },\n\n /**\n * Configure for values.\n */\n configureForValues: function () {\n if (this.values) {\n this.settings.each(function (element) {\n var attributeId = element.attributeId;\n\n element.value = typeof this.values[attributeId] === 'undefined' ? '' : this.values[attributeId];\n this.configureElement(element);\n }.bind(this));\n }\n },\n\n /**\n * @param {Object} event\n */\n configure: function (event) {\n var element = Event.element(event);\n\n this.configureElement(element);\n },\n\n /**\n * @param {Object} element\n */\n configureElement: function (element) {\n this.reloadOptionLabels(element);\n\n if (element.value) {\n this.state[element.config.id] = element.value;\n\n if (element.nextSetting) {\n element.nextSetting.disabled = false;\n this.fillSelect(element.nextSetting);\n this.resetChildren(element.nextSetting);\n }\n } else {\n this.resetChildren(element);\n }\n this.reloadPrice();\n },\n\n /**\n * @param {Object} element\n */\n reloadOptionLabels: function (element) {\n var selectedPrice = 0,\n option, i;\n\n if (element.options[element.selectedIndex] && element.options[element.selectedIndex].config) {\n option = element.options[element.selectedIndex].config;\n selectedPrice = parseFloat(this.config.optionPrices[option.allowedProducts[0]].finalPrice.amount);\n }\n element.setAttribute('price', selectedPrice);\n\n for (i = 0; i < element.options.length; i++) {\n if (element.options[i].config) {\n element.options[i].setAttribute('price', selectedPrice);\n element.options[i].setAttribute('summarizePrice', 0);\n element.options[i].text = this.getOptionLabel(element.options[i].config, selectedPrice);\n }\n }\n },\n\n /* eslint-disable max-depth */\n /**\n * @param {Object} element\n */\n resetChildren: function (element) {\n var i;\n\n if (element.childSettings) {\n for (i = 0; i < element.childSettings.length; i++) {\n element.childSettings[i].selectedIndex = 0;\n element.childSettings[i].disabled = true;\n\n if (element.config) {\n this.state[element.config.id] = false;\n }\n }\n }\n },\n\n /**\n * @param {Object} element\n */\n fillSelect: function (element) {\n var attributeId = element.id.replace(/[a-z]*/, ''),\n options = this.getAttributeOptions(attributeId),\n prevConfig = false,\n index = 1,\n i, j, allowedProducts;\n\n this.clearSelect(element);\n element.options[0] = new Option('', '');\n element.options[0].innerHTML = this.config.chooseText;\n\n if (element.prevSetting) {\n prevConfig = element.prevSetting.options[element.prevSetting.selectedIndex];\n }\n\n if (options) {\n for (i = 0; i < options.length; i++) {\n allowedProducts = [];\n\n if (prevConfig) {\n for (j = 0; j < options[i].products.length; j++) {\n if (prevConfig.config.allowedProducts &&\n prevConfig.config.allowedProducts.indexOf(options[i].products[j]) > -1\n ) {\n allowedProducts.push(options[i].products[j]);\n }\n }\n } else {\n allowedProducts = options[i].products.clone();\n }\n\n if (allowedProducts.size() > 0) {\n options[i].allowedProducts = allowedProducts;\n element.options[index] = new Option(this.getOptionLabel(options[i]), options[i].id);\n\n if (typeof options[i].price != 'undefined') {\n element.options[index].setAttribute('price', options[i].price);\n }\n element.options[index].config = options[i];\n index++;\n }\n }\n }\n },\n\n //eslint-enable max-depth\n /**\n * @param {Object} option\n */\n getOptionLabel: function (option) {\n return option.label;\n },\n\n /**\n * @param {*} price\n * @param {Boolean} showSign\n * @return {String}\n */\n formatPrice: function (price, showSign) {\n var str = '',\n roundedPrice;\n\n price = parseFloat(price);\n\n if (showSign) {\n if (price < 0) {\n str += '-';\n price = -price;\n } else {\n str += '+';\n }\n }\n\n roundedPrice = Number(Math.round(price + 'e+2') + 'e-2').toString();\n\n if (this.prices && this.prices[roundedPrice]) {\n str += this.prices[roundedPrice];\n } else {\n str += this.priceTemplate({\n data: {\n price: price.toFixed(2)\n }\n });\n }\n\n return str;\n },\n\n /**\n * @param {Object} element\n */\n clearSelect: function (element) {\n var i;\n\n for (i = element.options.length - 1; i >= 0; i--) {\n element.remove(i);\n }\n },\n\n /**\n * @param {*} attributeId\n * @return {*|undefined}\n */\n getAttributeOptions: function (attributeId) {\n if (this.config.attributes[attributeId]) {\n return this.config.attributes[attributeId].options;\n }\n },\n\n /**\n * Reload price.\n *\n * @return {undefined|Number}\n */\n reloadPrice: function () {\n var price = 0,\n oldPrice = 0,\n inclTaxPrice = 0,\n exclTaxPrice = 0,\n i, selected;\n\n if (this.config.disablePriceReload) {\n return undefined;\n }\n\n for (i = this.settings.length - 1; i >= 0; i--) {\n selected = this.settings[i].options[this.settings[i].selectedIndex];\n\n if (selected.config) {\n price += parseFloat(selected.config.price);\n oldPrice += parseFloat(selected.config.oldPrice);\n inclTaxPrice += parseFloat(selected.config.inclTaxPrice);\n exclTaxPrice += parseFloat(selected.config.exclTaxPrice);\n }\n }\n\n optionsPrice.changePrice(\n 'config', {\n 'price': price,\n 'oldPrice': oldPrice,\n 'inclTaxPrice': inclTaxPrice,\n 'exclTaxPrice': exclTaxPrice\n }\n );\n optionsPrice.reload();\n\n return price;\n },\n\n /**\n * Reload old price.\n */\n reloadOldPrice: function () {\n var price, i, selected;\n\n if (this.config.disablePriceReload) {\n return;\n }\n\n if ($('old-price-' + this.config.productId)) {\n\n price = parseFloat(this.config.oldPrice);\n\n for (i = this.settings.length - 1; i >= 0; i--) {\n selected = this.settings[i].options[this.settings[i].selectedIndex];\n\n if (selected.config) {\n price += parseFloat(selected.config.price);\n }\n }\n\n if (price < 0) {\n price = 0;\n }\n price = this.formatPrice(price);\n\n if ($('old-price-' + this.config.productId)) {\n $('old-price-' + this.config.productId).innerHTML = price;\n }\n\n }\n }\n };\n});\n","Magento_ConfigurableProduct/js/configurable-type-handler.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'jquery',\n 'Magento_Catalog/catalog/type-events',\n 'collapsible',\n 'Magento_Ui/js/modal/modal',\n 'mage/translate',\n 'domReady!'\n], function ($, productType) {\n 'use strict';\n\n return {\n $block: null,\n hasVariations: null,\n configurationSectionMessageHandler: (function () {\n var title = $('[data-role=\"product-create-configuration-info\"]'),\n buttons = $('[data-action=\"product-create-configuration-buttons\"]'),\n newText = 'Configurations cannot be created for a standard product with downloadable files.' +\n ' To create configurations, first remove all downloadable files.',\n oldText = title.text();\n\n return function (change) {\n if (change) {\n title.text(newText);\n buttons.hide();\n } else {\n title.text(oldText);\n buttons.show();\n }\n };\n }()),\n\n /**\n * Set element disabled\n * @param {Object} $element - jquery instance element\n * @param {Bool} state\n * @param {Bool} triggerEvent\n * @private\n */\n _setElementDisabled: function ($element, state, triggerEvent) {\n if (!$element.is('[data-locked]')) {\n $element.prop('disabled', state);\n\n if (triggerEvent) {\n $element.trigger('change');\n }\n }\n },\n\n /**\n * Show\n */\n show: function () {\n this.configurationSectionMessageHandler(false);\n },\n\n /**\n * Hide\n */\n hide: function () {\n this.configurationSectionMessageHandler(true);\n },\n\n /**\n * Bind all\n */\n bindAll: function () {\n $(document).on('changeConfigurableTypeProduct', function (event, isConfigurable) {\n $(document).trigger('setTypeProduct', isConfigurable ?\n 'configurable' :\n productType.type.init === 'configurable' ? 'simple' : productType.type.init\n );\n });\n $(document).on('changeTypeProduct', this._initType.bind(this));\n },\n\n /**\n * Init type\n * @private\n */\n _initType: function () {\n\n /*var suggestContainer = $('#product-template-suggest-container .action-dropdown > .action-toggle');\n\n\n if (productType.type.current === 'configurable') {\n this._setElementDisabled(suggestContainer.addClass('disabled'), true);\n this._setElementDisabled($('#inventory_qty'), true);\n this._setElementDisabled($('#inventory_stock_availability'), false);\n this._setElementDisabled($('#qty'), true, true);\n this._setElementDisabled($('#quantity_and_stock_status'), false, false);\n } else {\n this._setElementDisabled(suggestContainer.removeClass('disabled'), false);\n this._setElementDisabled($('#inventory_qty'), false);\n this._setElementDisabled($('#inventory_stock_availability'), true);\n this._setElementDisabled($('#qty'), false, true);\n }\n */\n\n /*if (['simple', 'virtual', 'configurable'].indexOf(productType.type.current) < 0) {\n this.hide();\n } else {\n this.show();\n }*/\n\n this.show();\n },\n\n /**\n * Constructor component\n * @param {Object} data - this backend data\n */\n 'Magento_ConfigurableProduct/js/configurable-type-handler': function (data) {\n this.$block = $(data.blockId + ' input[name=\"attributes[]\"]');\n this.hasVariations = data.hasVariations;\n\n //advancedPricingHandler.init();\n //priceTypeHandler.init();\n\n /*if (productType.type.init === 'configurable' && !this.hasVariations) {\n $(document).trigger('setTypeProduct', 'simple');\n }*/\n $(document).trigger('setTypeProduct', 'simple');\n\n this.bindAll();\n this._initType();\n }\n };\n});\n","Magento_ConfigurableProduct/js/options/price-type-handler.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/*\ndefine([\n 'jquery',\n 'Magento_Catalog/catalog/type-events',\n 'notification',\n 'mage/translate'\n], function ($, productType) {\n 'use strict';\n\n return {\n isConfigurable: false,\n messageInited: false,\n messageSelector: '[data-role=product-custom-options-content]',\n isPercentPriceTypeExist: function () {\n var productOptionsContainer = $('#product_options_container_top');\n\n return !!productOptionsContainer.length;\n },\n showWarning: function () {\n if (!this.messageInited) {\n $(this.messageSelector).notification();\n this.messageInited = true;\n }\n this.hideWarning();\n $(this.messageSelector).notification('add', {\n message: $.mage.__('Custom options with price type \"percent\" is not available for ' +\n 'configurable product.'),\n error: false,\n messageContainer: this.messageSelector\n });\n },\n hideWarning: function () {\n $(this.messageSelector).notification('clear');\n },\n init: function () {\n $(document).on('changeTypeProduct', this._initType.bind(this));\n\n $('#product-edit-form-tabs').on('change', '.opt-type > select', function () {\n var selected = $('.opt-type > select :selected'),\n optGroup = selected.parent().attr('label');\n\n if (optGroup === 'Select') {\n $('#product-edit-form-tabs').on(\n 'click',\n '[data-ui-id=\"admin-product-options-options-box-select-option-type-add-select-row-button\"]',\n function () {\n this.percentPriceTypeHandler();\n }.bind(this)\n );\n } else {\n this.percentPriceTypeHandler();\n }\n }.bind(this));\n\n this._initType();\n },\n _initType: function () {\n this.isConfigurable = productType.type.current === 'configurable';\n if (this.isPercentPriceTypeExist()) {\n this.percentPriceTypeHandler();\n }\n },\n percentPriceTypeHandler: function () {\n var priceType = $('[data-attr=\"price-type\"]'),\n optionPercentPriceType = priceType.find('option[value=\"percent\"]');\n\n if (this.isConfigurable) {\n this.showWarning();\n optionPercentPriceType.hide();\n optionPercentPriceType.parent().val() === 'percent' ? optionPercentPriceType.parent().val('fixed') : '';\n } else {\n $(this.messageSelector).notification();\n optionPercentPriceType.show();\n this.hideWarning();\n }\n }\n };\n});\n*/\n","Magento_ConfigurableProduct/js/variations/product-grid.js":"// jscs:disable requireDotNotation\n/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'uiComponent',\n 'jquery',\n 'Magento_Ui/js/core/app',\n 'underscore',\n 'notification',\n 'mage/translate'\n], function (Component, $, bootstrap, _) {\n 'use strict';\n\n return Component.extend({\n defaults: {\n productsGridUrl: null,\n productAttributes: [],\n productsModal: null,\n button: '',\n gridSelector: '[data-grid-id=associated-products-container]',\n modules: {\n productsFilter: '${ $.productsFilter }',\n productsProvider: '${ $.productsProvider }',\n productsMassAction: '${ $.productsMassAction }',\n productsColumns: '${ $.productsColumns }',\n variationsComponent: '${ $.configurableVariations }'\n },\n listens: {\n '${ $.productsProvider }:data': '_showMessageAssociatedGrid _handleManualGridOpening',\n '${ $.productsMassAction }:selected': '_handleManualGridSelect',\n '${ $.configurableVariations }:productMatrix': '_showButtonAddManual _switchProductType'\n }\n },\n\n /**\n * Initialize\n *\n * @param {Array} options\n */\n initialize: function (options) {\n this._super(options);\n this.productsModal = $(this.gridSelector).modal({\n title: $.mage.__('Select Associated Product'),\n type: 'slide',\n buttons: [\n {\n text: $.mage.__('Cancel'),\n\n /** Close modal */\n click: function () {\n this.closeModal();\n }\n }, {\n text: $.mage.__('Done'),\n click: this.close.bind(this, null)\n }\n ]\n });\n\n this.productsProvider(function () {\n this.productsModal.notification();\n }.bind(this));\n this.variationsComponent(function (variation) {\n this._showButtonAddManual(variation.productMatrix());\n }.bind(this));\n\n this._initGrid = _.once(this._initGrid);\n this._switchProductType = _.wrap(this._switchProductType.bind(this), function (func, params) {\n if (!!params.length !== !!this.init) {\n this.init = !!params.length;\n func(params);\n }\n }.bind(this._switchProductType));\n },\n\n /**\n * Initial observerable\n * @returns {*}\n */\n initObservable: function () {\n this._super().observe('button');\n\n return this;\n },\n\n /**\n * init Grid\n * @private\n */\n _initGrid: function (filterData) {\n $.ajax({\n type: 'GET',\n url: this._buildGridUrl(filterData),\n context: $('body')\n }).done(function (data) {\n bootstrap(JSON.parse(data));\n });\n },\n\n /**\n * Select different product in configurations section\n * @see configurable_associated_product_listing.xml\n * @param {Integer} rowIndex\n */\n selectProduct: function (rowIndex) {\n this.close(rowIndex);\n },\n\n /**\n * Open\n * @param {Object} filterData - filter data\n * @param {Object|*} filterData.filters - attribute name\n * @param {Object|*} filterData.filters_modifier - modifier value\n * @param {String} callbackName\n * @param {Boolean} showMassActionColumn\n */\n open: function (filterData, callbackName, showMassActionColumn) {\n this.callbackName = callbackName;\n this.productsMassAction(function (massActionComponent) {\n this.productsColumns().elems().each(function (rowElement) {\n rowElement.disableAction = showMassActionColumn;\n });\n massActionComponent.visible = showMassActionColumn;\n }.bind(this));\n this._setFilter(filterData);\n this._initGrid(filterData);\n this.productsModal.trigger('openModal');\n },\n\n /**\n * Close\n */\n close: function (rowIndex) {\n try {\n if (this.productsMassAction().selected.getLength()) {\n this.variationsComponent()[this.callbackName](this.productsMassAction()\n .selected.map(this.getProductById.bind(this)));\n this.productsMassAction().deselectAll();\n } else if (!_.isNull(rowIndex)) {\n this.variationsComponent()[this.callbackName]([this.getProductByIndex(rowIndex)]);\n }\n this.productsModal.trigger('closeModal');\n } catch (e) {\n if (e.name === 'UserException') {\n this.productsModal.notification('clear');\n this.productsModal.notification('add', {\n message: e.message,\n messageContainer: this.gridSelector\n });\n } else {\n throw e;\n }\n }\n },\n\n /**\n * Get product by id\n * @param {Integer} productId\n * @returns {*}\n */\n getProductById: function (productId) {\n return _.findWhere(this.productsProvider().data.items, {\n 'entity_id': productId\n });\n },\n\n /**\n * Get product\n * @param {Integer} rowIndex\n * @returns {*}\n */\n getProductByIndex: function (rowIndex) {\n return this.productsProvider().data.items[rowIndex];\n },\n\n /**\n * Build grid url\n * @private\n */\n _buildGridUrl: function (filterData) {\n var params = '?' + $.param({\n 'filters': filterData.filters,\n 'attributes_codes': this._getAttributesCodes(),\n 'filters_modifier': filterData['filters_modifier']\n });\n\n return this.productsGridUrl + params;\n },\n\n /**\n * Show button add manual\n * @param {Array} variations\n * @returns {*}\n * @private\n */\n _showButtonAddManual: function (variations) {\n return this.button(variations.length);\n },\n\n /**\n * @param {Array} variations\n * @private\n */\n _switchProductType: function (variations) {\n $(document).trigger('changeConfigurableTypeProduct', variations.length);\n },\n\n /**\n * Get attributes codes used for configurable\n * @private\n */\n _getAttributesCodes: function () {\n return this.variationsComponent().attributes.pluck('code');\n },\n\n /**\n * Show data associated grid\n * @private\n */\n _showMessageAssociatedGrid: function (data) {\n this.productsModal.notification('clear');\n\n if (data.items.length) {\n this.productsModal.notification('add', {\n message: $.mage.__('Choose a new product to delete and replace the current product configuration.'),\n messageContainer: this.gridSelector\n });\n } else {\n this.productsModal.notification('add', {\n message: $.mage.__('For better results, add attributes and attribute values to your products.'),\n messageContainer: this.gridSelector\n });\n }\n },\n\n /**\n * Show manually grid\n */\n showManuallyGrid: function () {\n var filterModifier = _.mapObject(_.object(this._getAttributesCodes(), []), function () {\n return {\n 'condition_type': 'notnull'\n };\n }),\n usedProductIds = _.values(this.variationsComponent().productAttributesMap);\n\n if (usedProductIds && usedProductIds.length > 0) {\n filterModifier['entity_id'] = {\n 'condition_type': 'nin', value: usedProductIds\n };\n }\n\n this.open(\n {\n 'filters_modifier': filterModifier\n },\n 'appendProducts',\n true\n );\n },\n\n /**\n * Handle manual grid after opening\n * @private\n */\n _handleManualGridOpening: function (data) {\n if (data.items.length && this.callbackName == 'appendProducts') { //eslint-disable-line eqeqeq\n this.productsColumns().elems().each(function (rowElement) {\n rowElement.disableAction = true;\n });\n\n this._disableRows(data.items);\n }\n },\n\n /**\n * Disable rows in grid for products with the same variation key\n *\n * @param {Array} items\n * @param {Array} selectedVariationKeys\n * @param {Array} selected\n * @private\n */\n _disableRows: function (items, selectedVariationKeys, selected) {\n selectedVariationKeys = selectedVariationKeys === undefined ? [] : selectedVariationKeys;\n selected = selected === undefined ? [] : selected;\n this.productsMassAction(function (massaction) {\n var configurableVariationKeys = _.union(\n selectedVariationKeys,\n _.pluck(this.variationsComponent().productMatrix(), 'variationKey')\n ),\n variationKeyMap = this._getVariationKeyMap(items),\n rowsForDisable = _.keys(_.pick(\n variationKeyMap,\n function (variationKey) {\n return configurableVariationKeys.indexOf(variationKey) !== -1;\n }\n ));\n\n massaction.disabled(_.difference(rowsForDisable, selected));\n }.bind(this));\n },\n\n /**\n * @private\n */\n _handleManualGridSelect: function (selected) {\n var selectedRows, selectedVariationKeys;\n\n if (this.callbackName == 'appendProducts') { //eslint-disable-line eqeqeq\n selectedRows = _.filter(this.productsProvider().data.items, function (row) {\n return selected.indexOf(row['entity_id']) !== -1;\n });\n selectedVariationKeys = _.values(this._getVariationKeyMap(selectedRows));\n this._disableRows(this.productsProvider().data.items, selectedVariationKeys, selected);\n }\n },\n\n /**\n * Get variation key map used in manual grid.\n *\n * @param {Object} items\n * @returns {Array} [{entity_id: variation-key}, ...]\n * @private\n */\n _getVariationKeyMap: function (items) {\n this._variationKeyMap = {};\n\n _.each(items, function (row) {\n this._variationKeyMap[row['entity_id']] = _.values(\n _.pick(row, this._getAttributesCodes())\n ).sort().join('-');\n\n }, this);\n\n return this._variationKeyMap;\n },\n\n /**\n * Set filter\n * @private\n */\n _setFilter: function (filterData) {\n this.productsProvider(function (provider) {\n provider.params['filters_modifier'] = filterData['filters_modifier'];\n provider.params['attributes_codes'] = this._getAttributesCodes();\n }.bind(this));\n\n this.productsFilter(function (filter) {\n filter.set('filters', _.extend({\n 'filters_modifier': filterData['filters_modifier']\n }, filterData.filters))\n .apply();\n });\n }\n });\n});\n","Magento_ConfigurableProduct/js/variations/variations.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'uiComponent',\n 'jquery',\n 'ko',\n 'underscore',\n 'Magento_Ui/js/modal/alert',\n 'uiRegistry',\n 'mage/translate'\n], function (Component, $, ko, _, alert, registry, $t) {\n 'use strict';\n\n /**\n * @param {*} message\n * @constructor\n */\n function UserException(message) {\n this.message = message;\n this.name = 'UserException';\n }\n UserException.prototype = Object.create(Error.prototype);\n\n return Component.extend({\n defaults: {\n opened: false,\n attributes: [],\n usedAttributes: [],\n attributeCodes: [],\n attributesData: {},\n productMatrix: [],\n variations: [],\n formSaveParams: [],\n productAttributes: [],\n disabledAttributes: [],\n fullAttributes: [],\n rowIndexToEdit: false,\n productAttributesMap: null,\n value: [],\n modules: {\n associatedProductGrid: '${ $.configurableProductGrid }',\n wizardButtonElement: '${ $.wizardModalButtonName }',\n formElement: '${ $.formName }',\n attributeSetHandlerModal: '${ $.attributeSetHandler }'\n },\n imports: {\n attributeSetName: '${ $.provider }:configurableNewAttributeSetName',\n attributeSetId: '${ $.provider }:configurableExistingAttributeSetId',\n attributeSetSelection: '${ $.provider }:configurableAffectedAttributeSet',\n productPrice: '${ $.provider }:data.product.price'\n },\n links: {\n value: '${ $.provider }:${ $.dataScopeVariations }',\n usedAttributes: '${ $.provider }:${ $.dataScopeAttributes }',\n attributesData: '${ $.provider }:${ $.dataScopeAttributesData }',\n attributeCodes: '${ $.provider }:${ $.dataScopeAttributeCodes }',\n skeletonAttributeSet: '${ $.provider }:data.new-variations-attribute-set-id'\n }\n },\n\n /** @inheritdoc */\n initialize: function () {\n this._super();\n\n this.changeButtonWizard();\n this.initProductAttributesMap();\n this.disableConfigurableAttributes(this.productAttributes);\n },\n\n /** @inheritdoc */\n initObservable: function () {\n this._super().observe(\n 'actions opened attributes productMatrix value usedAttributes attributesData attributeCodes'\n );\n\n return this;\n },\n\n /**\n * @param {Object} product\n * @return {Object}\n * @private\n */\n _makeProduct: function (product) {\n var productId = product['entity_id'] || product.productId || null,\n attributes = _.pick(product, this.attributes.pluck('code')),\n options = _.map(attributes, function (option, attribute) {\n var oldOptions = _.findWhere(this.attributes(), {\n code: attribute\n }).options,\n result;\n\n if (_.isFunction(oldOptions)) {\n result = oldOptions.findWhere({\n value: option\n });\n } else {\n result = _.findWhere(oldOptions, {\n value: option\n });\n }\n\n return result;\n }.bind(this));\n\n return {\n attribute: JSON.stringify(attributes),\n editable: false,\n images: {\n preview: product['thumbnail_src']\n },\n name: product.name || product.sku,\n options: options,\n price: parseFloat(Math.round(product.price.replace(/[^\\d.]+/g, '') + 'e+4') + 'e-4').toFixed(4),\n productId: productId,\n productUrl: this.buildProductUrl(productId),\n quantity: product.quantity || null,\n sku: product.sku,\n status: product.status === undefined ? 1 : parseInt(product.status, 10),\n variationKey: this.getVariationKey(options),\n weight: product.weight || null\n };\n },\n\n /**\n * @param {String} name\n * @return {String|Number|Array}\n */\n getProductValue: function (name) {\n var value;\n\n name = name.split('/').join('][');\n value = $('[name=\"product[' + name + ']\"]:enabled:not(.ignore-validate)', this.productForm).val();\n if (value === undefined) {\n value = this.source.get('data.product.' + name);\n }\n return value;\n },\n\n /**\n * @param {Object} data\n * @param {String} field\n * @return {String}\n */\n getRowId: function (data, field) {\n var key = data.variationKey;\n\n return 'variations-matrix-' + key + '-' + field;\n },\n\n /**\n * @param {Object} variation\n * @param {String} field\n * @return {String}\n */\n getVariationRowName: function (variation, field) {\n var result;\n\n if (variation.productId) {\n result = 'configurations[' + variation.productId + '][' + field.split('/').join('][') + ']';\n } else {\n result = 'variations-matrix[' + variation.variationKey + '][' + field.split('/').join('][') + ']';\n }\n\n return result;\n },\n\n /**\n * @param {*} variations\n * @param {*} attributes\n */\n render: function (variations, attributes) {\n this.changeButtonWizard();\n this.populateVariationMatrix(variations);\n this.attributes(attributes);\n this.disableConfigurableAttributes(attributes);\n this.handleValue(variations);\n this.handleAttributes();\n },\n\n /**\n * Change button wizard.\n */\n changeButtonWizard: function () {\n if (this.variations.length) {\n this.wizardButtonElement().title(this.wizardModalButtonTitle);\n }\n },\n\n /**\n * @param {Array} variations\n */\n handleValue: function (variations) {\n var tmpArray = [];\n\n _.each(variations, function (variation) {\n var attributes = _.reduce(variation.options, function (memo, option) {\n var attribute = {};\n\n attribute[option['attribute_code']] = option.value;\n\n return _.extend(memo, attribute);\n }, {}),\n gallery = {\n images: {}\n },\n types = {};\n\n _.each(variation.images.images, function (image) {\n gallery.images[image['file_id']] = {\n position: image.position,\n file: image.file,\n disabled: image.disabled,\n label: image.label || ''\n };\n _.each(image.galleryTypes, function (type) {\n types[type] = image.file;\n });\n }, this);\n\n tmpArray.push(_.extend(variation, types, {\n productId: variation.productId || null,\n name: variation.name || variation.sku,\n priceCurrency: this.currencySymbol,\n weight: variation.weight,\n attribute: JSON.stringify(attributes),\n variationKey: this.getVariationKey(variation.options),\n editable: variation.editable === undefined ? 0 : 1,\n productUrl: this.buildProductUrl(variation.productId),\n status: variation.status === undefined ? 1 : parseInt(variation.status, 10),\n newProduct: variation.productId ? 0 : 1,\n 'media_gallery': gallery\n }));\n }, this);\n\n this.value(tmpArray);\n },\n\n /**\n * Handle attributes.\n */\n handleAttributes: function () {\n var tmpArray = [],\n codesArray = [],\n tmpOptions = {},\n option = {},\n position = 0,\n values = {};\n\n _.each(this.attributes(), function (attribute) {\n tmpArray.push(attribute.id);\n codesArray.push(attribute.code);\n values = {};\n _.each(attribute.chosen, function (row) {\n values[row.value] = {\n 'include': '1',\n 'value_index': row.value\n };\n }, this);\n option = {\n 'attribute_id': attribute.id,\n 'code': attribute.code,\n 'label': attribute.label,\n 'position': position,\n 'values': values\n };\n tmpOptions[attribute.id] = option;\n position++;\n }, this);\n\n this.attributesData(tmpOptions);\n this.usedAttributes(tmpArray);\n this.attributeCodes(codesArray);\n },\n\n /**\n * Get attributes options\n * @see use in matrix.phtml\n *\n * @returns {Array}\n */\n getAttributesOptions: function () {\n return this.showVariations() ? this.productMatrix()[0].options : [];\n },\n\n /**\n * @return {Boolean}\n */\n showVariations: function () {\n return this.productMatrix().length > 0;\n },\n\n /**\n * @param {Array} variations\n */\n populateVariationMatrix: function (variations) {\n this.productMatrix([]);\n _.each(variations, function (variation) {\n var attributes = _.reduce(variation.options, function (memo, option) {\n var attribute = {};\n\n attribute[option['attribute_code']] = option.value;\n\n return _.extend(memo, attribute);\n }, {});\n\n this.productMatrix.push(_.extend(variation, {\n productId: variation.productId || null,\n name: variation.name || variation.sku,\n weight: variation.weight,\n attribute: JSON.stringify(attributes),\n variationKey: this.getVariationKey(variation.options),\n editable: variation.editable === undefined ? !variation.productId : variation.editable,\n productUrl: this.buildProductUrl(variation.productId),\n status: variation.status === undefined ? 1 : parseInt(variation.status, 10)\n }));\n }, this);\n },\n\n /**\n * @param {*} productId\n */\n buildProductUrl: function (productId) {\n return this.productUrl.replace('%id%', productId);\n },\n\n /**\n * @param {Object} options\n * @return {String}\n */\n getVariationKey: function (options) {\n return _.pluck(options, 'value').sort().join('-');\n },\n\n /**\n * @param {*} options\n * @return {*|null}\n */\n getProductIdByOptions: function (options) {\n return this.productAttributesMap[this.getVariationKey(options)] || null;\n },\n\n /**\n * Init product attributes map\n */\n initProductAttributesMap: function () {\n if (this.productAttributesMap === null) {\n this.productAttributesMap = {};\n _.each(this.variations, function (product) {\n this.productAttributesMap[this.getVariationKey(product.options)] = product.productId;\n }.bind(this));\n }\n },\n\n /**\n * @param {Array} attributes\n */\n disableConfigurableAttributes: function (attributes) {\n var element;\n\n _.each(this.disabledAttributes, function (attribute) {\n registry.get('inputName = ' + 'product[' + attribute + ']').disabled(false);\n });\n this.disabledAttributes = [];\n\n _.each(attributes, function (attribute) {\n element = registry.get('inputName = ' + 'product[' + attribute.code + ']');\n\n if (!_.isUndefined(element)) {\n element.disabled(true);\n this.disabledAttributes.push(attribute.code);\n }\n }, this);\n },\n\n /**\n * Get currency symbol\n * @returns {String}\n */\n getCurrencySymbol: function () {\n return this.currencySymbol;\n },\n\n /**\n * Chose action for the form save button\n */\n saveFormHandler: function () {\n this.formElement().validate();\n\n if (this.formElement().source.get('params.invalid') === false) {\n this.serializeData();\n }\n\n if (this.checkForNewAttributes()) {\n this.formSaveParams = arguments;\n this.attributeSetHandlerModal().openModal();\n } else {\n if (this.validateForm(this.formElement())) {\n this.clearOutdatedData();\n }\n this.formElement().save(arguments[0], arguments[1]);\n\n if (this.formElement().source.get('params.invalid')) {\n this.unserializeData();\n }\n }\n },\n\n /**\n * @param {Object} formElement\n *\n * Validates each form element and returns true, if all elements are valid.\n */\n validateForm: function (formElement) {\n formElement.validate();\n\n return !formElement.additionalInvalid && !formElement.source.get('params.invalid');\n },\n\n /**\n * Serialize data for specific form fields\n *\n * Serializes some complex data fields\n *\n * Original fields:\n * - configurable-matrix;\n * - associated_product_ids.\n *\n * Serialized fields in request:\n * - configurable-matrix-serialized;\n * - associated_product_ids_serialized.\n */\n serializeData: function () {\n if (this.source.data['configurable-matrix']) {\n this.source.data['configurable-matrix-serialized'] =\n JSON.stringify(this.source.data['configurable-matrix']);\n }\n\n if (this.source.data['associated_product_ids']) {\n this.source.data['associated_product_ids_serialized'] =\n JSON.stringify(this.source.data['associated_product_ids']);\n }\n },\n\n /**\n * Clear outdated data for specific form fields\n *\n * Outdated fields:\n * - configurable-matrix;\n * - associated_product_ids.\n */\n clearOutdatedData: function () {\n if (this.source.data['configurable-matrix']) {\n delete this.source.data['configurable-matrix'];\n }\n\n if (this.source.data['associated_product_ids']) {\n delete this.source.data['associated_product_ids'];\n }\n },\n\n /**\n * Unserialize data for specific form fields\n *\n * Unserializes some fields that were serialized this.serializeData\n */\n unserializeData: function () {\n if (this.source.data['configurable-matrix-serialized']) {\n this.source.data['configurable-matrix'] =\n JSON.parse(this.source.data['configurable-matrix-serialized']);\n delete this.source.data['configurable-matrix-serialized'];\n }\n\n if (this.source.data['associated_product_ids_serialized']) {\n this.source.data['associated_product_ids'] =\n JSON.parse(this.source.data['associated_product_ids_serialized']);\n delete this.source.data['associated_product_ids_serialized'];\n }\n },\n\n /**\n * Check for newly added attributes\n * @returns {Boolean}\n */\n checkForNewAttributes: function () {\n var element, newAttributes = false;\n\n _.each(this.source.get('data.attribute_codes'), function (attribute) {\n element = registry.get('index = ' + attribute);\n\n if (_.isUndefined(element)) {\n newAttributes = true;\n }\n }, this);\n\n return newAttributes;\n },\n\n /**\n * New attributes handler\n * @returns {Boolean}\n */\n addNewAttributeSetHandler: function () {\n var chosenAttributeSetOption;\n\n this.formElement().validate();\n\n if (this.formElement().source.get('params.invalid') === false) {\n chosenAttributeSetOption = this.attributeSetSelection;\n\n if (chosenAttributeSetOption === 'new') {\n this.createNewAttributeSet();\n\n return false;\n }\n\n if (chosenAttributeSetOption === 'existing') {\n this.set(\n 'skeletonAttributeSet',\n this.attributeSetId\n );\n }\n\n this.closeDialogAndProcessForm();\n\n return true;\n }\n\n this.unserializeData();\n\n return false;\n },\n\n /**\n * Handles new attribute set creation\n * @returns {Boolean}\n */\n createNewAttributeSet: function () {\n var messageBoxElement = registry.get('index = affectedAttributeSetError');\n\n messageBoxElement.visible(false);\n\n $.ajax({\n type: 'POST',\n url: this.attributeSetCreationUrl,\n data: {\n gotoEdit: 1,\n 'attribute_set_name': this.attributeSetName,\n 'skeleton_set': this.skeletonAttributeSet,\n 'return_session_messages_only': 1\n },\n dataType: 'json',\n showLoader: true,\n context: this\n }).done(function (data) {\n if (!data.error) {\n this.set(\n 'skeletonAttributeSet',\n data.id\n );\n messageBoxElement.content(data.messages);\n messageBoxElement.visible(true);\n this.closeDialogAndProcessForm();\n } else {\n messageBoxElement.content(data.messages);\n messageBoxElement.visible(true);\n }\n\n return false;\n }).fail(function (xhr) {\n if (xhr.statusText === 'abort') {\n return;\n }\n\n alert({\n content: $t('Something went wrong.')\n });\n });\n\n return false;\n },\n\n /**\n * Closes attribute set handler modal and process product form\n */\n closeDialogAndProcessForm: function () {\n this.attributeSetHandlerModal().closeModal();\n this.formElement().save(this.formSaveParams[0], this.formSaveParams[1]);\n },\n\n /**\n * Retrieves product price\n * @returns {*}\n */\n getProductPrice: function () {\n return this.productPrice;\n }\n });\n});\n","Magento_ConfigurableProduct/js/variations/paging/sizes.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'Magento_Ui/js/grid/paging/sizes'\n], function (Sizes) {\n 'use strict';\n\n return Sizes.extend({\n defaults: {\n options: {\n '20': {\n value: 20,\n label: 20\n },\n '30': {\n value: 30,\n label: 30\n },\n '50': {\n value: 50,\n label: 50\n }\n },\n value: 20\n }\n });\n});\n","Magento_ConfigurableProduct/js/variations/steps/attributes_values.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'uiComponent',\n 'jquery',\n 'ko',\n 'underscore',\n 'mageUtils',\n 'Magento_Ui/js/lib/collapsible',\n 'mage/translate'\n], function (Component, $, ko, _, utils, Collapsible) {\n 'use strict';\n\n //connect items with observableArrays\n ko.bindingHandlers.sortableList = {\n /** @inheritdoc */\n init: function (element, valueAccessor) {\n var list = valueAccessor();\n\n $(element).sortable({\n axis: 'y',\n handle: '[data-role=\"draggable\"]',\n tolerance: 'pointer',\n\n /** @inheritdoc */\n update: function (event, ui) {\n var item = ko.contextFor(ui.item[0]).$data,\n position = ko.utils.arrayIndexOf(ui.item.parent().children(), ui.item[0]);\n\n if (ko.contextFor(ui.item[0]).$index() != position) { //eslint-disable-line eqeqeq\n if (position >= 0) {\n list.remove(item);\n list.splice(position, 0, item);\n }\n ui.item.remove();\n }\n }\n });\n }\n };\n\n return Collapsible.extend({\n defaults: {\n notificationMessage: {\n text: null,\n error: null\n },\n createOptionsUrl: null,\n attributes: [],\n stepInitialized: false\n },\n\n /** @inheritdoc */\n initialize: function () {\n this._super();\n this.createAttribute = _.wrap(this.createAttribute, function () {\n var args = _.toArray(arguments),\n createAttribute = args.shift();\n\n return this.doInitSavedOptions(createAttribute.apply(this, args));\n });\n this.createAttribute = _.memoize(this.createAttribute.bind(this), _.property('id'));\n },\n\n /** @inheritdoc */\n initObservable: function () {\n this._super().observe(['attributes']);\n\n return this;\n },\n\n /**\n * Create option.\n */\n createOption: function () {\n // this - current attribute\n this.options.push({\n value: 0,\n label: '',\n id: utils.uniqueid(),\n 'attribute_id': this.id,\n 'is_new': true\n });\n },\n\n /**\n * @param {Object} option\n */\n saveOption: function (option) {\n if (this.isValidOption(option)) {\n this.options.remove(option);\n this.options.push(option);\n this.chosenOptions.push(option.id);\n }\n },\n\n /**\n * @param {Object} newOption\n * @return boolean\n */\n isValidOption: function (newOption) {\n var duplicatedOptions = [],\n errorOption,\n allOptions = [];\n\n newOption.label = newOption.label.trim();\n\n if (_.isEmpty(newOption.label)) {\n return false;\n }\n\n _.each(this.options(), function (option) {\n if (!_.isUndefined(allOptions[option.label]) && newOption.label === option.label) {\n duplicatedOptions.push(option);\n }\n\n allOptions[option.label] = option.label;\n });\n\n if (duplicatedOptions.length) {\n _.each(duplicatedOptions, function (duplicatedOption) {\n errorOption = $('[data-role=\"' + duplicatedOption.id + '\"]');\n errorOption.addClass('_error');\n });\n\n return false;\n }\n\n return true;\n },\n\n /**\n * @param {Object} option\n */\n removeOption: function (option) {\n this.options.remove(option);\n },\n\n /**\n * @param {String} attribute\n */\n removeAttribute: function (attribute) {\n this.attributes.remove(attribute);\n this.wizard.setNotificationMessage(\n $.mage.__('An attribute has been removed. This attribute will no longer appear in your configurations.')\n );\n },\n\n /**\n * @param {Object} attribute\n * @param {*} index\n * @return {Object}\n */\n createAttribute: function (attribute, index) {\n attribute.chosenOptions = ko.observableArray([]);\n attribute.options = ko.observableArray(_.map(attribute.options, function (option) {\n option.id = utils.uniqueid();\n\n return option;\n }));\n attribute.opened = ko.observable(this.initialOpened(index));\n attribute.collapsible = ko.observable(true);\n attribute.isValidOption = this.isValidOption;\n\n return attribute;\n },\n\n /**\n * First 3 attribute panels must be open.\n *\n * @param {Number} index\n * @return {Boolean}\n */\n initialOpened: function (index) {\n return index < 3;\n },\n\n /**\n * Save attribute.\n */\n saveAttribute: function () {\n var errorMessage = $.mage.__('Select options for all attributes or remove unused attributes.');\n\n if (!this.attributes().length) {\n throw new Error(errorMessage);\n }\n\n _.each(this.attributes(), function (attribute) {\n attribute.chosen = [];\n\n if (!attribute.chosenOptions.getLength()) {\n throw new Error(errorMessage);\n }\n _.each(attribute.chosenOptions(), function (id) {\n attribute.chosen.push(attribute.options.findWhere({\n id: id\n }));\n });\n });\n },\n\n /**\n * @param {Object} attribute\n */\n selectAllAttributes: function (attribute) {\n this.chosenOptions(_.pluck(attribute.options(), 'id'));\n },\n\n /**\n * @param {Object} attribute\n */\n deSelectAllAttributes: function (attribute) {\n attribute.chosenOptions.removeAll();\n },\n\n /**\n * @return {Boolean}\n */\n saveOptions: function () {\n var newOptions = [];\n\n _.each(this.attributes(), function (attribute) {\n _.each(attribute.options(), function (element) {\n var option = attribute.options.findWhere({\n id: element.id\n });\n\n if (option['is_new'] === true) {\n if (!attribute.isValidOption(option)) {\n throw new Error(\n $.mage.__('The value of attribute \"\"%1\"\" must be unique')\n .replace('\"%1\"', attribute.label)\n );\n }\n\n newOptions.push(option);\n }\n });\n });\n\n if (!newOptions.length) {\n return false;\n }\n\n $.ajax({\n type: 'POST',\n url: this.createOptionsUrl,\n data: {\n options: newOptions\n },\n showLoader: true\n }).done(function (savedOptions) {\n if (savedOptions.error) {\n this.notificationMessage.error = savedOptions.error;\n this.notificationMessage.text = savedOptions.message;\n\n return;\n }\n\n _.each(this.attributes(), function (attribute) {\n _.each(savedOptions, function (newOptionId, oldOptionId) {\n var option = attribute.options.findWhere({\n id: oldOptionId\n });\n\n if (option) {\n attribute.options.remove(option);\n option['is_new'] = false;\n option.value = newOptionId;\n attribute.options.push(option);\n }\n });\n });\n\n }.bind(this));\n },\n\n /**\n * @param {*} attributeIds\n */\n requestAttributes: function (attributeIds) {\n $.ajax({\n type: 'GET',\n url: this.optionsUrl,\n data: {\n attributes: attributeIds\n },\n showLoader: true\n }).done(function (attributes) {\n attributes = _.sortBy(attributes, function (attribute) {\n return this.wizard.data.attributesIds.indexOf(attribute.id);\n }.bind(this));\n this.attributes(_.map(attributes, this.createAttribute));\n }.bind(this));\n },\n\n /**\n * @param {*} attribute\n * @return {*}\n */\n doInitSavedOptions: function (attribute) {\n var selectedOptions, selectedOptionsIds, selectedAttribute = _.findWhere(this.initData.attributes, {\n id: attribute.id\n });\n\n if (selectedAttribute) {\n selectedOptions = _.pluck(selectedAttribute.chosen, 'value');\n selectedOptionsIds = _.pluck(_.filter(attribute.options(), function (option) {\n return _.contains(selectedOptions, option.value);\n }), 'id');\n attribute.chosenOptions(selectedOptionsIds);\n this.initData.attributes = _.without(this.initData.attributes, selectedAttribute);\n }\n\n return attribute;\n },\n\n /**\n * @param {Object} wizard\n */\n render: function (wizard) {\n this.wizard = wizard;\n this.requestAttributes(wizard.data.attributesIds());\n },\n\n /**\n * @param {Object} wizard\n */\n force: function (wizard) {\n this.saveOptions();\n this.saveAttribute(wizard);\n\n wizard.data.attributes = this.attributes;\n },\n\n /**\n * @param {Object} wizard\n */\n back: function (wizard) {\n wizard.data.attributesIds(this.attributes().pluck('id'));\n }\n });\n});\n","Magento_ConfigurableProduct/js/variations/steps/select_attributes.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'uiComponent',\n 'jquery',\n 'underscore',\n 'mage/translate'\n], function (Component, $, _) {\n 'use strict';\n\n /**\n * @param {Function} provider\n */\n var initNewAttributeListener = function (provider) {\n $('[data-role=product-variations-matrix]').on('add', function () {\n provider().reload();\n });\n };\n\n return Component.extend({\n attributesLabels: {},\n stepInitialized: false,\n defaults: {\n modules: {\n multiselect: '${ $.multiselectName }',\n attributeProvider: '${ $.providerName }'\n },\n listens: {\n '${ $.multiselectName }:selected': 'doSelectedAttributesLabels',\n '${ $.multiselectName }:rows': 'doSelectSavedAttributes'\n },\n notificationMessage: {\n text: null,\n error: null\n },\n selectedAttributes: []\n },\n\n /** @inheritdoc */\n initialize: function () {\n this._super();\n this.selected = [];\n\n initNewAttributeListener(this.attributeProvider);\n },\n\n /** @inheritdoc */\n initObservable: function () {\n this._super().observe(['selectedAttributes']);\n\n return this;\n },\n\n /**\n * @param {Object} wizard\n */\n render: function (wizard) {\n this.wizard = wizard;\n this.setNotificationMessage();\n },\n\n /**\n * Set notification message.\n */\n setNotificationMessage: function () {\n /*eslint-disable max-len*/\n var msg = $.mage.__('When you remove or add an attribute, we automatically update all configurations and you will need to recreate current configurations manually.');\n\n /*eslint-enable max-len*/\n\n if (this.mode === 'edit') {\n this.wizard.setNotificationMessage(msg);\n }\n },\n\n /**\n * Do select saved attributes.\n */\n doSelectSavedAttributes: function () {\n if (this.stepInitialized === false) {\n this.stepInitialized = true;\n //cache attributes labels, which can be present on the 2nd page\n _.each(this.initData.attributes, function (attribute) {\n this.attributesLabels[attribute.id] = attribute.label;\n }.bind(this));\n this.multiselect().selected(_.pluck(this.initData.attributes, 'id'));\n }\n },\n\n /**\n * @param {*} selected\n */\n doSelectedAttributesLabels: function (selected) {\n var labels = [];\n\n this.selected = selected;\n _.each(selected, function (attributeId) {\n var attribute;\n\n if (!this.attributesLabels[attributeId]) {\n attribute = _.findWhere(this.multiselect().rows(), {\n 'attribute_id': attributeId\n });\n\n if (attribute) {\n this.attributesLabels[attribute['attribute_id']] = attribute['frontend_label'];\n }\n }\n labels.push(this.attributesLabels[attributeId]);\n }.bind(this));\n this.selectedAttributes(labels.join(', '));\n },\n\n /**\n * @param {Object} wizard\n */\n force: function (wizard) {\n wizard.data.attributesIds = this.multiselect().selected;\n\n if (!wizard.data.attributesIds() || wizard.data.attributesIds().length === 0) {\n throw new Error($.mage.__('Please select attribute(s).'));\n }\n this.setNotificationMessage();\n },\n\n /**\n * Back.\n */\n back: function () {\n }\n });\n});\n","Magento_ConfigurableProduct/js/variations/steps/summary.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'uiComponent',\n 'jquery',\n 'ko',\n 'underscore',\n 'Magento_Ui/js/grid/paging/paging',\n 'mage/translate'\n], function (Component, $, ko, _, paging) {\n 'use strict';\n\n return Component.extend({\n defaults: {\n modules: {\n variationsComponent: '${ $.variationsComponent }',\n modalComponent: '${ $.modalComponent }',\n matrixGridComponent: '${ $.matrixGridComponent }'\n },\n notificationMessage: {\n text: null,\n error: null\n },\n gridExisting: [],\n gridNew: [],\n gridDeleted: [],\n variationsExisting: [],\n variationsNew: [],\n variationsDeleted: [],\n pagingExisting: paging({\n name: 'configurableWizard.pagingExisting',\n sizesConfig: {\n component: 'Magento_ConfigurableProduct/js/variations/paging/sizes',\n name: 'configurableWizard.pagingExisting_sizes'\n }\n }),\n pagingNew: paging({\n name: 'configurableWizard.pagingNew',\n sizesConfig: {\n component: 'Magento_ConfigurableProduct/js/variations/paging/sizes',\n name: 'configurableWizard.pagingNew_sizes'\n }\n }),\n pagingDeleted: paging({\n name: 'configurableWizard.pagingDeleted',\n sizesConfig: {\n component: 'Magento_ConfigurableProduct/js/variations/paging/sizes',\n name: 'configurableWizard.pagingDeleted_sizes'\n }\n }),\n attributes: [],\n attributesName: [$.mage.__('Images'), $.mage.__('SKU'), $.mage.__('Quantity'), $.mage.__('Price')],\n sections: [],\n gridTemplate: 'Magento_ConfigurableProduct/variations/steps/summary-grid',\n quantityFieldName: 'quantity'\n },\n\n /** @inheritdoc */\n initObservable: function () {\n var pagingObservables = {\n currentNew: ko.getObservable(this.pagingNew, 'current'),\n currentExisting: ko.getObservable(this.pagingExisting, 'current'),\n currentDeleted: ko.getObservable(this.pagingDeleted, 'current'),\n pageSizeNew: ko.getObservable(this.pagingNew, 'pageSize'),\n pageSizeExisting: ko.getObservable(this.pagingExisting, 'pageSize'),\n pageSizeDeleted: ko.getObservable(this.pagingDeleted, 'pageSize')\n };\n\n this._super().observe('gridExisting gridNew gridDeleted attributes sections');\n this.gridExisting.columns = ko.observableArray();\n this.gridNew.columns = ko.observableArray();\n this.gridDeleted.columns = ko.observableArray();\n\n _.each(pagingObservables, function (observable) {\n observable.subscribe(function () {\n this.generateGrid();\n }, this);\n }, this);\n\n return this;\n },\n nextLabelText: $.mage.__('Generate Products'),\n variations: [],\n\n /**\n * @param {*} variations\n * @param {Function} getSectionValue\n */\n calculate: function (variations, getSectionValue) {\n var productSku = this.variationsComponent().getProductValue('sku'),\n productPrice = this.variationsComponent().getProductPrice(),\n productWeight = this.variationsComponent().getProductValue('weight'),\n productName = this.variationsComponent().getProductValue('name'),\n variationsKeys = [],\n gridExisting = [],\n gridNew = [],\n gridDeleted = [],\n matrixGridData = this.matrixGridComponent() ?\n _.indexBy(this.matrixGridComponent().getUnionInsertData(), 'variationKey') : {};\n\n this.variations = [];\n _.each(variations, function (options) {\n var product, images, sku, name, quantity, price, variation,\n variationsKey = this.variationsComponent().getVariationKey(options),\n productDataFromGrid = matrixGridData[variationsKey] || {},\n productDataFromWizard = {},\n productId = this.variationsComponent().getProductIdByOptions(options);\n\n if (productId) {\n product = _.findWhere(this.variationsComponent().variations, {\n productId: productId\n });\n }\n images = getSectionValue('images', options);\n sku = productSku + _.reduce(options, function (memo, option) {\n return memo + '-' + option.label;\n }, '');\n name = productName + _.reduce(options, function (memo, option) {\n return memo + '-' + option.label;\n }, '');\n quantity = getSectionValue(this.quantityFieldName, options);\n\n if (quantity) {\n productDataFromWizard[this.quantityFieldName] = quantity;\n }\n price = getSectionValue('price', options);\n\n if (price) {\n productDataFromWizard.price = price;\n }\n\n if (productId && !images.file) {\n images = product.images;\n }\n productDataFromGrid = _.pick(\n productDataFromGrid,\n 'sku',\n 'name',\n 'weight',\n 'status',\n 'price',\n 'qty'\n );\n\n if (productDataFromGrid.hasOwnProperty('qty')) {\n productDataFromGrid[this.quantityFieldName] = productDataFromGrid.qty;\n }\n delete productDataFromGrid.qty;\n product = _.pick(\n product || {},\n 'sku',\n 'name',\n 'weight',\n 'status',\n 'price',\n this.quantityFieldName\n );\n variation = {\n options: options,\n images: images,\n sku: sku,\n name: name,\n price: productPrice,\n productId: productId,\n weight: productWeight,\n editable: true\n };\n variation[this.quantityFieldName] = quantity;\n variation = _.extend(variation, product, productDataFromGrid, productDataFromWizard);\n\n if (productId) {\n gridExisting.push(this.prepareRowForGrid(variation));\n } else {\n gridNew.push(this.prepareRowForGrid(variation));\n }\n this.variations.push(variation);\n variationsKeys.push(variationsKey);\n }, this);\n\n _.each(_.omit(this.variationsComponent().productAttributesMap, variationsKeys), function (productId) {\n gridDeleted.push(this.prepareRowForGrid(\n _.findWhere(this.variationsComponent().variations, {\n productId: productId\n })\n ));\n }.bind(this));\n\n this.variationsExisting = gridExisting;\n this.variationsNew = gridNew;\n this.variationsDeleted = gridDeleted;\n },\n\n /**\n * Generate grid.\n */\n generateGrid: function () {\n var pageExisting = this.pagingExisting.pageSize * this.pagingExisting.current,\n pageNew = this.pagingNew.pageSize * this.pagingNew.current,\n pageDeleted = this.pagingDeleted.pageSize * this.pagingDeleted.current;\n\n this.pagingExisting.totalRecords = this.variationsExisting.length;\n this.gridExisting(this.variationsExisting.slice(pageExisting - this.pagingExisting.pageSize, pageExisting));\n\n this.pagingNew.totalRecords = this.variationsNew.length;\n this.gridNew(this.variationsNew.slice(pageNew - this.pagingNew.pageSize, pageNew));\n\n this.pagingDeleted.totalRecords = this.variationsDeleted.length;\n this.gridDeleted(this.variationsDeleted.slice(pageDeleted - this.pagingDeleted.pageSize, pageDeleted));\n },\n\n /**\n * @param {Object} variation\n * @return {Array}\n */\n prepareRowForGrid: function (variation) {\n var row = [];\n\n row.push(_.extend({\n images: []\n }, variation.images));\n row.push(variation.sku);\n row.push(variation[this.quantityFieldName]);\n _.each(variation.options, function (option) {\n row.push(option.label);\n });\n row.push(this.variationsComponent().getCurrencySymbol() + ' ' + variation.price);\n\n return row;\n },\n\n /**\n * @return {String|*}\n */\n getGridTemplate: function () {\n return this.gridTemplate;\n },\n\n /**\n * @return {*|String}\n */\n getGridId: function () {\n return _.uniqueId('grid_');\n },\n\n /**\n * @param {*} attributes\n * @return {Array}\n */\n getColumnsName: function (attributes) {\n var columns = this.attributesName.slice(0);\n\n attributes.each(function (attribute, index) {\n columns.splice(3 + index, 0, attribute.label);\n }, this);\n\n return columns;\n },\n\n /**\n * @param {Object} wizard\n */\n render: function (wizard) {\n this.wizard = wizard;\n this.sections(wizard.data.sections());\n this.attributes(wizard.data.attributes());\n this.gridNew([]);\n this.gridExisting([]);\n this.gridDeleted([]);\n this.gridExisting.columns(this.getColumnsName(this.wizard.data.attributes));\n this.gridNew.columns(this.getColumnsName(this.wizard.data.attributes));\n this.gridDeleted.columns(this.getColumnsName(this.variationsComponent().productAttributes));\n this.calculate(wizard.data.variations, wizard.data.sectionHelper);\n this.generateGrid();\n },\n\n /**\n * Force.\n */\n force: function () {\n this.variationsComponent().render(this.variations, this.attributes());\n this.modalComponent().closeModal();\n },\n\n /**\n * Back.\n */\n back: function () {\n }\n });\n});\n","Magento_ConfigurableProduct/js/variations/steps/bulk.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/* global FORM_KEY, byteConvert */\ndefine([\n 'uiComponent',\n 'jquery',\n 'ko',\n 'underscore',\n 'Magento_Ui/js/lib/collapsible',\n 'mage/template',\n 'Magento_Ui/js/modal/alert',\n 'Magento_Catalog/js/product-gallery',\n 'jquery/file-uploader',\n 'mage/translate',\n 'Magento_ConfigurableProduct/js/variations/variations'\n], function (Component, $, ko, _, Collapsible, mageTemplate, alert) {\n 'use strict';\n\n return Component.extend({\n defaults: {\n modules: {\n variationsComponent: '${ $.variationsComponent }'\n },\n countVariations: 0,\n attributes: [],\n sections: {},\n images: null,\n price: '',\n quantity: '',\n notificationMessage: {\n text: null,\n error: null\n }\n },\n\n /** @inheritdoc */\n initObservable: function () {\n this._super().observe('countVariations attributes sections');\n\n return this;\n },\n\n /** @inheritdoc */\n initialize: function () {\n var self = this;\n\n this._super();\n this.sections({\n images: {\n label: 'images',\n type: ko.observable('none'),\n value: ko.observable(),\n attribute: ko.observable()\n },\n price: {\n label: 'price',\n type: ko.observable('none'),\n value: ko.observable(),\n attribute: ko.observable(),\n currencySymbol: ''\n },\n quantity: {\n label: 'quantity',\n type: ko.observable('none'),\n value: ko.observable(),\n attribute: ko.observable()\n }\n });\n\n this.variationsComponent(function (variationsComponent) {\n this.sections().price.currencySymbol = variationsComponent.getCurrencySymbol();\n }.bind(this));\n\n /**\n * Make options sections.\n */\n this.makeOptionSections = function () {\n return {\n images: new this.makeImages(null),\n price: this.price,\n quantity: this.quantity\n };\n }.bind(this);\n\n /**\n * @param {Object} images\n * @param {*} typePreview\n */\n this.makeImages = function (images, typePreview) {\n var preview;\n\n if (!images) {\n this.images = [];\n this.preview = self.noImage;\n this.file = null;\n } else {\n this.images = images;\n preview = _.find(this.images, function (image) {\n return _.contains(image.galleryTypes, typePreview);\n });\n\n if (preview) {\n this.file = preview.file;\n this.preview = preview.url;\n } else {\n this.file = null;\n this.preview = self.noImage;\n }\n }\n };\n this.images = new this.makeImages();\n _.each(this.sections(), function (section) {\n section.type.subscribe(function () {\n this.setWizardNotifyMessageDependOnSectionType();\n }.bind(this));\n }, this);\n },\n types: ['each', 'single', 'none'],\n\n /**\n * Set Wizard notify message depend on section type\n */\n setWizardNotifyMessageDependOnSectionType: function () {\n var flag = false;\n\n _.each(this.sections(), function (section) {\n if (section.type() !== 'none') {\n flag = true;\n }\n }, this);\n\n if (flag) {\n this.wizard.setNotificationMessage(\n $.mage.__('Choose this option to delete and replace extension data for all past configurations.')\n );\n } else {\n this.wizard.cleanNotificationMessage();\n }\n },\n\n /**\n * @param {Object} wizard\n */\n render: function (wizard) {\n this.wizard = wizard;\n this.attributes(wizard.data.attributes());\n\n if (this.mode === 'edit') {\n this.setWizardNotifyMessageDependOnSectionType();\n }\n //fill option section data\n this.attributes.each(function (attribute) {\n attribute.chosen.each(function (option) {\n option.sections = ko.observable(this.makeOptionSections());\n }, this);\n }, this);\n //reset section.attribute\n _.each(this.sections(), function (section) {\n section.attribute(null);\n });\n\n this.initCountVariations();\n this.bindGalleries();\n },\n\n /**\n * Init count variations.\n */\n initCountVariations: function () {\n var variations = this.generateVariation(this.attributes()),\n newVariations = _.map(variations, function (options) {\n return this.variationsComponent().getVariationKey(options);\n }.bind(this)),\n existingVariations = _.keys(this.variationsComponent().productAttributesMap);\n\n this.countVariations(_.difference(newVariations, existingVariations).length);\n },\n\n /**\n * @param {Object} attributes - example [['b1', 'b2'],['a1', 'a2', 'a3'],['c1', 'c2', 'c3'],['d1']]\n * @returns {*} example [['b1','a1','c1','d1'],['b1','a1','c2','d1']...]\n */\n generateVariation: function (attributes) {\n return _.reduce(attributes, function (matrix, attribute) {\n var tmp = [];\n\n _.each(matrix, function (variations) {\n _.each(attribute.chosen, function (option) {\n option['attribute_code'] = attribute.code;\n option['attribute_label'] = attribute.label;\n tmp.push(_.union(variations, [option]));\n });\n });\n\n if (!tmp.length) {\n return _.map(attribute.chosen, function (option) {\n option['attribute_code'] = attribute.code;\n option['attribute_label'] = attribute.label;\n\n return [option];\n });\n }\n\n return tmp;\n }, []);\n },\n\n /**\n * @param {*} section\n * @param {Object} options\n * @return {*}\n */\n getSectionValue: function (section, options) {\n switch (this.sections()[section].type()) {\n case 'each':\n return _.find(this.sections()[section].attribute().chosen, function (chosen) {\n return _.find(options, function (option) {\n return chosen.id == option.id; //eslint-disable-line eqeqeq\n });\n }).sections()[section];\n\n case 'single':\n return this.sections()[section].value();\n\n case 'none':\n return this[section];\n }\n },\n\n /**\n * @param {*} node\n * @return {Promise|*}\n */\n getImageProperty: function (node) {\n var types = node.find('[data-role=gallery]').productGallery('option').types,\n images = _.map(node.find('[data-role=image]'), function (image) {\n var imageData = $(image).data('imageData'),\n positionElement;\n\n imageData.galleryTypes = _.pluck(_.filter(types, function (type) {\n return type.value === imageData.file;\n }), 'code');\n\n //jscs:disable requireCamelCaseOrUpperCaseIdentifiers\n positionElement =\n $(image).find('[name=\"product[media_gallery][images][' + imageData.file_id + '][position]\"]');\n //jscs:enable requireCamelCaseOrUpperCaseIdentifiers\n if (!_.isEmpty(positionElement.val())) {\n imageData.position = positionElement.val();\n }\n\n return imageData;\n });\n\n return _.reject(images, function (image) {\n return !!image.isRemoved;\n });\n },\n\n /**\n * Fill images section.\n */\n fillImagesSection: function () {\n switch (this.sections().images.type()) {\n case 'each':\n if (this.sections().images.attribute()) {\n this.sections().images.attribute().chosen.each(function (option) {\n option.sections().images = new this.makeImages(\n this.getImageProperty($('[data-role=step-gallery-option-' + option.id + ']')),\n 'thumbnail'\n );\n }, this);\n }\n break;\n\n case 'single':\n this.sections().images.value(new this.makeImages(\n this.getImageProperty($('[data-role=step-gallery-single]')),\n 'thumbnail'\n ));\n break;\n\n default:\n this.sections().images.value(new this.makeImages());\n break;\n }\n },\n\n /**\n * @param {Object} wizard\n */\n force: function (wizard) {\n this.fillImagesSection();\n this.validate();\n this.validateImage();\n wizard.data.sections = this.sections;\n wizard.data.sectionHelper = this.getSectionValue.bind(this);\n wizard.data.variations = this.generateVariation(this.attributes());\n },\n\n /**\n * Validate.\n */\n validate: function () {\n var formValid;\n\n _.each(this.sections(), function (section) {\n switch (section.type()) {\n case 'each':\n if (!section.attribute()) {\n throw new Error($.mage.__('Please select attribute for {section} section.')\n .replace('{section}', section.label));\n }\n break;\n\n case 'single':\n if (!section.value()) {\n throw new Error($.mage.__('Please fill in the values for {section} section.')\n .replace('{section}', section.label));\n }\n break;\n }\n }, this);\n formValid = true;\n _.each($('[data-role=attributes-values-form]'), function (form) {\n formValid = $(form).valid() && formValid;\n });\n\n if (!formValid) {\n throw new Error($.mage.__('Please fill-in correct values.'));\n }\n },\n\n /**\n * Validate image.\n */\n validateImage: function () {\n switch (this.sections().images.type()) {\n case 'each':\n _.each(this.sections().images.attribute().chosen, function (option) {\n if (!option.sections().images.images.length) {\n throw new Error($.mage.__('Please select image(s) for your attribute.'));\n }\n });\n break;\n\n case 'single':\n if (this.sections().images.value().file == null) {\n throw new Error($.mage.__('Please choose image(s).'));\n }\n break;\n }\n },\n\n /**\n * Back.\n */\n back: function () {\n this.setWizardNotifyMessageDependOnSectionType();\n },\n\n /**\n * Bind galleries.\n */\n bindGalleries: function () {\n $('[data-role=bulk-step] [data-role=gallery]').each(function (index, element) {\n var gallery = $(element),\n uploadInput = $(gallery.find('[name=image]')),\n dropZone = $(gallery).find('.image-placeholder');\n\n if (!gallery.data('gallery-initialized')) {\n gallery.mage('productGallery', {\n template: '[data-template=gallery-content]',\n dialogTemplate: '.dialog-template',\n dialogContainerTmpl: '[data-role=img-dialog-container-tmpl]'\n });\n\n uploadInput.fileupload({\n dataType: 'json',\n dropZone: dropZone,\n process: [{\n action: 'load',\n fileTypes: /^image\\/(gif|jpeg|png)$/\n }, {\n action: 'resize',\n maxWidth: 1920,\n maxHeight: 1200\n }, {\n action: 'save'\n }],\n formData: {\n 'form_key': FORM_KEY\n },\n sequentialUploads: true,\n acceptFileTypes: /(\\.|\\/)(gif|jpe?g|png)$/i,\n\n /**\n * @param {jQuery.Event} e\n * @param {Object} data\n */\n add: function (e, data) {\n var progressTmpl = mageTemplate('[data-template=uploader]'),\n fileSize,\n tmpl;\n\n $.each(data.files, function (i, file) {\n fileSize = typeof file.size == 'undefined' ?\n $.mage.__('We could not detect a size.') :\n byteConvert(file.size);\n\n data.fileId = Math.random().toString(33).substr(2, 18);\n\n tmpl = progressTmpl({\n data: {\n name: file.name,\n size: fileSize,\n id: data.fileId\n }\n });\n\n $(tmpl).appendTo(gallery.find('[data-role=uploader]'));\n });\n\n $(this).fileupload('process', data).done(function () {\n data.submit();\n });\n },\n\n /**\n * @param {jQuery.Event} e\n * @param {Object} data\n */\n done: function (e, data) {\n if (data.result && !data.result.error) {\n gallery.trigger('addItem', data.result);\n } else {\n $('#' + data.fileId)\n .delay(2000)\n .hide('highlight');\n alert({\n content: $.mage.__('We don\\'t recognize or support this file extension type.')\n });\n }\n $('#' + data.fileId).remove();\n },\n\n /**\n * @param {jQuery.Event} e\n * @param {Object} data\n */\n progress: function (e, data) {\n var progress = parseInt(data.loaded / data.total * 100, 10),\n progressSelector = '#' + data.fileId + ' .progressbar-container .progressbar';\n\n $(progressSelector).css('width', progress + '%');\n },\n\n /**\n * @param {jQuery.Event} e\n * @param {Object} data\n */\n fail: function (e, data) {\n var progressSelector = '#' + data.fileId;\n\n $(progressSelector).removeClass('upload-progress').addClass('upload-failure')\n .delay(2000)\n .hide('highlight')\n .remove();\n }\n });\n gallery.data('gallery-initialized', 1);\n }\n });\n }\n });\n});\n","Magento_ConfigurableProduct/js/components/custom-options-price-type.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'underscore',\n 'Magento_Catalog/js/components/custom-options-price-type'\n], function (_, PriceType) {\n 'use strict';\n\n return PriceType.extend({\n defaults: {\n isConfigurable: false,\n isFiltered: null,\n defaultOptions: null,\n filteredOptions: null,\n bannedOptions: []\n },\n\n /**\n * Updates options.\n *\n * @param {Boolean} variationsEmpty\n * @returns {Boolean}\n */\n updateOptions: function (variationsEmpty) {\n var isFiltered = this.isConfigurable || !variationsEmpty,\n value;\n\n if (this.isFiltered !== isFiltered) {\n value = this.value();\n\n this.options(isFiltered ? this.getFilteredOptions() : this.getDefaultOptions());\n this.value(value);\n }\n\n return isFiltered;\n },\n\n /**\n * Get default list of options.\n *\n * @returns {Array}\n */\n getDefaultOptions: function () {\n if (this.defaultOptions === null) {\n this.defaultOptions = this.options();\n }\n\n return this.defaultOptions;\n },\n\n /**\n * Get filtered list of options.\n *\n * @returns {Array}\n */\n getFilteredOptions: function () {\n var defaultOptions;\n\n if (this.filteredOptions === null) {\n defaultOptions = this.getDefaultOptions();\n this.filteredOptions = [];\n\n _.each(defaultOptions, function (option) {\n if (this.bannedOptions.indexOf(option.value) === -1) {\n this.filteredOptions.push(option);\n }\n }, this);\n }\n\n return this.filteredOptions;\n }\n });\n});\n","Magento_ConfigurableProduct/js/components/custom-options-warning.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/form/components/html'\n], function (Html) {\n 'use strict';\n\n return Html.extend({\n defaults: {\n isConfigurable: false\n },\n\n /**\n * Updates component visibility state.\n *\n * @param {Boolean} variationsEmpty\n * @returns {Boolean}\n */\n updateVisibility: function (variationsEmpty) {\n var isVisible = this.isConfigurable || !variationsEmpty;\n\n this.visible(isVisible);\n\n return isVisible;\n }\n });\n});\n","Magento_ConfigurableProduct/js/components/associated-product-insert-listing.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'underscore',\n 'Magento_Ui/js/form/components/insert-listing'\n], function (_, insertListing) {\n 'use strict';\n\n return insertListing.extend({\n defaults: {\n gridInitialized: false,\n paramsUpdated: false,\n showMassActionColumn: true,\n currentProductId: 0,\n dataScopeAssociatedProduct: 'data.associated_product_ids',\n typeGrid: '',\n product: {},\n rowIndexForChange: undefined,\n changeProductData: [],\n modules: {\n productsProvider: '${ $.productsProvider }',\n productsColumns: '${ $.productsColumns }',\n productsMassAction: '${ $.productsMassAction }',\n modalWithGrid: '${ $.modalWithGrid }',\n productsFilters: '${ $.productsFilters }'\n },\n exports: {\n externalProviderParams: '${ $.externalProvider }:params'\n },\n links: {\n changeProductData: '${ $.provider }:${ $.changeProductProvider }'\n },\n listens: {\n '${ $.externalProvider }:params': '_setFilters _setVisibilityMassActionColumn',\n '${ $.productsProvider }:data': '_handleManualGridOpening',\n '${ $.productsMassAction }:selected': '_handleManualGridSelect'\n }\n },\n\n /**\n * Initialize observables.\n *\n * @returns {Object} Chainable.\n */\n initObservable: function () {\n this._super().observe(\n 'changeProductData'\n );\n\n return this;\n },\n\n /**\n * Get ids of used products.\n *\n * @returns {Array}\n */\n getUsedProductIds: function () {\n var usedProductsIds = this.source.get(this.dataScopeAssociatedProduct);\n\n return usedProductsIds.slice();\n },\n\n /**\n * Request for render content.\n *\n * @returns {Object}\n */\n doRender: function (showMassActionColumn, typeGrid) {\n this.typeGrid = typeGrid;\n this.showMassActionColumn = showMassActionColumn;\n\n if (this.gridInitialized) {\n this.paramsUpdated = false;\n this.productsFilters().clear();\n this._setFilters(this.externalProviderParams);\n this._setVisibilityMassActionColumn();\n }\n\n return this.render();\n },\n\n /**\n * Show grid with assigned product.\n *\n * @returns {Object}\n */\n showGridAssignProduct: function () {\n this.product = {};\n this.rowIndexForChange = undefined;\n\n return this.doRender(true, 'assignProduct');\n },\n\n /**\n * Show grid with changed product.\n *\n * @param {String} rowIndex\n * @param {String} product\n */\n showGridChangeProduct: function (rowIndex, product) {\n this.rowIndexForChange = rowIndex;\n this.product = product;\n this.doRender(false, 'changeProduct');\n },\n\n /**\n * Select product.\n *\n * @param {String} rowIndex\n */\n selectProduct: function (rowIndex) {\n this.changeProductData({\n rowIndex: this.rowIndexForChange,\n product: this.productsProvider().data.items[rowIndex]\n });\n this.modalWithGrid().closeModal();\n },\n\n /**\n * Set visibility state for mass action column\n *\n * @private\n */\n _setVisibilityMassActionColumn: function () {\n this.productsMassAction(function (massActionComponent) {\n this.productsColumns().elems().each(function (rowElement) {\n rowElement.disableAction = this.showMassActionColumn;\n }, this);\n massActionComponent.visible = this.showMassActionColumn;\n }.bind(this));\n },\n\n /**\n * Set filters.\n *\n * @param {Object} params\n * @private\n */\n _setFilters: function (params) {\n var filterModifier = {},\n attrCodes,\n usedProductIds,\n attributes;\n\n params = _.omit(params);\n\n if (!this.paramsUpdated) {\n this.gridInitialized = true;\n this.paramsUpdated = true;\n\n attrCodes = this._getAttributesCodes();\n usedProductIds = this.getUsedProductIds();\n\n if (this.currentProductId) {\n usedProductIds.push(this.currentProductId);\n }\n\n filterModifier['entity_id'] = {\n 'condition_type': 'nin', value: usedProductIds\n };\n attrCodes.each(function (code) {\n filterModifier[code] = {\n 'condition_type': 'notnull'\n };\n });\n\n if (this.typeGrid === 'changeProduct') {\n attributes = JSON.parse(this.product.attributes);\n\n filterModifier = _.extend(filterModifier, _.mapObject(attributes, function (value) {\n return {\n 'condition_type': 'eq',\n 'value': value\n };\n }));\n\n params.filters = attributes;\n } else {\n params.filters = {};\n }\n\n params['attributes_codes'] = attrCodes;\n\n this.set('externalProviderParams', params);\n this.set('externalFiltersModifier', filterModifier);\n }\n },\n\n /**\n * Get attribute codes.\n *\n * @returns {Array}\n * @private\n */\n _getAttributesCodes: function () {\n var attrCodes = this.source.get('data.attribute_codes');\n\n return attrCodes ? attrCodes : [];\n },\n\n /**\n * Get product variations.\n *\n * @returns {Array}\n * @private\n */\n _getProductVariations: function () {\n var matrix = this.source.get('data.configurable-matrix');\n\n return matrix ? matrix : [];\n },\n\n /**\n * Handle manual grid after opening\n * @private\n */\n _handleManualGridOpening: function (data) {\n if (data.items.length && this.typeGrid === 'assignProduct') {\n this.productsColumns().elems().each(function (rowElement) {\n rowElement.disableAction = true;\n });\n\n this._disableRows(data.items);\n }\n },\n\n /**\n * Handle manual selection.\n *\n * @param {Array} selected\n * @private\n */\n _handleManualGridSelect: function (selected) {\n var selectedRows,\n selectedVariationKeys;\n\n if (this.typeGrid === 'assignProduct') {\n selectedRows = _.filter(this.productsProvider().data.items, function (row) {\n return selected.indexOf(row['entity_id']) !== -1;\n });\n selectedVariationKeys = _.values(this._getVariationKeyMap(selectedRows));\n this._disableRows(this.productsProvider().data.items, selectedVariationKeys, selected);\n }\n },\n\n /**\n * Disable rows in grid for products with the same variation key\n *\n * @param {Array} items\n * @param {Array} selectedVariationKeys\n * @param {Array} selected\n * @private\n */\n _disableRows: function (items, selectedVariationKeys, selected) {\n selectedVariationKeys = selectedVariationKeys === undefined ? [] : selectedVariationKeys;\n selected = selected === undefined ? [] : selected;\n this.productsMassAction(function (massaction) {\n var configurableVariationKeys = _.union(\n selectedVariationKeys,\n _.pluck(this._getProductVariations(), 'variationKey')\n ),\n variationKeyMap = this._getVariationKeyMap(items),\n rowsForDisable = _.keys(_.pick(\n variationKeyMap,\n function (variationKey) {\n return configurableVariationKeys.indexOf(variationKey) !== -1;\n }\n ));\n\n massaction.disabled(_.difference(rowsForDisable, selected));\n }.bind(this));\n },\n\n /**\n * Get variation key map used in manual grid.\n *\n * @param {Array} items\n * @returns {Array} [{entity_id: variation-key}, ...]\n * @private\n */\n _getVariationKeyMap: function (items) {\n var variationKeyMap = {};\n\n _.each(items, function (row) {\n variationKeyMap[row['entity_id']] = _.values(\n _.pick(row, this._getAttributesCodes())\n ).sort().join('-');\n\n }, this);\n\n return variationKeyMap;\n }\n });\n});\n","Magento_ConfigurableProduct/js/components/dynamic-rows-configurable.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'underscore',\n 'uiRegistry',\n 'Magento_Ui/js/dynamic-rows/dynamic-rows',\n 'jquery'\n], function (_, registry, dynamicRows, $) {\n 'use strict';\n\n return dynamicRows.extend({\n defaults: {\n actionsListOpened: false,\n canEditField: 'canEdit',\n newProductField: 'newProduct',\n dataScopeAssociatedProduct: 'data.associated_product_ids',\n dataProviderFromGrid: '',\n dataProviderChangeFromGrid: '',\n insertDataFromGrid: [],\n changeDataFromGrid: [],\n dataProviderFromWizard: '',\n insertDataFromWizard: [],\n map: null,\n isEmpty: true,\n isShowAddProductButton: false,\n cacheGridData: [],\n unionInsertData: [],\n deleteProperty: false,\n dataLength: 0,\n identificationProperty: 'id',\n 'attribute_set_id': '',\n attributesTmp: [],\n changedFlag: 'was_changed',\n listens: {\n 'insertDataFromGrid': 'processingInsertDataFromGrid',\n 'insertDataFromWizard': 'processingInsertDataFromWizard',\n 'unionInsertData': 'processingUnionInsertData',\n 'changeDataFromGrid': 'processingChangeDataFromGrid',\n 'isEmpty': 'changeVisibility'\n },\n imports: {\n 'attribute_set_id': '${$.provider}:data.product.attribute_set_id'\n },\n 'exports': {\n 'attribute_set_id': '${$.provider}:data.new-variations-attribute-set-id'\n },\n modules: {\n modalWithGrid: '${ $.modalWithGrid }',\n gridWithProducts: '${ $.gridWithProducts}'\n }\n },\n\n /**\n * Invokes initialize method of parent class,\n * contains initialization logic\n */\n initialize: function () {\n this._super()\n .changeVisibility(this.isEmpty());\n\n return this;\n },\n\n /**\n * Change visibility\n *\n * When isEmpty = true, then visbible = false\n *\n * @param {Boolean} isEmpty\n */\n changeVisibility: function (isEmpty) {\n this.visible(!isEmpty);\n },\n\n /**\n * Open modal with grid.\n *\n * @param {String} rowIndex\n */\n openModalWithGrid: function (rowIndex) {\n var productSource = this.source.get(this.dataScope + '.' + this.index + '.' + rowIndex),\n product = {\n 'id': productSource.id,\n 'attributes': productSource['configurable_attribute']\n };\n\n this.modalWithGrid().openModal();\n this.gridWithProducts().showGridChangeProduct(rowIndex, product);\n },\n\n /**\n * Initialize children\n *\n * @returns {Object} Chainable.\n */\n initChildren: function () {\n var tmpArray = [];\n\n this.recordData.each(function (recordData) {\n tmpArray.push(recordData);\n }, this);\n\n this.unionInsertData(tmpArray);\n\n return this;\n },\n\n /**\n * Delete record\n *\n * @param {Number} index - row index\n */\n deleteRecord: function (index) {\n var tmpArray,\n lastRecord;\n\n this.reRender = false;\n tmpArray = this.getUnionInsertData();\n tmpArray.splice(index, 1);\n\n if (!tmpArray.length) {\n this.attributesTmp = this.source.get('data.attributes');\n this.source.set('data.attributes', []);\n this.cacheGridData = [];\n }\n\n if (parseInt(this.currentPage(), 10) === this.pages()) {\n lastRecord =\n _.findWhere(this.elems(), {\n index: this.startIndex + this.getChildItems().length - 1\n }) ||\n _.findWhere(this.elems(), {\n index: (this.startIndex + this.getChildItems().length - 1).toString()\n });\n\n lastRecord.destroy();\n }\n\n this.unionInsertData(tmpArray);\n\n if (this.pages() < parseInt(this.currentPage(), 10)) {\n this.currentPage(this.pages());\n }\n\n this.reRender = true;\n this.showSpinner(false);\n },\n\n /**\n * Generate associated products\n */\n generateAssociatedProducts: function () {\n var productsIds = [];\n\n this.getUnionInsertData().forEach(function (data) {\n if (data.id !== null) {\n productsIds.push(data.id);\n }\n });\n\n this.source.set(this.dataScopeAssociatedProduct, productsIds);\n },\n\n /**\n * Calls 'initObservable' of parent\n *\n * @returns {Object} Chainable.\n */\n initObservable: function () {\n this._super()\n .observe([\n 'insertDataFromGrid', 'unionInsertData', 'isEmpty', 'isShowAddProductButton', 'actionsListOpened'\n ]);\n\n return this;\n },\n\n /**\n * Get union insert data from source\n *\n * @returns {Array}\n */\n getUnionInsertData: function () {\n var source = this.source.get(this.dataScope + '.' + this.index),\n result = [];\n\n _.each(source, function (data) {\n result.push(data);\n });\n\n return result;\n },\n\n /**\n * Process union insert data.\n *\n * @param {Array} data\n */\n processingUnionInsertData: function (data) {\n var dataCount,\n elemsCount,\n tmpData,\n path,\n attributeCodes = this.source.get('data.attribute_codes');\n\n this.isEmpty(data.length === 0);\n this.isShowAddProductButton(\n (!attributeCodes || data.length > 0 ? data.length : attributeCodes.length) > 0\n );\n\n tmpData = data.slice(this.pageSize * (this.currentPage() - 1),\n this.pageSize * (this.currentPage() - 1) + parseInt(this.pageSize, 10));\n\n this.source.set(this.dataScope + '.' + this.index, []);\n\n _.each(tmpData, function (row, index) {\n path = this.dataScope + '.' + this.index + '.' + (this.startIndex + index);\n row.attributes = $('<i></i>').text(row.attributes).html();\n this.source.set(path, row);\n }, this);\n\n this.source.set(this.dataScope + '.' + this.index, data);\n this.parsePagesData(data);\n\n // Render\n dataCount = tmpData.length;\n elemsCount = this.elems().length;\n\n if (dataCount > elemsCount) {\n tmpData.each(function (elemData, index) {\n this.addChild(elemData, this.startIndex + index);\n }, this);\n } else {\n for (elemsCount; elemsCount > dataCount; elemsCount--) {\n this.elems()[elemsCount - 1].destroy();\n }\n }\n\n this.generateAssociatedProducts();\n },\n\n /**\n * Set initial property to records data\n *\n * @returns {Object} Chainable.\n */\n setInitialProperty: function () {\n return this;\n },\n\n /**\n * Parsed data\n *\n * @param {Array} data - array with data\n * about selected records\n */\n processingInsertDataFromGrid: function (data) {\n var changes,\n tmpArray;\n\n if (!data.length) {\n return;\n }\n\n tmpArray = this.getUnionInsertData();\n\n changes = this._checkGridData(data);\n this.cacheGridData = data;\n\n changes.each(function (changedObject) {\n var mappedData = this.mappingValue(changedObject);\n\n mappedData[this.canEditField] = 0;\n mappedData[this.newProductField] = 0;\n mappedData.variationKey = this._getVariationKey(changedObject);\n mappedData['configurable_attribute'] = this._getConfigurableAttribute(changedObject);\n tmpArray.push(mappedData);\n }, this);\n\n // Attributes cannot be changed before regeneration thought wizard\n if (!this.source.get('data.attributes').length) {\n this.source.set('data.attributes', this.attributesTmp);\n }\n this.unionInsertData(tmpArray);\n },\n\n /**\n * Process changes from grid.\n *\n * @param {Object} data\n */\n processingChangeDataFromGrid: function (data) {\n var tmpArray = this.getUnionInsertData(),\n mappedData = this.mappingValue(data.product);\n\n mappedData[this.canEditField] = 0;\n mappedData[this.newProductField] = 0;\n mappedData.variationKey = this._getVariationKey(data.product);\n mappedData['configurable_attribute'] = this._getConfigurableAttribute(data.product);\n tmpArray[data.rowIndex] = mappedData;\n\n this.unionInsertData(tmpArray);\n },\n\n /**\n * Get variation key.\n *\n * @param {Object} data\n * @returns {String}\n * @private\n */\n _getVariationKey: function (data) {\n var attrCodes = this.source.get('data.attribute_codes'),\n key = [];\n\n attrCodes.each(function (code) {\n key.push(data[code]);\n });\n\n return key.sort().join('-');\n },\n\n /**\n * Get configurable attribute.\n *\n * @param {Object} data\n * @returns {String}\n * @private\n */\n _getConfigurableAttribute: function (data) {\n var attrCodes = this.source.get('data.attribute_codes'),\n confAttrs = {};\n\n attrCodes.each(function (code) {\n confAttrs[code] = data[code];\n });\n\n return JSON.stringify(confAttrs);\n },\n\n /**\n * Process data insertion from wizard\n *\n * @param {Object} data\n */\n processingInsertDataFromWizard: function (data) {\n var tmpArray = this.getUnionInsertData(),\n productIdsToDelete = this.source.get(this.dataScopeAssociatedProduct),\n index,\n product = {};\n\n tmpArray = this.unsetArrayItem(\n tmpArray,\n {\n id: null\n }\n );\n\n _.each(data, function (row) {\n if (row.productId) {\n index = _.indexOf(productIdsToDelete, row.productId);\n\n if (index > -1) {\n productIdsToDelete.splice(index, 1);\n tmpArray = this.unsetArrayItem(\n tmpArray,\n {\n id: row.productId\n }\n );\n }\n }\n product = this.getProductData(row);\n\n product[this.changedFlag] = true;\n product[this.canEditField] = row.editable;\n product[this.newProductField] = row.newProduct;\n tmpArray.push(product);\n }, this);\n\n _.each(productIdsToDelete, function (id) {\n tmpArray = this.unsetArrayItem(\n tmpArray,\n {\n id: id\n }\n );\n }, this);\n\n this.unionInsertData(tmpArray);\n },\n\n /**\n *\n * @param {Object} row\n * @returns {Object}\n */\n getProductData: function (row) {\n var product,\n attributesText = '';\n\n _.each(row.options, function (attribute) {\n if (attributesText) {\n attributesText += ', ';\n }\n attributesText += attribute['attribute_label'] + ': ' + attribute.label;\n }, this);\n\n product = {\n 'id': row.productId,\n 'product_link': row.productUrl,\n 'name': row.name,\n 'sku': row.sku,\n 'status': row.status,\n 'price': row.price,\n 'price_currency': row.priceCurrency,\n 'price_string': row.priceCurrency + row.price,\n 'weight': row.weight,\n 'qty': row.quantity,\n 'variationKey': row.variationKey,\n 'configurable_attribute': row.attribute,\n 'thumbnail_image': row.images.preview,\n 'media_gallery': row['media_gallery'],\n 'swatch_image': row['swatch_image'],\n 'small_image': row['small_image'],\n image: row.image,\n 'thumbnail': row.thumbnail,\n 'attributes': attributesText\n };\n\n return product;\n },\n\n /**\n * Remove array items matching condition.\n *\n * @param {Array} data\n * @param {Object} condition\n * @returns {Array}\n */\n unsetArrayItem: function (data, condition) {\n var objs = _.where(data, condition);\n\n _.each(objs, function (obj) {\n var index = _.indexOf(data, obj);\n\n if (index > -1) {\n data.splice(index, 1);\n }\n });\n\n return data;\n },\n\n /**\n * Check changed records\n *\n * @param {Array} data - array with records data\n * @returns {Array} Changed records\n */\n _checkGridData: function (data) {\n var cacheLength = this.cacheGridData.length,\n curData = data.length,\n max = cacheLength > curData ? this.cacheGridData : data,\n changes = [],\n obj = {};\n\n max.each(function (record, index) {\n obj[this.map.id] = record[this.map.id];\n\n if (!_.where(this.cacheGridData, obj).length) {\n changes.push(data[index]);\n }\n }, this);\n\n return changes;\n },\n\n /**\n * Mapped value\n */\n mappingValue: function (data) {\n var result = {};\n\n _.each(this.map, function (prop, index) {\n result[index] = data[prop];\n });\n\n return result;\n },\n\n /**\n * Toggle actions list.\n *\n * @param {Number} rowIndex\n * @returns {Object} Chainable.\n */\n toggleActionsList: function (rowIndex) {\n var state = false;\n\n if (rowIndex !== this.actionsListOpened()) {\n state = rowIndex;\n }\n this.actionsListOpened(state);\n\n return this;\n },\n\n /**\n * Close action list.\n *\n * @param {Number} rowIndex\n * @returns {Object} Chainable\n */\n closeList: function (rowIndex) {\n if (this.actionsListOpened() === rowIndex) {\n this.actionsListOpened(false);\n }\n\n return this;\n },\n\n /**\n * Toggle product status.\n *\n * @param {Number} rowIndex\n */\n toggleStatusProduct: function (rowIndex) {\n var tmpArray = this.getUnionInsertData(),\n status = parseInt(tmpArray[rowIndex].status, 10);\n\n if (status === 1) {\n tmpArray[rowIndex].status = 2;\n } else {\n tmpArray[rowIndex].status = 1;\n }\n\n tmpArray[rowIndex][this.changedFlag] = true;\n this.unionInsertData(tmpArray);\n }\n });\n});\n","Magento_ConfigurableProduct/js/components/modal-configurable.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'Magento_Ui/js/modal/modal-component',\n 'uiRegistry',\n 'underscore'\n], function (Modal, registry, _) {\n 'use strict';\n\n return Modal.extend({\n defaults: {\n stepWizard: '',\n modules: {\n form: '${ $.formName }'\n }\n },\n\n /**\n * Open modal\n */\n openModal: function () {\n var stepWizard = {};\n\n this.form().validate();\n\n if (this.form().source.get('params.invalid') === false) {\n stepWizard = registry.get('index = ' + this.stepWizard);\n\n if (!_.isUndefined(stepWizard)) {\n stepWizard.open();\n }\n\n this._super();\n } else {\n this.form().focusInvalid();\n }\n }\n });\n});\n","Magento_ConfigurableProduct/js/components/container-configurable-handler.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'uiComponent'\n], function (Element) {\n 'use strict';\n\n return Element.extend({\n defaults: {\n listens: {\n '${ $.provider }:data.is_downloadable': 'handleProductType'\n },\n links: {\n isDownloadable: '${ $.provider }:data.is_downloadable'\n },\n modules: {\n createConfigurableButton: '${$.createConfigurableButton}'\n }\n },\n\n /**\n * Invokes initialize method of parent class,\n * contains initialization logic\n */\n initialize: function () {\n this._super();\n this.handleProductType(this.isDownloadable);\n\n return this;\n },\n\n /**\n * Calls 'initObservable' of parent\n *\n * @returns {Object} Chainable.\n */\n initObservable: function () {\n this._super()\n .observe(['content']);\n\n return this;\n },\n\n /**\n * Change content for container and visibility for button\n *\n * @param {String} isDownloadable\n */\n handleProductType: function (isDownloadable) {\n if (isDownloadable === '1') {\n this.content(this.content2);\n\n if (this.createConfigurableButton()) {\n this.createConfigurableButton().visible(false);\n }\n } else {\n this.content(this.content1);\n\n if (this.createConfigurableButton()) {\n this.createConfigurableButton().visible(true);\n }\n }\n }\n });\n});\n","Magento_ConfigurableProduct/js/components/qty-configurable.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'Magento_Ui/js/form/element/abstract'\n], function (Abstract) {\n 'use strict';\n\n return Abstract.extend({\n defaults: {\n imports: {\n isConfigurable: '!ns = ${ $.ns }, index = configurable-matrix:isEmpty'\n }\n },\n\n /** @inheritdoc */\n initialize: function () {\n this._super();\n // resolve initial disable state\n this.handleQtyValue(this.isConfigurable);\n\n /** important to set this listener in initialize because of a different order of processing.\n * Do not move to defaults->listens section */\n this.setListeners({\n isConfigurable: 'handleQtyValue'\n });\n\n return this;\n },\n\n /**\n * Disable and clear Qty if product type changed to configurable\n *\n * @param {String} isConfigurable\n */\n handleQtyValue: function (isConfigurable) {\n this.disabled(!!this.isUseDefault() || isConfigurable);\n\n if (isConfigurable) {\n this.clear();\n }\n }\n });\n});\n","Magento_ConfigurableProduct/js/components/price-configurable.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'underscore',\n 'uiRegistry',\n 'Magento_Ui/js/form/element/abstract'\n], function (_, registry, Abstract) {\n 'use strict';\n\n return Abstract.extend({\n defaults: {\n imports: {\n isConfigurable: '!ns = ${ $.ns }, index = configurable-matrix:isEmpty'\n },\n modules: {\n createConfigurableButton: '${$.createConfigurableButton}'\n }\n },\n\n /** @inheritdoc */\n initialize: function () {\n this._super();\n // resolve initial disable state\n this.handlePriceValue(this.isConfigurable);\n // add listener to track \"configurable\" type\n this.setListeners({\n isConfigurable: 'handlePriceValue'\n });\n\n return this;\n },\n\n /**\n * Calls 'initObservable' of parent\n *\n * @returns {Object} Chainable.\n */\n initObservable: function () {\n this._super()\n .observe(['content']);\n\n return this;\n },\n\n /**\n * Disable and clear price if product type changed to configurable\n *\n * @param {String} isConfigurable\n */\n handlePriceValue: function (isConfigurable) {\n this.disabled(!!this.isUseDefault() || isConfigurable);\n this.required(!!this.isUseDefault() || !isConfigurable);\n\n if (isConfigurable) {\n this.clear();\n }\n }\n });\n});\n","Magento_ConfigurableProduct/js/components/file-uploader.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\ndefine([\n 'Magento_Ui/js/form/element/file-uploader',\n 'underscore'\n], function (Element, _) {\n 'use strict';\n\n return Element.extend({\n processedFile: {},\n actionsListOpened: false,\n thumbnailUrl: '',\n thumbnail: null,\n smallImage: null,\n defaults: {\n fileInputName: ''\n },\n\n /**\n * Initialize observables.\n *\n * @returns {Object} Chainable.\n */\n initObservable: function () {\n this._super().observe(['processedFile', 'actionsListOpened', 'thumbnailUrl', 'thumbnail', 'smallImage']);\n\n return this;\n },\n\n /** @inheritdoc */\n setInitialValue: function () {\n var value = this.getInitialValue();\n\n if (!_.isString(value)) {\n this._super();\n }\n\n return this;\n },\n\n /**\n * Adds provided file to the files list.\n *\n * @param {Object} file\n * @returns {Object} Chainable.\n */\n addFile: function (file) {\n this.processedFile(this.processFile(file));\n\n this.value(this.processedFile().file);\n\n return this;\n },\n\n /**\n * Toggle actions list.\n *\n * @returns {Object} Chainable.\n */\n toggleActionsList: function () {\n if (this.actionsListOpened()) {\n this.actionsListOpened(false);\n } else {\n this.actionsListOpened(true);\n }\n\n return this;\n },\n\n /**\n * Close action list.\n *\n * @returns {Object} Chainable\n */\n closeList: function () {\n if (this.actionsListOpened()) {\n this.actionsListOpened(false);\n }\n\n return this;\n },\n\n /**\n * Delete Image\n *\n * @returns {Object} Chainable\n */\n deleteImage: function () {\n this.processedFile({});\n this.value(null);\n this.thumbnail(null);\n this.thumbnailUrl(null);\n this.smallImage(null);\n\n return this;\n }\n });\n});\n","Magento_Shipping/order/packaging.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine(['prototype'], function () {\n\n window.Packaging = Class.create();\n Packaging.prototype = {\n /**\n * Initialize object\n */\n initialize: function (params) {\n this.packageIncrement = 0;\n this.packages = [];\n this.itemsAll = [];\n this.createLabelUrl = params.createLabelUrl ? params.createLabelUrl : null;\n this.itemsGridUrl = params.itemsGridUrl ? params.itemsGridUrl : null;\n this.errorQtyOverLimit = params.errorQtyOverLimit;\n this.titleDisabledSaveBtn = params.titleDisabledSaveBtn;\n this.window = $('packaging_window');\n this.messages = this.window.select('.message-warning')[0];\n this.packagesContent = $('packages_content');\n this.template = $('package_template');\n this.paramsCreateLabelRequest = {};\n this.validationErrorMsg = params.validationErrorMsg;\n\n this.defaultItemsQty = params.shipmentItemsQty ? params.shipmentItemsQty : null;\n this.defaultItemsPrice = params.shipmentItemsPrice ? params.shipmentItemsPrice : null;\n this.defaultItemsName = params.shipmentItemsName ? params.shipmentItemsName : null;\n this.defaultItemsWeight = params.shipmentItemsWeight ? params.shipmentItemsWeight : null;\n this.defaultItemsProductId = params.shipmentItemsProductId ? params.shipmentItemsProductId : null;\n this.defaultItemsOrderItemId = params.shipmentItemsOrderItemId ? params.shipmentItemsOrderItemId : null;\n\n this.shippingInformation = params.shippingInformation ? params.shippingInformation : null;\n this.thisPage = params.thisPage ? params.thisPage : null;\n this.customizableContainers = params.customizable ? params.customizable : [];\n\n this.eps = 0.000001;\n },\n\n /**\n * Get Package Id\n */\n getPackageId: function (packageBlock) {\n return packageBlock.id.match(/\\d{0,}$/)[0];\n },\n\n //******************** Setters **********************************//\n setLabelCreatedCallback: function (callback) {\n this.labelCreatedCallback = callback;\n },\n setCancelCallback: function (callback) {\n this.cancelCallback = callback;\n },\n setConfirmPackagingCallback: function (callback) {\n this.confirmPackagingCallback = callback;\n },\n setItemQtyCallback: function (callback) {\n this.itemQtyCallback = callback;\n },\n setCreateLabelUrl: function (url) {\n this.createLabelUrl = url;\n },\n setParamsCreateLabelRequest: function (params) {\n Object.extend(this.paramsCreateLabelRequest, params);\n },\n //******************** End Setters *******************************//\n\n showWindow: function () {\n if (this.packagesContent.childElements().length == 0) {\n this.newPackage();\n }\n const allowedPackageTypes = [\"N\",\"D\"];\n\n if (!Object.values(this.customizableContainers).some(packageType => allowedPackageTypes.includes(packageType))) {\n $('packaging_window').select(\n 'th.col-length,th.col-width,th.col-height'\n ).forEach(element => {\n element.classList.remove('_required')\n });\n }\n jQuery(this.window).modal('openModal');\n },\n\n cancelPackaging: function () {\n if (Object.isFunction(this.cancelCallback)) {\n this.cancelCallback();\n }\n },\n\n confirmPackaging: function (params) {\n if (Object.isFunction(this.confirmPackagingCallback)) {\n this.confirmPackagingCallback();\n }\n },\n\n checkAllItems: function (headCheckbox) {\n $(headCheckbox).up('table').select('tbody input[type=\"checkbox\"]').each(function (checkbox) {\n checkbox.checked = headCheckbox.checked;\n this._observeQty.call(checkbox);\n }.bind(this));\n },\n\n cleanPackages: function () {\n this.packagesContent.update();\n this.packages = [];\n this.itemsAll = [];\n this.packageIncrement = 0;\n this._setAllItemsPackedState();\n this.messages.hide().update();\n },\n\n sendCreateLabelRequest: function () {\n var self = this;\n\n if (!this.validate()) {\n this.messages.show().update(this.validationErrorMsg);\n\n return;\n }\n this.messages.hide().update();\n\n if (this.createLabelUrl) {\n var weight, length, width, height = null;\n var packagesParams = [];\n\n this.packagesContent.childElements().each(function (pack) {\n var packageId = this.getPackageId(pack);\n\n weight = parseFloat(pack.select('input[name=\"container_weight\"]')[0].value);\n length = parseFloat(pack.select('input[name=\"container_length\"]')[0].value);\n width = parseFloat(pack.select('input[name=\"container_width\"]')[0].value);\n height = parseFloat(pack.select('input[name=\"container_height\"]')[0].value);\n packagesParams[packageId] = {\n container: pack.select('select[name=\"package_container\"]')[0].value,\n customs_value: parseFloat(pack.select('input[name=\"package_customs_value\"]')[0].value, 10),\n weight: isNaN(weight) ? '' : weight,\n length: isNaN(length) ? '' : length,\n width: isNaN(width) ? '' : width,\n height: isNaN(height) ? '' : height,\n weight_units: pack.select('select[name=\"container_weight_units\"]')[0].value,\n dimension_units: pack.select('select[name=\"container_dimension_units\"]')[0].value\n };\n\n if (isNaN(packagesParams[packageId]['customs_value'])) {\n packagesParams[packageId]['customs_value'] = 0;\n }\n\n if ('undefined' != typeof pack.select('select[name=\"package_size\"]')[0]) {\n if ('' != pack.select('select[name=\"package_size\"]')[0].value) {\n packagesParams[packageId]['size'] = pack.select('select[name=\"package_size\"]')[0].value;\n }\n }\n\n if ('undefined' != typeof pack.select('input[name=\"container_girth\"]')[0]) {\n if ('' != pack.select('input[name=\"container_girth\"]')[0].value) {\n packagesParams[packageId]['girth'] = pack.select('input[name=\"container_girth\"]')[0].value;\n packagesParams[packageId]['girth_dimension_units'] = pack.select('select[name=\"container_girth_dimension_units\"]')[0].value;\n }\n }\n\n if ('undefined' != typeof pack.select('select[name=\"content_type\"]')[0] && 'undefined' != typeof pack.select('input[name=\"content_type_other\"]')[0]) {\n packagesParams[packageId]['content_type'] = pack.select('select[name=\"content_type\"]')[0].value;\n packagesParams[packageId]['content_type_other'] = pack.select('input[name=\"content_type_other\"]')[0].value;\n } else {\n packagesParams[packageId]['content_type'] = '';\n packagesParams[packageId]['content_type_other'] = '';\n }\n var deliveryConfirmation = pack.select('select[name=\"delivery_confirmation_types\"]');\n\n if (deliveryConfirmation.length) {\n packagesParams[packageId]['delivery_confirmation'] = deliveryConfirmation[0].value;\n }\n }.bind(this));\n\n for (var packageId in this.packages) {\n if (!isNaN(packageId)) {\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[container]'] = packagesParams[packageId]['container'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[weight]'] = packagesParams[packageId]['weight'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[customs_value]'] = packagesParams[packageId]['customs_value'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[length]'] = packagesParams[packageId]['length'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[width]'] = packagesParams[packageId]['width'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[height]'] = packagesParams[packageId]['height'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[weight_units]'] = packagesParams[packageId]['weight_units'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[dimension_units]'] = packagesParams[packageId]['dimension_units'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[content_type]'] = packagesParams[packageId]['content_type'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[content_type_other]'] = packagesParams[packageId]['content_type_other'];\n\n if ('undefined' != typeof packagesParams[packageId]['size']) {\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[size]'] = packagesParams[packageId]['size'];\n }\n\n if ('undefined' != typeof packagesParams[packageId]['girth']) {\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[girth]'] = packagesParams[packageId]['girth'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[girth_dimension_units]'] = packagesParams[packageId]['girth_dimension_units'];\n }\n\n if ('undefined' != typeof packagesParams[packageId]['delivery_confirmation']) {\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[params]' + '[delivery_confirmation]'] = packagesParams[packageId]['delivery_confirmation'];\n }\n\n for (var packedItemId in this.packages[packageId]['items']) {\n if (!isNaN(packedItemId)) {\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[items]' + '[' + packedItemId + '][qty]'] = this.packages[packageId]['items'][packedItemId]['qty'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[items]' + '[' + packedItemId + '][customs_value]'] = this.packages[packageId]['items'][packedItemId]['customs_value'];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[items]' + '[' + packedItemId + '][price]'] = self.defaultItemsPrice[packedItemId];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[items]' + '[' + packedItemId + '][name]'] = self.defaultItemsName[packedItemId];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[items]' + '[' + packedItemId + '][weight]'] = self.defaultItemsWeight[packedItemId];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[items]' + '[' + packedItemId + '][product_id]'] = self.defaultItemsProductId[packedItemId];\n this.paramsCreateLabelRequest['packages[' + packageId + ']' + '[items]' + '[' + packedItemId + '][order_item_id]'] = self.defaultItemsOrderItemId[packedItemId];\n }\n }\n }\n }\n\n new Ajax.Request(this.createLabelUrl, {\n parameters: this.paramsCreateLabelRequest,\n onSuccess: function (transport) {\n var response = transport.responseText;\n\n if (response.isJSON()) {\n response = response.evalJSON();\n\n if (response.error) {\n this.messages.show().innerHTML = response.message;\n } else if (response.ok && Object.isFunction(this.labelCreatedCallback)) {\n this.labelCreatedCallback(response);\n }\n }\n }.bind(this)\n });\n\n if (this.paramsCreateLabelRequest['code'] &&\n this.paramsCreateLabelRequest['carrier_title'] &&\n this.paramsCreateLabelRequest['method_title'] &&\n this.paramsCreateLabelRequest['price']\n ) {\n var a = this.paramsCreateLabelRequest['code'];\n var b = this.paramsCreateLabelRequest['carrier_title'];\n var c = this.paramsCreateLabelRequest['method_title'];\n var d = this.paramsCreateLabelRequest['price'];\n\n this.paramsCreateLabelRequest = {};\n this.paramsCreateLabelRequest['code'] = a;\n this.paramsCreateLabelRequest['carrier_title'] = b;\n this.paramsCreateLabelRequest['method_title'] = c;\n this.paramsCreateLabelRequest['price'] = d;\n } else {\n this.paramsCreateLabelRequest = {};\n }\n }\n },\n\n validate: function () {\n var dimensionElements = $('packaging_window').select(\n 'input[name=container_length],input[name=container_width],input[name=container_height],input[name=container_girth]:not(\"._disabled\")'\n );\n var callback = null;\n\n if (dimensionElements.any(function (element) {\n return !!element.value;\n })) {\n callback = function (element) {\n $(element).addClassName('required-entry');\n };\n } else {\n callback = function (element) {\n $(element).removeClassName('required-entry');\n };\n }\n dimensionElements.each(callback);\n\n const allowedPackageTypes = [\"N\",\"D\"];\n\n if (Object.values(this.customizableContainers).some(packageType => allowedPackageTypes.includes(packageType))) {\n dimensionElements.each(function(element) {\n $(element).addClassName('required-entry');\n });\n }\n\n return result = $$('[id^=\"package_block_\"] input').collect(function (element) {\n return this.validateElement(element);\n }, this).all();\n },\n\n validateElement: function (elm) {\n var cn = $w(elm.className);\n\n return result = cn.all(function (value) {\n var v = Validation.get(value);\n\n if (Validation.isVisible(elm) && !v.test($F(elm), elm)) {\n $(elm).addClassName('validation-failed');\n\n return false;\n }\n $(elm).removeClassName('validation-failed');\n\n return true;\n\n });\n },\n\n validateCustomsValue: function () {\n var items = [];\n var isValid = true;\n var itemsPrepare = [];\n var itemsPacked = [];\n\n this.packagesContent.childElements().each(function (pack) {\n itemsPrepare = pack.select('[data-role=\"package-items\"]')[0];\n\n if (itemsPrepare) {\n items = items.concat(itemsPrepare.select('.grid tbody tr'));\n }\n itemsPacked = pack.select('.package_items')[0];\n\n if (itemsPacked) {\n items = items.concat(itemsPacked.select('.grid tbody tr'));\n }\n });\n\n items.each(function (item) {\n var itemCustomsValue = item.select('[name=\"customs_value\"]')[0];\n\n if (!this.validateElement(itemCustomsValue)) {\n isValid = false;\n }\n }.bind(this));\n\n if (isValid) {\n this.messages.hide().update();\n } else {\n this.messages.show().update(this.validationErrorMsg);\n }\n\n return isValid;\n },\n\n newPackage: function () {\n var pack = this.template.cloneNode(true);\n\n pack.id = 'package_block_' + ++this.packageIncrement;\n pack.addClassName('package-block');\n pack.select('[data-role=package-number]')[0].update(this.packageIncrement);\n this.packagesContent.insert({\n top: pack\n });\n pack.select('[data-action=package-save-items]')[0].hide();\n pack.show();\n },\n\n deletePackage: function (obj) {\n var pack = $(obj).up('[id^=\"package_block\"]');\n\n var packItems = pack.select('.package_items')[0];\n var packageId = this.getPackageId(pack);\n\n delete this.packages[packageId];\n pack.remove();\n this.messages.hide().update();\n this._setAllItemsPackedState();\n },\n\n deleteItem: function (obj) {\n var item = $(obj).up('tr');\n var itemId = item.select('[type=\"checkbox\"]')[0].value;\n var pack = $(obj).up('[id^=\"package_block\"]');\n var packItems = pack.select('.package_items')[0];\n var packageId = this.getPackageId(pack);\n\n delete this.packages[packageId]['items'][itemId];\n\n if (item.offsetParent.rows.length <= 2) { /* head + this last row */\n $(packItems).hide();\n }\n item.remove();\n this.messages.hide().update();\n this._recalcContainerWeightAndCustomsValue(packItems);\n this._setAllItemsPackedState();\n },\n\n recalcContainerWeightAndCustomsValue: function (obj) {\n var pack = $(obj).up('[id^=\"package_block\"]');\n var packItems = pack.select('.package_items')[0];\n\n if (packItems) {\n if (!this.validateCustomsValue()) {\n return;\n }\n this._recalcContainerWeightAndCustomsValue(packItems);\n }\n },\n\n getItemsForPack: function (obj) {\n if (this.itemsGridUrl) {\n var parameters = $H({\n 'shipment_id': this.shipmentId\n });\n var packageBlock = $(obj).up('[id^=\"package_block\"]');\n var packagePrapare = packageBlock.select('[data-role=package-items]')[0];\n var packagePrapareGrid = packagePrapare.select('.grid_prepare')[0];\n\n new Ajax.Request(this.itemsGridUrl, {\n parameters: parameters,\n onSuccess: function (transport) {\n var response = transport.responseText;\n\n if (response) {\n packagePrapareGrid.update(response);\n this.processPackagePrepare(packagePrapareGrid);\n\n if (packagePrapareGrid.select('.grid tbody tr').length) {\n packageBlock.select('[data-action=package-add-items]')[0].hide();\n packageBlock.select('[data-action=package-save-items]')[0].show();\n packagePrapare.show();\n } else {\n packagePrapareGrid.update();\n }\n }\n }.bind(this)\n });\n }\n },\n\n getPackedItemsQty: function () {\n var items = [];\n\n for (var packageId in this.packages) {\n if (!isNaN(packageId)) {\n for (var packedItemId in this.packages[packageId]['items']) {\n if (!isNaN(packedItemId)) {\n if (items[packedItemId]) {\n items[packedItemId] += this.packages[packageId]['items'][packedItemId]['qty'];\n } else {\n items[packedItemId] = this.packages[packageId]['items'][packedItemId]['qty'];\n }\n }\n }\n }\n }\n\n return items;\n },\n\n _parseQty: function (obj) {\n var qty = $(obj).hasClassName('qty-decimal') ? parseFloat(obj.value) : parseInt(obj.value);\n\n if (isNaN(qty) || qty <= 0) {\n qty = 1;\n }\n\n return qty;\n },\n\n packItems: function (obj) {\n var anySelected = false;\n var packageBlock = $(obj).up('[id^=\"package_block\"]');\n var packageId = this.getPackageId(packageBlock);\n var packagePrepare = packageBlock.select('[data-role=package-items]')[0];\n var packagePrepareGrid = packagePrepare.select('.grid_prepare')[0];\n\n // check for exceeds the total shipped quantity\n var checkExceedsQty = false;\n\n this.messages.hide().update();\n packagePrepareGrid.select('.grid tbody tr').each(function (item) {\n var checkbox = item.select('[type=\"checkbox\"]')[0];\n var itemId = checkbox.value;\n var qtyValue = this._parseQty(item.select('[name=\"qty\"]')[0]);\n\n item.select('[name=\"qty\"]')[0].value = qtyValue;\n\n if (checkbox.checked && this._checkExceedsQty(itemId, qtyValue)) {\n this.messages.show().update(this.errorQtyOverLimit);\n checkExceedsQty = true;\n }\n }.bind(this));\n\n if (checkExceedsQty) {\n return;\n }\n\n if (!this.validateCustomsValue()) {\n return;\n }\n\n // prepare items for packing\n packagePrepareGrid.select('.grid tbody tr').each(function (item) {\n var checkbox = item.select('[type=\"checkbox\"]')[0];\n\n if (checkbox.checked) {\n var qty = item.select('[name=\"qty\"]')[0];\n var qtyValue = this._parseQty(qty);\n\n item.select('[name=\"qty\"]')[0].value = qtyValue;\n anySelected = true;\n qty.disabled = 'disabled';\n checkbox.disabled = 'disabled';\n packagePrepareGrid.select('.grid th [type=\"checkbox\"]')[0].up('th label').hide();\n item.select('[data-action=package-delete-item]')[0].show();\n } else {\n item.remove();\n }\n }.bind(this));\n\n // packing items\n if (anySelected) {\n var packItems = packageBlock.select('.package_items')[0];\n\n if (!packItems) {\n packagePrepare.insert(new Element('div').addClassName('grid_prepare'));\n packagePrepare.insert({\n after: packagePrepareGrid\n });\n packItems = packagePrepareGrid.removeClassName('grid_prepare').addClassName('package_items');\n packItems.select('.grid tbody tr').each(function (item) {\n var itemId = item.select('[type=\"checkbox\"]')[0].value;\n var qtyValue = parseFloat(item.select('[name=\"qty\"]')[0].value);\n\n qtyValue = qtyValue <= 0 ? 1 : qtyValue;\n\n if ('undefined' == typeof this.packages[packageId]) {\n this.packages[packageId] = {\n 'items': [], 'params': {}\n };\n }\n\n if ('undefined' == typeof this.packages[packageId]['items'][itemId]) {\n this.packages[packageId]['items'][itemId] = {};\n this.packages[packageId]['items'][itemId]['qty'] = qtyValue;\n } else {\n this.packages[packageId]['items'][itemId]['qty'] += qtyValue;\n }\n }.bind(this));\n } else {\n packagePrepareGrid.select('.grid tbody tr').each(function (item) {\n var itemId = item.select('[type=\"checkbox\"]')[0].value;\n var qtyValue = parseFloat(item.select('[name=\"qty\"]')[0].value);\n\n qtyValue = qtyValue <= 0 ? 1 : qtyValue;\n\n if ('undefined' == typeof this.packages[packageId]['items'][itemId]) {\n this.packages[packageId]['items'][itemId] = {};\n this.packages[packageId]['items'][itemId]['qty'] = qtyValue;\n packItems.select('.grid tbody')[0].insert(item);\n } else {\n this.packages[packageId]['items'][itemId]['qty'] += qtyValue;\n var packItem = packItems.select('[type=\"checkbox\"][value=\"' + itemId + '\"]')[0].up('tr').select('[name=\"qty\"]')[0];\n\n packItem.value = this.packages[packageId]['items'][itemId]['qty'];\n }\n }.bind(this));\n packagePrepareGrid.update();\n }\n $(packItems).show();\n this._recalcContainerWeightAndCustomsValue(packItems);\n } else {\n packagePrepareGrid.update();\n }\n\n // show/hide disable/enable\n packagePrepare.hide();\n packageBlock.select('[data-action=package-save-items]')[0].hide();\n packageBlock.select('[data-action=package-add-items]')[0].show();\n this._setAllItemsPackedState();\n },\n\n validateItemQty: function (itemId, qty) {\n return this.defaultItemsQty[itemId] < qty ? this.defaultItemsQty[itemId] : qty;\n },\n\n changeMeasures: function (obj) {\n var incr = 0;\n var incrSelected = 0;\n\n obj.childElements().each(function (option) {\n if (option.selected) {\n incrSelected = incr;\n }\n incr++;\n });\n\n var packageBlock = $(obj).up('[id^=\"package_block\"]');\n\n packageBlock.select('.measures').each(function (item) {\n if (item.name != obj.name) {\n var incr = 0;\n\n item.select('option').each(function (option) {\n if (incr == incrSelected) {\n item.value = option.value;\n //option.selected = true\n }\n incr++;\n });\n }\n });\n\n },\n\n checkSizeAndGirthParameter: function (obj, enabled) {\n if (enabled == 0) {\n return;\n }\n var currentNode = obj;\n\n while (currentNode.nodeName != 'TBODY') {\n currentNode = currentNode.parentNode;\n }\n\n if (!currentNode) {\n return;\n }\n\n var packageSize = currentNode.select('select[name=package_size]');\n var packageContainer = currentNode.select('select[name=package_container]');\n var packageGirth = currentNode.select('input[name=container_girth]');\n var packageGirthDimensionUnits = currentNode.select('select[name=container_girth_dimension_units]');\n\n if (packageSize.length <= 0) {\n return;\n }\n\n var girthEnabled = packageContainer[0].value == 'NONRECTANGULAR' || packageContainer[0].value == 'VARIABLE';\n\n if (!girthEnabled) {\n packageGirth[0].value = '';\n packageGirth[0].disable();\n packageGirth[0].addClassName('_disabled');\n packageGirthDimensionUnits[0].disable();\n packageGirthDimensionUnits[0].addClassName('_disabled');\n } else {\n packageGirth[0].enable();\n packageGirth[0].removeClassName('_disabled');\n packageGirthDimensionUnits[0].enable();\n packageGirthDimensionUnits[0].removeClassName('_disabled');\n }\n\n var sizeEnabled = packageContainer[0].value == 'NONRECTANGULAR' || packageContainer[0].value == 'RECTANGULAR' ||\n packageContainer[0].value == 'VARIABLE';\n\n if (!sizeEnabled) {\n option = document.createElement('OPTION');\n option.value = '';\n option.text = '';\n packageSize[0].options.add(option);\n packageSize[0].value = '';\n packageSize[0].disable();\n packageSize[0].addClassName('_disabled');\n } else {\n for (i = 0; i < packageSize[0].length; i++) {\n if (packageSize[0].options[i].value == '') {\n packageSize[0].removeChild(packageSize[0].options[i]);\n }\n }\n packageSize[0].enable();\n packageSize[0].removeClassName('_disabled');\n }\n },\n\n changeContainerType: function (obj) {\n if (this.customizableContainers.length <= 0) {\n return;\n }\n\n var disable = true;\n\n for (var i in this.customizableContainers) {\n if (this.customizableContainers[i] == obj.value) {\n disable = false;\n break;\n }\n }\n\n var currentNode = obj;\n\n while (currentNode.nodeName != 'TBODY') {\n currentNode = currentNode.parentNode;\n }\n\n if (!currentNode) {\n return;\n }\n\n $(currentNode).select(\n 'input[name=container_length],input[name=container_width],input[name=container_height],select[name=container_dimension_units]'\n ).each(function (inputElement) {\n if (disable) {\n Form.Element.disable(inputElement);\n inputElement.addClassName('_disabled');\n\n if (inputElement.nodeName == 'INPUT') {\n $(inputElement).value = '';\n }\n } else {\n Form.Element.enable(inputElement);\n inputElement.removeClassName('_disabled');\n }\n });\n },\n\n changeContentTypes: function (obj) {\n var packageBlock = $(obj).up('[id^=\"package_block\"]');\n var contentType = packageBlock.select('[name=content_type]')[0];\n var contentTypeOther = packageBlock.select('[name=content_type_other]')[0];\n\n if (contentType.value == 'OTHER') {\n Form.Element.enable(contentTypeOther);\n contentTypeOther.removeClassName('_disabled');\n } else {\n Form.Element.disable(contentTypeOther);\n contentTypeOther.addClassName('_disabled');\n }\n\n },\n\n //******************** Private functions **********************************//\n _getItemsCount: function (items) {\n var count = 0;\n\n items.each(function (itemCount) {\n if (!isNaN(itemCount)) {\n count += parseFloat(itemCount);\n }\n });\n\n return count;\n },\n\n /**\n * Show/hide disable/enable buttons in case of all items packed state\n */\n _setAllItemsPackedState: function () {\n var addPackageBtn = $$('[data-action=add-packages]')[0];\n var savePackagesBtn = $$('[data-action=save-packages]')[0];\n\n if (this._getItemsCount(this.itemsAll) > 0 &&\n this._checkExceedsQtyFinal(this._getItemsCount(this.getPackedItemsQty()), this._getItemsCount(this.itemsAll))\n ) {\n this.packagesContent.select('[data-action=package-add-items]').each(function (button) {\n button.disabled = 'disabled';\n button.addClassName('_disabled');\n });\n addPackageBtn.addClassName('_disabled');\n Form.Element.disable(addPackageBtn);\n savePackagesBtn.removeClassName('_disabled');\n Form.Element.enable(savePackagesBtn);\n savePackagesBtn.title = '';\n\n // package number recalculation\n var packagesRecalc = [];\n\n this.packagesContent.childElements().each(function (pack) {\n if (!pack.select('.package_items .grid tbody tr').length) {\n pack.remove();\n }\n });\n var packagesCount = this.packagesContent.childElements().length;\n\n this.packageIncrement = packagesCount;\n this.packagesContent.childElements().each(function (pack) {\n var packageId = this.getPackageId(pack);\n\n pack.id = 'package_block_' + packagesCount;\n pack.select('[data-role=package-number]')[0].update(packagesCount);\n packagesRecalc[packagesCount] = this.packages[packageId];\n --packagesCount;\n }.bind(this));\n this.packages = packagesRecalc;\n\n } else {\n this.packagesContent.select('[data-action=package-add-items]').each(function (button) {\n button.removeClassName('_disabled');\n Form.Element.enable(button);\n });\n addPackageBtn.removeClassName('_disabled');\n Form.Element.enable(addPackageBtn);\n savePackagesBtn.addClassName('_disabled');\n Form.Element.disable(savePackagesBtn);\n savePackagesBtn.title = this.titleDisabledSaveBtn;\n }\n },\n\n processPackagePrepare: function (packagePrepare) {\n var itemsAll = [],\n qty,\n itemId,\n qtyValue = 0,\n value = 1;\n\n packagePrepare.select('.grid tbody tr').each(function (item) {\n qty = item.select('[name=\"qty\"]')[0],\n itemId = item.select('[type=\"checkbox\"]')[0].value,\n qtyValue = parseFloat(qty.value);\n\n if (Object.isFunction(this.itemQtyCallback)) {\n value = this.itemQtyCallback(itemId);\n\n if (typeof value !== 'undefined') {\n qtyValue = parseFloat(value);\n qtyValue = this.validateItemQty(itemId, qtyValue);\n qty.value = qtyValue;\n }\n } else {\n value = item.select('[name=\"qty\"]')[0].value;\n qtyValue = typeof value == 'string' && value.length == 0 ? 0 : parseFloat(value);\n\n if (isNaN(qtyValue) || qtyValue < 0) {\n qtyValue = 1;\n }\n }\n\n if (qtyValue == 0) {\n item.remove();\n\n return;\n }\n var packedItems = this.getPackedItemsQty();\n\n itemsAll[itemId] = qtyValue;\n\n for (var packedItemId in packedItems) {\n if (!isNaN(packedItemId)) {\n var packedQty = packedItems[packedItemId];\n\n if (itemId == packedItemId) {\n if (qtyValue == packedQty || qtyValue <= packedQty) {\n item.remove();\n } else if (qtyValue > packedQty) {\n /* fix float number precision */\n qty.value = Number(Number(Math.round(qtyValue - packedQty + 'e+4') + 'e-4').toFixed(4));\n }\n }\n }\n }\n }.bind(this));\n\n if (!this.itemsAll.length) {\n this.itemsAll = itemsAll;\n }\n\n packagePrepare.select('tbody input[type=\"checkbox\"]').each(function (item) {\n $(item).observe('change', this._observeQty);\n this._observeQty.call(item);\n }.bind(this));\n },\n\n _observeQty: function () {\n /** this = input[type=\"checkbox\"] */\n var tr = jQuery(this).closest('tr')[0],\n qty = $(tr.cells[tr.cells.length - 1]).select('input[name=\"qty\"]')[0];\n\n if (qty.disabled = !this.checked) {\n $(qty).addClassName('_disabled');\n } else {\n $(qty).removeClassName('_disabled');\n }\n },\n\n _checkExceedsQty: function (itemId, qty) {\n var packedItemQty = this.getPackedItemsQty()[itemId] ? this.getPackedItemsQty()[itemId] : 0;\n var allItemQty = this.itemsAll[itemId];\n\n return qty * (1 - this.eps) > allItemQty * (1 + this.eps) - packedItemQty * (1 - this.eps);\n },\n\n _checkExceedsQtyFinal: function (checkOne, defQty) {\n return checkOne * (1 + this.eps) >= defQty * (1 - this.eps);\n },\n\n _recalcContainerWeightAndCustomsValue: function (container) {\n var packageBlock = container.up('[id^=\"package_block\"]');\n var packageId = this.getPackageId(packageBlock);\n var containerWeight = packageBlock.select('[name=\"container_weight\"]')[0];\n var containerCustomsValue = packageBlock.select('[name=\"package_customs_value\"]')[0];\n\n containerWeight.value = 0;\n containerCustomsValue.value = 0;\n container.select('.grid tbody tr').each(function (item) {\n var itemId = item.select('[type=\"checkbox\"]')[0].value;\n var qtyValue = parseFloat(item.select('[name=\"qty\"]')[0].value);\n\n if (isNaN(qtyValue) || qtyValue <= 0) {\n qtyValue = 1;\n item.select('[name=\"qty\"]')[0].value = qtyValue;\n }\n var itemWeight = parseFloat(this._getElementText(item.select('[data-role=item-weight]')[0]));\n\n containerWeight.value = parseFloat(containerWeight.value) + itemWeight * qtyValue;\n var itemCustomsValue = parseFloat(item.select('[name=\"customs_value\"]')[0].value) || 0;\n\n containerCustomsValue.value = parseFloat(containerCustomsValue.value) + itemCustomsValue * qtyValue;\n this.packages[packageId]['items'][itemId]['customs_value'] = itemCustomsValue;\n }.bind(this));\n containerWeight.value = parseFloat(parseFloat(Math.round(containerWeight.value + 'e+4') + 'e-4').toFixed(4));\n containerCustomsValue.value = parseFloat(Math.round(containerCustomsValue.value + 'e+2') + 'e-2').toFixed(2);\n\n if (containerCustomsValue.value == 0) {\n containerCustomsValue.value = '';\n }\n },\n\n _getElementText: function (el) {\n if ('string' == typeof el.textContent) {\n return el.textContent;\n }\n\n if ('string' == typeof el.innerText) {\n return el.innerText;\n }\n\n return el.innerHTML.replace(/<[^>]*>/g, '');\n }\n //******************** End Private functions ******************************//\n };\n\n});\n","Magento_Shipping/js/packages.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'jquery',\n 'Magento_Ui/js/modal/modal',\n 'mage/translate'\n], function ($, modal, $t) {\n 'use strict';\n\n return function (config, element) {\n config.buttons = [\n {\n text: $t('Print'),\n 'class': 'action action-primary',\n\n /**\n * Click handler\n */\n click: function () {\n window.location.href = this.options.url;\n }\n }, {\n text: $t('Cancel'),\n 'class': 'action action-secondary',\n\n /**\n * Click handler\n */\n click: function () {\n this.closeModal();\n }\n }\n ];\n modal(config, element);\n };\n});\n","Magento_Rule/rules.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\n\ndefine([\n 'jquery',\n 'Magento_Ui/js/modal/alert',\n 'mage/translate',\n 'prototype'\n], function (jQuery) {\n 'use strict';\n\n var VarienRulesForm = new Class.create();\n\n VarienRulesForm.prototype = {\n initialize: function (parent, newChildUrl) {\n this.parent = $(parent);\n this.newChildUrl = newChildUrl;\n this.shownElement = null;\n this.updateElement = null;\n this.chooserSelectedItems = $H({});\n this.readOnly = false;\n\n var elems = this.parent.getElementsByClassName('rule-param');\n\n for (var i = 0; i < elems.length; i++) {\n this.initParam(elems[i]);\n }\n },\n\n setReadonly: function (readonly) {\n this.readOnly = readonly;\n var elems = this.parent.getElementsByClassName('rule-param-remove');\n\n for (var i = 0; i < elems.length; i++) {\n var element = elems[i];\n\n if (this.readOnly) {\n element.hide();\n } else {\n element.show();\n }\n }\n\n var elems = this.parent.getElementsByClassName('rule-param-new-child');\n\n for (var i = 0; i < elems.length; i++) {\n var element = elems[i];\n\n if (this.readOnly) {\n element.hide();\n } else {\n element.show();\n }\n }\n\n var elems = this.parent.getElementsByClassName('rule-param');\n\n for (var i = 0; i < elems.length; i++) {\n var container = elems[i];\n var label = Element.down(container, '.label');\n\n if (label) {\n if (this.readOnly) {\n label.addClassName('label-disabled');\n } else {\n label.removeClassName('label-disabled');\n }\n }\n }\n },\n\n initParam: function (container) {\n container.rulesObject = this;\n var label = Element.down(container, '.label');\n\n if (label) {\n Event.observe(label, 'click', this.showParamInputField.bind(this, container));\n }\n\n var elem = Element.down(container, '.element');\n\n if (elem) {\n var trig = elem.down('.rule-chooser-trigger');\n\n if (trig) {\n Event.observe(trig, 'click', this.toggleChooser.bind(this, container));\n }\n\n var apply = elem.down('.rule-param-apply');\n\n if (apply) {\n Event.observe(apply, 'click', this.hideParamInputField.bind(this, container));\n } else {\n elem = elem.down('.element-value-changer');\n elem.container = container;\n\n if (!elem.multiple) {\n Event.observe(elem, 'change', this.hideParamInputField.bind(this, container));\n\n this.changeVisibilityForValueRuleParam(elem);\n\n }\n Event.observe(elem, 'blur', this.hideParamInputField.bind(this, container));\n }\n }\n\n var remove = Element.down(container, '.rule-param-remove');\n\n if (remove) {\n Event.observe(remove, 'click', this.removeRuleEntry.bind(this, container));\n }\n },\n\n showChooserElement: function (chooser) {\n this.chooserSelectedItems = $H({});\n\n if (chooser.hasClassName('no-split')) {\n this.chooserSelectedItems.set(this.updateElement.value, 1);\n } else {\n var values = this.updateElement.value.split(','),\n s = '';\n\n for (var i = 0; i < values.length; i++) {\n s = values[i].strip();\n\n if (s != '') {\n this.chooserSelectedItems.set(s, 1);\n }\n }\n }\n new Ajax.Request(chooser.getAttribute('url'), {\n evalScripts: true,\n parameters: {\n 'form_key': FORM_KEY, 'selected[]': this.chooserSelectedItems.keys()\n },\n onSuccess: function (transport) {\n if (this._processSuccess(transport)) {\n jQuery(chooser).html(transport.responseText);\n this.showChooserLoaded(chooser, transport);\n jQuery(chooser).trigger('contentUpdated');\n }\n }.bind(this),\n onFailure: this._processFailure.bind(this)\n });\n },\n\n showChooserLoaded: function (chooser, transport) {\n chooser.style.display = 'block';\n },\n\n showChooser: function (container, event) {\n var chooser = container.up('li');\n\n if (!chooser) {\n return;\n }\n chooser = chooser.down('.rule-chooser');\n\n if (!chooser) {\n return;\n }\n this.showChooserElement(chooser);\n },\n\n hideChooser: function (container, event) {\n var chooser = container.up('li');\n\n if (!chooser) {\n return;\n }\n chooser = chooser.down('.rule-chooser');\n\n if (!chooser) {\n return;\n }\n chooser.style.display = 'none';\n },\n\n toggleChooser: function (container, event) {\n if (this.readOnly) {\n return false;\n }\n\n var chooser = container.up('li').down('.rule-chooser');\n\n if (!chooser) {\n return;\n }\n\n if (chooser.style.display == 'block') {\n chooser.style.display = 'none';\n this.cleanChooser(container, event);\n } else {\n this.showChooserElement(chooser);\n }\n },\n\n cleanChooser: function (container, event) {\n var chooser = container.up('li').down('.rule-chooser');\n\n if (!chooser) {\n return;\n }\n chooser.innerHTML = '';\n },\n\n showParamInputField: function (container, event) {\n if (this.readOnly) {\n return false;\n }\n\n if (this.shownElement) {\n this.hideParamInputField(this.shownElement, event);\n }\n\n Element.addClassName(container, 'rule-param-edit');\n var elemContainer = Element.down(container, '.element');\n\n var elem = Element.down(elemContainer, 'input.input-text');\n\n jQuery(elem).trigger('contentUpdated');\n\n if (elem) {\n elem.focus();\n\n if (elem && elem.id && elem.id.match(/__value$/)) {\n this.updateElement = elem;\n }\n\n }\n\n var elem = Element.down(elemContainer, '.element-value-changer');\n\n if (elem) {\n elem.focus();\n }\n\n this.shownElement = container;\n },\n\n hideParamInputField: function (container, event) {\n Element.removeClassName(container, 'rule-param-edit');\n var label = Element.down(container, '.label'),\n elem;\n\n if (!container.hasClassName('rule-param-new-child')) {\n elem = Element.down(container, '.element-value-changer');\n\n if (elem && elem.options) {\n var selectedOptions = [];\n\n for (var i = 0; i < elem.options.length; i++) {\n if (elem.options[i].selected) {\n selectedOptions.push(elem.options[i].text);\n }\n }\n\n var str = selectedOptions.join(', ');\n\n label.innerHTML = str != '' ? str : '...';\n }\n\n this.changeVisibilityForValueRuleParam(elem);\n\n elem = Element.down(container, 'input.input-text');\n\n if (elem) {\n var str = elem.value.replace(/(^\\s+|\\s+$)/g, '');\n\n elem.value = str;\n\n if (str == '') {\n str = '...';\n } else if (str.length > 30) {\n str = str.substr(0, 30) + '...';\n }\n label.innerHTML = str.escapeHTML();\n }\n } else {\n elem = container.down('.element-value-changer');\n\n if (elem.value) {\n this.addRuleNewChild(elem);\n }\n elem.value = '';\n }\n\n if (elem && elem.id && elem.id.match(/__value$/)) {\n this.hideChooser(container, event);\n this.updateElement = null;\n }\n\n this.shownElement = null;\n },\n\n changeVisibilityForValueRuleParam: function(elem) {\n var parsedElementId = elem.id.split('__');\n if (parsedElementId[2] !== 'operator') {\n return false;\n }\n\n var valueElement = jQuery('#' + parsedElementId[0] + '__' + parsedElementId[1] + '__value');\n\n if(elem.value === '<=>') {\n valueElement.closest('.rule-param').hide();\n } else {\n valueElement.closest('.rule-param').show();\n }\n\n return true;\n },\n\n addRuleNewChild: function (elem) {\n var parent_id = elem.id.replace(/^.*__(.*)__.*$/, '$1');\n var children_ul_id = elem.id.replace(/__/g, ':').replace(/[^:]*$/, 'children').replace(/:/g, '__');\n var children_ul = $(this.parent).select('#' + children_ul_id)[0];\n var max_id = 0,\n i;\n var children_inputs = Selector.findChildElements(children_ul, $A(['input.hidden']));\n\n if (children_inputs.length) {\n children_inputs.each(function (el) {\n if (el.id.match(/__type$/)) {\n i = 1 * el.id.replace(/^.*__.*?([0-9]+)__.*$/, '$1');\n max_id = i > max_id ? i : max_id;\n }\n });\n }\n var new_id = parent_id + '--' + (max_id + 1);\n var new_type = elem.value;\n var new_elem = document.createElement('LI');\n\n new_elem.className = 'rule-param-wait';\n new_elem.innerHTML = jQuery.mage.__('This won\\'t take long . . .');\n children_ul.insertBefore(new_elem, $(elem).up('li'));\n\n new Ajax.Request(this.newChildUrl, {\n evalScripts: true,\n parameters: {\n form_key: FORM_KEY, type: new_type.replace('/', '-'), id: new_id\n },\n onComplete: this.onAddNewChildComplete.bind(this, new_elem),\n onSuccess: function (transport) {\n if (this._processSuccess(transport)) {\n $(new_elem).update(transport.responseText);\n }\n }.bind(this),\n onFailure: this._processFailure.bind(this)\n });\n },\n\n _processSuccess: function (transport) {\n if (transport.responseText.isJSON()) {\n var response = transport.responseText.evalJSON();\n\n if (response.error) {\n alert(response.message);\n }\n\n if (response.ajaxExpired && response.ajaxRedirect) {\n setLocation(response.ajaxRedirect);\n }\n\n return false;\n }\n\n return true;\n },\n\n _processFailure: function (transport) {\n location.href = BASE_URL;\n },\n\n onAddNewChildComplete: function (new_elem) {\n if (this.readOnly) {\n return false;\n }\n\n $(new_elem).removeClassName('rule-param-wait');\n var elems = new_elem.getElementsByClassName('rule-param');\n\n for (var i = 0; i < elems.length; i++) {\n this.initParam(elems[i]);\n }\n },\n\n removeRuleEntry: function (container, event) {\n var li = Element.up(container, 'li');\n\n li.parentNode.removeChild(li);\n },\n\n chooserGridInit: function (grid) {\n //grid.reloadParams = {'selected[]':this.chooserSelectedItems.keys()};\n },\n\n chooserGridRowInit: function (grid, row) {\n if (!grid.reloadParams) {\n grid.reloadParams = {\n 'selected[]': this.chooserSelectedItems.keys()\n };\n }\n },\n\n chooserGridRowClick: function (grid, event) {\n var trElement = Event.findElement(event, 'tr');\n var isInput = Event.element(event).tagName == 'INPUT';\n\n if (trElement) {\n var checkbox = Element.select(trElement, 'input');\n\n if (checkbox[0]) {\n var checked = isInput ? checkbox[0].checked : !checkbox[0].checked;\n\n grid.setCheckboxChecked(checkbox[0], checked);\n\n }\n }\n },\n\n chooserGridCheckboxCheck: function (grid, element, checked) {\n if (checked) {\n if (!element.up('th')) {\n this.chooserSelectedItems.set(element.value, 1);\n }\n } else {\n this.chooserSelectedItems.unset(element.value);\n }\n grid.reloadParams = {\n 'selected[]': this.chooserSelectedItems.keys()\n };\n this.updateElement.value = this.chooserSelectedItems.keys().join(', ');\n }\n };\n\n return VarienRulesForm;\n});\n","Magento_Rule/conditions-data-normalizer.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\ndefine([\n 'jquery',\n 'underscore'\n], function ($, _) {\n 'use strict';\n\n /**\n * @constructor\n */\n var ConditionsDataNormalizer = function () {\n this.patterns = {\n validate: /^[a-z0-9_.-][a-z0-9_.-]*(?:\\[(?:\\d*|[a-z0-9_.-]+)\\])*$/i,\n key: /[a-z0-9_.-]+|(?=\\[\\])/gi,\n push: /^$/,\n fixed: /^\\d+$/,\n named: /^[a-z0-9_.-]+$/i\n };\n };\n\n ConditionsDataNormalizer.prototype = {\n /**\n * Will convert an object:\n * {\n * \"foo[bar][1][baz]\": 123,\n * \"foo[bar][1][blah]\": 321\n * \"foo[bar][1--1][ah]\": 456\n * }\n *\n * to\n * {\n * \"foo\": {\n * \"bar\": {\n * \"1\": {\n * \"baz\": 123,\n * \"blah\": 321\n * },\n * \"1--1\": {\n * \"ah\": 456\n * }\n * }\n * }\n * }\n */\n normalize: function normalize(value) {\n var el, _this = this;\n\n this.pushes = {};\n this.data = {};\n\n _.each(value, function (e, i) {\n el = {};\n el[i] = e;\n\n _this._addPair({\n name: i,\n value: e\n });\n });\n\n return this.data;\n },\n\n /**\n * @param {Object} base\n * @param {String} key\n * @param {String} value\n * @return {Object}\n * @private\n */\n _build: function build(base, key, value) {\n base[key] = value;\n\n return base;\n },\n\n /**\n * @param {Object} root\n * @param {String} value\n * @return {*}\n * @private\n */\n _makeObject: function makeObject(root, value) {\n var keys = root.match(this.patterns.key),\n k, idx; // nest, nest, ..., nest\n\n while ((k = keys.pop()) !== undefined) {\n // foo[]\n if (this.patterns.push.test(k)) {\n idx = this._incrementPush(root.replace(/\\[\\]$/, ''));\n value = this._build([], idx, value);\n } // foo[n]\n else if (this.patterns.fixed.test(k)) {\n value = this._build({}, k, value);\n } // foo; foo[bar]\n else if (this.patterns.named.test(k)) {\n value = this._build({}, k, value);\n }\n }\n\n return value;\n },\n\n /**\n * @param {String} key\n * @return {Number}\n * @private\n */\n _incrementPush: function incrementPush(key) {\n if (this.pushes[key] === undefined) {\n this.pushes[key] = 0;\n }\n\n return this.pushes[key]++;\n },\n\n /**\n * @param {Object} pair\n * @return {Object}\n * @private\n */\n _addPair: function addPair(pair) {\n var obj = this._makeObject(pair.name, pair.value);\n\n if (!this.patterns.validate.test(pair.name)) {\n return this;\n }\n\n this.data = $.extend(true, this.data, obj);\n\n return this;\n }\n };\n\n return ConditionsDataNormalizer;\n});\n","Magento_Vault/js/vault.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n/*browser:true*/\n/* @api */\ndefine([\n 'jquery',\n 'uiComponent'\n], function ($, Class) {\n 'use strict';\n\n return Class.extend({\n defaults: {\n $selector: null,\n selector: 'edit_form',\n fieldset: '',\n active: false,\n imports: {\n onActiveChange: 'active'\n }\n },\n\n /**\n * Set list of observable attributes\n * @returns {exports.initObservable}\n */\n initObservable: function () {\n var self = this,\n paymentSelector = '[name=\"payment[method]\"][value=\"' + this.getCode() + '\"]:checked';\n\n self.$selector = $('#' + self.selector);\n this._super()\n .observe(['active']);\n\n if (self.$selector.find(paymentSelector).length !== 0) {\n this.active(true);\n }\n\n $('#' + self.fieldset).find('[name=\"payment[token_switcher]\"]')\n .on('click', this.rememberTokenSwitcher.bind(this));\n\n // re-init payment method events\n self.$selector.off('changePaymentMethod.' + this.getCode())\n .on('changePaymentMethod.' + this.getCode(), this.changePaymentMethod.bind(this));\n\n if (this.active()) {\n this.chooseTokenSwitcher();\n }\n\n return this;\n },\n\n /**\n * Enable/disable current payment method\n * @param {Object} event\n * @param {String} method\n * @returns {exports.changePaymentMethod}\n */\n changePaymentMethod: function (event, method) {\n this.active(method === this.getCode());\n\n return this;\n },\n\n /**\n * Save last chosen token switcher\n * @param {Object} event\n * @returns {exports.rememberTokenSwitcher}\n */\n rememberTokenSwitcher: function (event) {\n $('#' + this.selector).data('lastTokenSwitcherId', event.target.id);\n\n return this;\n },\n\n /**\n * Select token switcher\n * @returns {exports.chooseTokenSwitcher}\n */\n chooseTokenSwitcher: function () {\n var lastTokenSwitcherId = $('#' + this.selector).data('lastTokenSwitcherId');\n\n if (lastTokenSwitcherId) {\n $('#' + lastTokenSwitcherId).trigger('click');\n } else {\n $('#' + this.fieldset + ' input:radio:first').trigger('click');\n }\n\n return this;\n },\n\n /**\n * Triggered when payment changed\n * @param {Boolean} isActive\n */\n onActiveChange: function (isActive) {\n if (!isActive) {\n this.$selector.trigger('setVaultNotActive.' + this.getCode());\n\n return;\n }\n this.chooseTokenSwitcher();\n window.order.addExcludedPaymentMethod(this.getCode());\n },\n\n /**\n * Get payment method code\n * @returns {String}\n */\n getCode: function () {\n return this.code;\n }\n });\n});\n","Magento_AdvancedSearch/js/testconnection.js":"/**\n * Copyright \u00a9 Magento, Inc. All rights reserved.\n * See COPYING.txt for license details.\n */\n\n/**\n * @api\n */\ndefine([\n 'jquery',\n 'Magento_Ui/js/modal/alert',\n 'jquery/ui'\n], function ($, alert) {\n 'use strict';\n\n $.widget('mage.testConnection', {\n options: {\n url: '',\n elementId: '',\n successText: '',\n failedText: '',\n fieldMapping: ''\n },\n\n /**\n * Bind handlers to events\n */\n _create: function () {\n this._on({\n 'click': $.proxy(this._connect, this)\n });\n },\n\n /**\n * Method triggers an AJAX request to check search engine connection\n * @private\n */\n _connect: function () {\n var result = this.options.failedText,\n element = $('#' + this.options.elementId),\n self = this,\n params = {},\n msg = '',\n fieldToCheck = this.options.fieldToCheck || 'success';\n\n element.removeClass('success').addClass('fail');\n $.each(JSON.parse(this.options.fieldMapping), function (key, el) {\n params[key] = $('#' + el).val();\n });\n $.ajax({\n url: this.options.url,\n showLoader: true,\n data: params,\n headers: this.options.headers || {}\n }).done(function (response) {\n if (response[fieldToCheck]) {\n element.removeClass('fail').addClass('success');\n result = self.options.successText;\n } else {\n msg = response.errorMessage;\n\n if (msg) {\n alert({\n content: msg\n });\n }\n }\n }).always(function () {\n $('#' + self.options.elementId + '_result').text(result);\n });\n }\n });\n\n return $.mage.testConnection;\n});\n"} }});