[ Index ] |
PHP Cross Reference of WordPress |
[Summary view] [Print] [Text view]
1 /*! 2 * MediaElement.js 3 * http://www.mediaelementjs.com/ 4 * 5 * Wrapper that mimics native HTML5 MediaElement (audio and video) 6 * using a variety of technologies (pure JavaScript, Flash, iframe) 7 * 8 * Copyright 2010-2017, John Dyer (http://j.hn/) 9 * License: MIT 10 * 11 */(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(_dereq_,module,exports){ 12 'use strict'; 13 14 var FacebookApi = { 15 16 promise: null, 17 18 load: function load(settings) { 19 20 if (typeof FB !== 'undefined') { 21 FacebookApi._createPlayer(settings); 22 } else { 23 FacebookApi.promise = FacebookApi.promise || mejs.Utils.loadScript('https://connect.facebook.net/' + settings.options.lang + '/sdk.js'); 24 FacebookApi.promise.then(function () { 25 FB.init(settings.options); 26 27 setTimeout(function () { 28 FacebookApi._createPlayer(settings); 29 }, 50); 30 }); 31 } 32 }, 33 34 _createPlayer: function _createPlayer(settings) { 35 window['__ready__' + settings.id](); 36 } 37 }; 38 var FacebookRenderer = { 39 name: 'facebook', 40 options: { 41 prefix: 'facebook', 42 facebook: { 43 appId: '', 44 xfbml: true, 45 version: 'v2.10', 46 lang: 'en_US' 47 } 48 }, 49 50 canPlayType: function canPlayType(type) { 51 return ~['video/facebook', 'video/x-facebook'].indexOf(type.toLowerCase()); 52 }, 53 54 create: function create(mediaElement, options, mediaFiles) { 55 var apiStack = [], 56 fb = {}, 57 readyState = 4; 58 59 var hasStartedPlaying = false, 60 paused = true, 61 ended = false, 62 fbPlayer = null, 63 src = '', 64 poster = '', 65 autoplay = mediaElement.originalNode.autoplay; 66 67 fb.options = options; 68 fb.id = mediaElement.id + '_' + options.prefix; 69 fb.mediaElement = mediaElement; 70 71 if (mejs.Features.isiPhone && mediaElement.originalNode.getAttribute('poster')) { 72 poster = mediaElement.originalNode.getAttribute('poster'); 73 mediaElement.originalNode.removeAttribute('poster'); 74 } 75 76 var props = mejs.html5media.properties, 77 assignGettersSetters = function assignGettersSetters(propName) { 78 79 var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 80 81 fb['get' + capName] = function () { 82 83 if (fbPlayer !== null) { 84 var value = null; 85 86 switch (propName) { 87 case 'currentTime': 88 return fbPlayer.getCurrentPosition(); 89 case 'duration': 90 return fbPlayer.getDuration(); 91 case 'volume': 92 return fbPlayer.getVolume(); 93 case 'paused': 94 return paused; 95 case 'ended': 96 return ended; 97 case 'muted': 98 return fbPlayer.isMuted(); 99 case 'buffered': 100 return { 101 start: function start() { 102 return 0; 103 }, 104 end: function end() { 105 return 0; 106 }, 107 length: 1 108 }; 109 case 'src': 110 return src; 111 case 'readyState': 112 return readyState; 113 } 114 115 return value; 116 } else { 117 return null; 118 } 119 }; 120 121 fb['set' + capName] = function (value) { 122 123 if (fbPlayer !== null) { 124 125 switch (propName) { 126 case 'src': 127 var url = typeof value === 'string' ? value : value[0].src; 128 src = url; 129 130 fbContainer.remove(); 131 fbContainer = document.createElement('div'); 132 fbContainer.id = fb.id; 133 fbContainer.className = 'fb-video'; 134 fbContainer.setAttribute('data-href', url); 135 fbContainer.setAttribute('data-allowfullscreen', 'true'); 136 fbContainer.setAttribute('data-controls', 'false'); 137 138 mediaElement.originalNode.parentNode.insertBefore(fbContainer, mediaElement.originalNode); 139 mediaElement.originalNode.style.display = 'none'; 140 141 FacebookApi.load({ 142 lang: fb.options.lang, 143 id: fb.id 144 }); 145 146 FB.XFBML.parse(); 147 148 if (autoplay) { 149 fbPlayer.play(); 150 } 151 break; 152 case 'currentTime': 153 fbPlayer.seek(value); 154 break; 155 case 'muted': 156 if (value) { 157 fbPlayer.mute(); 158 } else { 159 fbPlayer.unmute(); 160 } 161 setTimeout(function () { 162 var event = mejs.Utils.createEvent('volumechange', fb); 163 mediaElement.dispatchEvent(event); 164 }, 50); 165 break; 166 case 'volume': 167 fbPlayer.setVolume(value); 168 setTimeout(function () { 169 var event = mejs.Utils.createEvent('volumechange', fb); 170 mediaElement.dispatchEvent(event); 171 }, 50); 172 break; 173 case 'readyState': 174 var event = mejs.Utils.createEvent('canplay', fb); 175 mediaElement.dispatchEvent(event); 176 break; 177 default: 178 179 break; 180 } 181 } else { 182 apiStack.push({ type: 'set', propName: propName, value: value }); 183 } 184 }; 185 }; 186 187 for (var i = 0, total = props.length; i < total; i++) { 188 assignGettersSetters(props[i]); 189 } 190 191 var methods = mejs.html5media.methods, 192 assignMethods = function assignMethods(methodName) { 193 fb[methodName] = function () { 194 if (fbPlayer !== null) { 195 switch (methodName) { 196 case 'play': 197 return fbPlayer.play(); 198 case 'pause': 199 return fbPlayer.pause(); 200 case 'load': 201 return null; 202 } 203 } else { 204 apiStack.push({ type: 'call', methodName: methodName }); 205 } 206 }; 207 }; 208 209 for (var _i = 0, _total = methods.length; _i < _total; _i++) { 210 assignMethods(methods[_i]); 211 } 212 213 function assignEvents(events) { 214 for (var _i2 = 0, _total2 = events.length; _i2 < _total2; _i2++) { 215 var event = mejs.Utils.createEvent(events[_i2], fb); 216 mediaElement.dispatchEvent(event); 217 } 218 } 219 220 window['__ready__' + fb.id] = function () { 221 FB.Event.subscribe('xfbml.ready', function (msg) { 222 if (msg.type === 'video' && fb.id === msg.id) { 223 mediaElement.fbPlayer = fbPlayer = msg.instance; 224 225 var fbIframe = document.getElementById(fb.id), 226 width = fbIframe.offsetWidth, 227 height = fbIframe.offsetHeight, 228 events = ['mouseover', 'mouseout'], 229 assignIframeEvents = function assignIframeEvents(e) { 230 var event = mejs.Utils.createEvent(e.type, fb); 231 mediaElement.dispatchEvent(event); 232 }; 233 234 fb.setSize(width, height); 235 if (!mediaElement.originalNode.muted) { 236 fbPlayer.unmute(); 237 } 238 239 if (autoplay) { 240 fbPlayer.play(); 241 } 242 243 for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) { 244 fbIframe.addEventListener(events[_i3], assignIframeEvents); 245 } 246 247 fb.eventHandler = {}; 248 249 var fbEvents = ['startedPlaying', 'paused', 'finishedPlaying', 'startedBuffering', 'finishedBuffering']; 250 for (var _i4 = 0, _total4 = fbEvents.length; _i4 < _total4; _i4++) { 251 var event = fbEvents[_i4], 252 handler = fb.eventHandler[event]; 253 if (handler !== undefined && handler !== null && !mejs.Utils.isObjectEmpty(handler) && typeof handler.removeListener === 'function') { 254 handler.removeListener(event); 255 } 256 } 257 258 if (apiStack.length) { 259 for (var _i5 = 0, _total5 = apiStack.length; _i5 < _total5; _i5++) { 260 var stackItem = apiStack[_i5]; 261 262 if (stackItem.type === 'set') { 263 var propName = stackItem.propName, 264 capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1); 265 266 fb['set' + capName](stackItem.value); 267 } else if (stackItem.type === 'call') { 268 fb[stackItem.methodName](); 269 } 270 } 271 } 272 273 assignEvents(['rendererready', 'loadeddata', 'canplay', 'progress', 'loadedmetadata', 'timeupdate']); 274 275 var timer = void 0; 276 277 fb.eventHandler.startedPlaying = fbPlayer.subscribe('startedPlaying', function () { 278 if (!hasStartedPlaying) { 279 hasStartedPlaying = true; 280 } 281 paused = false; 282 ended = false; 283 assignEvents(['play', 'playing', 'timeupdate']); 284 285 timer = setInterval(function () { 286 fbPlayer.getCurrentPosition(); 287 assignEvents(['timeupdate']); 288 }, 250); 289 }); 290 fb.eventHandler.paused = fbPlayer.subscribe('paused', function () { 291 paused = true; 292 ended = false; 293 assignEvents(['pause']); 294 }); 295 fb.eventHandler.finishedPlaying = fbPlayer.subscribe('finishedPlaying', function () { 296 paused = true; 297 ended = true; 298 299 assignEvents(['ended']); 300 clearInterval(timer); 301 timer = null; 302 }); 303 fb.eventHandler.startedBuffering = fbPlayer.subscribe('startedBuffering', function () { 304 assignEvents(['progress', 'timeupdate']); 305 }); 306 fb.eventHandler.finishedBuffering = fbPlayer.subscribe('finishedBuffering', function () { 307 assignEvents(['progress', 'timeupdate']); 308 }); 309 } 310 }); 311 }; 312 313 src = mediaFiles[0].src; 314 var fbContainer = document.createElement('div'); 315 fbContainer.id = fb.id; 316 fbContainer.className = 'fb-video'; 317 fbContainer.setAttribute('data-href', src); 318 fbContainer.setAttribute('data-allowfullscreen', true); 319 fbContainer.setAttribute('data-controls', !!mediaElement.originalNode.controls); 320 mediaElement.originalNode.parentNode.insertBefore(fbContainer, mediaElement.originalNode); 321 mediaElement.originalNode.style.display = 'none'; 322 323 FacebookApi.load({ 324 options: fb.options.facebook, 325 id: fb.id 326 }); 327 328 fb.hide = function () { 329 fb.pause(); 330 if (fbPlayer) { 331 fbContainer.style.display = 'none'; 332 } 333 }; 334 fb.setSize = function (width) { 335 if (fbPlayer !== null && !isNaN(width)) { 336 fbContainer.style.width = width; 337 } 338 }; 339 fb.show = function () { 340 if (fbPlayer) { 341 fbContainer.style.display = ''; 342 } 343 }; 344 345 fb.destroy = function () { 346 if (poster) { 347 mediaElement.originalNode.setAttribute('poster', poster); 348 } 349 }; 350 351 return fb; 352 } 353 }; 354 355 mejs.Utils.typeChecks.push(function (url) { 356 return ~url.toLowerCase().indexOf('//www.facebook') ? 'video/x-facebook' : null; 357 }); 358 359 mejs.Renderers.add(FacebookRenderer); 360 361 },{}]},{},[1]);
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Tue Jan 16 01:00:03 2018 | Cross-referenced by PHPXref 0.7.1 |