docs: function Sidenav(el, options) {
        _classCallCheck(this, Sidenav);
  
        var _this31 = _possibleConstructorReturn(this, (Sidenav.__proto__ || Object.getPrototypeOf(Sidenav)).call(this, Sidenav, el, options));
  
        _this31.el.M_Sidenav = _this31;
        _this31.id = _this31.$el.attr('id');
  
        /**
         * Options for the Sidenav
         * @member Sidenav#options
         * @prop {String} [edge='left'] - Side of screen on which Sidenav appears
         * @prop {Boolean} [draggable=true] - Allow swipe gestures to open/close Sidenav
         * @prop {Number} [inDuration=250] - Length in ms of enter transition
         * @prop {Number} [outDuration=200] - Length in ms of exit transition
         * @prop {Function} onOpenStart - Function called when sidenav starts entering
         * @prop {Function} onOpenEnd - Function called when sidenav finishes entering
         * @prop {Function} onCloseStart - Function called when sidenav starts exiting
         * @prop {Function} onCloseEnd - Function called when sidenav finishes exiting
         */
        _this31.options = $.extend({}, Sidenav.defaults, options);
  
        /**
         * Describes open/close state of Sidenav
         * @type {Boolean}
         */
        _this31.isOpen = false;
  
        /**
         * Describes if Sidenav is fixed
         * @type {Boolean}
         */
        _this31.isFixed = _this31.el.classList.contains('sidenav-fixed');
  
        /**
         * Describes if Sidenav is being draggeed
         * @type {Boolean}
         */
        _this31.isDragged = false;
  
        // Window size variables for window resize checks
        _this31.lastWindowWidth = window.innerWidth;
        _this31.lastWindowHeight = window.innerHeight;
  
        _this31._createOverlay();
        _this31._createDragTarget();
        _this31._setupEventHandlers();
        _this31._setupClasses();
        _this31._setupFixed();
  
        Sidenav._sidenavs.push(_this31);
        return _this31;
      }