extendSettings(settings) {
    let defaultSettings = {
      reverse: false,
      max: 15,
      startX: 0,
      startY: 0,
      perspective: 1000,
      easing: "cubic-bezier(.03,.98,.52,.99)",
      scale: 1,
      speed: 300,
      transition: true,
      axis: null,
      glare: false,
      "max-glare": 1,
      "glare-prerender": false,
      "full-page-listening": false,
      "mouse-event-element": null,
      reset: true,
      "reset-to-start": true,
      gyroscope: true,
      gyroscopeMinAngleX: -45,
      gyroscopeMaxAngleX: 45,
      gyroscopeMinAngleY: -45,
      gyroscopeMaxAngleY: 45,
      gyroscopeSamples: 10
    };

    let newSettings = {};
    for (var property in defaultSettings) {
      if (property in settings) {
        newSettings[property] = settings[property];
      } else if (this.element.hasAttribute("data-tilt-" + property)) {
        let attribute = this.element.getAttribute("data-tilt-" + property);
        try {
          newSettings[property] = JSON.parse(attribute);
        } catch (e) {
          newSettings[property] = attribute;
        }

      } else {
        newSettings[property] = defaultSettings[property];
      }
    }

    return newSettings;
  }
Method return patched settings of instance
@param {boolean} settings.reverse - reverse the tilt direction
@param {number} settings.max - max tilt rotation (degrees)
@param {startX} settings.startX - the starting tilt on the X axis, in degrees. Default: 0
@param {startY} settings.startY - the starting tilt on the Y axis, in degrees. Default: 0
@param {number} settings.perspective - Transform perspective, the lower the more extreme the tilt gets
@param {string} settings.easing - Easing on enter/exit
@param {number} settings.scale - 2 = 200%, 1.5 = 150%, etc..
@param {number} settings.speed - Speed of the enter/exit transition
@param {boolean} settings.transition - Set a transition on enter/exit
@param {string|null} settings.axis - What axis should be enabled. Can be "x" or "y"
@param {boolean} settings.glare - if it should have a "glare" effect
@param {number} settings.max-glare - the maximum "glare" opacity (1 = 100%, 0.5 = 50%)
@param {boolean} settings.glare-prerender - false = VanillaTilt creates the glare elements for you, otherwise
@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
@param {string|object} settings.mouse-event-element - String selector or link to HTML-element what will be listen mouse events
@param {boolean} settings.reset - false = If the tilt effect has to be reset on exit
@param {boolean} settings.reset-to-start - true = On reset event (mouse leave) will return to initial start angle (if startX or startY is set)
@param {gyroscope} settings.gyroscope - Enable tilting by deviceorientation events
@param {gyroscopeSensitivity} settings.gyroscopeSensitivity - Between 0 and 1 - The angle at which max tilt position is reached. 1 = 90deg, 0.5 = 45deg, etc..
@param {gyroscopeSamples} settings.gyroscopeSamples - How many gyroscope moves to decide the starting position.