diff options
Diffstat (limited to 'docs/pt/js/blueimp-gallery-vimeo.js')
-rw-r--r-- | docs/pt/js/blueimp-gallery-vimeo.js | 211 |
1 files changed, 211 insertions, 0 deletions
diff --git a/docs/pt/js/blueimp-gallery-vimeo.js b/docs/pt/js/blueimp-gallery-vimeo.js new file mode 100644 index 0000000..c274f54 --- /dev/null +++ b/docs/pt/js/blueimp-gallery-vimeo.js @@ -0,0 +1,211 @@ +/* + * blueimp Gallery Vimeo Video Factory JS + * https://github.com/blueimp/Gallery + * + * Copyright 2013, Sebastian Tschan + * https://blueimp.net + * + * Licensed under the MIT license: + * https://opensource.org/licenses/MIT + */ + +/* global define, $f */ + +;(function (factory) { + 'use strict' + if (typeof define === 'function' && define.amd) { + // Register as an anonymous AMD module: + define(['./blueimp-helper', './blueimp-gallery-video'], factory) + } else { + // Browser globals: + factory(window.blueimp.helper || window.jQuery, window.blueimp.Gallery) + } +})(function ($, Gallery) { + 'use strict' + + if (!window.postMessage) { + return Gallery + } + + var galleryPrototype = Gallery.prototype + + $.extend(galleryPrototype.options, { + // The list object property (or data attribute) with the Vimeo video id: + vimeoVideoIdProperty: 'vimeo', + // The URL for the Vimeo video player, can be extended with custom parameters: + // https://developer.vimeo.com/player/embedding + vimeoPlayerUrl: + '//player.vimeo.com/video/VIDEO_ID?api=1&player_id=PLAYER_ID', + // The prefix for the Vimeo video player ID: + vimeoPlayerIdPrefix: 'vimeo-player-', + // Require a click on the native Vimeo player for the initial playback: + vimeoClickToPlay: false + }) + + var textFactory = + galleryPrototype.textFactory || galleryPrototype.imageFactory + var VimeoPlayer = function (url, videoId, playerId, clickToPlay) { + this.url = url + this.videoId = videoId + this.playerId = playerId + this.clickToPlay = clickToPlay + this.element = document.createElement('div') + this.listeners = {} + } + var counter = 0 + + $.extend(VimeoPlayer.prototype, { + on: function (type, func) { + this.listeners[type] = func + return this + }, + + loadAPI: function () { + var that = this + var apiUrl = '//f.vimeocdn.com/js/froogaloop2.min.js' + var scriptTags = document.getElementsByTagName('script') + var i = scriptTags.length + var scriptTag + var called + /** + * Callback function + */ + function callback() { + if (!called && that.playOnReady) { + that.play() + } + called = true + } + while (i) { + i -= 1 + if (scriptTags[i].src === apiUrl) { + scriptTag = scriptTags[i] + break + } + } + if (!scriptTag) { + scriptTag = document.createElement('script') + scriptTag.src = apiUrl + } + $(scriptTag).on('load', callback) + scriptTags[0].parentNode.insertBefore(scriptTag, scriptTags[0]) + // Fix for cached scripts on IE 8: + if (/loaded|complete/.test(scriptTag.readyState)) { + callback() + } + }, + + onReady: function () { + var that = this + this.ready = true + this.player.addEvent('play', function () { + that.hasPlayed = true + that.onPlaying() + }) + this.player.addEvent('pause', function () { + that.onPause() + }) + this.player.addEvent('finish', function () { + that.onPause() + }) + if (this.playOnReady) { + this.play() + } + }, + + onPlaying: function () { + if (this.playStatus < 2) { + this.listeners.playing() + this.playStatus = 2 + } + }, + + onPause: function () { + this.listeners.pause() + delete this.playStatus + }, + + insertIframe: function () { + var iframe = document.createElement('iframe') + iframe.src = this.url + .replace('VIDEO_ID', this.videoId) + .replace('PLAYER_ID', this.playerId) + iframe.id = this.playerId + this.element.parentNode.replaceChild(iframe, this.element) + this.element = iframe + }, + + play: function () { + var that = this + if (!this.playStatus) { + this.listeners.play() + this.playStatus = 1 + } + if (this.ready) { + if ( + !this.hasPlayed && + (this.clickToPlay || + (window.navigator && + /iP(hone|od|ad)/.test(window.navigator.platform))) + ) { + // Manually trigger the playing callback if clickToPlay + // is enabled and to workaround a limitation in iOS, + // which requires synchronous user interaction to start + // the video playback: + this.onPlaying() + } else { + this.player.api('play') + } + } else { + this.playOnReady = true + if (!window.$f) { + this.loadAPI() + } else if (!this.player) { + this.insertIframe() + this.player = $f(this.element) + this.player.addEvent('ready', function () { + that.onReady() + }) + } + } + }, + + pause: function () { + if (this.ready) { + this.player.api('pause') + } else if (this.playStatus) { + delete this.playOnReady + this.listeners.pause() + delete this.playStatus + } + } + }) + + $.extend(galleryPrototype, { + VimeoPlayer: VimeoPlayer, + + textFactory: function (obj, callback) { + var options = this.options + var videoId = this.getItemProperty(obj, options.vimeoVideoIdProperty) + if (videoId) { + if (this.getItemProperty(obj, options.urlProperty) === undefined) { + obj[options.urlProperty] = '//vimeo.com/' + videoId + } + counter += 1 + return this.videoFactory( + obj, + callback, + new VimeoPlayer( + options.vimeoPlayerUrl, + videoId, + options.vimeoPlayerIdPrefix + counter, + options.vimeoClickToPlay + ) + ) + } + return textFactory.call(this, obj, callback) + } + }) + + return Gallery +}) |