(function() { var offcanvas, offcanvasdropdown, offcanvastouch, transformcheck, __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; }; offcanvasdropdown = (function() { function offcanvasdropdown(element) { this.element = element; this._clickevent = __bind(this._clickevent, this); this.element = $(this.element); this.dropdown = this.element.parent().find(".dropdown-menu"); this.element.on('click', this._clickevent); } offcanvasdropdown.prototype._clickevent = function(e) { if (!this.dropdown.hasclass('shown')) { e.preventdefault(); } this.dropdown.toggleclass("shown"); return this.element.parent().toggleclass('active'); }; return offcanvasdropdown; })(); offcanvastouch = (function() { function offcanvastouch(element, location, offcanvas) { this.element = element; this.location = location; this.offcanvas = offcanvas; this._clearcss = __bind(this._clearcss, this); this._getfade = __bind(this._getfade, this); this._getcss = __bind(this._getcss, this); this._touchend = __bind(this._touchend, this); this._touchmove = __bind(this._touchmove, this); this._touchstart = __bind(this._touchstart, this); this.endthreshold = 130; this.startthreshold = this.element.hasclass('navbar-offcanvas-right') ? $("body").outerwidth() - 60 : 20; this.maxstartthreshold = this.element.hasclass('navbar-offcanvas-right') ? $("body").outerwidth() - 20 : 60; this.currentx = 0; this.fade = this.element.hasclass('navbar-offcanvas-fade') ? true : false; $(document).on("touchstart", this._touchstart); $(document).on("touchmove", this._touchmove); $(document).on("touchend", this._touchend); } offcanvastouch.prototype._touchstart = function(e) { return this.startx = e.originalevent.touches[0].pagex; }; offcanvastouch.prototype._touchmove = function(e) { var x; if ($(e.target).parents('.navbar-offcanvas').length > 0) { return true; } if (this.startx > this.startthreshold && this.startx < this.maxstartthreshold) { e.preventdefault(); x = e.originalevent.touches[0].pagex - this.startx; x = this.element.hasclass('navbar-offcanvas-right') ? -x : x; if (math.abs(x) < this.element.outerwidth()) { this.element.css(this._getcss(x)); return this.element.css(this._getfade(x)); } } else if (this.element.hasclass('in')) { e.preventdefault(); x = e.originalevent.touches[0].pagex + (this.currentx - this.startx); x = this.element.hasclass('navbar-offcanvas-right') ? -x : x; if (math.abs(x) < this.element.outerwidth()) { this.element.css(this._getcss(x)); return this.element.css(this._getfade(x)); } } }; offcanvastouch.prototype._touchend = function(e) { var end, x; if ($(e.target).parents('.navbar-offcanvas').length > 0) { return true; } x = e.originalevent.changedtouches[0].pagex; end = this.element.hasclass('navbar-offcanvas-right') ? math.abs(x) > (this.endthreshold + 50) : x < (this.endthreshold + 50); if (this.element.hasclass('in') && end) { this.currentx = 0; this.element.removeclass('in').css(this._clearcss()); } else if (math.abs(x - this.startx) > this.endthreshold && this.startx > this.startthreshold && this.startx < this.maxstartthreshold) { this.currentx = this.element.hasclass('navbar-offcanvas-right') ? -this.element.outerwidth() : this.element.outerwidth(); this.element.toggleclass('in').css(this._clearcss()); } else { this.element.css(this._clearcss()); } return this.offcanvas.bodyoverflow(); }; offcanvastouch.prototype._getcss = function(x) { x = this.element.hasclass('navbar-offcanvas-right') ? -x : x; return { "-webkit-transform": "translate3d(" + x + "px, 0px, 0px)", "-webkit-transition-duration": "0s", "-moz-transform": "translate3d(" + x + "px, 0px, 0px)", "-moz-transition": "0s", "-o-transform": "translate3d(" + x + "px, 0px, 0px)", "-o-transition": "0s", "transform": "translate3d(" + x + "px, 0px, 0px)", "transition": "0s" }; }; offcanvastouch.prototype._getfade = function(x) { if (this.fade) { return { "opacity": x / this.element.outerwidth() }; } else { return {}; } }; offcanvastouch.prototype._clearcss = function() { return { "-webkit-transform": "", "-webkit-transition-duration": "", "-moz-transform": "", "-moz-transition": "", "-o-transform": "", "-o-transition": "", "transform": "", "transition": "", "opacity": "" }; }; return offcanvastouch; })(); offcanvas = (function() { function offcanvas(element) { var t, target; this.element = element; this.bodyoverflow = __bind(this.bodyoverflow, this); this._sendeventsafter = __bind(this._sendeventsafter, this); this._sendeventsbefore = __bind(this._sendeventsbefore, this); this._documentclicked = __bind(this._documentclicked, this); this._clicked = __bind(this._clicked, this); target = this.element.attr('data-target') ? this.element.attr('data-target') : false; if (target) { this.target = $(target); if (this.target.length && !this.target.hasclass('js-offcanas-done')) { this.element.addclass('js-offcanvas-has-events'); this.location = this.target.hasclass("navbar-offcanvas-right") ? "right" : "left"; this.target.addclass(transform ? "offcanvas-transform js-offcanas-done" : "offcanvas-position js-offcanas-done"); this.target.data('offcanvas', this); this.element.on("click", this._clicked); $(document).on("click", this._documentclicked); if (this.target.hasclass('navbar-offcanvas-touch')) { t = new offcanvastouch(this.target, this.location, this); } this.target.find(".dropdown-toggle").each(function() { var d; return d = new offcanvasdropdown(this); }); } } else { console.warn('offcanvas: `data-target` attribute must be present.'); } } offcanvas.prototype._clicked = function(e) { e.preventdefault(); this._sendeventsbefore(); $(".navbar-offcanvas").removeclass('in'); this.target.toggleclass('in'); return this.bodyoverflow(); }; offcanvas.prototype._documentclicked = function(e) { var clickedel; clickedel = $(e.target); if (!clickedel.hasclass('offcanvas-toggle') && clickedel.parents('.offcanvas-toggle').length === 0 && clickedel.parents('.navbar-offcanvas').length === 0 && !clickedel.hasclass('navbar-offcanvas')) { if (this.target.hasclass('in')) { e.preventdefault(); this._sendeventsbefore(); this.target.removeclass('in'); return this.bodyoverflow(); } } }; offcanvas.prototype._sendeventsbefore = function() { if (this.target.hasclass('in')) { return this.target.trigger('show.bs.offcanvas'); } else { return this.target.trigger('hide.bs.offcanvas'); } }; offcanvas.prototype._sendeventsafter = function() { if (this.target.hasclass('in')) { return this.target.trigger('shown.bs.offcanvas'); } else { return this.target.trigger('hidden.bs.offcanvas'); } }; offcanvas.prototype.bodyoverflow = function() { this._sendeventsafter(); return $("body").css({ overflow: this.target.hasclass('in') ? 'hidden' : '' // position: this.target.hasclass('in') ? 'fixed' : '' }); }; return offcanvas; })(); transformcheck = (function(_this) { return function() { var assupport, el, regex, translate3d; el = document.createelement('div'); translate3d = "translate3d(0px, 0px, 0px)"; regex = /translate3d\(0px, 0px, 0px\)/g; el.style.csstext = "-webkit-transform: " + translate3d + "; -moz-transform: " + translate3d + "; -o-transform: " + translate3d + "; transform: " + translate3d; assupport = el.style.csstext.match(regex); return _this.transform = assupport.length != null; }; })(this); $(function() { transformcheck(); $('[data-toggle="offcanvas"]').each(function() { var oc; return oc = new offcanvas($(this)); }); return $('.offcanvas-toggle').each(function() { return $(this).on('click', function(e) { var el, selector; if (!$(this).hasclass('js-offcanvas-has-events')) { selector = $(this).attr('data-target'); el = $(selector); if (el) { el.removeclass('in'); return $('body').css({ overflow: '', position: '' }); } } }); }); }); }).call(this);