[ Index ]

PHP Cross Reference of WordPress

title

Body

[close]

/wp-includes/js/mediaelement/renderers/ -> dailymotion.js (source)

   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 DailyMotionApi = {
  15      isSDKStarted: false,
  16  
  17      isSDKLoaded: false,
  18  
  19      iframeQueue: [],
  20  
  21      enqueueIframe: function enqueueIframe(settings) {
  22  
  23          if (DailyMotionApi.isLoaded) {
  24              DailyMotionApi.createIframe(settings);
  25          } else {
  26              DailyMotionApi.loadIframeApi();
  27              DailyMotionApi.iframeQueue.push(settings);
  28          }
  29      },
  30  
  31      loadIframeApi: function loadIframeApi() {
  32          if (!DailyMotionApi.isSDKStarted) {
  33              mejs.Utils.loadScript('https://api.dmcdn.net/all.js');
  34              DailyMotionApi.isSDKStarted = true;
  35          }
  36      },
  37  
  38      apiReady: function apiReady() {
  39  
  40          DailyMotionApi.isLoaded = true;
  41          DailyMotionApi.isSDKLoaded = true;
  42  
  43          while (DailyMotionApi.iframeQueue.length > 0) {
  44              var settings = DailyMotionApi.iframeQueue.pop();
  45  
  46              DM.init({
  47                  apiKey: settings.apiKey,
  48                  status: settings.status,
  49                  cookie: settings.cookie
  50              });
  51  
  52              DailyMotionApi.createIframe(settings);
  53          }
  54      },
  55  
  56      createIframe: function createIframe(settings) {
  57  
  58          var player = DM.player(settings.container, {
  59              height: settings.height || '100%',
  60              width: settings.width || '100%',
  61              video: settings.videoId,
  62              params: Object.assign({ api: true }, settings.params),
  63              origin: location.host
  64          });
  65  
  66          player.addEventListener('apiready', function () {
  67              window['__ready__' + settings.id](player, { paused: true, ended: false });
  68          });
  69      },
  70  
  71      getDailyMotionId: function getDailyMotionId(url) {
  72          var parts = url.split('/'),
  73              lastPart = parts[parts.length - 1],
  74              dashParts = lastPart.split('_');
  75  
  76          return dashParts[0];
  77      }
  78  };
  79  
  80  var DailyMotionIframeRenderer = {
  81      name: 'dailymotion_iframe',
  82      options: {
  83          prefix: 'dailymotion_iframe',
  84          dailymotion: {
  85              width: '100%',
  86              height: '100%',
  87              params: {
  88                  autoplay: false,
  89                  chromeless: 1,
  90                  info: 0,
  91                  logo: 0,
  92                  related: 0
  93              },
  94              apiKey: null,
  95              status: true,
  96              cookie: true
  97          }
  98      },
  99  
 100      canPlayType: function canPlayType(type) {
 101          return ~['video/dailymotion', 'video/x-dailymotion'].indexOf(type.toLowerCase());
 102      },
 103  
 104      create: function create(mediaElement, options, mediaFiles) {
 105  
 106          var dm = {},
 107              apiStack = [],
 108              readyState = 4;
 109  
 110          var events = void 0,
 111              dmPlayer = null,
 112              dmIframe = null,
 113              muted = mediaElement.originalNode.muted;
 114  
 115          dm.options = options;
 116          dm.id = mediaElement.id + '_' + options.prefix;
 117          dm.mediaElement = mediaElement;
 118  
 119          var props = mejs.html5media.properties,
 120              assignGettersSetters = function assignGettersSetters(propName) {
 121  
 122              var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 123  
 124              dm['get' + capName] = function () {
 125                  if (dmPlayer !== null) {
 126                      var value = null;
 127  
 128                      switch (propName) {
 129                          case 'currentTime':
 130                              return dmPlayer.currentTime;
 131                          case 'duration':
 132                              return isNaN(dmPlayer.duration) ? 0 : dmPlayer.duration;
 133                          case 'volume':
 134                              return dmPlayer.volume;
 135                          case 'paused':
 136                              return dmPlayer.paused;
 137                          case 'ended':
 138                              return dmPlayer.ended;
 139                          case 'muted':
 140                              muted = dmPlayer.muted;
 141                              return muted;
 142                          case 'buffered':
 143                              var percentLoaded = dmPlayer.bufferedTime,
 144                                  duration = dmPlayer.duration;
 145                              return {
 146                                  start: function start() {
 147                                      return 0;
 148                                  },
 149                                  end: function end() {
 150                                      return percentLoaded / duration;
 151                                  },
 152                                  length: 1
 153                              };
 154                          case 'src':
 155                              return mediaElement.originalNode.getAttribute('src');
 156                          case 'readyState':
 157                              return readyState;
 158                      }
 159  
 160                      return value;
 161                  } else {
 162                      return null;
 163                  }
 164              };
 165  
 166              dm['set' + capName] = function (value) {
 167                  if (dmPlayer !== null) {
 168                      switch (propName) {
 169                          case 'src':
 170                              var url = typeof value === 'string' ? value : value[0].src;
 171                              dmPlayer.load(DailyMotionApi.getDailyMotionId(url));
 172                              break;
 173                          case 'currentTime':
 174                              dmPlayer.seek(value);
 175                              break;
 176                          case 'muted':
 177                              if (value === true) {
 178                                  dmPlayer.setVolume(0);
 179                              }
 180                              dmPlayer.setMuted(value);
 181                              muted = value;
 182                              setTimeout(function () {
 183                                  var event = mejs.Utils.createEvent('volumechange', dm);
 184                                  mediaElement.dispatchEvent(event);
 185                              }, 50);
 186                              break;
 187                          case 'volume':
 188                              dmPlayer.setVolume(value);
 189                              if (value === 0 && !dmPlayer.muted) {
 190                                  dmPlayer.setMuted(true);
 191                                  muted = true;
 192                              } else if (value > 0 && dmPlayer.muted) {
 193                                  dmPlayer.setMuted(false);
 194                                  muted = false;
 195                              }
 196  
 197                              setTimeout(function () {
 198                                  var event = mejs.Utils.createEvent('volumechange', dm);
 199                                  mediaElement.dispatchEvent(event);
 200                              }, 50);
 201                              break;
 202                          case 'readyState':
 203                              var event = mejs.Utils.createEvent('canplay', dm);
 204                              mediaElement.dispatchEvent(event);
 205                              break;
 206                          default:
 207                              
 208                              break;
 209                      }
 210                  } else {
 211                      apiStack.push({ type: 'set', propName: propName, value: value });
 212                  }
 213              };
 214          };
 215  
 216          for (var i = 0, total = props.length; i < total; i++) {
 217              assignGettersSetters(props[i]);
 218          }
 219  
 220          var methods = mejs.html5media.methods,
 221              assignMethods = function assignMethods(methodName) {
 222              dm[methodName] = function () {
 223                  if (dmPlayer !== null) {
 224                      switch (methodName) {
 225                          case 'play':
 226                              return dmPlayer.play();
 227                          case 'pause':
 228                              return dmPlayer.pause();
 229                          case 'load':
 230                              return null;
 231                      }
 232                  } else {
 233                      apiStack.push({ type: 'call', methodName: methodName });
 234                  }
 235              };
 236          };
 237  
 238          for (var _i = 0, _total = methods.length; _i < _total; _i++) {
 239              assignMethods(methods[_i]);
 240          }
 241  
 242          window['__ready__' + dm.id] = function (_dmPlayer) {
 243  
 244              mediaElement.dmPlayer = dmPlayer = _dmPlayer;
 245  
 246              if (apiStack.length) {
 247                  for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
 248  
 249                      var stackItem = apiStack[_i2];
 250  
 251                      if (stackItem.type === 'set') {
 252                          var propName = stackItem.propName,
 253                              capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
 254  
 255                          dm['set' + capName](stackItem.value);
 256                      } else if (stackItem.type === 'call') {
 257                          dm[stackItem.methodName]();
 258                      }
 259                  }
 260              }
 261  
 262              dmIframe = document.getElementById(dm.id);
 263  
 264              events = ['mouseover', 'mouseout'];
 265              var assignEvents = function assignEvents(e) {
 266                  var event = mejs.Utils.createEvent(e.type, dm);
 267                  mediaElement.dispatchEvent(event);
 268              };
 269  
 270              for (var _i3 = 0, _total3 = events.length; _i3 < _total3; _i3++) {
 271                  dmIframe.addEventListener(events[_i3], assignEvents, false);
 272              }
 273  
 274              if (mediaElement.originalNode.muted) {
 275                  dmPlayer.setVolume(0);
 276                  dmPlayer.setMuted(true);
 277              } else {
 278                  dmPlayer.setVolume(dmPlayer.volume);
 279                  dmPlayer.setMuted(false);
 280              }
 281  
 282              events = mejs.html5media.events;
 283              events = events.concat(['click', 'mouseover', 'mouseout']);
 284              var assignNativeEvents = function assignNativeEvents(eventName) {
 285                  if (eventName !== 'ended') {
 286                      dmPlayer.addEventListener(eventName, function (e) {
 287                          var event = mejs.Utils.createEvent(e.type, dm);
 288                          mediaElement.dispatchEvent(event);
 289                      });
 290                  }
 291              };
 292  
 293              for (var _i4 = 0, _total4 = events.length; _i4 < _total4; _i4++) {
 294                  assignNativeEvents(events[_i4]);
 295              }
 296  
 297              dmPlayer.addEventListener('ad_start', function () {
 298                  var event = mejs.Utils.createEvent('play', dm);
 299                  mediaElement.dispatchEvent(event);
 300  
 301                  event = mejs.Utils.createEvent('progress', dm);
 302                  mediaElement.dispatchEvent(event);
 303  
 304                  event = mejs.Utils.createEvent('timeupdate', dm);
 305                  mediaElement.dispatchEvent(event);
 306              });
 307              dmPlayer.addEventListener('ad_timeupdate', function () {
 308                  var event = mejs.Utils.createEvent('timeupdate', dm);
 309                  mediaElement.dispatchEvent(event);
 310              });
 311              dmPlayer.addEventListener('ad_pause', function () {
 312                  var event = mejs.Utils.createEvent('pause', dm);
 313                  mediaElement.dispatchEvent(event);
 314              });
 315              dmPlayer.addEventListener('start', function () {
 316                  if (dmPlayer.muted) {
 317                      var event = mejs.Utils.createEvent('volumechange', dm);
 318                      mediaElement.dispatchEvent(event);
 319                  }
 320              });
 321              dmPlayer.addEventListener('video_start', function () {
 322                  var event = mejs.Utils.createEvent('play', dm);
 323                  mediaElement.dispatchEvent(event);
 324  
 325                  var playingEvent = mejs.Utils.createEvent('playing', dm);
 326                  mediaElement.dispatchEvent(playingEvent);
 327              });
 328              dmPlayer.addEventListener('ad_timeupdate', function () {
 329                  var event = mejs.Utils.createEvent('timeupdate', dm);
 330                  mediaElement.dispatchEvent(event);
 331              });
 332              dmPlayer.addEventListener('video_end', function () {
 333                  var event = mejs.Utils.createEvent('ended', dm);
 334                  mediaElement.dispatchEvent(event);
 335  
 336                  if (mediaElement.originalNode.getAttribute('loop')) {
 337                      dmPlayer.play();
 338                  }
 339              });
 340  
 341              var initEvents = ['rendererready', 'loadedmetadata', 'loadeddata', 'canplay'];
 342  
 343              for (var _i5 = 0, _total5 = initEvents.length; _i5 < _total5; _i5++) {
 344                  var event = mejs.Utils.createEvent(initEvents[_i5], dm);
 345                  mediaElement.dispatchEvent(event);
 346              }
 347          };
 348  
 349          var dmContainer = document.createElement('div');
 350          dmContainer.id = dm.id;
 351          mediaElement.appendChild(dmContainer);
 352          if (mediaElement.originalNode) {
 353              dmContainer.style.width = mediaElement.originalNode.style.width;
 354              dmContainer.style.height = mediaElement.originalNode.style.height;
 355          }
 356          mediaElement.originalNode.style.display = 'none';
 357  
 358          var videoId = DailyMotionApi.getDailyMotionId(mediaFiles[0].src),
 359              dmSettings = {
 360              id: dm.id,
 361              container: dmContainer,
 362              videoId: videoId
 363          };
 364  
 365          dmSettings.params = Object.assign({}, dm.options.dailymotion);
 366  
 367          dmSettings.params.controls = !!mediaElement.originalNode.controls;
 368  
 369          if (mediaElement.originalNode.autoplay) {
 370              dmSettings.params.autoplay = true;
 371          }
 372          if (mediaElement.originalNode.muted) {
 373              dmSettings.params.mute = true;
 374          }
 375          dmSettings.params.api = '1';
 376  
 377          DailyMotionApi.enqueueIframe(dmSettings);
 378  
 379          dm.hide = function () {
 380              dm.pause();
 381              if (dmIframe) {
 382                  dmIframe.style.display = 'none';
 383              }
 384          };
 385          dm.show = function () {
 386              if (dmIframe) {
 387                  dmIframe.style.display = '';
 388              }
 389          };
 390          dm.setSize = function (width, height) {
 391              if (dmIframe) {
 392                  dmIframe.width = width;
 393                  dmIframe.height = height;
 394              }
 395          };
 396          dm.destroy = function () {
 397              dmPlayer.destroy();
 398          };
 399  
 400          return dm;
 401      }
 402  };
 403  
 404  mejs.Utils.typeChecks.push(function (url) {
 405      return (/\/\/((www\.)?dailymotion\.com|dai\.ly)/i.test(url) ? 'video/x-dailymotion' : null
 406      );
 407  });
 408  
 409  window.dmAsyncInit = function () {
 410      DailyMotionApi.apiReady();
 411  };
 412  
 413  mejs.Renderers.add(DailyMotionIframeRenderer);
 414  
 415  },{}]},{},[1]);


Generated: Tue Jan 16 01:00:03 2018 Cross-referenced by PHPXref 0.7.1