183 lines
5.1 KiB
JavaScript
183 lines
5.1 KiB
JavaScript
// ==========================================================================
|
|
// Docs example
|
|
// ==========================================================================
|
|
|
|
/*global plyr, templates */
|
|
|
|
// Setup the player
|
|
plyr.setup({
|
|
debug: true,
|
|
volume: 9,
|
|
title: "Video demo",
|
|
html: templates.controls.render({}),
|
|
tooltips: true,
|
|
captions: {
|
|
defaultActive: true
|
|
},
|
|
onSetup: function() {
|
|
if(!("media" in this)) {
|
|
return;
|
|
}
|
|
|
|
var player = this,
|
|
type = player.media.tagName.toLowerCase(),
|
|
toggle = document.querySelector("[data-toggle='fullscreen']");
|
|
|
|
console.log("✓ Setup done for <" + type + ">");
|
|
|
|
if(type === "video" && toggle) {
|
|
toggle.addEventListener("click", player.toggleFullscreen, false);
|
|
}
|
|
}
|
|
});
|
|
|
|
// General functions
|
|
(function() {
|
|
// Popup
|
|
function popup(event) {
|
|
// Prevent the link opening
|
|
if(event.target.nodeName.toLowerCase() == "a") {
|
|
if(event.preventDefault) {
|
|
event.preventDefault();
|
|
}
|
|
else {
|
|
event.returnValue = false;
|
|
}
|
|
}
|
|
|
|
var link = event.target,
|
|
url = link.href,
|
|
width = link.getAttribute("data-window-width") || 600,
|
|
height = link.getAttribute("data-window-height") || 600,
|
|
name = link.getAttribute("data-window-name") || "popup";
|
|
|
|
// If window exists, just focus it
|
|
if(window["window-"+name] && !window["window-"+name].closed) {
|
|
window["window-"+name].focus();
|
|
}
|
|
else {
|
|
// Get position
|
|
var left = window.screenLeft !== undefined ? window.screenLeft : screen.left;
|
|
var top = window.screenTop !== undefined ? window.screenTop : screen.top;
|
|
|
|
// Open in the centre of the screen
|
|
var x = (screen.width / 2) - (width / 2) + left,
|
|
y = (screen.height / 2) - (height / 2) + top;
|
|
|
|
// Open that window
|
|
window["window-"+name] = window.open(url, name, "top=" + y +",left="+ x +",width=" + width + ",height=" + height);
|
|
|
|
// Focus new window
|
|
window["window-"+name].focus();
|
|
}
|
|
}
|
|
|
|
// Trigger popups
|
|
document.querySelector(".js-popup").addEventListener("click", popup);
|
|
|
|
// Get JSONP
|
|
function getJSONP(url, callback) {
|
|
var name = "jsonp_callback_" + Math.round(100000 * Math.random());
|
|
|
|
// Cleanup to prevent memory leaks and hit original callback
|
|
window[name] = function(data) {
|
|
delete window[name];
|
|
document.body.removeChild(script);
|
|
callback(data);
|
|
};
|
|
|
|
// Create a faux script
|
|
var script = document.createElement("script");
|
|
script.setAttribute("src", url + (url.indexOf("?") >= 0 ? "&" : "?") + "callback=" + name);
|
|
|
|
// Inject to the body
|
|
document.body.appendChild(script);
|
|
}
|
|
|
|
// Get star count
|
|
var storageSupported = ("sessionStorage" in window),
|
|
selectors = {
|
|
github: ".js-stargazers-count",
|
|
twitter: ".js-tweet-count"
|
|
};
|
|
|
|
// Display the count next to the button
|
|
function displayCount(selector, count) {
|
|
document.querySelector(selector).innerHTML = count;
|
|
}
|
|
|
|
// Add star
|
|
function formatGitHubCount(count) {
|
|
return "★ " + count;
|
|
}
|
|
|
|
// Check if it's in session storage first
|
|
if(storageSupported && "github_stargazers" in window.sessionStorage) {
|
|
displayCount(selectors.github, formatGitHubCount(window.sessionStorage.github_stargazers));
|
|
}
|
|
else {
|
|
getJSONP("https://api.github.com/repos/selz/plyr?access_token=a46ac653210ba6a6be44260c29c333470c3fbbf5", function (json) {
|
|
if (json && typeof json.data.stargazers_count !== "undefined") {
|
|
// Update UI
|
|
displayCount(selectors.github, formatGitHubCount(json.data.stargazers_count));
|
|
|
|
// Store in session storage
|
|
window.sessionStorage.github_stargazers = json.data.stargazers_count;
|
|
}
|
|
});
|
|
}
|
|
|
|
// Get tweet count
|
|
if(storageSupported && "tweets" in window.sessionStorage) {
|
|
displayCount(selectors.twitter, window.sessionStorage.tweets);
|
|
}
|
|
else {
|
|
getJSONP("https://cdn.api.twitter.com/1/urls/count.json?url=plyr.io", function (json) {
|
|
if (json && typeof json.count !== "undefined") {
|
|
// Update UI
|
|
displayCount(selectors.twitter, json.count);
|
|
|
|
// Store in session storage
|
|
window.sessionStorage.tweets = json.count;
|
|
}
|
|
});
|
|
}
|
|
|
|
// Tabs
|
|
var tabs = document.querySelectorAll(".nav-panel a"),
|
|
panels = document.querySelectorAll(".panels > .panel"),
|
|
activeClass = "active";
|
|
|
|
for (var i = tabs.length - 1; i >= 0; i--) {
|
|
tabs[i].addEventListener("click", togglePanel);
|
|
}
|
|
|
|
function togglePanel(event) {
|
|
event.preventDefault();
|
|
|
|
var tab = event.target,
|
|
panel = document.querySelector(tab.getAttribute("href"));
|
|
|
|
for (var i = panels.length - 1; i >= 0; i--) {
|
|
panels[i].classList.remove(activeClass);
|
|
}
|
|
|
|
for (var x = tabs.length - 1; x >= 0; x--) {
|
|
tabs[x].classList.remove(activeClass);
|
|
}
|
|
|
|
panel.classList.add(activeClass);
|
|
event.target.classList.add(activeClass);
|
|
}
|
|
})();
|
|
|
|
// Google analytics
|
|
// For demo site (http://[www.]plyr.io) only
|
|
if(document.domain.indexOf("plyr.io") > -1) {
|
|
(function(i,s,o,g,r,a,m){i.GoogleAnalyticsObject=r;i[r]=i[r]||function(){
|
|
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
|
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
|
})(window,document,"script","//www.google-analytics.com/analytics.js","ga");
|
|
ga("create", "UA-40881672-11", "auto");
|
|
ga("send", "pageview");
|
|
} |