forked from acolangelo/jPanelMenu
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathjquery.jPanelMenu-raywalker-transform.min.js
2 lines (2 loc) · 11.2 KB
/
jquery.jPanelMenu-raywalker-transform.min.js
1
2
/** jPanelMenu-raywalker - 1.3.1 - 2014-03-24 - MIT*/
!function(a,b,c){a.jPanelMenu=function(d){var e=a(c),f=b.Modernizr||!1,g={options:a.extend({menu:"#menu",trigger:".menu-trigger",excludedPanelContent:"style, script",keepEventHandlers:!1,direction:"left",openPosition:"250px",animated:!0,closeOnContentClick:!0,keyboardShortcuts:[{code:27,open:!1,close:!0},{code:37,open:!1,close:!0},{code:39,open:!0,close:!0},{code:77,open:!0,close:!0}],duration:150,openDuration:d.duration||150,closeDuration:d.duration||150,easing:"ease-in-out",openEasing:d.easing||"ease-in-out",closeEasing:d.easing||"ease-in-out",before:function(){},beforeOpen:function(){},beforeClose:function(){},after:function(){},afterOpen:function(){},afterClose:function(){},beforeOn:function(){},afterOn:function(){},beforeOff:function(){},afterOff:function(){}},d||{}),settings:{transitionsSupported:"WebkitTransition"in c.body.style||"MozTransition"in c.body.style||"msTransition"in c.body.style||"OTransition"in c.body.style||"Transition"in c.body.style,transformsSupported:"WebkitTransform"in c.body.style||"MozTransform"in c.body.style||"msTransform"in c.body.style||"OTransform"in c.body.style||"Transform"in c.body.style,cssPrefix:"",shiftFixedChildren:!1,panelPosition:"relative",positionUnits:"px"},menu:"#jPanelMenu-menu",panel:".jPanelMenu-panel",fixedChildren:[],timeouts:{},clearTimeouts:function(){clearTimeout(g.timeouts.open),clearTimeout(g.timeouts.afterOpen),clearTimeout(g.timeouts.afterClose)},setPositionUnits:function(){var a=!1,b=["%","px","em"];for(var c in b){var d=b[c];g.options.openPosition.toString().substr(-d.length)===d&&(a=!0,g.settings.positionUnits=d)}a||(g.options.openPosition=parseInt(g.options.openPosition)+g.settings.positionUnits)},computePositionStyle:function(a,b){var c=a?g.options.openPosition:"0"+g.settings.positionUnits,d={};if(g.settings.transformsSupported){var e=a&&"right"===g.options.direction?"-":"",f="translate3d("+e+c+",0,0)",h="transform";b?(d="",""!==g.settings.cssPrefix&&(d=g.settings.cssPrefix+h+":"+f+";"),d+=h+":"+f+";"):(""!==g.settings.cssPrefix&&(d[g.settings.cssPrefix+h]=f),d[h]=f)}else b?(d="",d=g.options.direction+": "+c+";"):d[g.options.direction]=c;return d},setCSSPrefix:function(){g.settings.cssPrefix=g.getCSSPrefix()},checkFixedChildren:function(){g.disableTransitions();var b={position:a(g.panel).css("position")};if(b[g.options.direction]="auto"===a(g.panel).css(g.options.direction)?0:a(g.panel).css(g.options.direction),a(g.panel).find("> *").each(function(){"fixed"===a(this).css("position")&&"auto"===a(this).css(g.options.direction)&&g.fixedChildren.push(this)}),g.fixedChildren.length>0){var c={position:"relative"};c[g.options.direction]="1px",g.setPanelStyle(c),0===parseInt(a(g.fixedChildren[0]).offset().left)&&(g.settings.shiftFixedChildren=!0)}g.setPanelStyle(b)},setjPanelMenuStyles:function(){var b="#fff",c=a("html").css("background-color"),d=a("body").css("background-color");b="transparent"!==d&&"rgba(0, 0, 0, 0)"!==d?d:"transparent"!==c&&"rgba(0, 0, 0, 0)"!==c?c:"#fff",0===a("#jPanelMenu-style-master").length&&a("body").append('<style id="jPanelMenu-style-master">body{width:100%}.jPanelMenu,body{overflow-x:hidden}#jPanelMenu-menu{display:block;position:fixed;top:0;'+g.options.direction+":0;height:100%;z-index:-1;overflow-x:hidden;overflow-y:scroll;-webkit-overflow-scrolling:touch}.jPanelMenu-panel{position:static;"+g.computePositionStyle(!1,!0)+"z-index:2;width:100%;min-height:100%;background:"+b+"}</style>")},setMenuState:function(b){var c=b?"open":"closed";a("body").attr("data-menu-position",c)},getMenuState:function(){return a("body").attr("data-menu-position")},menuIsOpen:function(){return"open"===g.getMenuState()?!0:!1},setMenuStyle:function(b){a(g.menu).css(b)},setPanelStyle:function(b){a(g.panel).css(b)},showMenu:function(){g.setMenuStyle({display:"block"}),g.setMenuStyle({"z-index":"1"})},hideMenu:function(){g.setMenuStyle({"z-index":"-1"}),g.setMenuStyle({display:"none"})},enableTransitions:function(b,c){var d=b/1e3,e=g.getCSSEasingFunction(c);g.disableTransitions(),a("body").append('<style id="jPanelMenu-style-transitions">.jPanelMenu-panel{'+g.settings.cssPrefix+"transition: all "+d+"s "+e+"; transition: all "+d+"s "+e+";}</style>")},disableTransitions:function(){a("#jPanelMenu-style-transitions").remove()},enableFixedTransitions:function(b,c,d,e){var f=d/1e3,h=g.getCSSEasingFunction(e);g.disableFixedTransitions(c),a("body").append('<style id="jPanelMenu-style-fixed-'+c+'">'+b+"{"+g.settings.cssPrefix+"transition: all "+f+"s "+h+"; transition: all "+f+"s "+h+";}</style>")},disableFixedTransitions:function(b){a("#jPanelMenu-style-fixed-"+b).remove()},getCSSEasingFunction:function(a){switch(a){case"linear":return a;case"ease":return a;case"ease-in":return a;case"ease-out":return a;case"ease-in-out":return a;default:return"ease-in-out"}},getJSEasingFunction:function(a){switch(a){case"linear":return a;default:return"swing"}},getVendorPrefix:function(){if(f&&f.hasOwnProperty("prefixed"))return f.prefixed("transform").replace("transform","");if("result"in arguments.callee)return arguments.callee.result;var a=/^(Moz|Webkit|Khtml|O|ms|Icab)(?=[A-Z])/,b=c.getElementsByTagName("script")[0];for(var d in b.style)if(a.test(d))return arguments.callee.result=d.match(a)[0],arguments.callee.result;return arguments.callee.result="WebkitOpacity"in b.style?"Webkit":"KhtmlOpacity"in b.style?"Khtml":"",arguments.callee.result},getCSSPrefix:function(){var a=g.getVendorPrefix();return""!==a?"-"+a.toLowerCase()+"-":""},openMenu:function(b){("undefined"==typeof b||null===b)&&(b=g.options.animated),g.clearTimeouts(),g.options.before(),g.options.beforeOpen(),g.setMenuState(!0),g.setPanelStyle({position:"relative"}),g.showMenu();var c={none:b?!1:!0,transitions:b&&g.settings.transitionsSupported?!0:!1};if(c.transitions||c.none){c.none&&g.disableTransitions(),c.transitions&&g.enableTransitions(g.options.openDuration,g.options.openEasing);var d=g.computePositionStyle(!0);g.setPanelStyle(d),g.settings.shiftFixedChildren&&a(g.fixedChildren).each(function(){var b=a(this).prop("tagName").toLowerCase()+" "+a(this).attr("class"),d=b.replace(" ","."),e=b.replace(" ","-"),f={};c.none&&g.disableFixedTransitions(e),c.transitions&&g.enableFixedTransitions(d,e,g.options.openDuration,g.options.openEasing),f[g.options.direction]=g.options.openPosition,a(this).css(f)}),g.timeouts.afterOpen=setTimeout(function(){g.disableTransitions(),g.settings.shiftFixedChildren&&a(g.fixedChildren).each(function(){var b=a(this).prop("tagName").toLowerCase()+" "+a(this).attr("class");g.disableFixedTransitions(b.replace(" ","-"))}),g.options.after(),g.options.afterOpen(),g.initiateContentClickListeners()},g.options.openDuration)}else{var e=g.getJSEasingFunction(g.options.openEasing),f={};f[g.options.direction]=g.options.openPosition,a(g.panel).stop().animate(f,g.options.openDuration,e,function(){g.options.after(),g.options.afterOpen(),g.initiateContentClickListeners()}),g.settings.shiftFixedChildren&&a(g.fixedChildren).each(function(){var b={};b[g.options.direction]=g.options.openPosition,a(this).stop().animate(b,g.options.openDuration,e)})}},closeMenu:function(b){("undefined"==typeof b||null===b)&&(b=g.options.animated),g.clearTimeouts(),g.options.before(),g.options.beforeClose(),g.setMenuState(!1);var c={none:b?!1:!0,transitions:b&&g.settings.transitionsSupported?!0:!1};if(c.transitions||c.none){c.none&&g.disableTransitions(),c.transitions&&g.enableTransitions(g.options.closeDuration,g.options.closeEasing);var d=g.computePositionStyle();g.setPanelStyle(d),g.settings.shiftFixedChildren&&a(g.fixedChildren).each(function(){var b=a(this).prop("tagName").toLowerCase()+" "+a(this).attr("class"),d=b.replace(" ","."),e=b.replace(" ","-"),f={};c.none&&g.disableFixedTransitions(e),c.transitions&&g.enableFixedTransitions(d,e,g.options.closeDuration,g.options.closeEasing),f[g.options.direction]=0+g.settings.positionUnits,a(this).css(f)}),g.timeouts.afterClose=setTimeout(function(){g.setPanelStyle({position:g.settings.panelPosition}),g.disableTransitions(),g.settings.shiftFixedChildren&&a(g.fixedChildren).each(function(){var b=a(this).prop("tagName").toLowerCase()+" "+a(this).attr("class");g.disableFixedTransitions(b.replace(" ","-"))}),g.hideMenu(),g.options.after(),g.options.afterClose(),g.destroyContentClickListeners()},g.options.closeDuration)}else{var e=g.getJSEasingFunction(g.options.closeEasing),f={};f[g.options.direction]=0+g.settings.positionUnits,a(g.panel).stop().animate(f,g.options.closeDuration,e,function(){g.setPanelStyle({position:g.settings.panelPosition}),g.hideMenu(),g.options.after(),g.options.afterClose(),g.destroyContentClickListeners()}),g.settings.shiftFixedChildren&&a(g.fixedChildren).each(function(){var b={};b[g.options.direction]=0+g.settings.positionUnits,a(this).stop().animate(b,g.options.closeDuration,e)})}},triggerMenu:function(a){g.menuIsOpen()?g.closeMenu(a):g.openMenu(a)},initiateClickListeners:function(){e.on("click",g.options.trigger,function(){return g.triggerMenu(g.options.animated),!1})},destroyClickListeners:function(){e.off("click",g.options.trigger,null)},initiateContentClickListeners:function(){return g.options.closeOnContentClick?(e.on("click",g.panel,function(){g.menuIsOpen()&&g.closeMenu(g.options.animated)}),void e.on("touchend",g.panel,function(){g.menuIsOpen()&&g.closeMenu(g.options.animated)})):!1},destroyContentClickListeners:function(){return g.options.closeOnContentClick?(e.off("click",g.panel,null),void e.off("touchend",g.panel,null)):!1},initiateKeyboardListeners:function(){var b=["input","textarea"];e.on("keydown",function(c){var d=a(c.target),e=!1;if(a.each(b,function(){d.is(this.toString())&&(e=!0)}),e)return!0;for(var f in g.options.keyboardShortcuts)if(c.which===g.options.keyboardShortcuts[f].code){var h=g.options.keyboardShortcuts[f];return h.open&&h.close?g.triggerMenu(g.options.animated):!h.open||h.close||g.menuIsOpen()?!h.open&&h.close&&g.menuIsOpen()&&g.closeMenu(g.options.animated):g.openMenu(g.options.animated),!1}})},destroyKeyboardListeners:function(){e.off("keydown",null)},setupMarkup:function(){a("html").addClass("jPanelMenu"),a("body > *").not(g.menu+", "+g.options.excludedPanelContent).wrapAll('<div class="'+g.panel.replace(".","")+'"/>'),a(g.options.menu).clone(g.options.keepEventHandlers).attr("id",g.menu.replace("#","")).insertAfter("body > "+g.panel)},resetMarkup:function(){a("html").removeClass("jPanelMenu"),a("body > "+g.panel+" > *").unwrap(),a(g.menu).remove()},init:function(){g.options.beforeOn(),g.setPositionUnits(),g.setCSSPrefix(),g.initiateClickListeners(),"[object Array]"===Object.prototype.toString.call(g.options.keyboardShortcuts)&&g.initiateKeyboardListeners(),g.setjPanelMenuStyles(),g.setMenuState(!1),g.setupMarkup(),g.setMenuStyle({width:g.options.openPosition}),g.settings.transformsSupported||g.checkFixedChildren(),g.closeMenu(!1),g.options.afterOn()},destroy:function(){g.options.beforeOff(),g.closeMenu(),g.destroyClickListeners(),"[object Array]"===Object.prototype.toString.call(g.options.keyboardShortcuts)&&g.destroyKeyboardListeners(),g.resetMarkup();var b={};b[g.options.direction]="auto",a(g.fixedChildren).each(function(){a(this).css(b)}),g.fixedChildren=[],g.options.afterOff()}};return{on:g.init,off:g.destroy,trigger:g.triggerMenu,open:g.openMenu,close:g.closeMenu,isOpen:g.menuIsOpen,menu:g.menu,getMenu:function(){return a(g.menu)},panel:g.panel,getPanel:function(){return a(g.panel)}}}}(jQuery,this,document);