HEX
Server: Apache/2.4.58 (Ubuntu)
System: Linux sanjaymanandhar.com 6.8.0-78-generic #78-Ubuntu SMP PREEMPT_DYNAMIC Tue Aug 12 11:34:18 UTC 2025 x86_64
User: www-data (33)
PHP: 8.3.6
Disabled: NONE
Upload Files
File: /var/www/html/wp-content/themes/glint/assets/js/jquery-modal-video.min.js
/**
 * Modules in this bundle
 * @license
 *
 * modal-video:
 *   license: appleple
 *   author: appleple
 *   homepage: http://developer.a-blogcms.jp
 *   version: 2.4.6
 *
 * custom-event-polyfill:
 *   license: MIT (http://opensource.org/licenses/MIT)
 *   contributors: Frank Panetta, Mikhail Reenko <reenko@yandex.ru>, Joscha Feth <joscha@feth.com>
 *   homepage: https://github.com/krambuhl/custom-event-polyfill#readme
 *   version: 0.3.0
 *
 * es6-object-assign:
 *   license: MIT (http://opensource.org/licenses/MIT)
 *   author: Rubén Norte <rubennorte@gmail.com>
 *   homepage: https://github.com/rubennorte/es6-object-assign
 *   version: 1.1.0
 *
 * This header is generated by licensify (https://github.com/twada/licensify)
 */
