-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathyt.js
56 lines (47 loc) · 1.22 KB
/
yt.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
var getTemplate = (function () {
var templates = {};
return function (name) {
if (!templates[name])
templates[name] = Template.fromString('<div id="' + name + '"></div>');
return templates[name];
};
})();
Template.registerHelper('YTPlayer', function () {
return getTemplate(this.name || 'ytplayer');
});
var iframeApiReady = new ReactiveVar(false);
window.onYouTubeIframeAPIReady = function () {
iframeApiReady.set(true);
};
Meteor.startup(function () {
$.getScript('//www.youtube.com/iframe_api');
});
YTPlayer = function (name, playerVars) {
if (arguments.length === 1) {
playerVars = name;
name = 'ytplayer';
}
var self = this;
var playerReady = new ReactiveVar(false);
var playerTemplate = getTemplate(name);
playerTemplate.rendered = function () {
this.autorun(function () {
if (iframeApiReady.get()) {
self.player = new YT.Player(name, {
events: {
'onReady': function () {
playerReady.set(true);
}
},
playerVars: playerVars || {}
});
}
});
};
playerTemplate.destroyed = function () {
playerReady.set(false);
};
self.ready = function () {
return playerReady.get();
};
};