vendor: 36,085 bytes, lines 1-7
1/** 2 * Owl Carousel v2.3.4 3 * Copyright 2013-2018 David Deutsch 4 * Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE 5 */ 6!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, 7animateIn:!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}
vendor: 5,569 bytes, line 7
7,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}(
vendor: 3,418 bytes, lines 7-25
7window.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);; 8/** 9* DO NOT EDIT THIS FILE. 10* See the following change record for more information, 11* https://www.drupal.org/node/2815083 12* @preserve 13**/ 14 15(function ($, Drupal) { 16 Drupal.theme.progressBar = function (id) { 17 return '<div id="' + id + '" class="progress" aria-live="polite">' + '<div class="progress__label"> </div>' + '<div class="progress__track"><div class="progress__bar"></div></div>' + '<div class="progress__percentage"></div>' + '<div class="progress__description"> </div>' + '</div>'; 18 }; 19 20 Drupal.ProgressBar = function (id, updateCallback, method, errorCallback) { 21 this.id = id; 22 this.method = method || 'GET'; 23 this.updateCallback = updateCallback; 24 this.errorCallback = errorCallback; 25
26 this.element = $(Drupal.theme('progressBar', id)); 27 }; 28 29 $.extend(Drupal.ProgressBar.prototype, { 30 setProgress: function setProgress(percentage, message, label) { 31 if (percentage >= 0 && percentage <= 100) { 32 $(this.element).find('div.progress__bar').css('width', percentage + '%'); 33 $(this.element).find('div.progress__percentage').html(percentage + '%'); 34 } 35 $('div.progress__description', this.element).html(message); 36 $('div.progress__label', this.element).html(label); 37 if (this.updateCallback) { 38 this.updateCallback(percentage, message, this); 39 } 40 }, 41 startMonitoring: function startMonitoring(uri, delay) { 42 this.delay = delay; 43 this.uri = uri; 44 this.sendPing(); 45 }, 46 stopMonitoring: function stopMonitoring() { 47 clearTimeout(this.timer); 48 49 this.uri = null; 50 }, 51 sendPing: function sendPing() { 52 if (this.timer) { 53 clearTimeout(this.timer); 54 } 55 if (this.uri) { 56 var pb = this; 57 58 var uri = this.uri; 59 if (uri.indexOf('?') === -1) { 60 uri += '?'; 61 } else { 62 uri += '&'; 63 } 64 uri += '_format=json'; 65 $.ajax({ 66 type: this.method, 67 url: uri, 68 data: '', 69 dataType: 'json', 70 success: function success(progress) { 71 if (progress.status === 0) { 72 pb.displayError(progress.data); 73 return; 74 } 75 76 pb.setProgress(progress.percentage, progress.message, progress.label); 77 78 pb.timer = setTimeout(function () { 79 pb.sendPing(); 80 }, pb.delay); 81 }, 82 error: function error(xmlhttp) { 83 var e = new Drupal.AjaxError(xmlhttp, pb.uri); 84 pb.displayError('<pre>' + e.message + '</pre>'); 85 } 86 }); 87 } 88 }, 89 displayError: function displayError(string) { 90 var error = $('<div class="messages messages--error"></div>').html(string); 91 $(this.element).before(error).hide(); 92 93 if (this.errorCallback) { 94 this.errorCallback(this); 95 } 96 } 97 }); 98})(jQuery, Drupal);; 99/** 100* DO NOT EDIT THIS FILE. 101* See the following change record for more information, 102* https://www.drupal.org/node/2815083 103* @preserve 104**/ 105 106(function (Drupal) { 107 Drupal.behaviors.responsiveImageAJAX = { 108 attach: function attach() { 109 if (window.picturefill) { 110 window.picturefill(); 111 } 112 } 113 }; 114})(Drupal);; 115/** 116* DO NOT EDIT THIS FILE. 117* See the following change record for more information, 118* https://www.drupal.org/node/2815083 119* @preserve 120**/ 121function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } } 122 123(function ($, window, Drupal, drupalSettings) { 124 Drupal.behaviors.AJAX = { 125 attach: function attach(context, settings) { 126 function loadAjaxBehavior(base) { 127 var elementSettings = settings.ajax[base]; 128 if (typeof elementSettings.selector === 'undefined') { 129 elementSettings.selector = '#' + base; 130 } 131 $(elementSettings.selector).once('drupal-ajax').each(function () { 132 elementSettings.element = this; 133 elementSettings.base = base; 134 Drupal.ajax(elementSettings); 135 }); 136 } 137 138 Object.keys(settings.ajax || {}).forEach(function (base) { 139 return loadAjaxBehavior(base); 140 }); 141 142 Drupal.ajax.bindAjaxLinks(document.body); 143 144 $('.use-ajax-submit').once('ajax').each(function () { 145 var elementSettings = {}; 146 147 elementSettings.url = $(this.form).attr('action'); 148 149 elementSettings.setClick = true; 150 151 elementSettings.event = 'click'; 152 153 elementSettings.progress = { type: 'throbber' }; 154 elementSettings.base = $(this).attr('id'); 155 elementSettings.element = this; 156 157 Drupal.ajax(elementSettings); 158 }); 159 }, 160 detach: function detach(context, settings, trigger) { 161 if (trigger === 'unload') {
162 Drupal.ajax.expired().forEach(function (instance) { 163 Drupal.ajax.instances[instance.instanceIndex] = null; 164 }); 165 } 166 } 167 }; 168 169 Drupal.AjaxError = function (xmlhttp, uri, customMessage) { 170 var statusCode = void 0; 171 var statusText = void 0; 172 var responseText = void 0; 173 if (xmlhttp.status) { 174 statusCode = '\n' + Drupal.t('An AJAX HTTP error occurred.') + '\n' + Drupal.t('HTTP Result Code: !status', { 175 '!status': xmlhttp.status 176 }); 177 } else { 178 statusCode = '\n' + Drupal.t('An AJAX HTTP request terminated abnormally.'); 179 } 180 statusCode += '\n' + Drupal.t('Debugging information follows.'); 181 var pathText = '\n' + Drupal.t('Path: !uri', { '!uri': uri }); 182 statusText = ''; 183 184 try { 185 statusText = '\n' + Drupal.t('StatusText: !statusText', { 186 '!statusText': $.trim(xmlhttp.statusText) 187 }); 188 } catch (e) {} 189 190 responseText = ''; 191 192 try { 193 responseText = '\n' + Drupal.t('ResponseText: !responseText', { 194 '!responseText': $.trim(xmlhttp.responseText) 195 }); 196 } catch (e) {} 197 198 responseText = responseText.replace(/<("[^"]*"|'[^']*'|[^'">])*>/gi, ''); 199 responseText = responseText.replace(/[\n]+\s+/g, '\n'); 200 201 var readyStateText = xmlhttp.status === 0 ? '\n' + Drupal.t('ReadyState: !readyState', { 202 '!readyState': xmlhttp.readyState 203 }) : ''; 204 205 customMessage = customMessage ? '\n' + Drupal.t('CustomMessage: !customMessage', { 206 '!customMessage': customMessage 207 }) : ''; 208 209 this.message = statusCode + pathText + statusText + customMessage + responseText + readyStateText; 210 211 this.name = 'AjaxError'; 212 }; 213 214 Drupal.AjaxError.prototype = new Error(); 215 Drupal.AjaxError.prototype.constructor = Drupal.AjaxError; 216 217 Drupal.ajax = function (settings) { 218 if (arguments.length !== 1) { 219 throw new Error('Drupal.ajax() function must be called with one configuration object only'); 220 } 221 222 var base = settings.base || false; 223 var element = settings.element || false; 224 delete settings.base; 225 delete settings.element; 226 227 if (!settings.progress && !element) { 228 settings.progress = false; 229 } 230 231 var ajax = new Drupal.Ajax(base, element, settings); 232 ajax.instanceIndex = Drupal.ajax.instances.length; 233 Drupal.ajax.instances.push(ajax); 234 235 return ajax; 236 }; 237 238 Drupal.ajax.instances = []; 239 240 Drupal.ajax.expired = function () { 241 return Drupal.ajax.instances.filter(function (instance) { 242 return instance && instance.element !== false && !document.body.contains(instance.element); 243 }); 244 }; 245 246 Drupal.ajax.bindAjaxLinks = function (element) { 247 $(element).find('.use-ajax').once('ajax').each(function (i, ajaxLink) { 248 var $linkElement = $(ajaxLink); 249 250 var elementSettings = { 251 progress: { type: 'throbber' }, 252 dialogType: $linkElement.data('dialog-type'), 253 dialog: $linkElement.data('dialog-options'), 254 dialogRenderer: $linkElement.data('dialog-renderer'), 255 base: $linkElement.attr('id'), 256 element: ajaxLink 257 }; 258 var href = $linkElement.attr('href'); 259 260 if (href) { 261 elementSettings.url = href; 262 elementSettings.event = 'click'; 263 } 264 Drupal.ajax(elementSettings); 265 }); 266 }; 267 268 Drupal.Ajax = function (base, element, elementSettings) { 269 var defaults = { 270 event: element ? 'mousedown' : null, 271 keypress: true, 272 selector: base ? '#' + base : null, 273 effect: 'none', 274 speed: 'none', 275 method: 'replaceWith', 276 progress: { 277 type: 'throbber', 278 message: Drupal.t('Please wait...') 279 }, 280 submit: { 281 js: true 282 } 283 }; 284 285 $.extend(this, defaults, elementSettings); 286 287 this.commands = new Drupal.AjaxCommands(); 288 289 this.instanceIndex = false; 290 291 if (this.wrapper) { 292 this.wrapper = '#' + this.wrapper; 293 } 294 295 this.element = element; 296 297 this.element_settings = elementSettings; 298 299 this.elementSettings = elementSettings; 300 301 if (this.element && this.element.form) { 302 this.$form = $(this.element.form); 303 } 304 305 if (!this.url) { 306 var $element = $(this.element); 307 if ($element.is('a')) { 308 this.url = $element.attr('href'); 309 } else if (this.element && element.form) { 310 this.url = this.$form.attr('action'); 311 } 312 } 313 314 var originalUrl = this.url; 315 316 this.url = this.url.replace(/\/nojs(\/|$|\?|#)/, '/ajax$1'); 317 318 if (drupalSettings.ajaxTrustedUrl[originalUrl]) { 319 drupalSettings.ajaxTrustedUrl[this.url] = true; 320 } 321 322 var ajax = this; 323 324 ajax.options = { 325 url: ajax.url, 326 data: ajax.submit, 327 beforeSerialize: function beforeSerialize(elementSettings, options) { 328 return ajax.beforeSerialize(elementSettings, options); 329 }, 330 beforeSubmit: function beforeSubmit(formValues, elementSettings, options) { 331 ajax.ajaxing = true; 332 return ajax.beforeSubmit(formValues, elementSettings, options); 333 }, 334 beforeSend: function beforeSend(xmlhttprequest, options) { 335 ajax.ajaxing = true; 336 return ajax.beforeSend(xmlhttprequest, options); 337 }, 338 success: function success(response, status, xmlhttprequest) { 339 if (typeof response === 'string') { 340 response = $.parseJSON(response); 341 } 342 343 if (response !== null && !drupalSettings.ajaxTrustedUrl[ajax.url]) { 344 if (xmlhttprequest.getResponseHeader('X-Drupal-Ajax-Token') !== '1') { 345 var customMessage = Drupal.t('The response failed verification so will not be processed.'); 346 return ajax.error(xmlhttprequest, ajax.url, customMessage); 347 } 348 } 349 350 return ajax.success(response, status); 351 }, 352 complete: function complete(xmlhttprequest, status) { 353 ajax.ajaxing = false;
354 if (status === 'error' || status === 'parsererror') { 355 return ajax.error(xmlhttprequest, ajax.url); 356 } 357 }, 358 359 dataType: 'json', 360 jsonp: false, 361 type: 'POST' 362 }; 363 364 if (elementSettings.dialog) { 365 ajax.options.data.dialogOptions = elementSettings.dialog; 366 } 367 368 if (ajax.options.url.indexOf('?') === -1) { 369 ajax.options.url += '?'; 370 } else { 371 ajax.options.url += '&'; 372 } 373 374 var wrapper = 'drupal_' + (elementSettings.dialogType || 'ajax'); 375 if (elementSettings.dialogRenderer) { 376 wrapper += '.' + elementSettings.dialogRenderer; 377 } 378 ajax.options.url += Drupal.ajax.WRAPPER_FORMAT + '=' + wrapper; 379 380 $(ajax.element).on(elementSettings.event, function (event) { 381 if (!drupalSettings.ajaxTrustedUrl[ajax.url] && !Drupal.url.isLocal(ajax.url)) { 382 throw new Error(Drupal.t('The callback URL is not local and not trusted: !url', { 383 '!url': ajax.url 384 })); 385 } 386 return ajax.eventResponse(this, event); 387 }); 388 389 if (elementSettings.keypress) { 390 $(ajax.element).on('keypress', function (event) { 391 return ajax.keypressResponse(this, event); 392 }); 393 } 394 395 if (elementSettings.prevent) { 396 $(ajax.element).on(elementSettings.prevent, false); 397 } 398 }; 399 400 Drupal.ajax.WRAPPER_FORMAT = '_wrapper_format'; 401 402 Drupal.Ajax.AJAX_REQUEST_PARAMETER = '_drupal_ajax'; 403 404 Drupal.Ajax.prototype.execute = function () { 405 if (this.ajaxing) { 406 return; 407 } 408 409 try { 410 this.beforeSerialize(this.element, this.options); 411 412 return $.ajax(this.options); 413 } catch (e) { 414 this.ajaxing = false; 415 window.alert('An error occurred while attempting to process ' + this.options.url + ': ' + e.message); 416 417 return $.Deferred().reject(); 418 } 419 }; 420 421 Drupal.Ajax.prototype.keypressResponse = function (element, event) { 422 var ajax = this; 423 424 if (event.which === 13 || event.which === 32 && element.type !== 'text' && element.type !== 'textarea' && element.type !== 'tel' && element.type !== 'number') { 425 event.preventDefault(); 426 event.stopPropagation(); 427 $(element).trigger(ajax.elementSettings.event); 428 } 429 }; 430 431 Drupal.Ajax.prototype.eventResponse = function (element, event) { 432 event.preventDefault(); 433 event.stopPropagation(); 434 435 var ajax = this; 436 437 if (ajax.ajaxing) { 438 return; 439 } 440 441 try { 442 if (ajax.$form) { 443 if (ajax.setClick) { 444 element.form.clk = element; 445 } 446 447 ajax.$form.ajaxSubmit(ajax.options); 448 } else { 449 ajax.beforeSerialize(ajax.element, ajax.options); 450 $.ajax(ajax.options); 451 } 452 } catch (e) { 453 ajax.ajaxing = false; 454 window.alert('An error occurred while attempting to process ' + ajax.options.url + ': ' + e.message); 455 } 456 }; 457 458 Drupal.Ajax.prototype.beforeSerialize = function (element, options) { 459 if (this.$form && document.body.contains(this.$form.get(0))) { 460 var settings = this.settings || drupalSettings; 461 Drupal.detachBehaviors(this.$form.get(0), settings, 'serialize'); 462 } 463 464 options.data[Drupal.Ajax.AJAX_REQUEST_PARAMETER] = 1; 465 466 var pageState = drupalSettings.ajaxPageState; 467 options.data['ajax_page_state[theme]'] = pageState.theme; 468 options.data['ajax_page_state[theme_token]'] = pageState.theme_token; 469 options.data['ajax_page_state[libraries]'] = pageState.libraries; 470 }; 471 472 Drupal.Ajax.prototype.beforeSubmit = function (formValues, element, options) {}; 473 474 Drupal.Ajax.prototype.beforeSend = function (xmlhttprequest, options) { 475 if (this.$form) { 476 options.extraData = options.extraData || {}; 477 478 options.extraData.ajax_iframe_upload = '1'; 479 480 var v = $.fieldValue(this.element); 481 if (v !== null) { 482 options.extraData[this.element.name] = v; 483 } 484 } 485 486 $(this.element).prop('disabled', true); 487 488 if (!this.progress || !this.progress.type) { 489 return; 490 } 491 492 var progressIndicatorMethod = 'setProgressIndicator' + this.progress.type.slice(0, 1).toUpperCase() + this.progress.type.slice(1).toLowerCase(); 493 if (progressIndicatorMethod in this && typeof this[progressIndicatorMethod] === 'function') { 494 this[progressIndicatorMethod].call(this); 495 } 496 }; 497 498 Drupal.theme.ajaxProgressThrobber = function (message) { 499 var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : ''; 500 var throbber = '<div class="throbber"> </div>'; 501 502 return '<div class="ajax-progress ajax-progress-throbber">' + throbber + messageMarkup + '</div>'; 503 }; 504 505 Drupal.theme.ajaxProgressIndicatorFullscreen = function () { 506 return '<div class="ajax-progress ajax-progress-fullscreen"> </div>'; 507 }; 508 509 Drupal.theme.ajaxProgressMessage = function (message) { 510 return '<div class="message">' + message + '</div>'; 511 }; 512 513 Drupal.theme.ajaxProgressBar = function ($element) { 514 return $('<div class="ajax-progress ajax-progress-bar"></div>').append($element); 515 }; 516 517 Drupal.Ajax.prototype.setProgressIndicatorBar = function () { 518 var progressBar = new Drupal.ProgressBar('ajax-progress-' + this.element.i
518d, $.noop, this.progress.method, $.noop); 519 if (this.progress.message) { 520 progressBar.setProgress(-1, this.progress.message); 521 } 522 if (this.progress.url) { 523 progressBar.startMonitoring(this.progress.url, this.progress.interval || 1500); 524 } 525 this.progress.element = $(Drupal.theme('ajaxProgressBar', progressBar.element)); 526 this.progress.object = progressBar; 527 $(this.element).after(this.progress.element); 528 }; 529 530 Drupal.Ajax.prototype.setProgressIndicatorThrobber = function () { 531 this.progress.element = $(Drupal.theme('ajaxProgressThrobber', this.progress.message)); 532 $(this.element).after(this.progress.element); 533 }; 534 535 Drupal.Ajax.prototype.setProgressIndicatorFullscreen = function () { 536 this.progress.element = $(Drupal.theme('ajaxProgressIndicatorFullscreen')); 537 $('body').append(this.progress.element); 538 }; 539 540 Drupal.Ajax.prototype.success = function (response, status) { 541 var _this = this; 542 543 if (this.progress.element) { 544 $(this.progress.element).remove(); 545 } 546 if (this.progress.object) { 547 this.progress.object.stopMonitoring(); 548 } 549 $(this.element).prop('disabled', false); 550 551 var elementParents = $(this.element).parents('[data-drupal-selector]').addBack().toArray(); 552 553 var focusChanged = false; 554 Object.keys(response || {}).forEach(function (i) { 555 if (response[i].command && _this.commands[response[i].command]) { 556 _this.commands[response[i].command](_this, response[i], status); 557 if (response[i].command === 'invoke' && response[i].method === 'focus') { 558 focusChanged = true; 559 } 560 } 561 }); 562 563 if (!focusChanged && this.element && !$(this.element).data('disable-refocus')) { 564 var target = false;
565 566 for (var n = elementParents.length - 1; !target && n >= 0; n--) { 567 target = document.querySelector('[data-drupal-selector="' + elementParents[n].getAttribute('data-drupal-selector') + '"]'); 568 } 569 570 if (target) { 571 $(target).trigger('focus'); 572 } 573 } 574 575 if (this.$form && document.body.contains(this.$form.get(0))) { 576 var settings = this.settings || drupalSettings; 577 Drupal.attachBehaviors(this.$form.get(0), settings); 578 } 579 580 this.settings = null; 581 }; 582 583 Drupal.Ajax.prototype.getEffect = function (response) { 584 var type = response.effect || this.effect; 585 var speed = response.speed || this.speed; 586 587 var effect = {}; 588 if (type === 'none') { 589 effect.showEffect = 'show'; 590 effect.hideEffect = 'hide'; 591 effect.showSpeed = ''; 592 } else if (type === 'fade') { 593 effect.showEffect = 'fadeIn'; 594 effect.hideEffect = 'fadeOut'; 595 effect.showSpeed = speed; 596 } else { 597 effect.showEffect = type + 'Toggle'; 598 effect.hideEffect = type + 'Toggle'; 599 effect.showSpeed = speed; 600 } 601 602 return effect; 603 }; 604 605 Drupal.Ajax.prototype.error = function (xmlhttprequest, uri, customMessage) { 606 if (this.progress.element) { 607 $(this.progress.element).remove(); 608 } 609 if (this.progress.object) { 610 this.progress.object.stopMonitoring(); 611 } 612 613 $(this.wrapper).show(); 614 615 $(this.element).prop('disabled', false); 616 617 if (this.$form && document.body.contains(this.$form.get(0))) { 618 var settings = this.settings || drupalSettings; 619 Drupal.attachBehaviors(this.$form.get(0), settings); 620 } 621 throw new Drupal.AjaxError(xmlhttprequest, uri, customMessage); 622 }; 623 624 Drupal.theme.ajaxWrapperNewContent = function ($newContent, ajax, response) { 625 return (response.effect || ajax.effect) !== 'none' && $newContent.filter(function (i) { 626 return !($newContent[i].nodeName === '#comment' || $newContent[i].nodeName === '#text' && /^(\s|\n|\r)*$/.test($newContent[i].textContent)); 627 }).length > 1 ? Drupal.theme('ajaxWrapperMultipleRootElements', $newContent) : $newContent; 628 }; 629 630 Drupal.theme.ajaxWrapperMultipleRootElements = function ($elements) { 631 return $('<div></div>').append($elements); 632 }; 633 634 Drupal.AjaxCommands = function () {}; 635 Drupal.AjaxCommands.prototype = { 636 insert: function insert(ajax, response) { 637 var $wrapper = response.selector ? $(response.selector) : $(ajax.wrapper); 638 var method = response.method || ajax.method; 639 var effect = ajax.getEffect(response); 640 641 var settings = response.settings || ajax.settings || drupalSettings; 642 643 var $newContent = $($.parseHTML(response.data, document, true)); 644 645 $newContent = Drupal.theme('ajaxWrapperNewContent', $newContent, ajax, response); 646 647 switch (method) { 648 case 'html': 649 case 'replaceWith': 650 case 'replaceAll': 651 case 'empty': 652 case 'remove': 653 Drupal.detachBehaviors($wrapper.get(0), settings); 654 break; 655 default: 656 break; 657 } 658 659 $wrapper[method]($newContent); 660 661 if (effect.showEffect !== 'show') { 662 $newContent.hide(); 663 } 664 665 var $ajaxNewContent = $newContent.find('.ajax-new-content'); 666 if ($ajaxNewContent.length) { 667 $ajaxNewContent.hide(); 668 $newContent.show(); 669 $ajaxNewContent[effect.showEffect](effect.showSpeed); 670 } else if (effect.showEffect !== 'show') { 671 $newContent[effect.showEffect](effect.showSpeed); 672 } 673 674 if ($newContent.parents('html').length) { 675 $newContent.each(function (index, element) { 676 if (element.nodeType === Node.ELEMENT_NODE) { 677 Drupal.attachBehaviors(element, settings); 678 } 679 }); 680 } 681 }, 682 remove: function remove(ajax, response, status) { 683 var settings = response.settings || ajax.settings || drupalSettings; 684 $(response.selector).each(function () { 685 Drupal.detachBehaviors(this, settings); 686 }).remove(); 687 }, 688 changed: function changed(ajax, response, status) { 689 var $element = $(response.selector); 690 if (!$element.hasClass('ajax-changed')) { 691 $element.addClass('ajax-changed'); 692 if (response.asterisk) { 693 $element.find(response.asterisk).append(' <abbr class="ajax-changed" title="' + Drupal.t('Changed') + '">*</abbr> '); 694 } 695 } 696 }, 697 alert: function alert(ajax, response, status) { 698 window.alert(response.text, response.title); 699 }, 700 announce: function announce(ajax, response) { 701 if (response.priority) { 702 Drupal.announce(response.text, response.priority); 703 } else { 704 Drupal.announce(response.text); 705 } 706 }, 707 redirect: function redirect(ajax, response, status) { 708 window.location = response.url; 709 }, 710 css: function css(ajax, response, status) { 711 $(response.selector).css(response.argument); 712 }, 713 settings: function settings(ajax, response, status) { 714 var ajaxSettings = drupalSettings.ajax; 715 716 if (ajaxSettings) {
717 Drupal.ajax.expired().forEach(function (instance) { 718 719 if (instance.selector) { 720 var selector = instance.selector.replace('#', ''); 721 if (selector in ajaxSettings) { 722 delete ajaxSettings[selector]; 723 } 724 } 725 }); 726 } 727 728 if (response.merge) { 729 $.extend(true, drupalSettings, response.settings); 730 } else { 731 ajax.settings = response.settings; 732 } 733 }, 734 data: function data(ajax, response, status) { 735 $(response.selector).data(response.name, response.value); 736 }, 737 invoke: function invoke(ajax, response, status) { 738 var $element = $(response.selector); 739 $element[response.method].apply($element, _toConsumableArray(response.args)); 740 }, 741 restripe: function restripe(ajax, response, status) { 742 $(response.selector).find('> tbody > tr:visible, > tr:visible').removeClass('odd even').filter(':even').addClass('odd').end().filter(':odd').addClass('even'); 743 }, 744 update_build_id: function update_build_id(ajax, response, status) { 745 $('input[name="form_build_id"][value="' + response.old + '"]').val(response.new); 746 }, 747 add_css: function add_css(ajax, response, status) { 748 $('head').prepend(response.data); 749 }, 750 message: function message(ajax, response) { 751 var messages = new Drupal.Message(document.querySelector(response.messageWrapperQuerySelector)); 752 if (response.clearPrevious) { 753 messages.clear(); 754 } 755 messages.add(response.message, response.messageOptions); 756 } 757 }; 758})(jQuery, window, Drupal, drupalSettings);; 759(function ($, window, Drupal) { 760 'use strict'; 761 762 var originalAjaxBeforeSend = Drupal.Ajax.prototype.beforeSend; 763 764 /** 765 * Prepare the Ajax request before it is sent. 766 * 767 * @param {XMLHttpRequest} xmlhttprequest 768 * @param {object} options 769 * @param {object} options.extraData 770 */ 771 Drupal.Ajax.prototype.beforeSend = function (xmlhttprequest, options) { 772 var $element = $(this.element); 773 774 // Check for a data attribute to override the progress type. 775 if ($element.data('progress-type')) { 776 this.progress.type = $element.data('progress-type'); 777 } 778 779 // Force fullscreen progress indicator for 'throbber' and 'bar' types. 780 if (this.progress && this.progress.type && ['throbber', 'bar'].includes(this.progress.type)) { 781 this.progress.type = 'fullscreen'; 782 } 783 784 // Call the original beforeSend method. 785 originalAjaxBeforeSend.apply(this, arguments); 786 }; 787 788 /** 789 * Theme function for a fullscreen progress indicator. 790 * @param message 791 * @returns {*|jQuery|HTMLElement} 792 */ 793 Drupal.theme.ajaxProgressIndicatorForm = function (message) { 794 var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : ''; 795 var throbber = '<div class="throbber"> </div>'; 796 797 return '<div class="ajax-progress ajax-progress-form">' + throbber + messageMarkup + '</div>'; 798 }; 799 800 /** 801 * Theme function for a fullscreen progress indicator. 802 * @param message 803 * @returns {*|jQuery|HTMLElement} 804 */ 805 Drupal.theme.ajaxProgressIndicatorFullscreen = function (message) { 806 var messageMarkup = typeof message === 'string' ? Drupal.theme('ajaxProgressMessage', message) : ''; 807 var throbber = '<div class="throbber"> </div>'; 808 809 return '<div class="ajax-progress ajax-progress-fullscreen">' + throbber + messageMarkup + '</div>'; 810 }; 811 812 Drupal.Ajax.prototype.setProgressIndicatorFullscreen = function () { 813 var message = this.progress.message || Drupal.t('Loading...'); 814 this.progress.element = $(Drupal.theme('ajaxProgressIndicatorFullscreen', message)); 815 $('body').append(this.progress.element); 816 }; 817 818 /** 819 * Sets the form progress indicator. 820 */ 821 Drupal.Ajax.prototype.setProgressIndicatorForm = function () { 822 this.$form.find('input, select, textarea, button').attr('disabled', 'disabled'); 823 this.$form.find('.form-item').addClass('form-disabled'); 824 this.setProgressIndicatorFullscreen(); 825 }; 826 827})(jQuery, this, Drupal); 828; 829/** 830* DO NOT EDIT THIS FILE. 831* See the following change record for more information, 832* https://www.drupal.org/node/2815083 833* @preserve 834**/ 835 836(function ($, Drupal) { 837 Drupal.behaviors.dialog = { 838 attach: function attach(context, settings) { 839 var $context = $(context); 840 841 if (!$('#drupal-modal').length) { 842 $('<div id="drupal-modal" class="ui-front"></div>').hide().appendTo('body'); 843 } 844 845 var $dialog = $context.closest('.ui-dialog-content'); 846 if ($dialog.length) { 847 if ($dialog.dialog('option', 'drupalAutoButtons')) { 848 $dialog.trigger('dialogButtonsChange'); 849 } 850 851 $dialog.dialog('widget').trigger('focus'); 852 } 853 854 var originalClose = settings.dialog.close; 855 856 settings.dialog.close = function (event) { 857 for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 858 args[_key - 1] = arguments[_key]; 859 } 860 861 originalClose.apply(settings.dialog, [event].concat(args)); 862 $(event.target).remove(); 863 }; 864 }, 865 prepareDialogButtons: function prepareDialogButtons($dialog) { 866 var buttons = []; 867 var $buttons = $dialog.find('.form-actions input[type=submit], .form-actions a.button'); 868 $buttons.each(function () { 869 var $originalButton = $(this).css({ display: 'none' }); 870 buttons.push({ 871 text: $originalButton.html() || $originalButton.attr('value'), 872 class: $originalButton.attr('class'), 873 click: function click(e) { 874 if ($originalButton.is('a')) { 875 $originalButton[0].click(); 876 } else { 877 $originalButton.trigger('mousedown').trigger('mouseup').trigger('click'); 878 e.preventDefault(); 879 } 880 } 881 }); 882 }); 883 return buttons; 884 } 885 }; 886 887 Drupal.AjaxCommands.prototype.openDialog = function (ajax, response, status) { 888 if (!response.selector) { 889 return false;
890 } 891 var $dialog = $(response.selector); 892 if (!$dialog.length) { 893 $dialog = $('<div id="' + response.selector.replace(/^#/, '') + '" class="ui-front"></div>').appendTo('body'); 894 } 895 896 if (!ajax.wrapper) { 897 ajax.wrapper = $dialog.attr('id'); 898 } 899 900 response.command = 'insert'; 901 response.method = 'html'; 902 ajax.commands.insert(ajax, response, status); 903 904 if (!response.dialogOptions.buttons) { 905 response.dialogOptions.drupalAutoButtons = true; 906 response.dialogOptions.buttons = Drupal.behaviors.dialog.prepareDialogButtons($dialog); 907 } 908 909 $dialog.on('dialogButtonsChange', function () { 910 var buttons = Drupal.behaviors.dialog.prepareDialogButtons($dialog); 911 $dialog.dialog('option', 'buttons', buttons); 912 }); 913 914 response.dialogOptions = response.dialogOptions || {}; 915 var dialog = Drupal.dialog($dialog.get(0), response.dialogOptions); 916 if (response.dialogOptions.modal) { 917 dialog.showModal(); 918 } else { 919 dialog.show(); 920 } 921 922 $dialog.parent().find('.ui-dialog-buttonset').addClass('form-actions'); 923 }; 924 925 Drupal.AjaxCommands.prototype.closeDialog = function (ajax, response, status) { 926 var $dialog = $(response.selector); 927 if ($dialog.length) { 928 Drupal.dialog($dialog.get(0)).close(); 929 if (!response.persist) { 930 $dialog.remove(); 931 } 932 } 933 934 $dialog.off('dialogButtonsChange'); 935 }; 936 937 Drupal.AjaxCommands.prototype.setDialogOption = function (ajax, response, status) { 938 var $dialog = $(response.selector); 939 if ($dialog.length) { 940 $dialog.dialog('option', response.optionName, response.optionValue); 941 } 942 }; 943 944 $(window).on('dialog:aftercreate', function (e, dialog, $element, settings) { 945 $element.on('click.dialog', '.dialog-cancel', function (e) { 946 dialog.close('cancel'); 947 e.preventDefault(); 948 e.stopPropagation(); 949 }); 950 }); 951 952 $(window).on('dialog:beforeclose', function (e, dialog, $element) { 953 $element.off('.dialog'); 954 }); 955})(jQuery, Drupal);; 956(function ($, Drupal) { 957 Drupal.behaviors.dialog.prepareDialogButtons = function prepareDialogButtons($dialog) { 958 var buttons = []; 959 var $buttons = $dialog.find('.form-actions input[type=submit], .form-actions button, .form-actions a.button'); 960 961 $buttons.each(function () { 962 var $originalButton = $(this).css({ display: 'none' }); 963 964 if (!$originalButton.hasClass('btn')) { 965 $originalButton.addClass('btn', 'btn-link'); 966 } 967 968 if ($originalButton.is(':disabled')) { 969 $originalButton.addClass('disabled'); 970 } 971 972 buttons.push({ 973 text: $originalButton.html() || $originalButton.attr('value'), 974 class: $originalButton.attr('class'), 975 click: function click(e) { 976 if ($originalButton.is('a')) { 977 $originalButton[0].click(); 978 } else { 979 $originalButton.trigger('mousedown').trigger('mouseup').trigger('click'); 980 e.preventDefault(); 981 } 982 } 983 }); 984 }); 985 return buttons; 986 } 987})(jQuery, Drupal); 988; 989/** 990 * @file 991 * JavaScript behaviors to fix jQuery UI dialogs. 992 */ 993 994(function ($, Drupal) { 995 996 'use strict'; 997 998 /** 999 * Ensure that ckeditor has focus when displayed inside of jquery-ui dialog widget 1000 * 1001 * @see http://stackoverflow.com/questions/20533487/how-to-ensure-that-ckeditor-has-focus-when-displayed-inside-of-jquery-ui-dialog 1002 */ 1003 var _allowInteraction = $.ui.dialog.prototype._allowInteraction; 1004 $.ui.dialog.prototype._allowInteraction = function (event) { 1005 if ($(event.target).closest('.cke_dialog').length) { 1006 return true; 1007 } 1008 return _allowInteraction.apply(this, arguments); 1009 }; 1010 1011 /** 1012 * Attaches webform dialog behaviors. 1013 * 1014 * @type {Drupal~behavior} 1015 * 1016 * @prop {Drupal~behaviorAttach} attach 1017 * Attaches event listeners for webform dialogs. 1018 */ 1019 Drupal.behaviors.webformDialogEvents = { 1020 attach: function () { 1021 $(window).once('webform-dialog').on({ 1022 'dialog:aftercreate': function (event, dialog, $element, settings) { 1023 setTimeout(function () { 1024 var hasFocus = $element.find('[autofocus]:tabbable'); 1025 if (!hasFocus.length) { 1026 // Move focus to first input which is not a button. 1027 hasFocus = $element.find(':input:tabbable:not(:button)'); 1028 } 1029 if (!hasFocus.length) { 1030 // Move focus to close dialog button. 1031 hasFocus = $element.parent().find('.ui-dialog-titlebar-close'); 1032 } 1033 hasFocus.eq(0).trigger('focus'); 1034 }); 1035 } 1036 }); 1037 } 1038 }; 1039 1040})(jQuery, Drupal); 1041; 1042/** 1043 * @file 1044 * JavaScript behaviors for webform dialogs. 1045 */ 1046 1047(function ($, Drupal, drupalSettings) { 1048 1049 'use strict'; 1050 1051 // @see http://api.jqueryui.com/dialog/ 1052 Drupal.webform = Drupal.webform || {}; 1053 Drupal.webform.dialog = Drupal.webform.dialog || {}; 1054 Drupal.webform.dialog.options = Drupal.webform.dialog.options || {}; 1055 1056 /** 1057 * Programmatically open a webform (or page) in a dialog. 1058 * 1059 * @param {string} url 1060 * Webform URL. 1061 * @param {string} type 1062 * Webform dialog type defined via /admin/structure/webform/config. 1063 */ 1064 Drupal.webformOpenDialog = function (url, type) { 1065 // Create a div with link but don't attach it to the page.
1066 var $div = $('<div><a href="' + url + '" class="webform-dialog ' + type + '"></a></div>'); 1067 // Init the webform dialog behavior. 1068 Drupal.behaviors.webformDialog.attach($div); 1069 // Trigger the link. 1070 $div.find('a').trigger('click'); 1071 }; 1072 1073 /** 1074 * Open webform dialog using preset options. 1075 * 1076 * @type {Drupal~behavior} 1077 */ 1078 Drupal.behaviors.webformDialog = { 1079 attach: function (context) { 1080 $('a.webform-dialog', context).once('webform-dialog').each(function () { 1081 var $a = $(this); 1082 1083 // Get default options. 1084 var options = $.extend({}, Drupal.webform.dialog.options); 1085 1086 // Get preset dialog options. 1087 if ($a.attr('class').match(/webform-dialog-([a-z0-9_]+)/)) { 1088 var dialogOptionsName = RegExp.$1; 1089 if (drupalSettings.webform.dialog.options[dialogOptionsName]) { 1090 options = drupalSettings.webform.dialog.options[dialogOptionsName]; 1091 1092 // Unset title. 1093 delete options.title; 1094 } 1095 } 1096 1097 // Get custom dialog options. 1098 if ($(this).data('dialog-options')) { 1099 $.extend(options, $(this).data('dialog-options')); 1100 } 1101 1102 var href = $a.attr('href'); 1103 1104 // Replace ENTITY_TYPE and ENTITY_ID placeholders and update the href. 1105 // @see webform_page_attachments() 1106 if (href.indexOf('?source_entity_type=ENTITY_TYPE&source_entity_id=ENTITY_ID') !== -1) { 1107 if (drupalSettings.webform.dialog.entity_type && drupalSettings.webform.dialog.entity_id) { 1108 href = href.replace('ENTITY_TYPE', encodeURIComponent(drupalSettings.webform.dialog.entity_type)); 1109 href = href.replace('ENTITY_ID', encodeURIComponent(drupalSettings.webform.dialog.entity_id)); 1110 } 1111 else { 1112 href = href.replace('?source_entity_type=ENTITY_TYPE&source_entity_id=ENTITY_ID', ''); 1113 } 1114 $a.attr('href', href); 1115 } 1116 1117 // Append _webform_dialog=1 to href to trigger Ajax support. 1118 // @see \Drupal\webform\WebformSubmissionForm::setEntity 1119 href += (href.indexOf('?') === -1 ? '?' : '&') + '_webform_dialog=1'; 1120 1121 var element_settings = {}; 1122 element_settings.progress = {type: 'fullscreen'}; 1123 element_settings.url = href; 1124 element_settings.event = 'click'; 1125 element_settings.dialogType = $a.data('dialog-type') || 'modal'; 1126 element_settings.dialog = options; 1127 element_settings.element = this; 1128 element_settings.error = function error(xmlhttp, uri) { 1129 if (xmlhttp.status === 403) { 1130 window.location.replace(href.split('?')[0]); 1131 } 1132 }; 1133 Drupal.ajax(element_settings); 1134 }); 1135 } 1136 }; 1137 1138})(jQuery, Drupal, drupalSettings); 1139; 1140/** 1141 * @file 1142 * External links js file. 1143 */ 1144 1145(function ($, Drupal, drupalSettings) { 1146 1147 'use strict'; 1148 1149 Drupal.extlink = Drupal.extlink || {}; 1150 1151 Drupal.extlink.attach = function (context, drupalSettings) { 1152 if (typeof drupalSettings.data === 'undefined' || !drupalSettings.data.hasOwnProperty('extlink')) { 1153 return; 1154 } 1155 1156 // Define the jQuery method (either 'append' or 'prepend') of placing the 1157 // icon, defaults to 'append'. 1158 var extIconPlacement = 'append'; 1159 if (drupalSettings.data.extlink.extIconPlacement && drupalSettings.data.extlink.extIconPlacement != '0') { 1160 extIconPlacement = drupalSettings.data.extlink.extIconPlacement; 1161 } 1162 1163 // Strip the host name down, removing ports, subdomains, or www. 1164 var pattern = /^(([^\/:]+?\.)*)([^\.:]{1,})((\.[a-z0-9]{1,253})*)(:[0-9]{1,5})?$/; 1165 var host = window.location.host.replace(pattern, '$2$3$6'); 1166 var subdomain = window.location.host.replace(host, ''); 1167 1168 // Determine what subdomains are considered internal. 1169 var subdomains; 1170 if (drupalSettings.data.extlink.extSubdomains) { 1171 subdomains = '([^/]*\\.)?'; 1172 } 1173 else if (subdomain === 'www.' || subdomain === '') { 1174 subdomains = '(www\\.)?'; 1175 } 1176 else { 1177 subdomains = subdomain.replace('.', '\\.'); 1178 } 1179 1180 // Whitelisted domains. 1181 var whitelistedDomains = false;
1182 if (drupalSettings.data.extlink.whitelistedDomains) { 1183 whitelistedDomains = []; 1184 for (var i = 0; i < drupalSettings.data.extlink.whitelistedDomains.length; i++) { 1185 whitelistedDomains.push(new RegExp('^https?:\\/\\/' + drupalSettings.data.extlink.whitelistedDomains[i].replace(/(\r\n|\n|\r)/gm,'') + '.*$', 'i')); 1186 } 1187 } 1188 1189 // Build regular expressions that define an internal link. 1190 var internal_link = new RegExp('^https?://([^@]*@)?' + subdomains + host, 'i'); 1191 1192 // Extra internal link matching. 1193 var extInclude = false; 1194 if (drupalSettings.data.extlink.extInclude) { 1195 extInclude = new RegExp(drupalSettings.data.extlink.extInclude.replace(/\\/, '\\'), 'i'); 1196 } 1197 1198 // Extra external link matching. 1199 var extExclude = false; 1200 if (drupalSettings.data.extlink.extExclude) { 1201 extExclude = new RegExp(drupalSettings.data.extlink.extExclude.replace(/\\/, '\\'), 'i'); 1202 } 1203 1204 // Extra external link CSS selector exclusion. 1205 var extCssExclude = false; 1206 if (drupalSettings.data.extlink.extCssExclude) { 1207 extCssExclude = drupalSettings.data.extlink.extCssExclude; 1208 } 1209 1210 // Extra external link CSS selector explicit. 1211 var extCssExplicit = false; 1212 if (drupalSettings.data.extlink.extCssExplicit) { 1213 extCssExplicit = drupalSettings.data.extlink.extCssExplicit; 1214 } 1215 1216 // Find all links which are NOT internal and begin with http as opposed 1217 // to ftp://, javascript:, etc. other kinds of links. 1218 // When operating on the 'this' variable, the host has been appended to 1219 // all links by the browser, even local ones. 1220 // In jQuery 1.1 and higher, we'd use a filter method here, but it is not 1221 // available in jQuery 1.0 (Drupal 5 default). 1222 var external_links = []; 1223 var mailto_links = []; 1224 $('a:not([data-extlink]), area:not([data-extlink])', context).each(function (el) { 1225 try { 1226 var url = ''; 1227 if (typeof this.href == 'string') { 1228 url = this.href.toLowerCase(); 1229 } 1230 // Handle SVG links (xlink:href). 1231 else if (typeof this.href == 'object') { 1232 url = this.href.baseVal; 1233 } 1234 if (url.indexOf('http') === 0 1235 && ((!internal_link.test(url) && !(extExclude && extExclude.test(url))) || (extInclude && extInclude.test(url))) 1236 && !(extCssExclude && $(this).is(extCssExclude)) 1237 && !(extCssExclude && $(this).parents(extCssExclude).length > 0) 1238 && !(extCssExplicit && $(this).parents(extCssExplicit).length < 1)) { 1239 var match = false; 1240 if (whitelistedDomains) { 1241 for (var i = 0; i < whitelistedDomains.length; i++) { 1242 if (whitelistedDomains[i].test(url)) { 1243 match = true; 1244 break; 1245 } 1246 } 1247 } 1248 if (!match) { 1249 external_links.push(this); 1250 } 1251 } 1252 // Do not include area tags with begin with mailto: (this prohibits 1253 // icons from being added to image-maps). 1254 else if (this.tagName !== 'AREA' 1255 && url.indexOf('mailto:') === 0 1256 && !(extCssExclude && $(this).parents(extCssExclude).length > 0) 1257 && !(extCssExplicit && $(this).parents(extCssExplicit).length < 1)) { 1258 mailto_links.push(this); 1259 } 1260 } 1261 // IE7 throws errors often when dealing with irregular links, such as: 1262 // <a href="node/10"></a> Empty tags. 1263 // <a href="http://user:[email protected]">example</a> User:pass syntax. 1264 catch (error) { 1265 return false; 1266 } 1267 }); 1268 1269 if (drupalSettings.data.extlink.extClass !== '0' && drupalSettings.data.extlink.extClass !== '') { 1270 Drupal.extlink.applyClassAndSpan(external_links, drupalSettings.data.extlink.extClass, extIconPlacement); 1271 } 1272 1273 if (drupalSettings.data.extlink.mailtoClass !== '0' && drupalSettings.data.extlink.mailtoClass !== '') { 1274 Drupal.extlink.applyClassAndSpan(mailto_links, drupalSettings.data.extlink.mailtoClass, extIconPlacement); 1275 } 1276 1277 if (drupalSettings.data.extlink.extTarget) { 1278 // Apply the target attribute to all links. 1279 $(external_links).filter(function () { 1280 // Filter out links with target set if option specified. 1281 return !(drupalSettings.data.extlink.extTargetNoOverride && $(this).is('a[target]')); 1282 }).attr({target: '_blank'}); 1283 1284 // Add noopener rel attribute to combat phishing. 1285 $(external_links).attr('rel', function (i, val) { 1286 // If no rel attribute is present, create one with the value noopener. 1287 if (val === null || typeof val === 'undefined') { 1288 return 'noopener'; 1289 }
1290 // Check to see if rel contains noopener. Add what doesn't exist. 1291 if (val.indexOf('noopener') > -1) { 1292 if (val.indexOf('noopener') === -1) { 1293 return val + ' noopener'; 1294 } 1295 // Noopener exists. Nothing needs to be added. 1296 else { 1297 return val; 1298 } 1299 } 1300 // Else, append noopener to val. 1301 else { 1302 return val + ' noopener'; 1303 } 1304 }); 1305 } 1306 1307 if (drupalSettings.data.extlink.extNofollow) { 1308 $(external_links).attr('rel', function (i, val) { 1309 // When the link does not have a rel attribute set it to 'nofollow'. 1310 if (val === null || typeof val === 'undefined') { 1311 return 'nofollow'; 1312 } 1313 var target = 'nofollow'; 1314 // Change the target, if not overriding follow. 1315 if (drupalSettings.data.extlink.extFollowNoOverride) { 1316 target = 'follow'; 1317 } 1318 if (val.indexOf(target) === -1) { 1319 return val + ' nofollow'; 1320 } 1321 return val; 1322 }); 1323 } 1324 1325 if (drupalSettings.data.extlink.extNoreferrer) { 1326 $(external_links).attr('rel', function (i, val) { 1327 // When the link does not have a rel attribute set it to 'noreferrer'. 1328 if (val === null || typeof val === 'undefined') { 1329 return 'noreferrer'; 1330 } 1331 if (val.indexOf('noreferrer') === -1) { 1332 return val + ' noreferrer'; 1333 } 1334 return val; 1335 }); 1336 } 1337 1338 Drupal.extlink = Drupal.extlink || {}; 1339 1340 // Set up default click function for the external links popup. This should be 1341 // overridden by modules wanting to alter the popup. 1342 Drupal.extlink.popupClickHandler = Drupal.extlink.popupClickHandler || function () { 1343 if (drupalSettings.data.extlink.extAlert) { 1344 return confirm(drupalSettings.data.extlink.extAlertText); 1345 } 1346 }; 1347 1348 $(external_links).off("click.extlink"); 1349 $(external_links).on("click.extlink", function (e) { 1350 return Drupal.extlink.popupClickHandler(e, this); 1351 }); 1352 }; 1353 1354 /** 1355 * Apply a class and a trailing <span> to all links not containing images. 1356 * 1357 * @param {object[]} links 1358 * An array of DOM elements representing the links. 1359 * @param {string} class_name 1360 * The class to apply to the links. 1361 * @param {string} icon_placement 1362 * 'append' or 'prepend' the icon to the link. 1363 */ 1364 Drupal.extlink.applyClassAndSpan = function (links, class_name, icon_placement) { 1365 var $links_to_process; 1366 if (drupalSettings.data.extlink.extImgClass) { 1367 $links_to_process = $(links); 1368 } 1369 else { 1370 var links_with_images = $(links).find('img, svg').parents('a'); 1371 $links_to_process = $(links).not(links_with_images); 1372 } 1373 1374 if (class_name !== '0') { 1375 $links_to_process.addClass(class_name); 1376 } 1377 1378 // Add data-extlink attribute. 1379 $links_to_process.attr('data-extlink', ''); 1380 1381 var i; 1382 var length = $links_to_process.length; 1383 for (i = 0; i < length; i++) { 1384 var $link = $($links_to_process[i]); 1385 if (drupalSettings.data.extlink.extUseFontAwesome) { 1386 if (class_name === drupalSettings.data.extlink.mailtoClass) { 1387 $link[icon_placement]('<span class="fa-' + class_name + ' extlink"><span class="' + drupalSettings.data.extlink.extFaMailtoClasses + '" aria-label="' + drupalSettings.data.extlink.mailtoLabel + '"></span></span>'); 1388 } 1389 else { 1390 $link[icon_placement]('<span class="fa-' + class_name + ' extlink"><span class="' + drupalSettings.data.extlink.extFaLinkClasses + '" aria-label="' + drupalSettings.data.extlink.extLabel + '"></span></span>'); 1391 } 1392 } 1393 else { 1394 if (class_name === drupalSettings.data.extlink.mailtoClass) { 1395 $link[icon_placement]('<svg focusable="false" class="' + class_name + '" role="img" aria-label="' + drupalSettings.data.extlink.mailtoLabel + '" xmlns="http://www.w3.org/2000/svg" viewBox="0 10 70 20"><metadata><sfw xmlns="http://ns.adobe.com/SaveForWeb/1.0/"><sliceSourceBounds y="-8160" x="-8165" width="16389" height="16384" bottomLeftOrigin="true"/><optimizationSettings><targetSettings targetSettingsID="0" fileFormat="PNG24Format"><PNG24Format transparency="true" filtered="false" interlaced="false" noMatteColor="false" matteColor="#FFFFFF"/></targetSettings></optimizationSettings></sfw></metadata><title>' + drupalSettings.data.extlink.mailtoLabel + '</title><path d="M56 14H8c-1.1 0-2 0.9-2 2v32c0 1.1 0.9 2 2 2h48c1.1 0 2-0.9 2-2V16C58 14.9 57.1 14 56 14zM50.5 18L32 33.4 13.5 18H50.5zM10 46V20.3l20.7 17.3C31.1 37.8 31.5 38 32 38s0.9-0.2 1.3-0.5L54 20.3V46H10z"/></svg>'); 1396 } 1397 else { 1398 $link[icon_placement]('<svg focusable="false" class="' + class_name + '" role="img" aria-label="' + drupalSettings.data.extlink.extLabel + '" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 40"><metadata><sfw xmlns="http://ns.adobe.com/SaveForWeb/1.0/"><sliceSourceBounds y="-8160" x="-8165" width="16389" height="16384" bottomLeftOrigin="true"/><optimizationSettings><targetSettings targetSettingsID="0" fileFormat="PNG24Format"><PNG24Format transparency="true" filtered="false" interlaced="false" noMatteColor="false" matteColor="#FFFFFF"/></targetSettings></optimizationSettings></sfw></metadata><title>' + drupalSettings.data.extlink.extLabel + '</title><path d="M48 26c-1.1 0-2 0.9-2 2v26H10V18h26c1.1 0 2-0.9 2-2s-0.9-2-2-2H8c-1.1 0-2 0.9-2 2v40c0 1.1 0.9 2 2 2h40c1.1 0 2-0.9 2-2V28C50 26.9 49.1 26 48 26z"/><path d="M56 6H44c-1.1 0-2 0.9-2 2s0.9 2 2 2h7.2L30.6 30.6c-0.8 0.8-0.8 2 0 2.8C31 33.8 31.5 34 32 34s1-0.2 1.4-0.6L54 12.8V20c0 1.1 0.9 2 2 2s2-0.9 2-2V8C58 6.9 57.1 6 56 6z"/></svg>'); 1399 } 1400 } 1401 } 1402 }; 1403 1404 Drupal.behaviors.extlink = Drupal.behaviors.extlink || {}; 1405 Drupal.behaviors.extlink.attach = function (context, drupalSettings) { 1406 // Backwards compatibility, for the benefit of modules overriding extlink 1407 // functionality by defining an "extlinkAttach" global function. 1408 if (typeof extlinkAttach === 'function') { 1409 extlinkAttach(context); 1410 } 1411 else { 1412 Drupal.extlink.attach(context, drupalSettings); 1413 } 1414 }; 1415 1416})(jQuery, Drupal, drupalSettings); 1417; 1418(function (settings) { 1419 if ('BrevoConversations' in window && 'brevo' in settings && 'user' in settings) { 1420 if (settings.user.type !== 'anonymous') { 1421 window.BrevoConversations('updateIntegrationData', { 1422 email: settings.user.email, 1423 firstName: settings.user.firstName, 1424 lastName: settings.user.lastName, 1425 phone: settings.user.phone, 1426 notes: null, 1427 'usertype': settings.user.type, 1428 }); 1429 } else { 1430 window.BrevoConversations('updateIntegrationData', { 1431 email: null, 1432 firstName: null, 1433 lastName: null, 1434 phone: null, 1435 notes: null, 1436 'usertype': null, 1437 }); 1438 } 1439 } 1440})(window.drupalSettings); 1441;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.