1/* Alex Player v1.40, Author: Alex Zhyrytovskyi, 2019-2024. URL: http://alex.player.x10.name/ */ 2(window.jQuery || mediaUI)(function() { 3 var $ = /*window.jQuery || */mediaUI; 4 var ui = mediaUI; 5 var instances = {}; 6 var instancesRendered = {}; 7 8 function trim(str) { 9 return String(str || '').trim(); 10 } 11 12 function getInstance(data, api) { 13 var url = data['file'] || data['stream']; 14 15 if (!instances.hasOwnProperty(url)) { 16 var instance = mediaEngine({ 17 'api': api 18 }); 19 instances[url] = instance; 20 return instance; 21 } 22 23 return instances[url]; 24 } 25 26 function tryRender(player, data) { 27 var url = data['file'] || data['stream']; 28 if (!url || instancesRendered.hasOwnProperty(url)) 29 return; 30 31 if (data['file']) 32 player.renderFile(url); 33 else 34 player.renderStream(url, data['title']); 35 36 instancesRendered[url] = true; 37 } 38 39 $(document).findAll('.wp-alex-media-player').each(function() { 40 var $owner = $(this); 41 var data = JSON.parse($owner.attr('data-json')); 42 var player = getInstance(data, data['api']); 43 44 var options = { 45 'player': player 46 }; 47 48 if (data.hasOwnProperty('mode')) 49 options['mode'] = data['mode']; 50 51 if (data.hasOwnProperty('style')) 52 options['style'] = data['style']; 53 54 if (data.hasOwnProperty('color')) 55 options['lineColor'] = data['color']; 56 57 if (data.hasOwnProperty('max_width')) // !Deprecated 58 options['width'] = data['max_width']; 59 60 if (data.hasOwnProperty('width')) 61 options['width'] = data['width']; 62 63 if (data.hasOwnProperty('vis_type')) 64 options['visType'] = data['vis_type']; 65 66 if (data.hasOwnProperty('equalizer_color')) 67 options['equalizerColor'] = data['equalizer_color']; 68 69 if (data.hasOwnProperty('looped')) 70 player.setLooped(data['looped']); 71 72 if (data.hasOwnProperty('show_video')) 73 options['showVideo'] = data['show_video']; 74 75 if (data.hasOwnProperty('spectrum')) { 76 var parts = String(data['spectrum']).split(' '); 77 if (parts.length == 2) { 78 options['spectrumEnabled'] = true; 79 options['spectrumColor'] = parts[0]; 80 options['spectrumHeight'] = parts[1]; 81 } 82 else if (parts.length == 1) { 83 options['spectrumEnabled'] = true; 84 options['spectrumColor'] = parts[0]; 85 } 86 } 87 88 if (data.hasOwnProperty('hide_play_button')) 89 options['hidePlayButton'] = data['hide_play_button']; 90 91 if (data.hasOwnProperty('autoplay')) // !Experimental 92 player.setAutoplay(data['autoplay']); 93 94 if (data.hasOwnProperty('looped')) 95 player.setLooped(data['looped']); 96 97 if (data.hasOwnProperty('cookie_name')) 98 options['cookieName'] = data['cookie_name']; 99 100 if (data.hasOwnProperty('position')) 101 options['position'] = data['position']; 102 103 if (data.hasOwnProperty('radio_station')) { 104 var stationList = []; 105 $owner.findAll('.wp-alex-radio-station').each(function() { 106 var item = JSON.parse($(this).attr('data-json')); 107 var station = {}; 108 station['name'] = item['name']; 109 station['url'] = item['url']; 110 if (item['type'] == 'icecast') { 111 station['type'] = 'icecast'; 112 station['icecasturl'] = item['icecasturl']; 113 station['interval'] = item['interval']; 114 } 115 stationList.push(station); 116 }); 117 118 if (ui.toInt(data['radio_station']) > 0) 119 player.renderRadio(data['radio_station'], stationList, true); 120 else 121 player.renderRadio(0, stationList, true); 122 } 123 else { 124 tryRender(player, data); 125 } 126 127 var $playlist = $('<div>'); 128 $playlist.insertAfter($owner); 129 $playlist.UIMediaPlayer(options); 130 $owner.hide(); 131 }); 132 133 $(document).findAll('.wp-alex-wavesurfer').each(function() { 134 var $this = $(this); 135 var data = JSON.parse($this.attr('data-json')); 136 var player = getInstance(data, data['api']); 137 138 var options = { 139 'player': player 140 }; 141 142 if (data.hasOwnProperty('color')) 143 options['mainColor'] = data['color']; 144 145 if (data.hasOwnProperty('color2')) 146 options['secondaryColor'] = data['color2']; 147 148 if (data.hasOwnProperty('cached')) 149 options['cachedWave'] = data['cached']; 150 151 if (data.hasOwnProperty('autoplay')) // !Experimental 152 player.setAutoplay(data['autoplay']); 153 154 if (data.hasOwnProperty('looped')) 155 player.setLooped(data['looped']); 156 157 if (data.hasOwnProperty('selection_enabled'))
158 options['selectionEnabled'] = data['selection_enabled']; 159 160 if (data.hasOwnProperty('selection_color')) 161 options['selectionColor'] = data['selection_color']; 162 163 if (data.hasOwnProperty('selection_download')) 164 options['selectionDownloadEnabled'] = data['selection_download']; 165 166 if (data.hasOwnProperty('channels')) 167 options['channels'] = data['channels']; 168 169 if (data.hasOwnProperty('hide_play_button')) 170 options['hidePlayButton'] = data['hide_play_button']; 171 172 $this.UIWaveSurfer(options); 173 tryRender(player, data); 174 }); 175 176 $(document).findAll('.wp-alex-waveform').each(function() { 177 var $this = $(this); 178 var data = JSON.parse($this.attr('data-json')); 179 var options = {}; 180 181 if (data.hasOwnProperty('file')) 182 options['player'] = getInstance(data); 183 184 if (data.hasOwnProperty('color')) 185 options['color'] = data['color']; 186 187 if (data.hasOwnProperty('opacity')) 188 options['opacity'] = data['opacity']; 189 190 if (data.hasOwnProperty('height')) 191 options['height'] = data['height']; 192 193 var owner = data['owner']; 194 if (owner) { 195 options['ghostMode'] = true; 196 options['ghostTop'] = data['owner_top']; 197 $(owner).UIWaveform(options); 198 } 199 else 200 $this.UIWaveform(options); 201 }); 202 203 $(document).findAll('.wp-alex-play-button').each(function() { 204 var $this = $(this); 205 var data = JSON.parse($this.attr('data-json')); 206 var player = getInstance(data); 207 var options = { 208 'player': player 209 }; 210 211 if (data.hasOwnProperty('size')) { 212 var size = trim(data['size']).split(' '); 213 options['size'] = size[0]; 214 if (size.length > 1) 215 options['outerSize'] = size[1]; 216 } 217 218 if (data.hasOwnProperty('color')) { 219 var colorParts = trim(data['color']).split(' '); 220 options['color'] = colorParts[0]; 221 if (colorParts.length > 1) 222 options['hoverColor'] = colorParts[1]; 223 if (colorParts.length > 2) 224 options['hoverDuration'] = colorParts[2]; 225 } 226 227 if (data.hasOwnProperty('id')) 228 options['id'] = data['id']; 229 230 if (data.hasOwnProperty('autoplay')) // !Experimental 231 player.setAutoplay(data['autoplay']); 232 233 if (data.hasOwnProperty('looped')) 234 player.setLooped(data['looped']); 235 236 var owner = data['owner']; 237 if (owner) 238 $(owner).UIPlayButton(options); 239 else 240 $this.UIPlayButton(options); 241 242 tryRender(player, data); 243 }); 244 245 $(document).findAll('.wp-alex-circular-spectrum').each(function() { 246 var data = JSON.parse($(this).attr('data-json')); 247 248 var size = trim(data['size']).split(' '); 249 if (size.length != 2) 250 return; 251 252 var bars = trim(data['bars']).split(' '); 253 if (bars.length != 5) 254 return; 255 256 var options = { 257 'innerSize': size[0], 258 'outerSize': size[1], 259 'barCount': bars[0], 260 'barSize': bars[1], 261 'barColor': bars[2], 262 'barSpeed': bars[3], 263 'multiplier': bars[4] 264 }; 265 266 if (data.hasOwnProperty('peaks')) { 267 var peaks = trim(data['peaks']).split(' '); 268 if (peaks.length == 2) { 269 options['showPeaks'] = true; 270 options['peakColor'] = peaks[0]; 271 options['peakSpeed'] = peaks[1]; 272 } 273 } 274 275 if (data.hasOwnProperty('opacity')) 276 options['opacity'] = data['opacity']; 277 278 var ownerSelector = data['owner']; 279 $(ownerSelector).UICircularSpectrum(options); 280 }); 281 282 $(document).findAll('.wp-alex-equalizer').each(function() { 283 var data = JSON.parse($(this).attr('data-json')); 284 var player = getInstance(data); 285 286 var options = { 287 'player': player 288 }; 289 290 if (data.hasOwnProperty('color')) 291 options['color'] = data['color']; 292 293 if (data.hasOwnProperty('cookie_name')) 294 options['cookieName'] = data['cookie_name']; 295 296 $(this).UIEqualizer(options); 297 }); 298 299 $(document).findAll('.wp-alex-playlist').each(function() { 300 var $owner = $(this); 301 var data = JSON.parse($owner.attr('data-json')); 302 var player = mediaEngine.instances[0]; 303 304 var options = { 305 'player': player 306 }; 307 308 var items = []; 309 $owner.findAll('.wp-alex-playlist-item').each(function() { 310 var item = JSON.parse($(this).attr('data-json')); 311 items.push({ 312 'title': item['title'], 313 'url': item['url'] 314 }); 315 }); 316 options['items'] = items; 317 318 var $playlist = $('<div>'); 319 $playlist.insertAfter($owner); 320 $playlist.UIPlaylist(options); 321 $owner.hide(); 322 }); 323});
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.