1!(function($){"use strict";$(window).on("elementor/frontend/init",function(){if(typeof elementorModules==="undefined"||typeof elementorFrontend==="undefined"){return} 2var SoundHandler=elementorModules.frontend.handlers.Base.extend({soundInstance:null,soundId:null,isPlaying:!1,bindEvents:function(){this.run()},getFxVal:function(key){return this.getElementSettings(key)},destroySound:function(){var element=this.$element[0];if(element&&element._xproSoundEvents){element._xproSoundEvents.forEach(function(event){event.target.removeEventListener(event.type,event.handler)});element._xproSoundEvents=[]} 3if(typeof createjs!=="undefined"&&createjs.Sound&&this.soundInstance){this.soundInstance.stop();this.soundInstance=null} 4this.isPlaying=!1},run:function(){this.destroySound();var $element=this.$element;var element=$element[0];if(!$element.hasClass("xpro-soundjs-effect-yes")||typeof createjs==="undefined"||typeof createjs.Sound==="undefined"){return} 5var enabled=this.getFxVal("xpro_soundjs_enable")==="yes";var audio=this.getFxVal("xpro_soundjs_audio.url");var trigger=this.getFxVal("xpro_soundjs_trigger")||"click";var volume=parseFloat(this.getFxVal("xpro_soundjs_volume.size"))||0.7;var loop=this.getFxVal("xpro_soundjs_loop")==="yes";var triggerClass=this.getFxVal("xpro_soundjs_trigger_class")||"";if(!enabled||!audio){return} 6this.soundId="xpro_sound_"+this.getID();createjs.Sound.alternateExtensions=["mp3","ogg","wav"];var self=this;function playSound(){if(!createjs.Sound.loadComplete(self.soundId)){return} 7if(self.soundInstance){self.soundInstance.stop();self.soundInstance=null} 8self.soundInstance=createjs.Sound.play(self.soundId,{volume:volume,loop:loop?-1:0});self.isPlaying=!0;self.soundInstance.on("complete",function(){self.isPlaying=!1;self.soundInstance=null})} 9function stopSound(){if(self.soundInstance){self.soundInstance.stop();self.soundInstance=null} 10self.isPlaying=!1} 11function toggleSound(){if(self.isPlaying){stopSound()}else{playSound()}} 12if(!createjs.Sound.loadComplete(this.soundId)){createjs.Sound.registerSound({src:audio,id:this.soundId});if(trigger==="load"){createjs.Sound.on("fileload",function(event){if(event.id===self.soundId){playSound()}},null,!0)}}else if(trigger==="load"){playSound()} 13element._xproSoundEvents=[];function addEvent(target,type,handler){target.addEventListener(type,handler);element._xproSoundEvents.push({target:target,type:type,handler:handler})} 14switch(trigger){case "hover":addEvent(element,"mouseenter",playSound);addEvent(element,"mouseleave",stopSound);break;case "click":addEvent(element,"click",toggleSound);break;case "class":if(!triggerClass){break} 15document.querySelectorAll(triggerClass).forEach(function(el){addEvent(el,"click",toggleSound)});break;case "load":break}}});elementorFrontend.hooks.addAction("frontend/element_ready/global",function($scope){elementorFrontend.elementsHandler.addHandler(SoundHandler,{$element:$scope})})})})(jQuery)
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.