(function (f) {
  if (typeof exports === "object" && typeof module !== "undefined") {
    module.exports = f();
  } else if (typeof define === "function" && define.amd) {
    define([], f);
  } else {
    var g;
    if (typeof window !== "undefined") {
      g = window;
    } else if (typeof global !== "undefined") {
      g = global;
    } else if (typeof self !== "undefined") {
      g = self;
    } else {
      g = this;
    }
    g.ModalVideo = f();
  }
})(function () {
  var define, module, exports;
  return (function () {
    function e(t, n, r) {
      function s(o, u) {
        if (!n[o]) {
          if (!t[o]) {
            var a = typeof require == "function" && require;
            if (!u && a) return a(o, !0);
            if (i) return i(o, !0);
            var f = new Error("Cannot find module '" + o + "'");
            throw ((f.code = "MODULE_NOT_FOUND"), f);
          }
          var l = (n[o] = { exports: {} });
          t[o][0].call(
            l.exports,
            function (e) {
              var n = t[o][1][e];
              return s(n ? n : e);
            },
            l,
            l.exports,
            e,
            t,
            n,
            r
          );
        }
        return n[o].exports;
      }
      var i = typeof require == "function" && require;
      for (var o = 0; o < r.length; o++) s(r[o]);
      return s;
    }
    return e;
  })()(
    {
      1: [
        function (require, module, exports) {
          // Polyfill for creating CustomEvents on IE9/10/11

          // code pulled from:
          // https://github.com/d4tocchini/customevent-polyfill
          // https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent#Polyfill

          try {
            var ce = new window.CustomEvent("test");
            ce.preventDefault();
            if (ce.defaultPrevented !== true) {
              // IE has problems with .preventDefault() on custom events
              // http://stackoverflow.com/questions/23349191
              throw new Error("Could not prevent default");
            }
          } catch (e) {
            var CustomEvent = function (event, params) {
              var evt, origPrevent;
              params = params || {
                bubbles: false,
                cancelable: false,
                detail: undefined,
              };

              evt = document.createEvent("CustomEvent");
              evt.initCustomEvent(
                event,
                params.bubbles,
                params.cancelable,
                params.detail
              );
              origPrevent = evt.preventDefault;
              evt.preventDefault = function () {
                origPrevent.call(this);
                try {
                  Object.defineProperty(this, "defaultPrevented", {
                    get: function () {
                      return true;
                    },
                  });
                } catch (e) {
                  this.defaultPrevented = true;
                }
              };
              return evt;
            };

            CustomEvent.prototype = window.Event.prototype;
            window.CustomEvent = CustomEvent; // expose definition to window
          }
        },
        {},
      ],
      2: [
        function (require, module, exports) {
          /**
           * Code refactored from Mozilla Developer Network:
           * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
           */

          "use strict";

          function assign(target, firstSource) {
            if (target === undefined || target === null) {
              throw new TypeError("Cannot convert first argument to object");
            }

            var to = Object(target);
            for (var i = 1; i < arguments.length; i++) {
              var nextSource = arguments[i];
              if (nextSource === undefined || nextSource === null) {
                continue;
              }

              var keysArray = Object.keys(Object(nextSource));
              for (
                var nextIndex = 0, len = keysArray.length;
                nextIndex < len;
                nextIndex++
              ) {
                var nextKey = keysArray[nextIndex];
                var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);
                if (desc !== undefined && desc.enumerable) {
                  to[nextKey] = nextSource[nextKey];
                }
              }
            }
            return to;
          }

          function polyfill() {
            if (!Object.assign) {
              Object.defineProperty(Object, "assign", {
                enumerable: false,
                configurable: true,
                writable: true,
                value: assign,
              });
            }
          }

          module.exports = {
            assign: assign,
            polyfill: polyfill,
          };
        },
        {},
      ],
      3: [
        function (require, module, exports) {
          "use strict";

          Object.defineProperty(exports, "__esModule", {
            value: true,
          });

          var _createClass = (function () {
            function defineProperties(target, props) {
              for (var i = 0; i < props.length; i++) {
                var descriptor = props[i];
                descriptor.enumerable = descriptor.enumerable || false;
                descriptor.configurable = true;
                if ("value" in descriptor) descriptor.writable = true;
                Object.defineProperty(target, descriptor.key, descriptor);
              }
            }
            return function (Constructor, protoProps, staticProps) {
              if (protoProps)
                defineProperties(Constructor.prototype, protoProps);
              if (staticProps) defineProperties(Constructor, staticProps);
              return Constructor;
            };
          })();

          require("custom-event-polyfill");

          var _util = require("../lib/util");

          function _classCallCheck(instance, Constructor) {
            if (!(instance instanceof Constructor)) {
              throw new TypeError("Cannot call a class as a function");
            }
          }

          var assign = require("es6-object-assign").assign;

          var defaults = {
            channel: "youtube",
            facebook: {},
            youtube: {
              autoplay: 1,
              cc_load_policy: 1,
              color: null,
              controls: 1,
              disablekb: 0,
              enablejsapi: 0,
              end: null,
              fs: 1,
              h1: null,
              iv_load_policy: 1,
              loop: 0,
              modestbranding: null,
              mute: 0,
              origin: null,
              playsinline: null,
              rel: 0,
              showinfo: 1,
              start: 0,
              wmode: "transparent",
              theme: "dark",
              nocookie: false,
            },
            ratio: "16:9",
            vimeo: {
              api: false,
              autopause: true,
              autoplay: true,
              byline: true,
              callback: null,
              color: null,
              controls: true,
              height: null,
              loop: false,
              maxheight: null,
              maxwidth: null,
              muted: false,
              player_id: null,
              portrait: true,
              title: true,
              width: null,
              xhtml: false,
            },
            allowFullScreen: true,
            allowAutoplay: true,
            animationSpeed: 300,
            classNames: {
              modalVideo: "modal-video",
              modalVideoClose: "modal-video-close",
              modalVideoBody: "modal-video-body",
              modalVideoInner: "modal-video-inner",
              modalVideoIframeWrap: "modal-video-movie-wrap",
              modalVideoCloseBtn: "modal-video-close-btn",
            },
            aria: {
              openMessage: "You just openned the modal video",
              dismissBtnMessage: "Close the modal by clicking here",
            },
          };

          var ModalVideo = (function () {
            function ModalVideo(ele, option) {
              var _this = this;

              _classCallCheck(this, ModalVideo);

              var opt = assign({}, defaults, option);
              var selectors =
                typeof ele === "string" ? document.querySelectorAll(ele) : ele;
              var body = document.querySelector("body");
              var classNames = opt.classNames;
              var speed = opt.animationSpeed;
              [].forEach.call(selectors, function (selector) {
                selector.addEventListener("click", function (event) {
                  if (selector.tagName === "A") {
                    event.preventDefault();
                  }
                  var videoId = selector.dataset.videoId;
                  var channel = selector.dataset.channel || opt.channel;
                  var id = (0, _util.getUniqId)();
                  var videoUrl =
                    selector.dataset.videoUrl ||
                    _this.getVideoUrl(opt, channel, videoId);
                  var html = _this.getHtml(opt, videoUrl, id);
                  (0, _util.append)(body, html);
                  var modal = document.getElementById(id);
                  var btn = modal.querySelector(".js-modal-video-dismiss-btn");
                  var timeout = void 0; // used for resize
                  var resizeModalVideoWhenHeightGreaterThanWindowHeight =
                    function resizeModalVideoWhenHeightGreaterThanWindowHeight() {
                      clearTimeout(timeout);
                      // Resize modal-video-iframe-wrap when window size changed when the height of the video is greater than the height of the window.
                      timeout = setTimeout(function () {
                        var width = _this.getWidthFulfillAspectRatio(
                          opt.ratio,
                          window.innerHeight,
                          window.innerWidth
                        );

                        var modalVideoInner = document.getElementById(
                          "modal-video-inner-" + id
                        );
                        if (modalVideoInner.style.maxWidth !== width) {
                          modalVideoInner.style.maxWidth = width;
                        }
                      }, 10);
                    };
                  modal.focus();
                  modal.addEventListener("click", function () {
                    (0, _util.addClass)(modal, classNames.modalVideoClose);
                    window.removeEventListener(
                      "resize",
                      resizeModalVideoWhenHeightGreaterThanWindowHeight
                    );
                    setTimeout(function () {
                      (0, _util.remove)(modal);
                      selector.focus();
                    }, speed);
                  });
                  modal.addEventListener("keydown", function (e) {
                    if (e.which === 9) {
                      e.preventDefault();
                      if (document.activeElement === modal) {
                        btn.focus();
                      } else {
                        modal.setAttribute("aria-label", "");
                        modal.focus();
                      }
                    }
                  });
                  window.addEventListener(
                    "resize",
                    resizeModalVideoWhenHeightGreaterThanWindowHeight
                  );
                  btn.addEventListener("click", function () {
                    (0, _util.triggerEvent)(modal, "click");
                  });
                });
              });
            }

            _createClass(ModalVideo, [
              {
                key: "getPadding",
                value: function getPadding(ratio) {
                  var arr = ratio.split(":");
                  var width = Number(arr[0]);
                  var height = Number(arr[1]);
                  var padding = (height * 100) / width;
                  return padding + "%";
                },

                /**
                 * Calculate the width of the video fulfill aspect ratio.
                 * When the height of the video is greater than the height of the window,
                 * this function return the width that fulfill the aspect ratio for the height of the window.
                 * In other cases, this function return '100%'(the height relative to the width is determined by css).
                 *
                 * @param string ratio
                 * @param number maxHeight
                 * @param number maxWidth
                 * @returns string
                 */
              },
              {
                key: "getWidthFulfillAspectRatio",
                value: function getWidthFulfillAspectRatio(
                  ratio,
                  maxHeight,
                  maxWidth
                ) {
                  var arr = ratio.split(":");
                  var width = Number(arr[0]);
                  var height = Number(arr[1]);

                  // Height that fulfill the aspect ratio for maxWidth.
                  var videoHeight = maxWidth * (height / width);

                  if (maxHeight < videoHeight) {
                    // when the height of the video is greater than the height of the window.
                    // calculate the width that fulfill the aspect ratio for the height of the window.

                    // ex: 16:9 aspect ratio
                    // 16:9 = width : height
                    // → width = 16 / 9 * height
                    return Math.floor((width / height) * maxHeight) + "px";
                  }

                  return "100%";
                },
              },
              {
                key: "getQueryString",
                value: function getQueryString(obj) {
                  var url = "";
                  Object.keys(obj).forEach(function (key) {
                    url += key + "=" + obj[key] + "&";
                  });
                  return url.substr(0, url.length - 1);
                },
              },
              {
                key: "getVideoUrl",
                value: function getVideoUrl(opt, channel, videoId) {
                  if (channel === "youtube") {
                    return this.getYoutubeUrl(opt.youtube, videoId);
                  } else if (channel === "vimeo") {
                    return this.getVimeoUrl(opt.vimeo, videoId);
                  } else if (channel === "facebook") {
                    return this.getFacebookUrl(opt.facebook, videoId);
                  } else if (channel === "custom") {
                    return opt.url;
                  }
                  return "";
                },
              },
              {
                key: "getVimeoUrl",
                value: function getVimeoUrl(vimeo, videoId) {
                  var query = this.getQueryString(vimeo);
                  return (
                    "https://player.vimeo.com/video/" + videoId + "?" + query
                  );
                },
              },
              {
                key: "getYoutubeUrl",
                value: function getYoutubeUrl(youtube, videoId) {
                  var query = this.getQueryString(youtube);
                  if (youtube.nocookie === true) {
                    return (
                      "https://www.youtube-nocookie.com/embed/" +
                      videoId +
                      "?" +
                      query
                    );
                  }

                  return (
                    "https://www.youtube.com/embed/" + videoId + "?" + query
                  );
                },
              },
              {
                key: "getFacebookUrl",
                value: function getFacebookUrl(facebook, videoId) {
                  return (
                    "//www.facebook.com/v2.10/plugins/video.php?href=https://www.facebook.com/facebook/videos/" +
                    videoId +
                    "&" +
                    this.getQueryString(facebook)
                  );
                },
              },
              {
                key: "getHtml",
                value: function getHtml(opt, videoUrl, id) {
                  var padding = this.getPadding(opt.ratio);
                  var classNames = opt.classNames;
                  return (
                    '\n      <div class="' +
                    classNames.modalVideo +
                    '" tabindex="-1" role="dialog" aria-label="' +
                    opt.aria.openMessage +
                    '" id="' +
                    id +
                    '">\n        <div class="' +
                    classNames.modalVideoBody +
                    '">\n          <div class="' +
                    classNames.modalVideoInner +
                    '" id="modal-video-inner-' +
                    id +
                    '">\n            <div class="' +
                    classNames.modalVideoIframeWrap +
                    '" style="padding-bottom:' +
                    padding +
                    '">\n              <button class="' +
                    classNames.modalVideoCloseBtn +
                    ' js-modal-video-dismiss-btn" aria-label="' +
                    opt.aria.dismissBtnMessage +
                    "\"></button>\n              <iframe width='460' height='230' src=\"" +
                    videoUrl +
                    "\" frameborder='0' allowfullscreen=" +
                    opt.allowFullScreen +
                    ' tabindex="-1" allow="' +
                    (opt.allowAutoplay ? "autoplay;" : "") +
                    ' accelerometer; encrypted-media; gyroscope; picture-in-picture" />\n            </div>\n          </div>\n        </div>\n      </div>\n    '
                  );
                },
              },
            ]);

            return ModalVideo;
          })();

          exports.default = ModalVideo;
          module.exports = exports["default"];
        },
        {
          "../lib/util": 5,
          "custom-event-polyfill": 1,
          "es6-object-assign": 2,
        },
      ],
      4: [
        function (require, module, exports) {
          "use strict";

          module.exports = require("./core/");
        },
        { "./core/": 3 },
      ],
      5: [
        function (require, module, exports) {
          "use strict";

          Object.defineProperty(exports, "__esModule", {
            value: true,
          });
          var append = (exports.append = function append(element, string) {
            var div = document.createElement("div");
            div.innerHTML = string;
            while (div.children.length > 0) {
              element.appendChild(div.children[0]);
            }
          });

          var getUniqId = (exports.getUniqId = function getUniqId() {
            return (
              Date.now().toString(36) + Math.random().toString(36).substr(2, 5)
            ).toUpperCase();
          });

          var remove = (exports.remove = function remove(element) {
            if (element && element.parentNode) {
              element.parentNode.removeChild(element);
            }
          });

          var addClass = (exports.addClass = function addClass(
            element,
            className
          ) {
            if (element.classList) {
              element.classList.add(className);
            } else {
              element.className += " " + className;
            }
          });

          var triggerEvent = (exports.triggerEvent = function triggerEvent(
            el,
            eventName,
            options
          ) {
            var event = void 0;
            if (window.CustomEvent) {
              event = new CustomEvent(eventName, { cancelable: true });
            } else {
              event = document.createEvent("CustomEvent");
              event.initCustomEvent(eventName, false, false, options);
            }
            el.dispatchEvent(event);
          });
        },
        {},
      ],
    },
    {},
    [4]
  )(4);
});