diff options
Diffstat (limited to 'node_modules/montage/ui/youtube-player.reel/youtube-player.js')
-rw-r--r-- | node_modules/montage/ui/youtube-player.reel/youtube-player.js | 71 |
1 files changed, 54 insertions, 17 deletions
diff --git a/node_modules/montage/ui/youtube-player.reel/youtube-player.js b/node_modules/montage/ui/youtube-player.reel/youtube-player.js index 2f7709d7..b49f6ae1 100644 --- a/node_modules/montage/ui/youtube-player.reel/youtube-player.js +++ b/node_modules/montage/ui/youtube-player.reel/youtube-player.js | |||
@@ -1,10 +1,9 @@ | |||
1 | //data="https://www.youtube.com/v/u1zgFlCw8Aw?version=3&enablejsapi=1&playerapiid=ytplayer" | ||
2 | /* <copyright> | 1 | /* <copyright> |
3 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> | 2 | This file contains proprietary software owned by Motorola Mobility, Inc.<br/> |
4 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> | 3 | No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/> |
5 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. | 4 | (c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved. |
6 | </copyright> */ | 5 | </copyright> */ |
7 | /*global require,exports*/ | 6 | /*global require,exports,YT */ |
8 | var Montage = require("montage").Montage, | 7 | var Montage = require("montage").Montage, |
9 | Component = require("ui/component").Component; | 8 | Component = require("ui/component").Component; |
10 | 9 | ||
@@ -31,13 +30,43 @@ var YoutubePlayer = exports.YoutubePlayer = Montage.create(Component, { | |||
31 | return this._player; | 30 | return this._player; |
32 | }, | 31 | }, |
33 | set: function(value) { | 32 | set: function(value) { |
34 | // TODO don't allow this to be changed | ||
35 | if (this._player !== value) { | 33 | if (this._player !== value) { |
36 | this._player = value; | 34 | this._player = value; |
37 | } | 35 | } |
38 | } | 36 | } |
39 | }, | 37 | }, |
40 | 38 | ||
39 | _width: { | ||
40 | enumerable: false, | ||
41 | value: 640 | ||
42 | }, | ||
43 | width: { | ||
44 | get: function() { | ||
45 | return this._width; | ||
46 | }, | ||
47 | set: function(value) { | ||
48 | if (this._width !== value) { | ||
49 | this._width = value; | ||
50 | this.needsDraw = true; | ||
51 | } | ||
52 | } | ||
53 | }, | ||
54 | _height: { | ||
55 | enumerable: false, | ||
56 | value: 385 | ||
57 | }, | ||
58 | height: { | ||
59 | get: function() { | ||
60 | return this._height; | ||
61 | }, | ||
62 | set: function(value) { | ||
63 | if (this._height !== value) { | ||
64 | this._height = value; | ||
65 | this.needsDraw = true; | ||
66 | } | ||
67 | } | ||
68 | }, | ||
69 | |||
41 | _autoplay: { | 70 | _autoplay: { |
42 | enumerable: false, | 71 | enumerable: false, |
43 | value: false | 72 | value: false |
@@ -49,6 +78,7 @@ var YoutubePlayer = exports.YoutubePlayer = Montage.create(Component, { | |||
49 | set: function(value) { | 78 | set: function(value) { |
50 | if (this._autoplay !== value) { | 79 | if (this._autoplay !== value) { |
51 | this._autoplay = value; | 80 | this._autoplay = value; |
81 | this.needsDraw = true; | ||
52 | } | 82 | } |
53 | } | 83 | } |
54 | }, | 84 | }, |
@@ -127,30 +157,35 @@ var YoutubePlayer = exports.YoutubePlayer = Montage.create(Component, { | |||
127 | value: function() { | 157 | value: function() { |
128 | // Create the callback if it doesn't exist, and make it dispatch | 158 | // Create the callback if it doesn't exist, and make it dispatch |
129 | // an event on the document instead | 159 | // an event on the document instead |
130 | if (!window.onYouTubePlayerReady) { | 160 | if (!window.onYouTubePlayerAPIReady) { |
131 | window.onYouTubePlayerReady = function(playerId) { | 161 | window.onYouTubePlayerAPIReady = function() { |
132 | var event = document.createEvent("CustomEvent"); | 162 | var event = document.createEvent("CustomEvent"); |
133 | event.initEvent("youtubePlayerReady", true, true); | 163 | event.initEvent("youtubePlayerApiReady", true, true); |
134 | event.playerId = playerId; | ||
135 | document.dispatchEvent(event); | 164 | document.dispatchEvent(event); |
136 | }; | 165 | }; |
137 | } | 166 | } |
138 | 167 | ||
139 | document.addEventListener("youtubePlayerReady", this, false); | 168 | this._element.src += (this._videoId ? "/" + this._videoId : "") + "?enablejsapi=1"; |
140 | 169 | ||
141 | // If there's no videoId set one the doesn't exist | 170 | if (typeof YT !== "undefined" && YT.Player) { |
142 | this._player.data = "https://www.youtube.com/v/" + (this._videoId || "xxxxxxxxxxx") + "?version=3&enablejsapi=1&playerapiid=" + this.uuid; | 171 | this.handleYoutubePlayerApiReady(); |
172 | } else { | ||
173 | document.addEventListener("youtubePlayerApiReady", this, false); | ||
174 | } | ||
143 | } | 175 | } |
144 | }, | 176 | }, |
145 | 177 | ||
146 | handleYoutubePlayerReady: { | 178 | handleYoutubePlayerApiReady: { |
147 | value: function(event) { | 179 | value: function(event) { |
148 | if (event.playerId !== this.uuid) { | 180 | document.removeEventListener("youtubePlayerApiReady", this); |
149 | return; | ||
150 | } | ||
151 | 181 | ||
152 | this._ready = true; | 182 | var self = this; |
153 | this.needsDraw = true; | 183 | this.player = new YT.Player(this._element, { events: { |
184 | onReady: function(event) { | ||
185 | self._ready = true; | ||
186 | self.needsDraw = true; | ||
187 | } | ||
188 | }}); | ||
154 | } | 189 | } |
155 | }, | 190 | }, |
156 | 191 | ||
@@ -172,8 +207,10 @@ var YoutubePlayer = exports.YoutubePlayer = Montage.create(Component, { | |||
172 | 207 | ||
173 | this._player[fnName].apply(this._player, args); | 208 | this._player[fnName].apply(this._player, args); |
174 | } | 209 | } |
175 | |||
176 | this._playerQueue.length = 0; | 210 | this._playerQueue.length = 0; |
211 | |||
212 | this._element.width = this._width; | ||
213 | this._element.height = this._height; | ||
177 | } | 214 | } |
178 | } | 215 | } |
179 | }); \ No newline at end of file | 216 | }); \ No newline at end of file |