{"version":3,"file":"Diagram.ScrollingHero.f3e58c09.js","sources":["../../node_modules/youtube-background/jquery.youtube-background.js","../src/current/js/modules/Diagram.ScrollingHero.js"],"sourcesContent":["/* youtube-background v1.1.8 | https://github.com/stamat/youtube-background | MIT License */\n(() => {\n  // src/lib/buttons.js\n  function buttonOn(buttonObj) {\n    if (!buttonObj)\n      return;\n    buttonObj.element.classList.add(buttonObj.stateClassName);\n    buttonObj.element.firstChild.classList.remove(buttonObj.stateChildClassNames[0]);\n    buttonObj.element.firstChild.classList.add(buttonObj.stateChildClassNames[1]);\n    buttonObj.element.setAttribute(\"aria-pressed\", false);\n  }\n  function buttonOff(buttonObj) {\n    if (!buttonObj)\n      return;\n    buttonObj.element.classList.remove(buttonObj.stateClassName);\n    buttonObj.element.firstChild.classList.add(buttonObj.stateChildClassNames[0]);\n    buttonObj.element.firstChild.classList.remove(buttonObj.stateChildClassNames[1]);\n    buttonObj.element.setAttribute(\"aria-pressed\", true);\n  }\n  function generateActionButton(obj, props) {\n    const btn = document.createElement(\"button\");\n    btn.className = props.className;\n    btn.innerHTML = props.innerHtml;\n    btn.setAttribute(\"role\", \"switch\");\n    btn.firstChild.classList.add(props.stateChildClassNames[0]);\n    btn.setAttribute(\"aria-pressed\", !props.initialState);\n    props.element = btn;\n    if (obj.params[props.condition_parameter] === props.initialState) {\n      buttonOn(props);\n    }\n    btn.addEventListener(\"click\", function(e) {\n      if (this.classList.contains(props.stateClassName)) {\n        buttonOff(props);\n        obj[props.actions[0]]();\n      } else {\n        buttonOn(props);\n        obj[props.actions[1]]();\n      }\n    });\n    obj.buttons[props.name] = {\n      element: btn,\n      button_properties: props\n    };\n    obj.controls_element.appendChild(btn);\n  }\n\n  // node_modules/book-of-spells/src/helpers.mjs\n  function stringToBoolean(str) {\n    if (/^\\s*(true|false)\\s*$/i.test(str))\n      return str === \"true\";\n  }\n  function stringToNumber(str) {\n    if (/^\\s*\\d+\\s*$/.test(str))\n      return parseInt(str);\n    if (/^\\s*[\\d.]+\\s*$/.test(str))\n      return parseFloat(str);\n  }\n  function stringToArray(str) {\n    if (!/^\\s*\\[.*\\]\\s*$/.test(str))\n      return;\n    try {\n      return JSON.parse(str);\n    } catch (e) {\n    }\n  }\n  function stringToObject(str) {\n    if (!/^\\s*\\{.*\\}\\s*$/.test(str))\n      return;\n    try {\n      return JSON.parse(str);\n    } catch (e) {\n    }\n  }\n  function stringToRegex(str) {\n    if (!/^\\s*\\/.*\\/g?i?\\s*$/.test(str))\n      return;\n    try {\n      return new RegExp(str);\n    } catch (e) {\n    }\n  }\n  function stringToType(str) {\n    if (/^\\s*null\\s*$/.test(str))\n      return null;\n    const bool = stringToBoolean(str);\n    if (bool !== void 0)\n      return bool;\n    return stringToNumber(str) || stringToArray(str) || stringToObject(str) || stringToRegex(str) || str;\n  }\n  function isArray(o) {\n    return Array.isArray(o);\n  }\n  function isString(o) {\n    return typeof o === \"string\";\n  }\n  function randomIntInclusive(min, max, safe = false) {\n    min = Number(min);\n    max = Number(max);\n    if (isNaN(min) || isNaN(max))\n      throw new TypeError(\"Both min and max must be numbers\");\n    if (min > max)\n      [min, max] = [max, min];\n    if (min === max)\n      return min;\n    min = Math.round(min);\n    max = Math.round(max);\n    const rand = safe ? random() : Math.random();\n    return Math.floor(rand * (max - min + 1)) + min;\n  }\n  function fixed(number, digits) {\n    if (!digits)\n      return parseInt(number);\n    return parseFloat(number.toFixed(digits));\n  }\n  function percentage(num, total) {\n    if (!num || !total || Number.isNaN(num) || Number.isNaN(total))\n      return 0;\n    return num / total * 100;\n  }\n  function random() {\n    if (!crypto)\n      return Math.random();\n    if (crypto.getRandomValues)\n      return crypto.getRandomValues(new Uint32Array(1))[0] / 4294967295;\n  }\n\n  // node_modules/book-of-spells/src/regex.mjs\n  var RE_YOUTUBE = /(?:youtube\\.com\\/(?:[^\\/]+\\/.+\\/|(?:v|e(?:mbed)?)\\/|.*[?&]v=)|youtu\\.be\\/)([^\"&?\\/ ]{11})/i;\n  var RE_VIMEO = /(?:www\\.|player\\.)?vimeo.com\\/(?:channels\\/(?:\\w+\\/)?|groups\\/(?:[^\\/]*)\\/videos\\/|album\\/(?:\\d+)\\/video\\/|video\\/|)(\\d+)(?:[a-zA-Z0-9_\\-]+)?/i;\n  var RE_VIDEO = /\\/([^\\/]+\\.(?:mp4|ogg|ogv|ogm|webm|avi))\\s*$/i;\n\n  // node_modules/book-of-spells/src/parsers.mjs\n  function parseResolutionString(res) {\n    const DEFAULT_RESOLUTION = 1.7777777778;\n    if (!res || !res.length || /16[\\:x\\-\\/]{1}9/i.test(res))\n      return DEFAULT_RESOLUTION;\n    const pts = res.split(/\\s?[\\:x\\-\\/]{1}\\s?/i);\n    if (pts.length < 2)\n      return DEFAULT_RESOLUTION;\n    const w = parseInt(pts[0]);\n    const h = parseInt(pts[1]);\n    if (w === 0 || h === 0)\n      return DEFAULT_RESOLUTION;\n    if (isNaN(w) || isNaN(h))\n      return DEFAULT_RESOLUTION;\n    return w / h;\n  }\n\n  // node_modules/book-of-spells/src/dom.mjs\n  function query(selector, from = document) {\n    if (selector instanceof Array || selector instanceof NodeList)\n      return selector;\n    if (selector instanceof Element)\n      return [selector];\n    if (from instanceof Element || from instanceof Document)\n      return from.querySelectorAll(selector);\n    if (isString(from))\n      from = query(from);\n    if (!from instanceof Array && !from instanceof NodeList)\n      return [];\n    const res = [];\n    for (const element of from) {\n      res.push(...element.querySelectorAll(selector));\n    }\n    return res;\n  }\n  function proportionalParentCoverResize(elements, ratio = 1, offset = 0) {\n    if (elements instanceof Element)\n      elements = [elements];\n    if (typeof elements === \"string\")\n      elements = query(elements);\n    for (const element of elements) {\n      const h = element.parentNode.offsetHeight + offset;\n      const w = element.parentNode.offsetWidth + offset;\n      if (ratio > w / h) {\n        element.style.width = h * ratio + \"px\";\n        element.style.height = h + \"px\";\n      } else {\n        element.style.width = w + \"px\";\n        element.style.height = w / ratio + \"px\";\n      }\n    }\n  }\n\n  // node_modules/book-of-spells/src/browser.mjs\n  function isUserAgentMobile(str) {\n    return /\\b(BlackBerry|webOS|iPhone|IEMobile)\\b/i.test(str) || /\\b(Android|Windows Phone|iPad|iPod)\\b/i.test(str);\n  }\n  function isMobile() {\n    if (\"maxTouchPoints\" in navigator)\n      return navigator.maxTouchPoints > 0;\n    if (\"matchMedia\" in window)\n      return !!matchMedia(\"(pointer:coarse)\").matches;\n    if (\"orientation\" in window)\n      return true;\n    return isUserAgentMobile(navigator.userAgent);\n  }\n\n  // src/lib/super-video-background.js\n  var SuperVideoBackground = class {\n    constructor(elem, params, id, uid, type, factoryInstance) {\n      if (!id)\n        return;\n      this.is_mobile = isMobile();\n      this.type = type;\n      this.id = id;\n      this.factoryInstance = factoryInstance;\n      this.element = elem;\n      this.playerElement = null;\n      this.uid = uid;\n      this.element.setAttribute(\"data-vbg-uid\", uid);\n      this.buttons = {};\n      this.isIntersecting = false;\n      this.paused = false;\n      this.muted = false;\n      this.currentState = \"notstarted\";\n      this.initialPlay = false;\n      this.initialVolume = false;\n      this.volume = 1;\n      this.params = {};\n      const DEFAULTS = {\n        \"pause\": false,\n        //deprecated\n        \"play-button\": false,\n        \"mute-button\": false,\n        \"autoplay\": true,\n        \"muted\": true,\n        \"loop\": true,\n        \"mobile\": true,\n        \"load-background\": false,\n        \"resolution\": \"16:9\",\n        \"inline-styles\": true,\n        \"fit-box\": false,\n        \"offset\": 100,\n        // since showinfo is deprecated and ignored after September 25, 2018. we add +100 to hide it in the overflow\n        \"start-at\": 0,\n        \"end-at\": 0,\n        \"poster\": null,\n        \"always-play\": false,\n        \"volume\": 1,\n        \"no-cookie\": true,\n        \"force-on-low-battery\": false,\n        \"lazyloading\": false,\n        \"title\": \"Video background\"\n      };\n      this.params = this.parseProperties(params, DEFAULTS, this.element, [\"data-ytbg-\", \"data-vbg-\"]);\n      if (this.params.pause) {\n        this.params[\"play-button\"] = this.params.pause;\n      }\n      this.params.resolution_mod = parseResolutionString(this.params.resolution);\n      this.muted = this.params.muted;\n      this.volume = this.params.volume;\n      this.currentTime = this.params[\"start-at\"] || 0;\n      this.duration = this.params[\"end-at\"] || 0;\n      this.percentComplete = 0;\n      if (this.params[\"start-at\"])\n        this.percentComplete = this.timeToPercentage(this.params[\"start-at\"]);\n      this.buildWrapperHTML();\n      if (this.is_mobile && !this.params.mobile)\n        return;\n      if (this.params[\"play-button\"]) {\n        generateActionButton(this, {\n          name: \"playing\",\n          className: \"play-toggle\",\n          innerHtml: '<i class=\"fa\"></i>',\n          initialState: !this.paused,\n          stateClassName: \"paused\",\n          condition_parameter: \"paused\",\n          stateChildClassNames: [\"fa-pause-circle\", \"fa-play-circle\"],\n          actions: [\"play\", \"pause\"]\n        });\n      }\n      if (this.params[\"mute-button\"]) {\n        generateActionButton(this, {\n          name: \"muted\",\n          className: \"mute-toggle\",\n          innerHtml: '<i class=\"fa\"></i>',\n          initialState: this.muted,\n          stateClassName: \"muted\",\n          condition_parameter: \"muted\",\n          stateChildClassNames: [\"fa-volume-up\", \"fa-volume-mute\"],\n          actions: [\"unmute\", \"mute\"]\n        });\n      }\n    }\n    timeToPercentage(time) {\n      if (time <= this.params[\"start-at\"])\n        return 0;\n      if (time >= this.duration)\n        return 100;\n      if (time <= 0)\n        return 0;\n      time -= this.params[\"start-at\"];\n      const duration = this.duration - this.params[\"start-at\"];\n      return percentage(time, duration);\n    }\n    percentageToTime(percentage2) {\n      if (!this.duration)\n        return this.params[\"start-at\"] || 0;\n      if (percentage2 > 100)\n        return this.duration;\n      if (percentage2 <= 0)\n        return this.params[\"start-at\"] || 0;\n      const duration = this.duration - this.params[\"start-at\"];\n      let time = percentage2 * duration / 100;\n      time = fixed(time, 3);\n      if (time > duration)\n        time = duration;\n      if (this.params[\"start-at\"])\n        time += this.params[\"start-at\"];\n      return time;\n    }\n    resize(element) {\n      if (!this.params[\"fit-box\"])\n        proportionalParentCoverResize(element || this.playerElement, this.params.resolution_mod, this.params.offset);\n      this.dispatchEvent(\"video-background-resize\");\n    }\n    stylePlayerElement(element) {\n      if (!element)\n        return;\n      if (this.params[\"inline-styles\"]) {\n        element.style.top = \"50%\";\n        element.style.left = \"50%\";\n        element.style.transform = \"translateX(-50%) translateY(-50%)\";\n        element.style.position = \"absolute\";\n        element.style.opacity = 0;\n      }\n      if (this.params[\"fit-box\"]) {\n        element.style.width = \"100%\";\n        element.style.height = \"100%\";\n      }\n    }\n    buildWrapperHTML() {\n      const parent = this.element.parentNode;\n      this.element.classList.add(\"youtube-background\", \"video-background\");\n      const wrapper_styles = {\n        \"height\": \"100%\",\n        \"width\": \"100%\",\n        \"z-index\": \"0\",\n        \"position\": \"absolute\",\n        \"overflow\": \"hidden\",\n        \"top\": 0,\n        // added by @insad\n        \"left\": 0,\n        \"bottom\": 0,\n        \"right\": 0\n      };\n      if (!this.params[\"mute-button\"]) {\n        wrapper_styles[\"pointer-events\"] = \"none\";\n      }\n      if (this.params[\"load-background\"] || this.params[\"poster\"]) {\n        this.loadBackground(this.id);\n        if (this.params[\"poster\"])\n          wrapper_styles[\"background-image\"] = `url(${this.params[\"poster\"]})`;\n        wrapper_styles[\"background-size\"] = \"cover\";\n        wrapper_styles[\"background-repeat\"] = \"no-repeat\";\n        wrapper_styles[\"background-position\"] = \"center\";\n      }\n      if (this.params[\"inline-styles\"]) {\n        for (let property in wrapper_styles) {\n          this.element.style[property] = wrapper_styles[property];\n        }\n        if (![\"absolute\", \"fixed\", \"relative\", \"sticky\"].indexOf(parent.style.position)) {\n          parent.style.position = \"relative\";\n        }\n      }\n      if (this.params[\"play-button\"] || this.params[\"mute-button\"]) {\n        const controls = document.createElement(\"div\");\n        controls.className = \"video-background-controls\";\n        controls.style.position = \"absolute\";\n        controls.style.top = \"10px\";\n        controls.style.right = \"10px\";\n        controls.style[\"z-index\"] = 2;\n        this.controls_element = controls;\n        parent.appendChild(controls);\n      }\n      return this.element;\n    }\n    loadBackground(id) {\n      if (!this.params[\"load-background\"])\n        return;\n      if (!id)\n        return;\n      if (this.type === \"youtube\")\n        this.element.style[\"background-image\"] = `url(https://img.youtube.com/vi/${id}/hqdefault.jpg)`;\n      if (this.type === \"vimeo\")\n        this.element.style[\"background-image\"] = `url(https://vumbnail.com/${id}.jpg)`;\n    }\n    destroy() {\n      this.playerElement.remove();\n      this.element.classList.remove(\"youtube-background\", \"video-background\");\n      this.element.removeAttribute(\"data-vbg-uid\");\n      this.element.style = \"\";\n      if (this.params[\"play-button\"] || this.params[\"mute-button\"]) {\n        this.controls_element.remove();\n      }\n      if (this.timeUpdateTimer)\n        clearInterval(this.timeUpdateTimer);\n      this.dispatchEvent(\"video-background-destroyed\");\n    }\n    setDuration(duration) {\n      if (this.duration === duration)\n        return;\n      if (this.params[\"end-at\"]) {\n        if (duration > this.params[\"end-at\"]) {\n          this.duration = this.params[\"end-at\"];\n          return;\n        }\n        if (duration < this.params[\"end-at\"]) {\n          this.duration = duration;\n          return;\n        }\n      } else {\n        this.duration = duration;\n        return;\n      }\n      if (duration <= 0)\n        this.duration = this.params[\"end-at\"];\n    }\n    setStartAt(startAt) {\n      this.params[\"start-at\"] = startAt;\n    }\n    setEndAt(endAt) {\n      this.params[\"end-at\"] = endAt;\n      if (this.duration > endAt)\n        this.duration = endAt;\n      if (this.currentTime > endAt)\n        this.onVideoEnded();\n    }\n    dispatchEvent(name) {\n      this.element.dispatchEvent(new CustomEvent(name, { bubbles: true, detail: this }));\n    }\n    shouldPlay() {\n      if (this.currentState === \"ended\" && !this.params.loop)\n        return false;\n      if (this.params[\"always-play\"] && this.currentState !== \"playing\")\n        return true;\n      if (this.isIntersecting && this.params.autoplay && this.currentState !== \"playing\")\n        return true;\n      return false;\n    }\n    mobileLowBatteryAutoplayHack() {\n      if (!this.params[\"force-on-low-battery\"])\n        return;\n      if (!this.is_mobile && this.params.mobile)\n        return;\n      const forceAutoplay = function() {\n        if (!this.initialPlay && this.params.autoplay && this.params.muted) {\n          this.softPlay();\n          if (!this.isIntersecting && !this.params[\"always-play\"]) {\n            this.softPause();\n          }\n        }\n      };\n      document.addEventListener(\"touchstart\", forceAutoplay.bind(this), { once: true });\n    }\n    parseProperties(params, defaults, element, attr_prefix) {\n      let res_params = {};\n      if (!params) {\n        res_params = defaults;\n      } else {\n        for (let k in defaults) {\n          res_params[k] = !params.hasOwnProperty(k) ? defaults[k] : params[k];\n        }\n      }\n      if (!element)\n        return res_params;\n      for (let k in res_params) {\n        let data;\n        if (isArray(attr_prefix)) {\n          for (let i = 0; i < attr_prefix.length; i++) {\n            const temp_data = element.getAttribute(attr_prefix[i] + k);\n            if (temp_data) {\n              data = temp_data;\n              break;\n            }\n          }\n        } else {\n          data = element.getAttribute(attr_prefix + k);\n        }\n        if (data !== void 0 && data !== null) {\n          res_params[k] = stringToType(data);\n        }\n      }\n      return res_params;\n    }\n  };\n\n  // src/lib/youtube-background.js\n  var YoutubeBackground = class extends SuperVideoBackground {\n    constructor(elem, params, id, uid, factoryInstance) {\n      super(elem, params, id, uid, \"youtube\", factoryInstance);\n      if (!id)\n        return;\n      if (this.is_mobile && !this.params.mobile)\n        return;\n      this.injectScript();\n      this.player = null;\n      this.injectPlayer();\n      this.STATES = {\n        \"-1\": \"notstarted\",\n        \"0\": \"ended\",\n        \"1\": \"playing\",\n        \"2\": \"paused\",\n        \"3\": \"buffering\",\n        \"5\": \"cued\"\n      };\n      this.timeUpdateTimer = null;\n      this.timeUpdateInterval = 250;\n      this.initYTPlayer();\n    }\n    startTimeUpdateTimer() {\n      if (this.timeUpdateTimer)\n        return;\n      this.timeUpdateTimer = setInterval(this.onVideoTimeUpdate.bind(this), this.timeUpdateInterval);\n    }\n    stopTimeUpdateTimer() {\n      clearInterval(this.timeUpdateTimer);\n      this.timeUpdateTimer = null;\n    }\n    convertState(state) {\n      return this.STATES[state];\n    }\n    initYTPlayer() {\n      if (!window.hasOwnProperty(\"YT\") || this.player !== null)\n        return;\n      this.player = new YT.Player(this.uid, {\n        events: {\n          \"onReady\": this.onVideoPlayerReady.bind(this),\n          \"onStateChange\": this.onVideoStateChange.bind(this)\n          // 'onError': this.onVideoError.bind(this)\n        }\n      });\n      if (this.volume !== 1 && !this.muted)\n        this.setVolume(this.volume);\n    }\n    onVideoError(event) {\n      console.error(event);\n    }\n    injectScript() {\n      const src = \"https://www.youtube.com/player_api\";\n      if (window.hasOwnProperty(\"YT\") || document.querySelector(`script[src=\"${src}\"]`))\n        return;\n      const tag = document.createElement(\"script\");\n      tag.async = true;\n      tag.src = src;\n      const firstScriptTag = document.getElementsByTagName(\"script\")[0];\n      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n    }\n    generatePlayerElement() {\n      const playerElement = document.createElement(\"iframe\");\n      if (this.params.title)\n        playerElement.setAttribute(\"title\", this.params.title);\n      playerElement.setAttribute(\"frameborder\", 0);\n      playerElement.setAttribute(\"allow\", \"autoplay; mute\");\n      if (this.params[\"lazyloading\"])\n        playerElement.setAttribute(\"loading\", \"lazy\");\n      return playerElement;\n    }\n    generateSrcURL(id) {\n      let site = \"https://www.youtube.com/embed/\";\n      if (this.params[\"no-cookie\"]) {\n        site = \"https://www.youtube-nocookie.com/embed/\";\n      }\n      let src = `${site}${id}?&enablejsapi=1&disablekb=1&controls=0&rel=0&iv_load_policy=3&cc_load_policy=0&playsinline=1&showinfo=0&modestbranding=1&fs=0`;\n      if (this.params.muted) {\n        src += \"&mute=1\";\n      }\n      if (this.params.autoplay && (this.params[\"always-play\"] || this.isIntersecting)) {\n        src += \"&autoplay=1\";\n      }\n      if (this.params.loop) {\n        src += \"&loop=1\";\n      }\n      return src;\n    }\n    injectPlayer() {\n      this.playerElement = this.generatePlayerElement();\n      this.src = this.generateSrcURL(this.id);\n      this.playerElement.src = this.src;\n      this.playerElement.id = this.uid;\n      this.stylePlayerElement(this.playerElement);\n      this.element.appendChild(this.playerElement);\n      this.resize(this.playerElement);\n    }\n    /* ===== API ===== */\n    setSource(url) {\n      const pts = url.match(RE_YOUTUBE);\n      if (!pts || !pts.length)\n        return;\n      this.id = pts[1];\n      this.src = this.generateSrcURL(this.id);\n      this.playerElement.src = this.src;\n      if (this.element.hasAttribute(\"data-vbg\"))\n        this.element.setAttribute(\"data-vbg\", this.src);\n      if (this.element.hasAttribute(\"data-ytbg\"))\n        this.element.setAttribute(\"data-ytbg\", this.src);\n      this.loadBackground(this.id);\n    }\n    onVideoTimeUpdate() {\n      const ctime = this.player.getCurrentTime();\n      if (ctime === this.currentTime)\n        return;\n      this.currentTime = ctime;\n      this.percentComplete = this.timeToPercentage(this.currentTime);\n      if (this.params[\"end-at\"] && this.duration && this.currentTime >= this.duration) {\n        this.currentState = \"ended\";\n        this.dispatchEvent(\"video-background-state-change\");\n        this.onVideoEnded();\n        this.stopTimeUpdateTimer();\n        return;\n      }\n      this.dispatchEvent(\"video-background-time-update\");\n    }\n    onVideoPlayerReady() {\n      this.mobileLowBatteryAutoplayHack();\n      if (this.params.autoplay && (this.params[\"always-play\"] || this.isIntersecting)) {\n        if (this.params[\"start-at\"])\n          this.seekTo(this.params[\"start-at\"]);\n        this.player.playVideo();\n      }\n      this.setDuration(this.player.getDuration());\n      this.dispatchEvent(\"video-background-ready\");\n    }\n    onVideoStateChange(event) {\n      this.currentState = this.convertState(event.data);\n      if (this.currentState === \"ended\")\n        this.onVideoEnded();\n      if (this.currentState === \"notstarted\" && this.params.autoplay) {\n        this.seekTo(this.params[\"start-at\"]);\n        this.player.playVideo();\n      }\n      if (this.currentState === \"playing\")\n        this.onVideoPlay();\n      if (this.currentState === \"paused\")\n        this.onVideoPause();\n      this.dispatchEvent(\"video-background-state-change\");\n    }\n    onVideoPlay() {\n      if (!this.initialPlay) {\n        this.initialPlay = true;\n        this.playerElement.style.opacity = 1;\n      }\n      const seconds = this.player.getCurrentTime();\n      if (this.params[\"start-at\"] && seconds < this.params[\"start-at\"]) {\n        this.seekTo(this.params[\"start-at\"]);\n      }\n      if (this.duration && seconds >= this.duration) {\n        this.seekTo(this.params[\"start-at\"]);\n      }\n      if (!this.duration) {\n        this.setDuration(this.player.getDuration());\n      }\n      this.dispatchEvent(\"video-background-play\");\n      this.startTimeUpdateTimer();\n    }\n    onVideoPause() {\n      this.stopTimeUpdateTimer();\n      this.dispatchEvent(\"video-background-pause\");\n    }\n    onVideoEnded() {\n      this.dispatchEvent(\"video-background-ended\");\n      if (!this.params.loop)\n        return this.pause();\n      this.seekTo(this.params[\"start-at\"]);\n      this.player.playVideo();\n    }\n    seek(percentage2) {\n      this.seekTo(this.percentageToTime(percentage2), true);\n    }\n    seekTo(seconds, allowSeekAhead = true) {\n      if (!this.player)\n        return;\n      this.player.seekTo(seconds, allowSeekAhead);\n      this.dispatchEvent(\"video-background-seeked\");\n    }\n    softPause() {\n      if (!this.player || this.currentState === \"paused\")\n        return;\n      this.stopTimeUpdateTimer();\n      this.player.pauseVideo();\n    }\n    softPlay() {\n      if (!this.player || this.currentState === \"playing\")\n        return;\n      this.player.playVideo();\n    }\n    play() {\n      if (!this.player)\n        return;\n      this.paused = false;\n      this.player.playVideo();\n    }\n    pause() {\n      if (!this.player)\n        return;\n      this.paused = true;\n      this.stopTimeUpdateTimer();\n      this.player.pauseVideo();\n    }\n    unmute() {\n      if (!this.player)\n        return;\n      this.muted = false;\n      if (!this.initialVolume) {\n        this.initialVolume = true;\n        this.setVolume(this.params.volume);\n      }\n      this.player.unMute();\n      this.dispatchEvent(\"video-background-unmute\");\n    }\n    mute() {\n      if (!this.player)\n        return;\n      this.muted = true;\n      this.player.mute();\n      this.dispatchEvent(\"video-background-mute\");\n    }\n    getVolume() {\n      if (!this.player)\n        return;\n      return this.player.getVolume() / 100;\n    }\n    setVolume(volume) {\n      if (!this.player)\n        return;\n      this.volume = volume;\n      this.player.setVolume(volume * 100);\n      this.dispatchEvent(\"video-background-volume-change\");\n    }\n  };\n\n  // src/lib/vimeo-background.js\n  var VimeoBackground = class extends SuperVideoBackground {\n    constructor(elem, params, id, uid, factoryInstance) {\n      super(elem, params, id.id, uid, \"vimeo\", factoryInstance);\n      if (!id)\n        return;\n      this.unlisted = id.unlisted;\n      if (this.is_mobile && !this.params.mobile)\n        return;\n      this.injectScript();\n      this.player = null;\n      this.injectPlayer();\n      this.initVimeoPlayer();\n    }\n    injectScript() {\n      const src = \"https://player.vimeo.com/api/player.js\";\n      if (window.hasOwnProperty(\"Vimeo\") || document.querySelector(`script[src=\"${src}\"]`))\n        return;\n      const tag = document.createElement(\"script\");\n      tag.async = true;\n      if (window.hasOwnProperty(\"onVimeoIframeAPIReady\") && typeof window.onVimeoIframeAPIReady === \"function\")\n        tag.addEventListener(\"load\", () => {\n          window.onVimeoIframeAPIReady();\n        });\n      tag.src = src;\n      const firstScriptTag = document.getElementsByTagName(\"script\")[0];\n      firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);\n    }\n    initVimeoPlayer() {\n      if (!window.hasOwnProperty(\"Vimeo\") || this.player !== null)\n        return;\n      this.player = new Vimeo.Player(this.playerElement);\n      this.player.on(\"loaded\", this.onVideoPlayerReady.bind(this));\n      this.player.on(\"ended\", this.onVideoEnded.bind(this));\n      this.player.on(\"play\", this.onVideoPlay.bind(this));\n      this.player.on(\"pause\", this.onVideoPause.bind(this));\n      this.player.on(\"bufferstart\", this.onVideoBuffering.bind(this));\n      this.player.on(\"timeupdate\", this.onVideoTimeUpdate.bind(this));\n      if (this.volume !== 1 && !this.muted)\n        this.setVolume(this.volume);\n    }\n    onVideoError(event) {\n      console.error(event);\n    }\n    generatePlayerElement() {\n      const playerElement = document.createElement(\"iframe\");\n      if (this.params.title)\n        playerElement.setAttribute(\"title\", this.params.title);\n      playerElement.setAttribute(\"frameborder\", 0);\n      playerElement.setAttribute(\"allow\", \"autoplay; mute\");\n      if (this.params[\"lazyloading\"])\n        playerElement.setAttribute(\"loading\", \"lazy\");\n      return playerElement;\n    }\n    generateSrcURL(id, unlisted) {\n      unlisted = unlisted ? `h=${unlisted}&` : \"\";\n      let src = `https://player.vimeo.com/video/${id}?${unlisted}background=1&controls=0`;\n      if (this.params.muted) {\n        src += \"&muted=1\";\n      }\n      if (this.params.autoplay && (this.params[\"always-play\"] || this.isIntersecting)) {\n        src += \"&autoplay=1\";\n      }\n      if (this.params.loop) {\n        src += \"&loop=1&autopause=0\";\n      }\n      if (this.params[\"no-cookie\"]) {\n        src += \"&dnt=1\";\n      }\n      if (this.params[\"start-at\"]) {\n        src += \"#t=\" + this.params[\"start-at\"] + \"s\";\n      }\n      return src;\n    }\n    injectPlayer() {\n      this.playerElement = this.generatePlayerElement();\n      this.src = this.generateSrcURL(this.id, this.unlisted);\n      this.playerElement.src = this.src;\n      this.playerElement.id = this.uid;\n      this.stylePlayerElement(this.playerElement);\n      this.element.appendChild(this.playerElement);\n      this.resize(this.playerElement);\n    }\n    updateState(state) {\n      this.currentState = state;\n      this.dispatchEvent(\"video-background-state-change\");\n    }\n    /* ===== API ===== */\n    setSource(url) {\n      const pts = url.match(RE_VIMEO);\n      if (!pts || !pts.length)\n        return;\n      this.id = pts[1];\n      this.src = this.generateSrcURL(this.id);\n      this.playerElement.src = this.src;\n      if (this.element.hasAttribute(\"data-vbg\"))\n        this.element.setAttribute(\"data-vbg\", this.src);\n      if (this.element.hasAttribute(\"data-ytbg\"))\n        this.element.setAttribute(\"data-ytbg\", this.src);\n      this.loadBackground(this.id);\n    }\n    onVideoPlayerReady() {\n      this.mobileLowBatteryAutoplayHack();\n      if (this.params[\"start-at\"])\n        this.seekTo(this.params[\"start-at\"]);\n      if (this.params.autoplay && (this.params[\"always-play\"] || this.isIntersecting)) {\n        this.player.play();\n      }\n      this.player.getDuration().then((duration) => {\n        this.setDuration(duration);\n      });\n      this.dispatchEvent(\"video-background-ready\");\n    }\n    onVideoEnded() {\n      this.updateState(\"ended\");\n      this.dispatchEvent(\"video-background-ended\");\n      if (!this.params.loop)\n        return this.pause();\n      this.seekTo(this.params[\"start-at\"]);\n      this.updateState(\"playing\");\n      this.dispatchEvent(\"video-background-play\");\n    }\n    onVideoTimeUpdate(event) {\n      this.currentTime = event.seconds;\n      this.percentComplete = this.timeToPercentage(event.seconds);\n      this.dispatchEvent(\"video-background-time-update\");\n      this.setDuration(event.duration);\n      if (this.params[\"end-at\"] && this.duration && event.seconds >= this.duration) {\n        this.onVideoEnded();\n      }\n    }\n    onVideoBuffering() {\n      this.updateState(\"buffering\");\n    }\n    onVideoPlay(event) {\n      this.setDuration(event.duration);\n      if (!this.initialPlay) {\n        this.initialPlay = true;\n        this.playerElement.style.opacity = 1;\n        this.player.setLoop(this.params.loop);\n        if (!(this.params.autoplay && (this.params[\"always-play\"] || this.isIntersecting))) {\n          return this.player.pause();\n        }\n      }\n      const seconds = event.seconds;\n      if (this.params[\"start-at\"] && seconds < this.params[\"start-at\"]) {\n        this.seekTo(this.params[\"start-at\"]);\n      }\n      if (this.duration && seconds >= this.duration) {\n        this.seekTo(this.params[\"start-at\"]);\n      }\n      this.updateState(\"playing\");\n      this.dispatchEvent(\"video-background-play\");\n    }\n    onVideoPause() {\n      this.updateState(\"paused\");\n      this.dispatchEvent(\"video-background-pause\");\n    }\n    seek(percentage2) {\n      this.seekTo(this.percentageToTime(percentage2));\n    }\n    seekTo(time) {\n      if (!this.player)\n        return;\n      this.player.setCurrentTime(time);\n      this.dispatchEvent(\"video-background-seeked\");\n    }\n    softPause() {\n      if (!this.player || this.currentState === \"paused\")\n        return;\n      this.player.pause();\n    }\n    softPlay() {\n      if (!this.player || this.currentState === \"playing\")\n        return;\n      this.player.play();\n    }\n    play() {\n      if (!this.player)\n        return;\n      this.paused = false;\n      this.player.play();\n    }\n    pause() {\n      if (!this.player)\n        return;\n      this.paused = true;\n      this.player.pause();\n    }\n    unmute() {\n      if (!this.player)\n        return;\n      this.muted = false;\n      if (!this.initialVolume) {\n        this.initialVolume = true;\n        this.setVolume(this.params.volume);\n      }\n      this.player.setMuted(false);\n      this.dispatchEvent(\"video-background-unmute\");\n    }\n    mute() {\n      if (!this.player)\n        return;\n      this.muted = true;\n      this.player.setMuted(true);\n      this.dispatchEvent(\"video-background-mute\");\n    }\n    getVolume() {\n      if (!this.player)\n        return;\n      return this.player.getVolume();\n    }\n    setVolume(volume) {\n      if (!this.player)\n        return;\n      this.volume = volume;\n      this.player.setVolume(volume);\n      this.dispatchEvent(\"video-background-volume-change\");\n    }\n  };\n\n  // src/lib/video-background.js\n  var VideoBackground = class extends SuperVideoBackground {\n    constructor(elem, params, vid_data, uid, factoryInstance) {\n      super(elem, params, vid_data.link, uid, \"video\", factoryInstance);\n      if (!vid_data || !vid_data.link)\n        return;\n      if (this.is_mobile && !this.params.mobile)\n        return;\n      this.src = vid_data.link;\n      this.ext = /(?:\\.([^.]+))?$/.exec(vid_data.id)[1];\n      this.uid = uid;\n      this.element.setAttribute(\"data-vbg-uid\", uid);\n      this.player = null;\n      this.buttons = {};\n      this.MIME_MAP = {\n        \"ogv\": \"video/ogg\",\n        \"ogm\": \"video/ogg\",\n        \"ogg\": \"video/ogg\",\n        \"avi\": \"video/avi\",\n        \"mp4\": \"video/mp4\",\n        \"webm\": \"video/webm\",\n        \"m4v\": \"video/x-m4v\",\n        \"mov\": \"video/quicktime\",\n        \"qt\": \"video/quicktime\"\n      };\n      this.mime = this.MIME_MAP[this.ext.toLowerCase()];\n      this.injectPlayer();\n      this.mobileLowBatteryAutoplayHack();\n      this.dispatchEvent(\"video-background-ready\");\n    }\n    generatePlayerElement() {\n      const playerElement = document.createElement(\"video\");\n      if (this.params.title)\n        playerElement.setAttribute(\"title\", this.params.title);\n      playerElement.setAttribute(\"playsinline\", \"\");\n      if (this.params.loop)\n        playerElement.setAttribute(\"loop\", \"\");\n      if (this.params.autoplay && (this.params[\"always-play\"] || this.isIntersecting)) {\n        playerElement.setAttribute(\"autoplay\", \"\");\n        playerElement.autoplay = true;\n      }\n      if (this.muted) {\n        playerElement.setAttribute(\"muted\", \"\");\n        playerElement.muted = true;\n      }\n      if (this.params[\"lazyloading\"])\n        playerElement.setAttribute(\"loading\", \"lazy\");\n      return playerElement;\n    }\n    injectPlayer() {\n      this.player = this.generatePlayerElement();\n      this.playerElement = this.player;\n      if (this.volume !== 1 && !this.muted)\n        this.setVolume(this.volume);\n      this.playerElement.setAttribute(\"id\", this.uid);\n      this.stylePlayerElement(this.playerElement);\n      this.player.addEventListener(\"loadedmetadata\", this.onVideoLoadedMetadata.bind(this));\n      this.player.addEventListener(\"durationchange\", this.onVideoLoadedMetadata.bind(this));\n      this.player.addEventListener(\"canplay\", this.onVideoCanPlay.bind(this));\n      this.player.addEventListener(\"timeupdate\", this.onVideoTimeUpdate.bind(this));\n      this.player.addEventListener(\"play\", this.onVideoPlay.bind(this));\n      this.player.addEventListener(\"pause\", this.onVideoPause.bind(this));\n      this.player.addEventListener(\"waiting\", this.onVideoBuffering.bind(this));\n      this.player.addEventListener(\"ended\", this.onVideoEnded.bind(this));\n      this.element.appendChild(this.playerElement);\n      const source = document.createElement(\"source\");\n      source.setAttribute(\"src\", this.src);\n      source.setAttribute(\"type\", this.mime);\n      this.playerElement.appendChild(source);\n      this.resize(this.playerElement);\n    }\n    updateState(state) {\n      this.currentState = state;\n      this.dispatchEvent(\"video-background-state-change\");\n    }\n    /* ===== API ===== */\n    setSource(url) {\n      const pts = url.match(RE_VIDEO);\n      if (!pts || !pts.length)\n        return;\n      this.id = pts[1];\n      this.ext = /(?:\\.([^.]+))?$/.exec(this.id)[1];\n      this.mime = this.MIME_MAP[this.ext.toLowerCase()];\n      this.playerElement.innerHTML = \"\";\n      const source = document.createElement(\"source\");\n      source.setAttribute(\"src\", url);\n      source.setAttribute(\"type\", this.mime);\n      this.playerElement.appendChild(source);\n      this.src = url;\n      if (this.element.hasAttribute(\"data-vbg\"))\n        this.element.setAttribute(\"data-vbg\", this.src);\n      if (this.element.hasAttribute(\"data-ytbg\"))\n        this.element.setAttribute(\"data-ytbg\", this.src);\n    }\n    onVideoLoadedMetadata() {\n      this.setDuration(this.player.duration);\n    }\n    onVideoCanPlay() {\n      this.setDuration(this.player.duration);\n    }\n    onVideoTimeUpdate() {\n      this.currentTime = this.player.currentTime;\n      this.percentComplete = this.timeToPercentage(this.player.currentTime);\n      this.dispatchEvent(\"video-background-time-update\");\n      if (this.params[\"end-at\"] && this.currentTime >= this.duration) {\n        this.onVideoEnded();\n      }\n    }\n    onVideoPlay() {\n      if (!this.initialPlay) {\n        this.initialPlay = true;\n        this.playerElement.style.opacity = 1;\n      }\n      const seconds = this.player.currentTime;\n      if (this.params[\"start-at\"] && seconds <= this.params[\"start-at\"]) {\n        this.seekTo(this.params[\"start-at\"]);\n      }\n      if (this.duration && seconds >= this.duration) {\n        this.seekTo(this.params[\"start-at\"]);\n      }\n      this.updateState(\"playing\");\n      this.dispatchEvent(\"video-background-play\");\n    }\n    onVideoPause() {\n      this.updateState(\"paused\");\n      this.dispatchEvent(\"video-background-pause\");\n    }\n    onVideoEnded() {\n      this.updateState(\"ended\");\n      this.dispatchEvent(\"video-background-ended\");\n      if (!this.params.loop)\n        return this.pause();\n      this.seekTo(this.params[\"start-at\"]);\n      this.onVideoPlay();\n    }\n    onVideoBuffering() {\n      this.updateState(\"buffering\");\n    }\n    seek(percentage2) {\n      this.seekTo(this.percentageToTime(percentage2));\n    }\n    seekTo(seconds) {\n      if (!this.player)\n        return;\n      if (this.player.hasOwnProperty(\"fastSeek\")) {\n        this.player.fastSeek(seconds);\n        return;\n      }\n      this.player.currentTime = seconds;\n      this.dispatchEvent(\"video-background-seeked\");\n    }\n    softPause() {\n      if (!this.player || this.currentState === \"paused\")\n        return;\n      this.player.pause();\n    }\n    softPlay() {\n      if (!this.player || this.currentState === \"playing\")\n        return;\n      this.player.play();\n    }\n    play() {\n      if (!this.player)\n        return;\n      this.paused = false;\n      this.player.play();\n    }\n    pause() {\n      if (!this.player)\n        return;\n      this.paused = true;\n      this.player.pause();\n    }\n    unmute() {\n      if (!this.player)\n        return;\n      this.muted = false;\n      this.player.muted = false;\n      if (!this.initialVolume) {\n        this.initialVolume = true;\n        this.setVolume(this.params.volume);\n      }\n      this.dispatchEvent(\"video-background-unmute\");\n    }\n    mute() {\n      if (!this.player)\n        return;\n      this.muted = true;\n      this.player.muted = true;\n      this.dispatchEvent(\"video-background-mute\");\n    }\n    getVolume() {\n      if (!this.player)\n        return;\n      return this.player.volume;\n    }\n    setVolume(volume) {\n      if (!this.player)\n        return;\n      this.volume = volume;\n      this.player.volume = volume;\n      this.dispatchEvent(\"video-background-volume-change\");\n    }\n  };\n\n  // src/video-backgrounds.js\n  var VideoBackgrounds = class {\n    constructor(selector, params) {\n      this.elements = selector;\n      if (this.elements instanceof Element)\n        this.elements = [this.elements];\n      if (typeof this.elements === \"string\")\n        this.elements = document.querySelectorAll(selector);\n      this.index = {};\n      const self = this;\n      this.intersectionObserver = null;\n      if (\"IntersectionObserver\" in window) {\n        this.intersectionObserver = new IntersectionObserver(function(entries) {\n          entries.forEach(function(entry) {\n            const uid = entry.target.getAttribute(\"data-vbg-uid\");\n            if (uid && self.index.hasOwnProperty(uid) && entry.isIntersecting) {\n              self.index[uid].isIntersecting = true;\n              try {\n                if (self.index[uid].player && !self.index[uid].paused)\n                  self.index[uid].softPlay();\n              } catch (e) {\n              }\n            } else {\n              self.index[uid].isIntersecting = false;\n              try {\n                if (self.index[uid].player)\n                  self.index[uid].softPause();\n              } catch (e) {\n              }\n            }\n          });\n        });\n      }\n      this.resizeObserver = null;\n      if (\"ResizeObserver\" in window) {\n        this.resizeObserver = new ResizeObserver(function(entries) {\n          entries.forEach(function(entry) {\n            const uid = entry.target.getAttribute(\"data-vbg-uid\");\n            if (uid && self.index.hasOwnProperty(uid)) {\n              window.requestAnimationFrame(() => self.index[uid].resize());\n            }\n          });\n        });\n      } else {\n        window.addEventListener(\"resize\", function() {\n          for (let k in self.index) {\n            window.requestAnimationFrame(() => self.index[k].resize(self.index[k].playerElement));\n          }\n        });\n      }\n      this.initPlayers();\n      if (!this.elements || !this.elements.length)\n        return;\n      for (let i = 0; i < this.elements.length; i++) {\n        const element = this.elements[i];\n        this.add(element, params);\n      }\n      document.addEventListener(\"visibilitychange\", this.onVisibilityChange.bind(this));\n    }\n    onVisibilityChange() {\n      if (document.hidden)\n        return;\n      for (let k in this.index) {\n        const instance = this.index[k];\n        if (instance.shouldPlay()) {\n          instance.softPlay();\n        }\n      }\n    }\n    add(element, params) {\n      if (!element)\n        return;\n      if (element.hasAttribute(\"data-vbg-uid\"))\n        return;\n      if (!this.intersectionObserver) {\n        if (!params)\n          params = {};\n        params[\"always-play\"] = true;\n      }\n      const link = element.getAttribute(\"data-youtube\") || element.getAttribute(\"data-vbg\");\n      const vid_data = this.getVidID(link);\n      if (!vid_data)\n        return;\n      const uid = this.generateUID(vid_data.id);\n      if (!uid)\n        return;\n      switch (vid_data.type) {\n        case \"YOUTUBE\":\n          const yb = new YoutubeBackground(element, params, vid_data.id, uid, this);\n          this.index[uid] = yb;\n          break;\n        case \"VIMEO\":\n          const vm = new VimeoBackground(element, params, vid_data, uid, this);\n          this.index[uid] = vm;\n          break;\n        case \"VIDEO\":\n          const vid = new VideoBackground(element, params, vid_data, uid, this);\n          this.index[uid] = vid;\n          break;\n      }\n      if (this.resizeObserver) {\n        this.resizeObserver.observe(element);\n      }\n      if (!this.index[uid].params[\"always-play\"] && this.intersectionObserver) {\n        this.intersectionObserver.observe(element);\n      }\n    }\n    destroy(element) {\n      const uid = element.uid || element.getAttribute(\"data-vbg-uid\");\n      if (uid && this.index.hasOwnProperty(uid)) {\n        if (!this.index[uid].params[\"always-play\"] && this.intersectionObserver)\n          this.intersectionObserver.unobserve(element);\n        if (this.resizeObserver)\n          this.resizeObserver.unobserve(element);\n        this.index[uid].destroy();\n        delete this.index[uid];\n      }\n    }\n    destroyAll() {\n      for (let k in this.index) {\n        this.destroy(this.index[k].playerElement);\n      }\n    }\n    getVidID(link) {\n      if (link === void 0 && link === null)\n        return;\n      this.re = {};\n      this.re.YOUTUBE = RE_YOUTUBE;\n      this.re.VIMEO = RE_VIMEO;\n      this.re.VIDEO = RE_VIDEO;\n      for (let k in this.re) {\n        const pts = link.match(this.re[k]);\n        if (pts && pts.length) {\n          this.re[k].lastIndex = 0;\n          const data = {\n            id: pts[1],\n            type: k,\n            regex_pts: pts,\n            link\n          };\n          if (k === \"VIMEO\") {\n            const unlistedQueryRegex = /(\\?|&)h=([^=&#?]+)/;\n            const unlistedPathRegex = /\\/[^\\/\\:\\.]+(\\:|\\/)([^:?\\/]+)\\s?$/;\n            const unlistedQuery = link.match(unlistedPathRegex) || link.match(unlistedQueryRegex);\n            if (unlistedQuery)\n              data.unlisted = unlistedQuery[2];\n          }\n          return data;\n        }\n      }\n      return;\n    }\n    generateUID(pref) {\n      pref = pref.replace(/[^a-zA-Z0-9\\-_]/g, \"-\");\n      pref = pref.replace(/-{2,}/g, \"-\");\n      pref = pref.replace(/^-+/, \"\").replace(/-+$/, \"\");\n      pref = \"vbg-\" + pref;\n      let uid = pref + \"-\" + randomIntInclusive(0, 9999);\n      while (this.index.hasOwnProperty(uid)) {\n        uid = pref + \"-\" + randomIntInclusive(0, 9999);\n      }\n      return uid;\n    }\n    get(element) {\n      const uid = typeof element === \"string\" ? element : element.getAttribute(\"data-vbg-uid\");\n      if (uid && this.index.hasOwnProperty(uid))\n        return this.index[uid];\n    }\n    pauseAll() {\n      for (let k in this.index) {\n        this.index[k].pause();\n      }\n    }\n    playAll() {\n      for (let k in this.index) {\n        this.index[k].play();\n      }\n    }\n    muteAll() {\n      for (let k in this.index) {\n        this.index[k].mute();\n      }\n    }\n    unmuteAll() {\n      for (let k in this.index) {\n        this.index[k].unmute();\n      }\n    }\n    setVolumeAll(volume) {\n      for (let k in this.index) {\n        this.index[k].setVolume(volume);\n      }\n    }\n    initPlayers(callback) {\n      const self = this;\n      window.onYouTubeIframeAPIReady = function() {\n        for (let k in self.index) {\n          if (self.index[k] instanceof YoutubeBackground) {\n            self.index[k].initYTPlayer();\n          }\n        }\n        if (callback) {\n          setTimeout(callback, 100);\n        }\n      };\n      if (window.hasOwnProperty(\"YT\") && window.YT.loaded) {\n        window.onYouTubeIframeAPIReady();\n      }\n      window.onVimeoIframeAPIReady = function() {\n        for (let k in self.index) {\n          if (self.index[k] instanceof VimeoBackground) {\n            self.index[k].initVimeoPlayer();\n          }\n        }\n        if (callback) {\n          setTimeout(callback, 100);\n        }\n      };\n      if (window.hasOwnProperty(\"Vimeo\") && window.Vimeo.hasOwnProperty(\"Player\")) {\n        window.onVimeoIframeAPIReady();\n      }\n    }\n  };\n\n  // src/main.js\n  if (typeof jQuery == \"function\") {\n    (function($) {\n      $.fn.youtube_background = function(params) {\n        const $this = $(this);\n        if (window.hasOwnProperty(\"VIDEO_BACKGROUNDS\")) {\n          window.VIDEO_BACKGROUNDS.add($this, params);\n          return $this;\n        }\n        window.VIDEO_BACKGROUNDS = new VideoBackgrounds(this, params);\n        return $this;\n      };\n    })(jQuery);\n  }\n  window.VideoBackgrounds = VideoBackgrounds;\n})();\n//# sourceMappingURL=jquery.youtube-background.js.map\n","import Swiper from 'swiper/bundle';\r\nimport 'swiper/css/bundle';\r\nimport 'youtube-background';\r\n\r\nexport async function DiagramScrollingHero() {\r\n    let heroSlider = document.querySelectorAll('.js-scrolling-hero');\r\n    let prevArrow = document.querySelectorAll('.swiper-button-prev');\r\n    let nextArrow = document.querySelectorAll('.swiper-button-next');\r\n\r\n    heroSlider.forEach(function ($slider, index) {\r\n        let slideCount = $slider.querySelectorAll('.swiper-slide').length;\r\n\r\n        if (slideCount > 1) {\r\n            let swiperSlides = new Swiper($slider, {\r\n                a11y: true,\r\n                loop: true,\r\n                keyboard: false,\r\n                pagination: {\r\n                    el: '.swiper-pagination',\r\n                    type: 'bullets',\r\n                    clickable: true\r\n                },\r\n                navigation: {\r\n                    nextEl: nextArrow[index],\r\n                    prevEl: prevArrow[index]\r\n                }\r\n            });\r\n        } else {\r\n            $slider.classList.add('no-slider');\r\n        }\r\n    });\r\n\r\n    if (window.innerWidth > 1184) {\r\n        $('.scrolling-hero-video > div[data-youtube]').youtube_background();\r\n    }\r\n};"],"names":["buttonOn","buttonObj","buttonOff","generateActionButton","obj","props","btn","e","stringToBoolean","str","stringToNumber","stringToArray","stringToObject","stringToRegex","stringToType","bool","isArray","o","isString","randomIntInclusive","min","max","safe","rand","random","fixed","number","digits","percentage","num","total","RE_YOUTUBE","RE_VIMEO","RE_VIDEO","parseResolutionString","res","DEFAULT_RESOLUTION","pts","w","h","query","selector","from","element","proportionalParentCoverResize","elements","ratio","offset","isUserAgentMobile","isMobile","SuperVideoBackground","elem","params","id","uid","type","factoryInstance","DEFAULTS","time","duration","percentage2","parent","wrapper_styles","property","controls","startAt","endAt","name","forceAutoplay","defaults","attr_prefix","res_params","k","data","i","temp_data","YoutubeBackground","state","event","src","tag","firstScriptTag","playerElement","site","url","ctime","seconds","allowSeekAhead","volume","VimeoBackground","unlisted","VideoBackground","vid_data","source","VideoBackgrounds","self","entries","entry","instance","link","yb","vm","vid","unlistedQueryRegex","unlistedPathRegex","unlistedQuery","pref","callback","$","$this","DiagramScrollingHero","heroSlider","prevArrow","nextArrow","$slider","index","Swiper"],"mappings":"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"}