1(function($) { 2 3 "use strict"; 4 5 $(document).ready(function() { 6 7 8 if (!$('.meks-ap-player').length) { 9 return; 10 } 11 12 if ( !$('.meks-ap-player').hasClass('meks-void-player') ) { 13 window.meks_ap_detect_audio($('body')); 14 } 15 16 17 18 /* Toggle the player */ 19 20 $('body').on('click', '.meks-ap-toggle', function(e) { 21 e.preventDefault(); 22 $('.meks-ap').toggleClass('meks-ap-collapsed'); 23 }); 24 25 /* Hide volume button on mobile devices */ 26 var isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent); 27 if (isMobile) { 28 $('.meks-ap .mejs-volume-button').hide(); 29 } 30 31 }); 32 33 window.meks_ap_detect_audio = function(container) { 34 35 window.meks_ap_player_status = ''; 36 37 /* Detect first playable source and initialize the player */ 38 $.each(meks_ap_settings.selectors, function(selector, item) { 39 40 if (!container.find(selector).length) { 41 return; 42 } 43 44 var source = ''; 45 46 if (selector == 'iframe') { 47 48 // var elements_to_check = Array.from( item.match ); 49 // elements_to_check = elements_to_check.join( ',' ); 50 var type = ''; 51 52 item.match.forEach(function(element, item){ 53 var found = container.find( element ); 54 if ( found.length ) { 55 source = found; 56 type = element; 57 return; 58 } 59 return; 60 }) 61 62 if ( source == '' || source == undefined ) { 63 return 64 } 65 66 source = source.first(); 67 68 type = type.match(/'(.*\.)/); 69 if ( type != null ) { 70 item.type = type[1].slice( 0, (type[1].length - 1) ); 71 } 72 73 item.type += ' custom'; 74 75 } else { 76 77 if (item.element == 'self') { 78 source = container.find(selector).first(); 79 } else { 80 source = container.find(selector).first().hide().find(item.element); 81 } 82 } 83 84 85 if (item.type == 'audio') { 86 window.meks_ap_player_status = 'audio'; 87 } else if (item.type == 'custom') { 88 window.meks_ap_player_status = 'custom'; 89 } else { 90 window.meks_ap_player_status = item.type; 91 } 92 93 window.meks_ap_player_init(source); 94 95 return false; 96 97 }); 98 99 100 }; 101 102 103 window.meks_ap_player_init = function(source) { 104 105 source.appendTo('.meks-ap-player').attr('id', 'meks-ap-player-source').attr('preload', 'auto').attr('width', '').attr('height', '').removeClass(); 106 107 var player = ''; 108 109 if ($('.meks-ap-player audio').length) { 110 111 player = new MediaElementPlayer('meks-ap-player-source', { 112 'classPrefix': 'mejs-', 113 'isVideo': false, 114 'setDimensions': false, 115 'alwaysShowControls': true, 116 'audioVolume': 'vertical', 117 'startVolume': meks_ap_settings.player.volume, 118 'skipBackInterval': 15, 119 'jumpForwardInterval': 15, 120 'timeAndDurationSeparator': '<span> / </span>', 121 'features': Array.from(meks_ap_settings.player.controls), 122 'speeds': ['2', '1.5', '1.25', '0.75'], 123 'defaultSpeed': '1', 124 success: function(mediaElement, originalNode, instance) { 125 126 mediaElement.addEventListener('ended', function(e) { 127 $(document).trigger('meks_ap_player_ended'); 128 }, false); 129 130 } 131 }); 132 133 } 134 135 window.meks_ap_player = player; 136 137 /* Player jump on specified time */ 138 $(document).on('click', '.meks-jump-player', function() { 139 140 var $this = $(this); 141 var minutes = $this.data('minutes') * 60 * 1000; 142 var seconds = $this.data('seconds') * 1000; 143 144 var total = minutes + seconds; 145 total = Number(total / 1000).toFixed(3); 146 147 window.meks_ap_player.media.setCurrentTime( Math.min( player.media.duration, total )); 148 149 // paly 150 if ( window.meks_ap_player.media.getPaused() ) { 151 window.meks_ap_player.media.play(); 152 } 153 154 // marker play functionality when player is 100% ready 155 var playerInterval = setInterval(() => { 156 if (window.meks_ap_player.media.getReadyState() === 4 ) { 157 $('body').find('#meks-ap-player .mejs-playpause-button').trigger('click'); 158 window.meks_ap_player.media.play(); 159 clearInterval(playerInterval); 160 } 161 }, 500); 162 163 }); 164 165 $(document).trigger('meks_ap_player_loaded'); 166 }; 167 168 169 170 171})(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.