/**
 * 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
    );
  }
})();