{"version":3,"sources":["jsdelivr-header.js","/npm/vanilla-tilt@1.8.1/lib/vanilla-tilt.js"],"names":[],"mappings":"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","file":"/npm/vanilla-tilt@1.8.1/lib/vanilla-tilt.js","sourceRoot":"","sourcesContent":["/**\n * Minified by jsDelivr using Terser v5.39.0.\n * Original file: /npm/vanilla-tilt@1.8.1/lib/vanilla-tilt.js\n *\n * Do NOT use SRI with dynamically generated files! More information: https://www.jsdelivr.com/using-sri-with-dynamic-files\n */\n","'use strict';\n\nvar classCallCheck = function (instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\n/**\r\n * Created by Sergiu Șandor (micku7zu) on 1/27/2017.\r\n * Original idea: https://github.com/gijsroge/tilt.js\r\n * MIT License.\r\n * Version 1.8.1\r\n */\n\nvar VanillaTilt = function () {\n  function VanillaTilt(element) {\n    var settings = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    classCallCheck(this, VanillaTilt);\n\n    if (!(element instanceof Node)) {\n      throw \"Can't initialize VanillaTilt because \" + element + \" is not a Node.\";\n    }\n\n    this.width = null;\n    this.height = null;\n    this.clientWidth = null;\n    this.clientHeight = null;\n    this.left = null;\n    this.top = null;\n\n    // for Gyroscope sampling\n    this.gammazero = null;\n    this.betazero = null;\n    this.lastgammazero = null;\n    this.lastbetazero = null;\n\n    this.transitionTimeout = null;\n    this.updateCall = null;\n    this.event = null;\n\n    this.updateBind = this.update.bind(this);\n    this.resetBind = this.reset.bind(this);\n\n    this.element = element;\n    this.settings = this.extendSettings(settings);\n\n    this.reverse = this.settings.reverse ? -1 : 1;\n    this.resetToStart = VanillaTilt.isSettingTrue(this.settings[\"reset-to-start\"]);\n    this.glare = VanillaTilt.isSettingTrue(this.settings.glare);\n    this.glarePrerender = VanillaTilt.isSettingTrue(this.settings[\"glare-prerender\"]);\n    this.fullPageListening = VanillaTilt.isSettingTrue(this.settings[\"full-page-listening\"]);\n    this.gyroscope = VanillaTilt.isSettingTrue(this.settings.gyroscope);\n    this.gyroscopeSamples = this.settings.gyroscopeSamples;\n\n    this.elementListener = this.getElementListener();\n\n    if (this.glare) {\n      this.prepareGlare();\n    }\n\n    if (this.fullPageListening) {\n      this.updateClientSize();\n    }\n\n    this.addEventListeners();\n    this.reset();\n\n    if (this.resetToStart === false) {\n      this.settings.startX = 0;\n      this.settings.startY = 0;\n    }\n  }\n\n  VanillaTilt.isSettingTrue = function isSettingTrue(setting) {\n    return setting === \"\" || setting === true || setting === 1;\n  };\n\n  /**\r\n   * Method returns element what will be listen mouse events\r\n   * @return {Node}\r\n   */\n\n\n  VanillaTilt.prototype.getElementListener = function getElementListener() {\n    if (this.fullPageListening) {\n      return window.document;\n    }\n\n    if (typeof this.settings[\"mouse-event-element\"] === \"string\") {\n      var mouseEventElement = document.querySelector(this.settings[\"mouse-event-element\"]);\n\n      if (mouseEventElement) {\n        return mouseEventElement;\n      }\n    }\n\n    if (this.settings[\"mouse-event-element\"] instanceof Node) {\n      return this.settings[\"mouse-event-element\"];\n    }\n\n    return this.element;\n  };\n\n  /**\r\n   * Method set listen methods for this.elementListener\r\n   * @return {Node}\r\n   */\n\n\n  VanillaTilt.prototype.addEventListeners = function addEventListeners() {\n    this.onMouseEnterBind = this.onMouseEnter.bind(this);\n    this.onMouseMoveBind = this.onMouseMove.bind(this);\n    this.onMouseLeaveBind = this.onMouseLeave.bind(this);\n    this.onWindowResizeBind = this.onWindowResize.bind(this);\n    this.onDeviceOrientationBind = this.onDeviceOrientation.bind(this);\n\n    this.elementListener.addEventListener(\"mouseenter\", this.onMouseEnterBind);\n    this.elementListener.addEventListener(\"mouseleave\", this.onMouseLeaveBind);\n    this.elementListener.addEventListener(\"mousemove\", this.onMouseMoveBind);\n\n    if (this.glare || this.fullPageListening) {\n      window.addEventListener(\"resize\", this.onWindowResizeBind);\n    }\n\n    if (this.gyroscope) {\n      window.addEventListener(\"deviceorientation\", this.onDeviceOrientationBind);\n    }\n  };\n\n  /**\r\n   * Method remove event listeners from current this.elementListener\r\n   */\n\n\n  VanillaTilt.prototype.removeEventListeners = function removeEventListeners() {\n    this.elementListener.removeEventListener(\"mouseenter\", this.onMouseEnterBind);\n    this.elementListener.removeEventListener(\"mouseleave\", this.onMouseLeaveBind);\n    this.elementListener.removeEventListener(\"mousemove\", this.onMouseMoveBind);\n\n    if (this.gyroscope) {\n      window.removeEventListener(\"deviceorientation\", this.onDeviceOrientationBind);\n    }\n\n    if (this.glare || this.fullPageListening) {\n      window.removeEventListener(\"resize\", this.onWindowResizeBind);\n    }\n  };\n\n  VanillaTilt.prototype.destroy = function destroy() {\n    clearTimeout(this.transitionTimeout);\n    if (this.updateCall !== null) {\n      cancelAnimationFrame(this.updateCall);\n    }\n\n    this.element.style.willChange = \"\";\n    this.element.style.transition = \"\";\n    this.element.style.transform = \"\";\n    this.resetGlare();\n\n    this.removeEventListeners();\n    this.element.vanillaTilt = null;\n    delete this.element.vanillaTilt;\n\n    this.element = null;\n  };\n\n  VanillaTilt.prototype.onDeviceOrientation = function onDeviceOrientation(event) {\n    if (event.gamma === null || event.beta === null) {\n      return;\n    }\n\n    this.updateElementPosition();\n\n    if (this.gyroscopeSamples > 0) {\n      this.lastgammazero = this.gammazero;\n      this.lastbetazero = this.betazero;\n\n      if (this.gammazero === null) {\n        this.gammazero = event.gamma;\n        this.betazero = event.beta;\n      } else {\n        this.gammazero = (event.gamma + this.lastgammazero) / 2;\n        this.betazero = (event.beta + this.lastbetazero) / 2;\n      }\n\n      this.gyroscopeSamples -= 1;\n    }\n\n    var totalAngleX = this.settings.gyroscopeMaxAngleX - this.settings.gyroscopeMinAngleX;\n    var totalAngleY = this.settings.gyroscopeMaxAngleY - this.settings.gyroscopeMinAngleY;\n\n    var degreesPerPixelX = totalAngleX / this.width;\n    var degreesPerPixelY = totalAngleY / this.height;\n\n    var angleX = event.gamma - (this.settings.gyroscopeMinAngleX + this.gammazero);\n    var angleY = event.beta - (this.settings.gyroscopeMinAngleY + this.betazero);\n\n    var posX = angleX / degreesPerPixelX;\n    var posY = angleY / degreesPerPixelY;\n\n    if (this.updateCall !== null) {\n      cancelAnimationFrame(this.updateCall);\n    }\n\n    this.event = {\n      clientX: posX + this.left,\n      clientY: posY + this.top\n    };\n\n    this.updateCall = requestAnimationFrame(this.updateBind);\n  };\n\n  VanillaTilt.prototype.onMouseEnter = function onMouseEnter() {\n    this.updateElementPosition();\n    this.element.style.willChange = \"transform\";\n    this.setTransition();\n  };\n\n  VanillaTilt.prototype.onMouseMove = function onMouseMove(event) {\n    if (this.updateCall !== null) {\n      cancelAnimationFrame(this.updateCall);\n    }\n\n    this.event = event;\n    this.updateCall = requestAnimationFrame(this.updateBind);\n  };\n\n  VanillaTilt.prototype.onMouseLeave = function onMouseLeave() {\n    this.setTransition();\n\n    if (this.settings.reset) {\n      requestAnimationFrame(this.resetBind);\n    }\n  };\n\n  VanillaTilt.prototype.reset = function reset() {\n    this.onMouseEnter();\n\n    if (this.fullPageListening) {\n      this.event = {\n        clientX: (this.settings.startX + this.settings.max) / (2 * this.settings.max) * this.clientWidth,\n        clientY: (this.settings.startY + this.settings.max) / (2 * this.settings.max) * this.clientHeight\n      };\n    } else {\n      this.event = {\n        clientX: this.left + (this.settings.startX + this.settings.max) / (2 * this.settings.max) * this.width,\n        clientY: this.top + (this.settings.startY + this.settings.max) / (2 * this.settings.max) * this.height\n      };\n    }\n\n    var backupScale = this.settings.scale;\n    this.settings.scale = 1;\n    this.update();\n    this.settings.scale = backupScale;\n    this.resetGlare();\n  };\n\n  VanillaTilt.prototype.resetGlare = function resetGlare() {\n    if (this.glare) {\n      this.glareElement.style.transform = \"rotate(180deg) translate(-50%, -50%)\";\n      this.glareElement.style.opacity = \"0\";\n    }\n  };\n\n  VanillaTilt.prototype.getValues = function getValues() {\n    var x = void 0,\n        y = void 0;\n\n    if (this.fullPageListening) {\n      x = this.event.clientX / this.clientWidth;\n      y = this.event.clientY / this.clientHeight;\n    } else {\n      x = (this.event.clientX - this.left) / this.width;\n      y = (this.event.clientY - this.top) / this.height;\n    }\n\n    x = Math.min(Math.max(x, 0), 1);\n    y = Math.min(Math.max(y, 0), 1);\n\n    var tiltX = (this.reverse * (this.settings.max - x * this.settings.max * 2)).toFixed(2);\n    var tiltY = (this.reverse * (y * this.settings.max * 2 - this.settings.max)).toFixed(2);\n    var angle = Math.atan2(this.event.clientX - (this.left + this.width / 2), -(this.event.clientY - (this.top + this.height / 2))) * (180 / Math.PI);\n\n    return {\n      tiltX: tiltX,\n      tiltY: tiltY,\n      percentageX: x * 100,\n      percentageY: y * 100,\n      angle: angle\n    };\n  };\n\n  VanillaTilt.prototype.updateElementPosition = function updateElementPosition() {\n    var rect = this.element.getBoundingClientRect();\n\n    this.width = this.element.offsetWidth;\n    this.height = this.element.offsetHeight;\n    this.left = rect.left;\n    this.top = rect.top;\n  };\n\n  VanillaTilt.prototype.update = function update() {\n    var values = this.getValues();\n\n    this.element.style.transform = \"perspective(\" + this.settings.perspective + \"px) \" + \"rotateX(\" + (this.settings.axis === \"x\" ? 0 : values.tiltY) + \"deg) \" + \"rotateY(\" + (this.settings.axis === \"y\" ? 0 : values.tiltX) + \"deg) \" + \"scale3d(\" + this.settings.scale + \", \" + this.settings.scale + \", \" + this.settings.scale + \")\";\n\n    if (this.glare) {\n      this.glareElement.style.transform = \"rotate(\" + values.angle + \"deg) translate(-50%, -50%)\";\n      this.glareElement.style.opacity = \"\" + values.percentageY * this.settings[\"max-glare\"] / 100;\n    }\n\n    this.element.dispatchEvent(new CustomEvent(\"tiltChange\", {\n      \"detail\": values\n    }));\n\n    this.updateCall = null;\n  };\n\n  /**\r\n   * Appends the glare element (if glarePrerender equals false)\r\n   * and sets the default style\r\n   */\n\n\n  VanillaTilt.prototype.prepareGlare = function prepareGlare() {\n    // If option pre-render is enabled we assume all html/css is present for an optimal glare effect.\n    if (!this.glarePrerender) {\n      // Create glare element\n      var jsTiltGlare = document.createElement(\"div\");\n      jsTiltGlare.classList.add(\"js-tilt-glare\");\n\n      var jsTiltGlareInner = document.createElement(\"div\");\n      jsTiltGlareInner.classList.add(\"js-tilt-glare-inner\");\n\n      jsTiltGlare.appendChild(jsTiltGlareInner);\n      this.element.appendChild(jsTiltGlare);\n    }\n\n    this.glareElementWrapper = this.element.querySelector(\".js-tilt-glare\");\n    this.glareElement = this.element.querySelector(\".js-tilt-glare-inner\");\n\n    if (this.glarePrerender) {\n      return;\n    }\n\n    Object.assign(this.glareElementWrapper.style, {\n      \"position\": \"absolute\",\n      \"top\": \"0\",\n      \"left\": \"0\",\n      \"width\": \"100%\",\n      \"height\": \"100%\",\n      \"overflow\": \"hidden\",\n      \"pointer-events\": \"none\",\n      \"border-radius\": \"inherit\"\n    });\n\n    Object.assign(this.glareElement.style, {\n      \"position\": \"absolute\",\n      \"top\": \"50%\",\n      \"left\": \"50%\",\n      \"pointer-events\": \"none\",\n      \"background-image\": \"linear-gradient(0deg, rgba(255,255,255,0) 0%, rgba(255,255,255,1) 100%)\",\n      \"transform\": \"rotate(180deg) translate(-50%, -50%)\",\n      \"transform-origin\": \"0% 0%\",\n      \"opacity\": \"0\"\n    });\n\n    this.updateGlareSize();\n  };\n\n  VanillaTilt.prototype.updateGlareSize = function updateGlareSize() {\n    if (this.glare) {\n      var glareSize = (this.element.offsetWidth > this.element.offsetHeight ? this.element.offsetWidth : this.element.offsetHeight) * 2;\n\n      Object.assign(this.glareElement.style, {\n        \"width\": glareSize + \"px\",\n        \"height\": glareSize + \"px\"\n      });\n    }\n  };\n\n  VanillaTilt.prototype.updateClientSize = function updateClientSize() {\n    this.clientWidth = window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth;\n\n    this.clientHeight = window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight;\n  };\n\n  VanillaTilt.prototype.onWindowResize = function onWindowResize() {\n    this.updateGlareSize();\n    this.updateClientSize();\n  };\n\n  VanillaTilt.prototype.setTransition = function setTransition() {\n    var _this = this;\n\n    clearTimeout(this.transitionTimeout);\n    this.element.style.transition = this.settings.speed + \"ms \" + this.settings.easing;\n    if (this.glare) this.glareElement.style.transition = \"opacity \" + this.settings.speed + \"ms \" + this.settings.easing;\n\n    this.transitionTimeout = setTimeout(function () {\n      _this.element.style.transition = \"\";\n      if (_this.glare) {\n        _this.glareElement.style.transition = \"\";\n      }\n    }, this.settings.speed);\n  };\n\n  /**\r\n   * Method return patched settings of instance\r\n   * @param {boolean} settings.reverse - reverse the tilt direction\r\n   * @param {number} settings.max - max tilt rotation (degrees)\r\n   * @param {startX} settings.startX - the starting tilt on the X axis, in degrees. Default: 0\r\n   * @param {startY} settings.startY - the starting tilt on the Y axis, in degrees. Default: 0\r\n   * @param {number} settings.perspective - Transform perspective, the lower the more extreme the tilt gets\r\n   * @param {string} settings.easing - Easing on enter/exit\r\n   * @param {number} settings.scale - 2 = 200%, 1.5 = 150%, etc..\r\n   * @param {number} settings.speed - Speed of the enter/exit transition\r\n   * @param {boolean} settings.transition - Set a transition on enter/exit\r\n   * @param {string|null} settings.axis - What axis should be enabled. Can be \"x\" or \"y\"\r\n   * @param {boolean} settings.glare - if it should have a \"glare\" effect\r\n   * @param {number} settings.max-glare - the maximum \"glare\" opacity (1 = 100%, 0.5 = 50%)\r\n   * @param {boolean} settings.glare-prerender - false = VanillaTilt creates the glare elements for you, otherwise\r\n   * @param {boolean} settings.full-page-listening - If true, parallax effect will listen to mouse move events on the whole document, not only the selected element\r\n   * @param {string|object} settings.mouse-event-element - String selector or link to HTML-element what will be listen mouse events\r\n   * @param {boolean} settings.reset - false = If the tilt effect has to be reset on exit\r\n   * @param {boolean} settings.reset-to-start - true = On reset event (mouse leave) will return to initial start angle (if startX or startY is set)\r\n   * @param {gyroscope} settings.gyroscope - Enable tilting by deviceorientation events\r\n   * @param {gyroscopeSensitivity} settings.gyroscopeSensitivity - Between 0 and 1 - The angle at which max tilt position is reached. 1 = 90deg, 0.5 = 45deg, etc..\r\n   * @param {gyroscopeSamples} settings.gyroscopeSamples - How many gyroscope moves to decide the starting position.\r\n   */\n\n\n  VanillaTilt.prototype.extendSettings = function extendSettings(settings) {\n    var defaultSettings = {\n      reverse: false,\n      max: 15,\n      startX: 0,\n      startY: 0,\n      perspective: 1000,\n      easing: \"cubic-bezier(.03,.98,.52,.99)\",\n      scale: 1,\n      speed: 300,\n      transition: true,\n      axis: null,\n      glare: false,\n      \"max-glare\": 1,\n      \"glare-prerender\": false,\n      \"full-page-listening\": false,\n      \"mouse-event-element\": null,\n      reset: true,\n      \"reset-to-start\": true,\n      gyroscope: true,\n      gyroscopeMinAngleX: -45,\n      gyroscopeMaxAngleX: 45,\n      gyroscopeMinAngleY: -45,\n      gyroscopeMaxAngleY: 45,\n      gyroscopeSamples: 10\n    };\n\n    var newSettings = {};\n    for (var property in defaultSettings) {\n      if (property in settings) {\n        newSettings[property] = settings[property];\n      } else if (this.element.hasAttribute(\"data-tilt-\" + property)) {\n        var attribute = this.element.getAttribute(\"data-tilt-\" + property);\n        try {\n          newSettings[property] = JSON.parse(attribute);\n        } catch (e) {\n          newSettings[property] = attribute;\n        }\n      } else {\n        newSettings[property] = defaultSettings[property];\n      }\n    }\n\n    return newSettings;\n  };\n\n  VanillaTilt.init = function init(elements, settings) {\n    if (elements instanceof Node) {\n      elements = [elements];\n    }\n\n    if (elements instanceof NodeList) {\n      elements = [].slice.call(elements);\n    }\n\n    if (!(elements instanceof Array)) {\n      return;\n    }\n\n    elements.forEach(function (element) {\n      if (!(\"vanillaTilt\" in element)) {\n        element.vanillaTilt = new VanillaTilt(element, settings);\n      }\n    });\n  };\n\n  return VanillaTilt;\n}();\n\nif (typeof document !== \"undefined\") {\n  /* expose the class to window */\n  window.VanillaTilt = VanillaTilt;\n\n  /**\r\n   * Auto load\r\n   */\n  VanillaTilt.init(document.querySelectorAll(\"[data-tilt]\"));\n}\n\nmodule.exports = VanillaTilt;\n"]}