metro/js/webplayer.js
2017-11-23 09:21:48 +00:00

74 lines
2.1 KiB
JavaScript

/**
* Copyright (c) 2017-present, Facebook, Inc.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
/* eslint-disable module-strict */
(function() {
"use strict";
// Not on browser
if (typeof document === "undefined") {
return;
}
document.addEventListener("DOMContentLoaded", init);
function init() {
var mobile = isMobile();
if (mobile) {
document
.querySelector(".nav-site-wrapper a[data-target]")
.addEventListener("click", toggleTarget);
}
var webPlayerList = document.querySelectorAll(".web-player");
// Either show interactive or static code block, depending on desktop or mobile
for (var i = 0; i < webPlayerList.length; ++i) {
webPlayerList[i].classList.add(mobile ? "mobile" : "desktop");
if (!mobile) {
// Determine location to look up required assets
var assetRoot = encodeURIComponent(
document.location.origin + "/react-native"
);
// Set iframe src. Do this dynamically so the iframe never loads on mobile.
var iframe = webPlayerList[i].querySelector("iframe");
iframe.src =
iframe.getAttribute("data-src") + "&assetRoot=" + assetRoot;
}
}
var snackPlayerList = document.querySelectorAll(".snack-player");
// Either show interactive or static code block, depending on desktop or mobile
for (var i = 0; i < snackPlayerList.length; ++i) {
var snackPlayer = snackPlayerList[i];
var snackDesktopPlayer = snackPlayer.querySelectorAll(
".desktop-friendly-snack"
)[0];
var plainCodeExample = snackPlayer.querySelectorAll(
".mobile-friendly-snack"
)[0];
if (mobile) {
snackDesktopPlayer.remove();
plainCodeExample.style.display = "block";
} else {
plainCodeExample.remove();
}
}
}
// Primitive mobile detection
function isMobile() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
);
}
})();