Files
react-native/js/codeblocks.js
T
Website Deployment Script 45bbb2c3a1 Deploy website
Deploy website version based on c498d640f5
2017-12-01 19:41:33 +00:00

113 lines
3.2 KiB
JavaScript

/**
* Copyright (c) 2013-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
/* eslint-disable module-strict */
(function() {
"use strict";
if (typeof document === "undefined") {
// Not on browser
return;
}
document.addEventListener("DOMContentLoaded", init);
function init() {
var mobile = isMobile();
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;
}
}
window.ExpoSnack && window.ExpoSnack.initialize();
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();
}
}
var backdrop = document.querySelector(".modal-backdrop");
if (!backdrop) {
return;
}
var modalButtonOpenList = document.querySelectorAll(".modal-button-open");
var modalButtonClose = document.querySelector(".modal-button-close");
backdrop.addEventListener("click", hideModal);
modalButtonClose.addEventListener("click", hideModal);
// Bind event to NodeList items
for (var i = 0; i < modalButtonOpenList.length; ++i) {
modalButtonOpenList[i].addEventListener("click", showModal);
}
}
function showModal(e) {
var backdrop = document.querySelector(".modal-backdrop");
if (!backdrop) {
return;
}
var modal = document.querySelector(".modal");
backdrop.classList.add("modal-open");
modal.classList.add("modal-open");
}
function hideModal(e) {
var backdrop = document.querySelector(".modal-backdrop");
if (!backdrop) {
return;
}
var modal = document.querySelector(".modal");
backdrop.classList.remove("modal-open");
modal.classList.remove("modal-open");
}
// Primitive mobile detection
function isMobile() {
return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent
);
}
})();