mirror of https://github.com/jitsi/jitsi-meet
parent
81cb9baa21
commit
6945aa802c
After Width: | Height: | Size: 8.4 KiB |
@ -0,0 +1,259 @@ |
||||
(function() { |
||||
"use strict"; |
||||
var __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; |
||||
|
||||
window.PreziPlayer = (function() { |
||||
|
||||
PreziPlayer.API_VERSION = 1; |
||||
PreziPlayer.CURRENT_STEP = 'currentStep'; |
||||
PreziPlayer.CURRENT_OBJECT = 'currentObject'; |
||||
PreziPlayer.STATUS_LOADING = 'loading'; |
||||
PreziPlayer.STATUS_READY = 'ready'; |
||||
PreziPlayer.STATUS_CONTENT_READY = 'contentready'; |
||||
PreziPlayer.EVENT_CURRENT_STEP = "currentStepChange"; |
||||
PreziPlayer.EVENT_CURRENT_OBJECT = "currentObjectChange"; |
||||
PreziPlayer.EVENT_STATUS = "statusChange"; |
||||
PreziPlayer.EVENT_PLAYING = "isAutoPlayingChange"; |
||||
PreziPlayer.EVENT_IS_MOVING = "isMovingChange"; |
||||
PreziPlayer.domain = "http://prezi.com"; |
||||
PreziPlayer.path = "/player/"; |
||||
PreziPlayer.players = {}; |
||||
PreziPlayer.binded_methods = ['changesHandler']; |
||||
|
||||
PreziPlayer.createMultiplePlayers = function(optionArray){ |
||||
for(var i=0; i<optionArray.length; i++) { |
||||
var optionSet = optionArray[i]; |
||||
new PreziPlayer(optionSet.id, optionSet); |
||||
}; |
||||
}; |
||||
|
||||
PreziPlayer.messageReceived = function(event){ |
||||
var message, item, player; |
||||
try { |
||||
message = JSON.parse(event.data); |
||||
} catch (e) {} |
||||
if (message.id && (player = PreziPlayer.players[message.id])){ |
||||
if (player.options.debug === true) { |
||||
if (console && console.log) console.log('received', message); |
||||
} |
||||
if (message.type === "changes"){ |
||||
player.changesHandler(message); |
||||
} |
||||
for (var i=0; i<player.callbacks.length; i++) { |
||||
item = player.callbacks[i]; |
||||
if (item && message.type === item.event){ |
||||
item.callback(message); |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
|
||||
function PreziPlayer(id, options) { |
||||
var params, paramString = "", _this = this; |
||||
if (PreziPlayer.players[id]){ |
||||
PreziPlayer.players[id].destroy(); |
||||
} |
||||
for(var i=0; i<PreziPlayer.binded_methods.length; i++) { |
||||
var method_name = PreziPlayer.binded_methods[i]; |
||||
_this[method_name] = __bind(_this[method_name], _this); |
||||
}; |
||||
options = options || {}; |
||||
this.options = options; |
||||
this.values = {'status': PreziPlayer.STATUS_LOADING}; |
||||
this.values[PreziPlayer.CURRENT_STEP] = 0; |
||||
this.values[PreziPlayer.CURRENT_OBJECT] = null; |
||||
this.callbacks = []; |
||||
this.id = id; |
||||
this.embedTo = document.getElementById(id); |
||||
if (!this.embedTo) { |
||||
throw "The element id is not available."; |
||||
} |
||||
this.iframe = document.createElement('iframe'); |
||||
params = [ |
||||
{ name: 'oid', value: options.preziId }, |
||||
{ name: 'explorable', value: options.explorable ? 1 : 0 }, |
||||
{ name: 'controls', value: options.controls ? 1 : 0 } |
||||
]; |
||||
for(var i=0; i<params.length; i++) { |
||||
var param = params[i]; |
||||
paramString += (i===0 ? "?" : "&") + param.name + "=" + param.value; |
||||
}; |
||||
this.iframe.src = PreziPlayer.domain + PreziPlayer.path + paramString; |
||||
this.iframe.frameBorder = 0; |
||||
this.iframe.scrolling = "no"; |
||||
this.iframe.width = options.width || 640; |
||||
this.iframe.height = options.height || 480; |
||||
this.embedTo.innerHTML = ''; |
||||
try { |
||||
this.embedTo.appendChild(this.iframe); |
||||
} |
||||
catch (err) { |
||||
console.log("CATCH ERROR"); |
||||
} |
||||
|
||||
|
||||
this.initPollInterval = setInterval(function(){ |
||||
_this.sendMessage({'action': 'init'}); |
||||
}, 200); |
||||
PreziPlayer.players[id] = this; |
||||
} |
||||
|
||||
PreziPlayer.prototype.changesHandler = function(message) { |
||||
var key, value, j, item; |
||||
if (this.initPollInterval) { |
||||
clearInterval(this.initPollInterval); |
||||
this.initPollInterval = false; |
||||
} |
||||
for (key in message.data) { |
||||
if (message.data.hasOwnProperty(key)){ |
||||
value = message.data[key]; |
||||
this.values[key] = value; |
||||
for (j=0; j<this.callbacks.length; j++) { |
||||
item = this.callbacks[j]; |
||||
if (item && item.event === key + "Change"){ |
||||
item.callback({type: item.event, value: value}); |
||||
} |
||||
} |
||||
} |
||||
} |
||||
}; |
||||
|
||||
PreziPlayer.prototype.destroy = function() { |
||||
if (this.initPollInterval) { |
||||
clearInterval(this.initPollInterval); |
||||
this.initPollInterval = false; |
||||
} |
||||
this.embedTo.innerHTML = ''; |
||||
}; |
||||
|
||||
PreziPlayer.prototype.sendMessage = function(message) { |
||||
if (this.options.debug === true) { |
||||
if (console && console.log) console.log('sent', message); |
||||
} |
||||
message.version = PreziPlayer.API_VERSION; |
||||
message.id = this.id; |
||||
return this.iframe.contentWindow.postMessage(JSON.stringify(message), '*'); |
||||
}; |
||||
|
||||
PreziPlayer.prototype.nextStep = /* nextStep is DEPRECATED */ |
||||
PreziPlayer.prototype.flyToNextStep = function() { |
||||
return this.sendMessage({ |
||||
'action': 'present', |
||||
'data': ['moveToNextStep'] |
||||
}); |
||||
}; |
||||
|
||||
PreziPlayer.prototype.previousStep = /* previousStep is DEPRECATED */ |
||||
PreziPlayer.prototype.flyToPreviousStep = function() { |
||||
return this.sendMessage({ |
||||
'action': 'present', |
||||
'data': ['moveToPrevStep'] |
||||
}); |
||||
}; |
||||
|
||||
PreziPlayer.prototype.toStep = /* toStep is DEPRECATED */ |
||||
PreziPlayer.prototype.flyToStep = function(step) { |
||||
return this.sendMessage({ |
||||
'action': 'present', |
||||
'data': ['moveToStep', step] |
||||
}); |
||||
}; |
||||
|
||||
PreziPlayer.prototype.toObject = /* toObject is DEPRECATED */ |
||||
PreziPlayer.prototype.flyToObject = function(objectId) { |
||||
return this.sendMessage({ |
||||
'action': 'present', |
||||
'data': ['moveToObject', objectId] |
||||
}); |
||||
}; |
||||
|
||||
PreziPlayer.prototype.play = function(defaultDelay) { |
||||
return this.sendMessage({ |
||||
'action': 'present', |
||||
'data': ['startAutoPlay', defaultDelay] |
||||
}); |
||||
}; |
||||
|
||||
PreziPlayer.prototype.stop = function() { |
||||
return this.sendMessage({ |
||||
'action': 'present', |
||||
'data': ['stopAutoPlay'] |
||||
}); |
||||
}; |
||||
|
||||
PreziPlayer.prototype.pause = function(defaultDelay) { |
||||
return this.sendMessage({ |
||||
'action': 'present', |
||||
'data': ['pauseAutoPlay', defaultDelay] |
||||
}); |
||||
}; |
||||
|
||||
PreziPlayer.prototype.getCurrentStep = function() { |
||||
return this.values.currentStep; |
||||
}; |
||||
|
||||
PreziPlayer.prototype.getCurrentObject = function() { |
||||
return this.values.currentObject; |
||||
}; |
||||
|
||||
PreziPlayer.prototype.getStatus = function() { |
||||
return this.values.status; |
||||
}; |
||||
|
||||
PreziPlayer.prototype.isPlaying = function() { |
||||
return this.values.isAutoPlaying; |
||||
}; |
||||
|
||||
PreziPlayer.prototype.getStepCount = function() { |
||||
return this.values.stepCount; |
||||
}; |
||||
|
||||
PreziPlayer.prototype.getTitle = function() { |
||||
return this.values.title; |
||||
}; |
||||
|
||||
PreziPlayer.prototype.setDimensions = function(dims) { |
||||
for (var parameter in dims) { |
||||
this.iframe[parameter] = dims[parameter]; |
||||
} |
||||
} |
||||
|
||||
PreziPlayer.prototype.getDimensions = function() { |
||||
return { |
||||
width: parseInt(this.iframe.width, 10), |
||||
height: parseInt(this.iframe.height, 10) |
||||
} |
||||
} |
||||
|
||||
PreziPlayer.prototype.on = function(event, callback) { |
||||
this.callbacks.push({ |
||||
event: event, |
||||
callback: callback |
||||
}); |
||||
}; |
||||
|
||||
PreziPlayer.prototype.off = function(event, callback) { |
||||
var j, item; |
||||
if (event === undefined) { |
||||
this.callbacks = []; |
||||
} |
||||
j = this.callbacks.length; |
||||
while (j--) { |
||||
item = this.callbacks[j]; |
||||
if (item && item.event === event && (callback === undefined || item.callback === callback)){ |
||||
this.callbacks.splice(j, 1); |
||||
} |
||||
} |
||||
}; |
||||
|
||||
if (window.addEventListener) { |
||||
window.addEventListener('message', PreziPlayer.messageReceived, false); |
||||
} else { |
||||
window.attachEvent('onmessage', PreziPlayer.messageReceived); |
||||
} |
||||
|
||||
return PreziPlayer; |
||||
|
||||
})(); |
||||
|
||||
})(); |
Loading…
Reference in new issue