diff --git a/README.md b/README.md index df82404..c26878f 100644 --- a/README.md +++ b/README.md @@ -144,6 +144,7 @@ There are some example usages that you can look at to get started. They can be f mouseDrag: true, touchDrag: true, pointerDrag: true, + enableTouchScroll: false, direction: 'right', // top, bottom, left, right duration: '500', diff --git a/dist/jquery-slidePanel.es.js b/dist/jquery-slidePanel.es.js index 0e76279..c75a2ce 100644 --- a/dist/jquery-slidePanel.es.js +++ b/dist/jquery-slidePanel.es.js @@ -99,10 +99,11 @@ var DEFAULTS = { mouseDrag: true, touchDrag: true, pointerDrag: true, + enableTouchScroll: false, direction: 'right', // top, bottom, left, right duration: '500', - easing: 'ease', // linear, ease-in, ease-out, ease-in-out + easing: 'ease', // linear, ease-in, ease-out, ease-in-out, // callbacks beforeLoad: $.noop, // Before loading @@ -576,7 +577,7 @@ class Drag { $$1(document).on(SlidePanel.eventName('blur'), $$1.proxy(this.onDragEnd, this)); - event.preventDefault(); + !this.options.enableTouchScroll && event.preventDefault(); } /** @@ -585,11 +586,11 @@ class Drag { onDragMove(event) { const distance = this.distance(this._drag.pointer, this.pointer(event)); - if (!SlidePanel.is('dragging')) { + if (!SlidePanel.is('dragging') || Math.abs(distance.scroll) > Math.abs(distance.drag)) { return; } - if (Math.abs(distance) > this.options.dragTolerance) { + if (Math.abs(distance.drag) > this.options.dragTolerance) { if (this._willClose !== true) { this._willClose = true; this._view.$panel.addClass(this.options.classes.willClose); @@ -603,8 +604,8 @@ class Drag { return; } - event.preventDefault(); - this.move(distance); + !this.options.enableTouchScroll && event.preventDefault(); + this.move(distance.drag); } /** @@ -613,6 +614,10 @@ class Drag { onDragEnd(event) { const distance = this.distance(this._drag.pointer, this.pointer(event)); + if (Math.abs(distance.scroll) > Math.abs(distance.drag)) { + return; + } + $$1(document).off(SlidePanel.eventName('mousemove mouseup touchmove touchend pointermove pointerup MSPointerMove MSPointerUp blur')); this._view.$panel.removeClass(this.options.classes.dragging); @@ -630,7 +635,7 @@ class Drag { SlidePanel.trigger(this._view, 'afterDrag'); - if (Math.abs(distance) < this.options.dragTolerance) { + if (Math.abs(distance.drag) < this.options.dragTolerance) { this._view.revert(); } else { this._view.hide(); @@ -667,13 +672,16 @@ class Drag { /**distance * Gets the distance of two pointer. + * @returns {Object} - Contains 'drag' and 'scroll' distances between the given pointers. */ distance(first, second) { const d = this.options.direction; - if (d === 'left' || d === 'right') { - return second.x - first.x; - } - return second.y - first.y; + var dx = second.x - first.x; + var dy = second.y - first.y; + + return (d === 'left' || d === 'right') ? + { drag: dx, scroll: this.options.enableTouchScroll ? dy : 0 } + : { drag: dy, scroll: this.options.enableTouchScroll ? dx : 0 }; } move(value) { diff --git a/dist/jquery-slidePanel.js b/dist/jquery-slidePanel.js index 93163d3..b6fa504 100644 --- a/dist/jquery-slidePanel.js +++ b/dist/jquery-slidePanel.js @@ -161,10 +161,11 @@ mouseDrag: true, touchDrag: true, pointerDrag: true, + enableTouchScroll: false, direction: 'right', // top, bottom, left, right duration: '500', - easing: 'ease', // linear, ease-in, ease-out, ease-in-out + easing: 'ease', // linear, ease-in, ease-out, ease-in-out, // callbacks beforeLoad: $.noop, // Before loading @@ -769,7 +770,7 @@ _jquery2.default.proxy(this.onDragEnd, this) ); - event.preventDefault(); + !this.options.enableTouchScroll && event.preventDefault(); } }, { @@ -777,11 +778,14 @@ value: function onDragMove(event) { var distance = this.distance(this._drag.pointer, this.pointer(event)); - if (!SlidePanel.is('dragging')) { + if ( + !SlidePanel.is('dragging') || + Math.abs(distance.scroll) > Math.abs(distance.drag) + ) { return; } - if (Math.abs(distance) > this.options.dragTolerance) { + if (Math.abs(distance.drag) > this.options.dragTolerance) { if (this._willClose !== true) { this._willClose = true; this._view.$panel.addClass(this.options.classes.willClose); @@ -795,8 +799,8 @@ return; } - event.preventDefault(); - this.move(distance); + !this.options.enableTouchScroll && event.preventDefault(); + this.move(distance.drag); } }, { @@ -804,6 +808,10 @@ value: function onDragEnd(event) { var distance = this.distance(this._drag.pointer, this.pointer(event)); + if (Math.abs(distance.scroll) > Math.abs(distance.drag)) { + return; + } + (0, _jquery2.default)(document).off( SlidePanel.eventName( 'mousemove mouseup touchmove touchend pointermove pointerup MSPointerMove MSPointerUp blur' @@ -825,7 +833,7 @@ SlidePanel.trigger(this._view, 'afterDrag'); - if (Math.abs(distance) < this.options.dragTolerance) { + if (Math.abs(distance.drag) < this.options.dragTolerance) { this._view.revert(); } else { this._view.hide(); @@ -865,10 +873,12 @@ key: 'distance', value: function distance(first, second) { var d = this.options.direction; - if (d === 'left' || d === 'right') { - return second.x - first.x; - } - return second.y - first.y; + var dx = second.x - first.x; + var dy = second.y - first.y; + + return d === 'left' || d === 'right' + ? { drag: dx, scroll: this.options.enableTouchScroll ? dy : 0 } + : { drag: dy, scroll: this.options.enableTouchScroll ? dx : 0 }; } }, { diff --git a/dist/jquery-slidePanel.min.js b/dist/jquery-slidePanel.min.js index 49c9fd9..7356a1c 100644 --- a/dist/jquery-slidePanel.min.js +++ b/dist/jquery-slidePanel.min.js @@ -5,5 +5,5 @@ * Copyright (c) amazingSurge * Released under the LGPL-3.0 license */ -!function(t,e){if("function"==typeof define&&define.amd)define(["jquery"],e);else if("undefined"!=typeof exports)e(require("jquery"));else{var n={exports:{}};e(t.jQuery),t.jquerySlidePanelEs=n.exports}}(this,function(t){"use strict";function e(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function n(t){return!(!t||"matrix"!==t.substr(0,6))&&t.replace(/^.*\((.*)\)$/g,"$1").replace(/px/g,"").split(/, +/)}function i(t){"string"!=typeof t&&(t=JSON.stringify(t));var e=0,n=void 0,i=void 0;if(0===t.length)return e;for(n=0,i=t.length;n
'},loading:{appendTo:"panel",template:function(t){return'
'},showCallback:function(t){this.$el.addClass(t.classes.loading+"-show")},hideCallback:function(t){this.$el.removeClass(t.classes.loading+"-show")}},contentFilter:function(t,e){return t},useCssTransforms3d:!0,useCssTransforms:!0,useCssTransitions:!0,dragTolerance:150,mouseDragHandler:null,mouseDrag:!0,touchDrag:!0,pointerDrag:!0,direction:"right",duration:"500",easing:"ease",beforeLoad:$.noop,afterLoad:$.noop,beforeShow:$.noop,afterShow:$.noop,onChange:$.noop,beforeHide:$.noop,afterHide:$.noop,beforeDrag:$.noop,afterDrag:$.noop},c=function(){function t(n){e(this,t);for(var i=arguments.length,o=Array(i>1?i-1:0),s=1;s").get(0).style,o={csstransforms:function(){return Boolean(s("transform"))},csstransforms3d:function(){return Boolean(s("perspective"))},csstransitions:function(){return Boolean(s("transition"))},cssanimations:function(){return Boolean(s("animation"))}},s=function(t,e){var o=!1,s=t.charAt(0).toUpperCase()+t.slice(1);return void 0!==i[t]&&(o=t),o||l.default.each(n,function(t,e){return void 0===i[e+s]||(o="-"+e.toLowerCase()+"-"+s,!1)}),e?o:!!o},a=function(t){return s(t,!0)};o.csstransitions()&&(t.transition=new String(a("transition")),t.transition.end=e.transition.end[t.transition]),o.cssanimations()&&(t.animation=new String(a("animation")),t.animation.end=e.animation.end[t.animation]),o.csstransforms()&&(t.transform=new String(a("transform")),t.transform3d=o.csstransforms3d()),"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch?t.touch=!0:t.touch=!1,window.PointerEvent||window.MSPointerEvent?t.pointer=!0:t.pointer=!1,t.prefixPointerEvent=function(t){return window.MSPointerEvent?"MSPointer"+t.charAt(9).toUpperCase()+t.substr(10):t}}(f);var p={ease:r(.25,.1,.25,1),linear:r(0,0,1,1),"ease-in":r(.42,0,1,1),"ease-out":r(0,0,.58,1),"ease-in-out":r(.42,0,.58,1)},g={prepareTransition:function(t,e,n,i,o){var s=[];e&&s.push(e),n&&(l.default.isNumeric(n)&&(n+="ms"),s.push(n)),i?s.push(i):s.push(this.easing.css),o&&s.push(o),t.css(f.transition,s.join(" "))},do:function(t,e,n){y.enter("animating");var i=t.options.duration,s=t.options.easing||"ease",a=this,r=t.makePositionStyle(e),u=null;for(u in r)if({}.hasOwnProperty.call(r,u))break;if(t.options.useCssTransitions&&f.transition)setTimeout(function(){a.prepareTransition(t.$panel,u,i,s)},20),t.$panel.one(f.transition.end,function(){l.default.isFunction(n)&&n(),t.$panel.css(f.transition,""),y.leave("animating")}),setTimeout(function(){t.setPosition(e)},20);else{var h=o(),d=t.getPosition(),c=e;a._frameId=window.requestAnimationFrame(function e(i){var o=(i-h)/t.options.duration;o>1&&(o=1),o=p[s].fn(o);var r=parseFloat(d+o*(c-d),10);t.setPosition(r),1===o?(window.cancelAnimationFrame(a._frameId),a._frameId=null,l.default.isFunction(n)&&n(),y.leave("animating")):a._frameId=window.requestAnimationFrame(e)})}}},v=function(){function t(n){e(this,t),this.initialize(n)}return u(t,[{key:"initialize",value:function(t){this._view=t,this.build()}},{key:"build",value:function(){if(!this._builded){var t=this._view.options,e=t.loading.template.call(this,t);switch(this.$el=(0,l.default)(e),t.loading.appendTo){case"panel":this.$el.appendTo(this._view.$panel);break;case"body":this.$el.appendTo("body");break;default:this.$el.appendTo(t.loading.appendTo)}this._builded=!0}}},{key:"show",value:function(t){this.build();var e=this._view.options;e.loading.showCallback.call(this,e),l.default.isFunction(t)&&t.call(this)}},{key:"hide",value:function(t){var e=this._view.options;e.loading.hideCallback.call(this,e),l.default.isFunction(t)&&t.call(this)}}]),t}(),m=function(){function t(){e(this,t),this.initialize.apply(this,arguments)}return u(t,[{key:"initialize",value:function(t){this._view=t,this.options=t.options,this._drag={time:null,pointer:null},this.bindEvents()}},{key:"bindEvents",value:function(){var t=this._view.$panel,e=this.options;e.mouseDrag&&(t.on(y.eventName("mousedown"),l.default.proxy(this.onDragStart,this)),t.on(y.eventName("dragstart selectstart"),function(t){if(!e.mouseDragHandler||(0,l.default)(t.target).is(e.mouseDragHandler)||(0,l.default)(t.target).parents(e.mouseDragHandler).length>0)return!1})),e.touchDrag&&f.touch&&(t.on(y.eventName("touchstart"),l.default.proxy(this.onDragStart,this)),t.on(y.eventName("touchcancel"),l.default.proxy(this.onDragEnd,this))),e.pointerDrag&&f.pointer&&(t.on(y.eventName(f.prefixPointerEvent("pointerdown")),l.default.proxy(this.onDragStart,this)),t.on(y.eventName(f.prefixPointerEvent("pointercancel")),l.default.proxy(this.onDragEnd,this)))}},{key:"onDragStart",value:function(t){var e=this;if(3!==t.which){var n=this.options;this._view.$panel.addClass(this.options.classes.dragging),this._position=this._view.getPosition(!0),this._drag.time=(new Date).getTime(),this._drag.pointer=this.pointer(t);var i=function(){y.enter("dragging"),y.trigger(e._view,"beforeDrag")};if(n.mouseDrag){if(n.mouseDragHandler&&!((0,l.default)(t.target).is(n.mouseDragHandler)||(0,l.default)(t.target).parents(n.mouseDragHandler).length>0))return;(0,l.default)(document).on(y.eventName("mouseup"),l.default.proxy(this.onDragEnd,this)),(0,l.default)(document).one(y.eventName("mousemove"),l.default.proxy(function(){(0,l.default)(document).on(y.eventName("mousemove"),l.default.proxy(this.onDragMove,this)),i()},this))}n.touchDrag&&f.touch&&((0,l.default)(document).on(y.eventName("touchend"),l.default.proxy(this.onDragEnd,this)),(0,l.default)(document).one(y.eventName("touchmove"),l.default.proxy(function(){(0,l.default)(document).on(y.eventName("touchmove"),l.default.proxy(this.onDragMove,this)),i()},this))),n.pointerDrag&&f.pointer&&((0,l.default)(document).on(y.eventName(f.prefixPointerEvent("pointerup")),l.default.proxy(this.onDragEnd,this)),(0,l.default)(document).one(y.eventName(f.prefixPointerEvent("pointermove")),l.default.proxy(function(){(0,l.default)(document).on(y.eventName(f.prefixPointerEvent("pointermove")),l.default.proxy(this.onDragMove,this)),i()},this))),(0,l.default)(document).on(y.eventName("blur"),l.default.proxy(this.onDragEnd,this)),t.preventDefault()}}},{key:"onDragMove",value:function(t){var e=this.distance(this._drag.pointer,this.pointer(t));y.is("dragging")&&(Math.abs(e)>this.options.dragTolerance?!0!==this._willClose&&(this._willClose=!0,this._view.$panel.addClass(this.options.classes.willClose)):!1!==this._willClose&&(this._willClose=!1,this._view.$panel.removeClass(this.options.classes.willClose)),y.is("dragging")&&(t.preventDefault(),this.move(e)))}},{key:"onDragEnd",value:function(t){var e=this.distance(this._drag.pointer,this.pointer(t));(0,l.default)(document).off(y.eventName("mousemove mouseup touchmove touchend pointermove pointerup MSPointerMove MSPointerUp blur")),this._view.$panel.removeClass(this.options.classes.dragging),!0===this._willClose&&(this._willClose=!1,this._view.$panel.removeClass(this.options.classes.willClose)),y.is("dragging")&&(y.leave("dragging"),y.trigger(this._view,"afterDrag"),Math.abs(e)0)return;this.options.useCssTransforms||this.options.useCssTransforms3d||"right"!==this.options.direction&&"bottom"!==this.options.direction||(e=-e),this._view.setPosition(e+"px")}}]),t}(),w=function(){function t(n){e(this,t),this.initialize(n)}return u(t,[{key:"initialize",value:function(t){this.options=t,this._instance=null,this._showed=!1,this._isLoading=!1,this.build()}},{key:"setLength",value:function(){switch(this.options.direction){case"top":case"bottom":this._length=this.$panel.outerHeight();break;case"left":case"right":this._length=this.$panel.outerWidth()}}},{key:"build",value:function(){if(!this._builded){var t=this.options,e=t.template.call(this,t),n=this;this.$panel=(0,l.default)(e).appendTo("body"),t.skin&&this.$panel.addClass(t.skin),this.$content=this.$panel.find("."+this.options.classes.content),t.closeSelector&&this.$panel.on("click touchstart",t.closeSelector,function(){return n.hide(),!1}),this.loading=new v(this),this.setLength(),this.setPosition(this.getHidePosition()),(t.mouseDrag||t.touchDrag||t.pointerDrag)&&(this.drag=new m(this)),this._builded=!0}}},{key:"getHidePosition",value:function(){var t=this.options;if(t.useCssTransforms||t.useCssTransforms3d)switch(t.direction){case"top":case"left":return"-100";case"bottom":case"right":return"100"}switch(t.direction){case"top":case"bottom":return parseFloat(-this._length/(0,l.default)(window).height()*100,10);case"left":case"right":return parseFloat(-this._length/(0,l.default)(window).width()*100,10)}}},{key:"empty",value:function(){this._instance=null,this.$content.empty()}},{key:"load",value:function(t){function e(e){e=i.contentFilter.call(this,e,t),n.$content.html(e),n.hideLoading(),n._instance=t,y.trigger(n,"afterLoad",t)}var n=this,i=t.options;y.trigger(this,"beforeLoad",t),this.empty(),t.content?e(t.content):t.url?(this.showLoading(),l.default.ajax(t.url,t.settings||{}).done(function(t){e(t)})):e("")}},{key:"showLoading",value:function(){var t=this;this.loading.show(function(){t._isLoading=!0})}},{key:"hideLoading",value:function(){var t=this;this.loading.hide(function(){t._isLoading=!1})}},{key:"show",value:function(t){this.build(),y.enter("show"),y.trigger(this,"beforeShow"),(0,l.default)("html").addClass(this.options.classes.base+"-html"),this.$panel.addClass(this.options.classes.show);var e=this;g.do(this,0,function(){e._showed=!0,y.trigger(e,"afterShow"),l.default.isFunction(t)&&t.call(e)})}},{key:"change",value:function(t){y.trigger(this,"beforeShow"),y.trigger(this,"onChange",t,this._instance),this.load(t),y.trigger(this,"afterShow")}},{key:"revert",value:function(t){var e=this;g.do(this,0,function(){l.default.isFunction(t)&&t.call(e)})}},{key:"hide",value:function(t){y.leave("show"),y.trigger(this,"beforeHide");var e=this;g.do(this,this.getHidePosition(),function(){e.$panel.removeClass(e.options.classes.show),e._showed=!1,e._instance=null,y._current===e&&(y._current=null),y.is("show")||(0,l.default)("html").removeClass(e.options.classes.base+"-html"),l.default.isFunction(t)&&t.call(e),y.trigger(e,"afterHide")})}},{key:"makePositionStyle",value:function(t){var e=void 0,n="0",i="0";s(t)||a(t)||(t+="%"),this.options.useCssTransforms&&f.transform?("left"===this.options.direction||"right"===this.options.direction?n=t:i=t,e=f.transform.toString(),t=this.options.useCssTransforms3d&&f.transform3d?"translate3d("+n+","+i+",0)":"translate("+n+","+i+")"):e=this.options.direction;var o={};return o[e]=t,o}},{key:"getPosition",value:function(t){var e=void 0;if(this.options.useCssTransforms&&f.transform){if(!(e=n(this.$panel.css(f.transform))))return 0;e="left"===this.options.direction||"right"===this.options.direction?e[12]||e[4]:e[13]||e[5]}else e=this.$panel.css(this.options.direction),e=parseFloat(e.replace("px",""));return!0!==t&&(e=e/this._length*100),parseFloat(e,10)}},{key:"setPosition",value:function(t){var e=this.makePositionStyle(t);this.$panel.css(e)}}]),t}(),y={_states:{},_views:{},_current:null,is:function(t){return this._states[t]&&this._states[t]>0},enter:function(t){void 0===this._states[t]&&(this._states[t]=0),this._states[t]++},leave:function(t){this._states[t]--},trigger:function(t,e){for(var n=arguments.length,i=Array(n>2?n-2:0),o=2;o1?e-1:0),i=1;i
'},loading:{appendTo:"panel",template:function(t){return'
'},showCallback:function(t){this.$el.addClass(t.classes.loading+"-show")},hideCallback:function(t){this.$el.removeClass(t.classes.loading+"-show")}},contentFilter:function(t,e){return t},useCssTransforms3d:!0,useCssTransforms:!0,useCssTransitions:!0,dragTolerance:150,mouseDragHandler:null,mouseDrag:!0,touchDrag:!0,pointerDrag:!0,enableTouchScroll:!1,direction:"right",duration:"500",easing:"ease",beforeLoad:$.noop,afterLoad:$.noop,beforeShow:$.noop,afterShow:$.noop,onChange:$.noop,beforeHide:$.noop,afterHide:$.noop,beforeDrag:$.noop,afterDrag:$.noop},c=function(){function t(n){e(this,t);for(var i=arguments.length,o=Array(i>1?i-1:0),s=1;s").get(0).style,o={csstransforms:function(){return Boolean(s("transform"))},csstransforms3d:function(){return Boolean(s("perspective"))},csstransitions:function(){return Boolean(s("transition"))},cssanimations:function(){return Boolean(s("animation"))}},s=function(t,e){var o=!1,s=t.charAt(0).toUpperCase()+t.slice(1);return void 0!==i[t]&&(o=t),o||l.default.each(n,function(t,e){return void 0===i[e+s]||(o="-"+e.toLowerCase()+"-"+s,!1)}),e?o:!!o},a=function(t){return s(t,!0)};o.csstransitions()&&(t.transition=new String(a("transition")),t.transition.end=e.transition.end[t.transition]),o.cssanimations()&&(t.animation=new String(a("animation")),t.animation.end=e.animation.end[t.animation]),o.csstransforms()&&(t.transform=new String(a("transform")),t.transform3d=o.csstransforms3d()),"ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch?t.touch=!0:t.touch=!1,window.PointerEvent||window.MSPointerEvent?t.pointer=!0:t.pointer=!1,t.prefixPointerEvent=function(t){return window.MSPointerEvent?"MSPointer"+t.charAt(9).toUpperCase()+t.substr(10):t}}(f);var p={ease:r(.25,.1,.25,1),linear:r(0,0,1,1),"ease-in":r(.42,0,1,1),"ease-out":r(0,0,.58,1),"ease-in-out":r(.42,0,.58,1)},g={prepareTransition:function(t,e,n,i,o){var s=[];e&&s.push(e),n&&(l.default.isNumeric(n)&&(n+="ms"),s.push(n)),i?s.push(i):s.push(this.easing.css),o&&s.push(o),t.css(f.transition,s.join(" "))},do:function(t,e,n){y.enter("animating");var i=t.options.duration,s=t.options.easing||"ease",a=this,r=t.makePositionStyle(e),u=null;for(u in r)if({}.hasOwnProperty.call(r,u))break;if(t.options.useCssTransitions&&f.transition)setTimeout(function(){a.prepareTransition(t.$panel,u,i,s)},20),t.$panel.one(f.transition.end,function(){l.default.isFunction(n)&&n(),t.$panel.css(f.transition,""),y.leave("animating")}),setTimeout(function(){t.setPosition(e)},20);else{var h=o(),d=t.getPosition(),c=e;a._frameId=window.requestAnimationFrame(function e(i){var o=(i-h)/t.options.duration;o>1&&(o=1),o=p[s].fn(o);var r=parseFloat(d+o*(c-d),10);t.setPosition(r),1===o?(window.cancelAnimationFrame(a._frameId),a._frameId=null,l.default.isFunction(n)&&n(),y.leave("animating")):a._frameId=window.requestAnimationFrame(e)})}}},v=function(){function t(n){e(this,t),this.initialize(n)}return u(t,[{key:"initialize",value:function(t){this._view=t,this.build()}},{key:"build",value:function(){if(!this._builded){var t=this._view.options,e=t.loading.template.call(this,t);switch(this.$el=(0,l.default)(e),t.loading.appendTo){case"panel":this.$el.appendTo(this._view.$panel);break;case"body":this.$el.appendTo("body");break;default:this.$el.appendTo(t.loading.appendTo)}this._builded=!0}}},{key:"show",value:function(t){this.build();var e=this._view.options;e.loading.showCallback.call(this,e),l.default.isFunction(t)&&t.call(this)}},{key:"hide",value:function(t){var e=this._view.options;e.loading.hideCallback.call(this,e),l.default.isFunction(t)&&t.call(this)}}]),t}(),m=function(){function t(){e(this,t),this.initialize.apply(this,arguments)}return u(t,[{key:"initialize",value:function(t){this._view=t,this.options=t.options,this._drag={time:null,pointer:null},this.bindEvents()}},{key:"bindEvents",value:function(){var t=this._view.$panel,e=this.options;e.mouseDrag&&(t.on(y.eventName("mousedown"),l.default.proxy(this.onDragStart,this)),t.on(y.eventName("dragstart selectstart"),function(t){if(!e.mouseDragHandler||(0,l.default)(t.target).is(e.mouseDragHandler)||(0,l.default)(t.target).parents(e.mouseDragHandler).length>0)return!1})),e.touchDrag&&f.touch&&(t.on(y.eventName("touchstart"),l.default.proxy(this.onDragStart,this)),t.on(y.eventName("touchcancel"),l.default.proxy(this.onDragEnd,this))),e.pointerDrag&&f.pointer&&(t.on(y.eventName(f.prefixPointerEvent("pointerdown")),l.default.proxy(this.onDragStart,this)),t.on(y.eventName(f.prefixPointerEvent("pointercancel")),l.default.proxy(this.onDragEnd,this)))}},{key:"onDragStart",value:function(t){var e=this;if(3!==t.which){var n=this.options;this._view.$panel.addClass(this.options.classes.dragging),this._position=this._view.getPosition(!0),this._drag.time=(new Date).getTime(),this._drag.pointer=this.pointer(t);var i=function(){y.enter("dragging"),y.trigger(e._view,"beforeDrag")};if(n.mouseDrag){if(n.mouseDragHandler&&!((0,l.default)(t.target).is(n.mouseDragHandler)||(0,l.default)(t.target).parents(n.mouseDragHandler).length>0))return;(0,l.default)(document).on(y.eventName("mouseup"),l.default.proxy(this.onDragEnd,this)),(0,l.default)(document).one(y.eventName("mousemove"),l.default.proxy(function(){(0,l.default)(document).on(y.eventName("mousemove"),l.default.proxy(this.onDragMove,this)),i()},this))}n.touchDrag&&f.touch&&((0,l.default)(document).on(y.eventName("touchend"),l.default.proxy(this.onDragEnd,this)),(0,l.default)(document).one(y.eventName("touchmove"),l.default.proxy(function(){(0,l.default)(document).on(y.eventName("touchmove"),l.default.proxy(this.onDragMove,this)),i()},this))),n.pointerDrag&&f.pointer&&((0,l.default)(document).on(y.eventName(f.prefixPointerEvent("pointerup")),l.default.proxy(this.onDragEnd,this)),(0,l.default)(document).one(y.eventName(f.prefixPointerEvent("pointermove")),l.default.proxy(function(){(0,l.default)(document).on(y.eventName(f.prefixPointerEvent("pointermove")),l.default.proxy(this.onDragMove,this)),i()},this))),(0,l.default)(document).on(y.eventName("blur"),l.default.proxy(this.onDragEnd,this)),!this.options.enableTouchScroll&&t.preventDefault()}}},{key:"onDragMove",value:function(t){var e=this.distance(this._drag.pointer,this.pointer(t));!y.is("dragging")||Math.abs(e.scroll)>Math.abs(e.drag)||(Math.abs(e.drag)>this.options.dragTolerance?!0!==this._willClose&&(this._willClose=!0,this._view.$panel.addClass(this.options.classes.willClose)):!1!==this._willClose&&(this._willClose=!1,this._view.$panel.removeClass(this.options.classes.willClose)),y.is("dragging")&&(!this.options.enableTouchScroll&&t.preventDefault(),this.move(e.drag)))}},{key:"onDragEnd",value:function(t){var e=this.distance(this._drag.pointer,this.pointer(t));Math.abs(e.scroll)>Math.abs(e.drag)||((0,l.default)(document).off(y.eventName("mousemove mouseup touchmove touchend pointermove pointerup MSPointerMove MSPointerUp blur")),this._view.$panel.removeClass(this.options.classes.dragging),!0===this._willClose&&(this._willClose=!1,this._view.$panel.removeClass(this.options.classes.willClose)),y.is("dragging")&&(y.leave("dragging"),y.trigger(this._view,"afterDrag"),Math.abs(e.drag)0)return;this.options.useCssTransforms||this.options.useCssTransforms3d||"right"!==this.options.direction&&"bottom"!==this.options.direction||(e=-e),this._view.setPosition(e+"px")}}]),t}(),w=function(){function t(n){e(this,t),this.initialize(n)}return u(t,[{key:"initialize",value:function(t){this.options=t,this._instance=null,this._showed=!1,this._isLoading=!1,this.build()}},{key:"setLength",value:function(){switch(this.options.direction){case"top":case"bottom":this._length=this.$panel.outerHeight();break;case"left":case"right":this._length=this.$panel.outerWidth()}}},{key:"build",value:function(){if(!this._builded){var t=this.options,e=t.template.call(this,t),n=this;this.$panel=(0,l.default)(e).appendTo("body"),t.skin&&this.$panel.addClass(t.skin),this.$content=this.$panel.find("."+this.options.classes.content),t.closeSelector&&this.$panel.on("click touchstart",t.closeSelector,function(){return n.hide(),!1}),this.loading=new v(this),this.setLength(),this.setPosition(this.getHidePosition()),(t.mouseDrag||t.touchDrag||t.pointerDrag)&&(this.drag=new m(this)),this._builded=!0}}},{key:"getHidePosition",value:function(){var t=this.options;if(t.useCssTransforms||t.useCssTransforms3d)switch(t.direction){case"top":case"left":return"-100";case"bottom":case"right":return"100"}switch(t.direction){case"top":case"bottom":return parseFloat(-this._length/(0,l.default)(window).height()*100,10);case"left":case"right":return parseFloat(-this._length/(0,l.default)(window).width()*100,10)}}},{key:"empty",value:function(){this._instance=null,this.$content.empty()}},{key:"load",value:function(t){function e(e){e=i.contentFilter.call(this,e,t),n.$content.html(e),n.hideLoading(),n._instance=t,y.trigger(n,"afterLoad",t)}var n=this,i=t.options;y.trigger(this,"beforeLoad",t),this.empty(),t.content?e(t.content):t.url?(this.showLoading(),l.default.ajax(t.url,t.settings||{}).done(function(t){e(t)})):e("")}},{key:"showLoading",value:function(){var t=this;this.loading.show(function(){t._isLoading=!0})}},{key:"hideLoading",value:function(){var t=this;this.loading.hide(function(){t._isLoading=!1})}},{key:"show",value:function(t){this.build(),y.enter("show"),y.trigger(this,"beforeShow"),(0,l.default)("html").addClass(this.options.classes.base+"-html"),this.$panel.addClass(this.options.classes.show);var e=this;g.do(this,0,function(){e._showed=!0,y.trigger(e,"afterShow"),l.default.isFunction(t)&&t.call(e)})}},{key:"change",value:function(t){y.trigger(this,"beforeShow"),y.trigger(this,"onChange",t,this._instance),this.load(t),y.trigger(this,"afterShow")}},{key:"revert",value:function(t){var e=this;g.do(this,0,function(){l.default.isFunction(t)&&t.call(e)})}},{key:"hide",value:function(t){y.leave("show"),y.trigger(this,"beforeHide");var e=this;g.do(this,this.getHidePosition(),function(){e.$panel.removeClass(e.options.classes.show),e._showed=!1,e._instance=null,y._current===e&&(y._current=null),y.is("show")||(0,l.default)("html").removeClass(e.options.classes.base+"-html"),l.default.isFunction(t)&&t.call(e),y.trigger(e,"afterHide")})}},{key:"makePositionStyle",value:function(t){var e=void 0,n="0",i="0";s(t)||a(t)||(t+="%"),this.options.useCssTransforms&&f.transform?("left"===this.options.direction||"right"===this.options.direction?n=t:i=t,e=f.transform.toString(),t=this.options.useCssTransforms3d&&f.transform3d?"translate3d("+n+","+i+",0)":"translate("+n+","+i+")"):e=this.options.direction;var o={};return o[e]=t,o}},{key:"getPosition",value:function(t){var e=void 0;if(this.options.useCssTransforms&&f.transform){if(!(e=n(this.$panel.css(f.transform))))return 0;e="left"===this.options.direction||"right"===this.options.direction?e[12]||e[4]:e[13]||e[5]}else e=this.$panel.css(this.options.direction),e=parseFloat(e.replace("px",""));return!0!==t&&(e=e/this._length*100),parseFloat(e,10)}},{key:"setPosition",value:function(t){var e=this.makePositionStyle(t);this.$panel.css(e)}}]),t}(),y={_states:{},_views:{},_current:null,is:function(t){return this._states[t]&&this._states[t]>0},enter:function(t){void 0===this._states[t]&&(this._states[t]=0),this._states[t]++},leave:function(t){this._states[t]--},trigger:function(t,e){for(var n=arguments.length,i=Array(n>2?n-2:0),o=2;o1?e-1:0),i=1;i
`;\n },\n\n loading: {\n appendTo: 'panel', // body, panel\n template(options) {\n return `
`;\n },\n showCallback(options) {\n this.$el.addClass(`${options.classes.loading}-show`);\n },\n hideCallback(options) {\n this.$el.removeClass(`${options.classes.loading}-show`);\n }\n },\n\n contentFilter(content, object) {\n return content;\n },\n\n useCssTransforms3d: true,\n useCssTransforms: true,\n useCssTransitions: true,\n\n dragTolerance: 150,\n\n mouseDragHandler: null,\n mouseDrag: true,\n touchDrag: true,\n pointerDrag: true,\n\n direction: 'right', // top, bottom, left, right\n duration: '500',\n easing: 'ease', // linear, ease-in, ease-out, ease-in-out\n\n // callbacks\n beforeLoad: $.noop, // Before loading\n afterLoad: $.noop, // After loading\n beforeShow: $.noop, // Before opening\n afterShow: $.noop, // After opening\n onChange: $.noop, // On changing\n beforeHide: $.noop, // Before closing\n afterHide: $.noop, // After closing\n beforeDrag: $.noop, // Before drag\n afterDrag: $.noop // After drag\n};\n\nclass Instance {\n constructor(object,...args){\n this.initialize(object,...args);\n }\n initialize(object,...args) {\n const options = args[0] || {};\n\n if (typeof object === 'string') {\n object = {\n url: object\n };\n } else if (object && object.nodeType === 1) {\n const $element = $$1(object);\n\n object = {\n url: $element.attr('href'),\n settings: $element.data('settings') || {},\n options: $element.data() || {}\n };\n }\n\n if (object && object.options) {\n object.options = $$1.extend(true, options, object.options);\n } else {\n object.options = options;\n }\n\n object.options = $$1.extend(true, {}, DEFAULTS, object.options);\n\n $$1.extend(this, object);\n\n return this;\n }\n}\n\n/**\n * Css features detect\n **/\nlet Support = {};\n\n((support) => {\n /**\n * Borrowed from Owl carousel\n **/\n 'use strict';\n\n const events = {\n transition: {\n end: {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd',\n transition: 'transitionend'\n }\n },\n animation: {\n end: {\n WebkitAnimation: 'webkitAnimationEnd',\n MozAnimation: 'animationend',\n OAnimation: 'oAnimationEnd',\n animation: 'animationend'\n }\n }\n },\n prefixes = ['webkit', 'Moz', 'O', 'ms'],\n style = $$1('').get(0).style,\n tests = {\n csstransforms() {\n return Boolean(test('transform'));\n },\n csstransforms3d() {\n return Boolean(test('perspective'));\n },\n csstransitions() {\n return Boolean(test('transition'));\n },\n cssanimations() {\n return Boolean(test('animation'));\n }\n };\n\n const test = (property, prefixed) => {\n let result = false,\n upper = property.charAt(0).toUpperCase() + property.slice(1);\n\n if (style[property] !== undefined) {\n result = property;\n }\n if (!result) {\n $$1.each(prefixes, (i, prefix) => {\n if (style[prefix + upper] !== undefined) {\n result = `-${prefix.toLowerCase()}-${upper}`;\n return false;\n }\n return true;\n });\n }\n\n if (prefixed) {\n return result;\n }\n if (result) {\n return true;\n }\n return false;\n };\n\n const prefixed = (property) => {\n return test(property, true);\n };\n\n if (tests.csstransitions()) {\n /*eslint no-new-wrappers: \"off\"*/\n support.transition = new String(prefixed('transition'));\n support.transition.end = events.transition.end[support.transition];\n }\n\n if (tests.cssanimations()) {\n /*eslint no-new-wrappers: \"off\"*/\n support.animation = new String(prefixed('animation'));\n support.animation.end = events.animation.end[support.animation];\n }\n\n if (tests.csstransforms()) {\n /*eslint no-new-wrappers: \"off\"*/\n support.transform = new String(prefixed('transform'));\n support.transform3d = tests.csstransforms3d();\n }\n\n if (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch) {\n support.touch = true;\n } else {\n support.touch = false;\n }\n\n if (window.PointerEvent || window.MSPointerEvent) {\n support.pointer = true;\n } else {\n support.pointer = false;\n }\n\n support.prefixPointerEvent = (pointerEvent) => {\n return window.MSPointerEvent ?\n `MSPointer${pointerEvent.charAt(9).toUpperCase()}${pointerEvent.substr(10)}` :\n pointerEvent;\n };\n})(Support);\n\nfunction easingBezier(mX1, mY1, mX2, mY2) {\n 'use strict';\n function a(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function b(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function c(aA1) {\n return 3.0 * aA1;\n }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier(aT, aA1, aA2) {\n return ((a(aA1, aA2) * aT + b(aA1, aA2)) * aT + c(aA1)) * aT;\n }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope(aT, aA1, aA2) {\n return 3.0 * a(aA1, aA2) * aT * aT + 2.0 * b(aA1, aA2) * aT + c(aA1);\n }\n\n function getTForX(aX) {\n // Newton raphson iteration\n let aGuessT = aX;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return {\n css: 'linear',\n fn(aX) {\n return aX;\n }\n };\n }\n return {\n css: `cubic-bezier(${mX1},${mY1},${mX2},${mY2})`,\n fn(aX) {\n return calcBezier(getTForX(aX), mY1, mY2);\n }\n };\n}\n\nconst Easings = {\n ease: easingBezier(0.25, 0.1, 0.25, 1.0),\n linear: easingBezier(0.00, 0.0, 1.00, 1.0),\n 'ease-in': easingBezier(0.42, 0.0, 1.00, 1.0),\n 'ease-out': easingBezier(0.00, 0.0, 0.58, 1.0),\n 'ease-in-out': easingBezier(0.42, 0.0, 0.58, 1.0)\n};\n\nconst Animate = {\n prepareTransition($el, property, duration, easing, delay) {\n const temp = [];\n if (property) {\n temp.push(property);\n }\n if (duration) {\n if ($$1.isNumeric(duration)) {\n duration = `${duration}ms`;\n }\n temp.push(duration);\n }\n if (easing) {\n temp.push(easing);\n } else {\n temp.push(this.easing.css);\n }\n if (delay) {\n temp.push(delay);\n }\n $el.css(Support.transition, temp.join(' '));\n },\n do(view, value, callback) {\n SlidePanel.enter('animating');\n\n const duration = view.options.duration,\n easing = view.options.easing || 'ease';\n\n const that = this;\n let style = view.makePositionStyle(value);\n let property = null;\n\n for (property in style) {\n if ({}.hasOwnProperty.call(style, property)) {\n break;\n }\n }\n\n if (view.options.useCssTransitions && Support.transition) {\n setTimeout(() => {\n that.prepareTransition(view.$panel, property, duration, easing);\n }, 20);\n\n view.$panel.one(Support.transition.end, () => {\n if ($$1.isFunction(callback)) {\n callback();\n }\n\n view.$panel.css(Support.transition, '');\n\n SlidePanel.leave('animating');\n });\n setTimeout(() => {\n view.setPosition(value);\n }, 20);\n } else {\n const startTime = getTime();\n const start = view.getPosition();\n const end = value;\n\n const run = time => {\n let percent = (time - startTime) / view.options.duration;\n\n if (percent > 1) {\n percent = 1;\n }\n\n percent = Easings[easing].fn(percent);\n\n const current = parseFloat(start + percent * (end - start), 10);\n\n view.setPosition(current);\n\n if (percent === 1) {\n window.cancelAnimationFrame(that._frameId);\n that._frameId = null;\n\n if ($$1.isFunction(callback)) {\n callback();\n }\n\n SlidePanel.leave('animating');\n } else {\n that._frameId = window.requestAnimationFrame(run);\n }\n };\n\n that._frameId = window.requestAnimationFrame(run);\n }\n }\n};\n\nclass Loading {\n constructor(view) {\n this.initialize(view);\n }\n\n initialize(view) {\n this._view = view;\n this.build();\n }\n\n build() {\n if (this._builded) {\n return;\n }\n\n const options = this._view.options;\n const html = options.loading.template.call(this, options);\n this.$el = $$1(html);\n\n switch (options.loading.appendTo) {\n case 'panel':\n this.$el.appendTo(this._view.$panel);\n break;\n case 'body':\n this.$el.appendTo('body');\n break;\n default:\n this.$el.appendTo(options.loading.appendTo);\n }\n\n this._builded = true;\n }\n\n show(callback) {\n this.build();\n const options = this._view.options;\n options.loading.showCallback.call(this, options);\n\n if ($$1.isFunction(callback)) {\n callback.call(this);\n }\n }\n\n hide(callback) {\n const options = this._view.options;\n options.loading.hideCallback.call(this, options);\n\n if ($$1.isFunction(callback)) {\n callback.call(this);\n }\n }\n}\n\nclass Drag {\n constructor(...args){\n this.initialize(...args);\n }\n\n initialize(view) {\n this._view = view;\n this.options = view.options;\n this._drag = {\n time: null,\n pointer: null\n };\n\n this.bindEvents();\n }\n bindEvents() {\n const $panel = this._view.$panel,\n options = this.options;\n\n if (options.mouseDrag) {\n $panel.on(SlidePanel.eventName('mousedown'), $$1.proxy(this.onDragStart, this));\n $panel.on(SlidePanel.eventName('dragstart selectstart'), (event) => {\n /* eslint consistent-return: \"off\" */\n if (options.mouseDragHandler) {\n if (!($$1(event.target).is(options.mouseDragHandler)) && !($$1(event.target).parents(options.mouseDragHandler).length > 0)) {\n return;\n }\n }\n return false;\n });\n }\n\n if (options.touchDrag && Support.touch) {\n $panel.on(SlidePanel.eventName('touchstart'), $$1.proxy(this.onDragStart, this));\n $panel.on(SlidePanel.eventName('touchcancel'), $$1.proxy(this.onDragEnd, this));\n }\n\n if (options.pointerDrag && Support.pointer) {\n $panel.on(SlidePanel.eventName(Support.prefixPointerEvent('pointerdown')), $$1.proxy(this.onDragStart, this));\n $panel.on(SlidePanel.eventName(Support.prefixPointerEvent('pointercancel')), $$1.proxy(this.onDragEnd, this));\n }\n }\n\n /**\n * Handles `touchstart` and `mousedown` events.\n */\n onDragStart(event) {\n const that = this;\n\n if (event.which === 3) {\n return;\n }\n\n const options = this.options;\n\n this._view.$panel.addClass(this.options.classes.dragging);\n\n this._position = this._view.getPosition(true);\n\n this._drag.time = new Date().getTime();\n this._drag.pointer = this.pointer(event);\n\n const callback = () => {\n SlidePanel.enter('dragging');\n SlidePanel.trigger(that._view, 'beforeDrag');\n };\n\n if (options.mouseDrag) {\n if (options.mouseDragHandler) {\n if (!($$1(event.target).is(options.mouseDragHandler)) && !($$1(event.target).parents(options.mouseDragHandler).length > 0)) {\n return;\n }\n }\n\n $$1(document).on(SlidePanel.eventName('mouseup'), $$1.proxy(this.onDragEnd, this));\n\n $$1(document).one(SlidePanel.eventName('mousemove'), $$1.proxy(function () {\n $$1(document).on(SlidePanel.eventName('mousemove'), $$1.proxy(this.onDragMove, this));\n\n callback();\n }, this));\n }\n\n if (options.touchDrag && Support.touch) {\n $$1(document).on(SlidePanel.eventName('touchend'), $$1.proxy(this.onDragEnd, this));\n\n $$1(document).one(SlidePanel.eventName('touchmove'), $$1.proxy(function () {\n $$1(document).on(SlidePanel.eventName('touchmove'), $$1.proxy(this.onDragMove, this));\n\n callback();\n }, this));\n }\n\n if (options.pointerDrag && Support.pointer) {\n $$1(document).on(SlidePanel.eventName(Support.prefixPointerEvent('pointerup')), $$1.proxy(this.onDragEnd, this));\n\n $$1(document).one(SlidePanel.eventName(Support.prefixPointerEvent('pointermove')), $$1.proxy(function () {\n $$1(document).on(SlidePanel.eventName(Support.prefixPointerEvent('pointermove')), $$1.proxy(this.onDragMove, this));\n\n callback();\n }, this));\n }\n\n $$1(document).on(SlidePanel.eventName('blur'), $$1.proxy(this.onDragEnd, this));\n\n event.preventDefault();\n }\n\n /**\n * Handles the `touchmove` and `mousemove` events.\n */\n onDragMove(event) {\n const distance = this.distance(this._drag.pointer, this.pointer(event));\n\n if (!SlidePanel.is('dragging')) {\n return;\n }\n\n if (Math.abs(distance) > this.options.dragTolerance) {\n if (this._willClose !== true) {\n this._willClose = true;\n this._view.$panel.addClass(this.options.classes.willClose);\n }\n } else if (this._willClose !== false) {\n this._willClose = false;\n this._view.$panel.removeClass(this.options.classes.willClose);\n }\n\n if (!SlidePanel.is('dragging')) {\n return;\n }\n\n event.preventDefault();\n this.move(distance);\n }\n\n /**\n * Handles the `touchend` and `mouseup` events.\n */\n onDragEnd(event) {\n const distance = this.distance(this._drag.pointer, this.pointer(event));\n\n $$1(document).off(SlidePanel.eventName('mousemove mouseup touchmove touchend pointermove pointerup MSPointerMove MSPointerUp blur'));\n\n this._view.$panel.removeClass(this.options.classes.dragging);\n\n if (this._willClose === true) {\n this._willClose = false;\n this._view.$panel.removeClass(this.options.classes.willClose);\n }\n\n if (!SlidePanel.is('dragging')) {\n return;\n }\n\n SlidePanel.leave('dragging');\n\n SlidePanel.trigger(this._view, 'afterDrag');\n\n if (Math.abs(distance) < this.options.dragTolerance) {\n this._view.revert();\n } else {\n this._view.hide();\n // SlidePanel.hide();\n }\n }\n\n /**\n * Gets unified pointer coordinates from event.\n * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.\n */\n pointer(event) {\n const result = {\n x: null,\n y: null\n };\n\n event = event.originalEvent || event || window.event;\n\n event = event.touches && event.touches.length ?\n event.touches[0] : event.changedTouches && event.changedTouches.length ?\n event.changedTouches[0] : event;\n\n if (event.pageX) {\n result.x = event.pageX;\n result.y = event.pageY;\n } else {\n result.x = event.clientX;\n result.y = event.clientY;\n }\n\n return result;\n }\n\n /**distance\n * Gets the distance of two pointer.\n */\n distance(first, second) {\n const d = this.options.direction;\n if (d === 'left' || d === 'right') {\n return second.x - first.x;\n }\n return second.y - first.y;\n }\n\n move(value) {\n let position = this._position + value;\n\n if (this.options.direction === 'right' || this.options.direction === 'bottom') {\n if (position < 0) {\n return;\n }\n } else if (position > 0) {\n return;\n }\n\n if (!this.options.useCssTransforms && !this.options.useCssTransforms3d) {\n if (this.options.direction === 'right' || this.options.direction === 'bottom') {\n position = -position;\n }\n }\n\n this._view.setPosition(`${position}px`);\n }\n}\n\nclass View {\n constructor(options) {\n this.initialize(options);\n }\n\n initialize(options) {\n this.options = options;\n this._instance = null;\n this._showed = false;\n this._isLoading = false;\n\n this.build();\n }\n\n setLength() {\n switch (this.options.direction) {\n case 'top':\n case 'bottom':\n this._length = this.$panel.outerHeight();\n break;\n case 'left':\n case 'right':\n this._length = this.$panel.outerWidth();\n break;\n // no default\n }\n }\n\n build() {\n if (this._builded) {\n return;\n }\n\n const options = this.options;\n\n const html = options.template.call(this, options);\n const that = this;\n\n this.$panel = $$1(html).appendTo('body');\n if (options.skin) {\n this.$panel.addClass(options.skin);\n }\n this.$content = this.$panel.find(`.${this.options.classes.content}`);\n\n if (options.closeSelector) {\n this.$panel.on('click touchstart', options.closeSelector, () => {\n that.hide();\n return false;\n });\n }\n this.loading = new Loading(this);\n\n this.setLength();\n this.setPosition(this.getHidePosition());\n\n if (options.mouseDrag || options.touchDrag || options.pointerDrag) {\n this.drag = new Drag(this);\n }\n\n this._builded = true;\n }\n\n getHidePosition() {\n /* eslint consistent-return: \"off\" */\n const options = this.options;\n\n if (options.useCssTransforms || options.useCssTransforms3d) {\n switch (options.direction) {\n case 'top':\n case 'left':\n return '-100';\n case 'bottom':\n case 'right':\n return '100';\n // no default\n }\n }\n switch (options.direction) {\n case 'top':\n case 'bottom':\n return parseFloat(-(this._length / $$1(window).height()) * 100, 10);\n case 'left':\n case 'right':\n return parseFloat(-(this._length / $$1(window).width()) * 100, 10);\n // no default\n }\n }\n\n empty() {\n this._instance = null;\n this.$content.empty();\n }\n\n load(object) {\n const that = this;\n const options = object.options;\n\n SlidePanel.trigger(this, 'beforeLoad', object);\n this.empty();\n\n function setContent(content) {\n content = options.contentFilter.call(this, content, object);\n that.$content.html(content);\n that.hideLoading();\n\n that._instance = object;\n\n SlidePanel.trigger(that, 'afterLoad', object);\n }\n\n if (object.content) {\n setContent(object.content);\n } else if (object.url) {\n this.showLoading();\n\n $$1.ajax(object.url, object.settings || {}).done(data => {\n setContent(data);\n });\n } else {\n setContent('');\n }\n }\n\n showLoading() {\n const that = this;\n this.loading.show(() => {\n that._isLoading = true;\n });\n }\n\n hideLoading() {\n const that = this;\n this.loading.hide(() => {\n that._isLoading = false;\n });\n }\n\n show(callback) {\n this.build();\n\n SlidePanel.enter('show');\n SlidePanel.trigger(this, 'beforeShow');\n\n $$1('html').addClass(`${this.options.classes.base}-html`);\n this.$panel.addClass(this.options.classes.show);\n\n const that = this;\n Animate.do(this, 0, () => {\n that._showed = true;\n SlidePanel.trigger(that, 'afterShow');\n\n if ($$1.isFunction(callback)) {\n callback.call(that);\n }\n });\n }\n\n change(object) {\n SlidePanel.trigger(this, 'beforeShow');\n\n SlidePanel.trigger(this, 'onChange', object, this._instance);\n\n this.load(object);\n\n SlidePanel.trigger(this, 'afterShow');\n }\n\n revert(callback) {\n const that = this;\n Animate.do(this, 0, () => {\n if ($$1.isFunction(callback)) {\n callback.call(that);\n }\n });\n }\n\n hide(callback) {\n SlidePanel.leave('show');\n SlidePanel.trigger(this, 'beforeHide');\n\n const that = this;\n\n Animate.do(this, this.getHidePosition(), () => {\n that.$panel.removeClass(that.options.classes.show);\n that._showed = false;\n that._instance = null;\n\n if (SlidePanel._current === that) {\n SlidePanel._current = null;\n }\n\n if (!SlidePanel.is('show')) {\n $$1('html').removeClass(`${that.options.classes.base}-html`);\n }\n\n if ($$1.isFunction(callback)) {\n callback.call(that);\n }\n\n SlidePanel.trigger(that, 'afterHide');\n });\n }\n\n makePositionStyle(value) {\n let property, x = '0',\n y = '0';\n\n if (!isPercentage(value) && !isPx(value)) {\n value = `${value}%`;\n }\n\n if (this.options.useCssTransforms && Support.transform) {\n if (this.options.direction === 'left' || this.options.direction === 'right') {\n x = value;\n } else {\n y = value;\n }\n\n property = Support.transform.toString();\n\n if (this.options.useCssTransforms3d && Support.transform3d) {\n value = `translate3d(${x},${y},0)`;\n } else {\n value = `translate(${x},${y})`;\n }\n } else {\n property = this.options.direction;\n }\n const temp = {};\n temp[property] = value;\n return temp;\n }\n\n getPosition(px) {\n let value;\n\n if (this.options.useCssTransforms && Support.transform) {\n value = convertMatrixToArray(this.$panel.css(Support.transform));\n if (!value) {\n return 0;\n }\n\n if (this.options.direction === 'left' || this.options.direction === 'right') {\n value = value[12] || value[4];\n\n } else {\n value = value[13] || value[5];\n }\n } else {\n value = this.$panel.css(this.options.direction);\n\n value = parseFloat(value.replace('px', ''));\n }\n\n if (px !== true) {\n value = (value / this._length) * 100;\n }\n\n return parseFloat(value, 10);\n }\n\n setPosition(value) {\n const style = this.makePositionStyle(value);\n this.$panel.css(style);\n }\n}\n\nconst SlidePanel = {\n // Current state information.\n _states: {},\n _views: {},\n _current: null,\n\n /**\n * Checks whether the carousel is in a specific state or not.\n */\n is(state) {\n return this._states[state] && this._states[state] > 0;\n },\n\n /**\n * Enters a state.\n */\n enter(state) {\n if (this._states[state] === undefined) {\n this._states[state] = 0;\n }\n\n this._states[state]++;\n },\n\n /**\n * Leaves a state.\n */\n leave(state) {\n this._states[state]--;\n },\n\n trigger(view, event, ...args) {\n const data = [view].concat(args);\n\n // event\n $$1(document).trigger(`slidePanel::${event}`, data);\n if ($$1.isFunction(view.options[event])) {\n view.options[event].apply(view, args);\n }\n },\n\n eventName(events) {\n if (typeof events !== 'string' || events === '') {\n return '.slidepanel';\n }\n events = events.split(' ');\n\n const length = events.length;\n for (let i = 0; i < length; i++) {\n events[i] = `${events[i]}.slidepanel`;\n }\n return events.join(' ');\n },\n\n show(object, options) {\n if (!(object instanceof Instance)) {\n switch (arguments.length) {\n case 0:\n object = new Instance();\n break;\n case 1:\n object = new Instance(object);\n break;\n case 2:\n object = new Instance(object, options);\n break;\n // no default\n }\n }\n\n const view = this.getView(object.options);\n\n const callback = () => {\n view.show();\n view.load(object);\n this._current = view;\n };\n if (this._current !== null) {\n if (view === this._current) {\n this._current.change(object);\n } else {\n this._current.hide(callback);\n }\n } else {\n callback();\n }\n },\n\n getView(options) {\n const code = getHashCode(options);\n\n if (this._views.hasOwnProperty(code)) {\n return this._views[code];\n }\n\n return (this._views[code] = new View(options));\n },\n\n hide(object) {\n if (typeof object !== 'undefined' && typeof object.options !== 'undefined') {\n const view = this.getView(object.options);\n view.hide();\n } else if (this._current !== null) {\n this._current.hide();\n }\n }\n};\n\nvar api = {\n is(state) {\n return SlidePanel.is(state);\n },\n\n show(object, options) {\n SlidePanel.show(object, options);\n return this;\n },\n\n hide(...args) {\n SlidePanel.hide(args);\n return this;\n }\n};\n\nif (!Date.now) {\n Date.now = () => {\n return new Date().getTime();\n };\n}\n\nconst vendors = ['webkit', 'moz'];\nfor (let i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n const vp = vendors[i];\n window.requestAnimationFrame = window[`${vp}RequestAnimationFrame`];\n window.cancelAnimationFrame = (window[`${vp}CancelAnimationFrame`] || window[`${vp}CancelRequestAnimationFrame`]);\n}\n\nif (/iP(ad|hone|od).*OS (6|7|8)/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n let lastTime = 0;\n window.requestAnimationFrame = callback => {\n const now = getTime();\n const nextTime = Math.max(lastTime + 16, now);\n return setTimeout(() => {\n callback(lastTime = nextTime);\n },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n}\n\nconst OtherSlidePanel = $$1.fn.slidePanel;\n\nconst jQuerySlidePanel = function(options, ...args) {\n const method = options;\n\n if (typeof options === 'string') {\n return this.each(function() {\n let instance = $$1.data(this, 'slidePanel');\n\n if (!(instance instanceof Instance)) {\n instance = new Instance(this, args);\n $$1.data(this, 'slidePanel', instance);\n }\n\n switch (method) {\n case 'hide':\n SlidePanel.hide(instance);\n break;\n case 'show':\n SlidePanel.show(instance);\n break;\n // no default\n }\n });\n }\n return this.each(function() {\n if (!$$1.data(this, 'slidePanel')) {\n $$1.data(this, 'slidePanel', new Instance(this, options));\n\n $$1(this).on('click', function(e) {\n const instance = $$1.data(this, 'slidePanel');\n SlidePanel.show(instance);\n\n e.preventDefault();\n e.stopPropagation();\n });\n }\n });\n};\n\n$$1.fn.slidePanel = jQuerySlidePanel;\n\n$$1.slidePanel = function(...args) {\n SlidePanel.show(...args);\n};\n\n$$1.extend($$1.slidePanel, {\n setDefaults: function(options) {\n $$1.extend(true, DEFAULTS, $$1.isPlainObject(options) && options);\n },\n noConflict: function() {\n $$1.fn.slidePanel = OtherSlidePanel;\n return jQuerySlidePanel;\n }\n}, info, api);\n"]} \ No newline at end of file +{"version":3,"sources":["jquery-slidePanel.es.js"],"names":["global","factory","define","amd","exports","require","mod","jQuery","jquerySlidePanelEs","this","_jquery","_classCallCheck","instance","Constructor","TypeError","convertMatrixToArray","value","substr","replace","split","getHashCode","object","JSON","stringify","hash","i","len","length","charCodeAt","getTime","window","performance","now","Date","isPercentage","n","indexOf","isPx","easingBezier","mX1","mY1","mX2","mY2","a","aA1","aA2","b","c","calcBezier","aT","getSlope","getTForX","aX","aGuessT","currentSlope","css","fn","_jquery2","obj","__esModule","default","_interopRequireDefault","_createClass","defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","key","protoProps","staticProps","prototype","info","version","DEFAULTS","skin","classes","base","show","loading","content","dragging","willClose","closeSelector","template","options","direction","appendTo","showCallback","$el","addClass","hideCallback","removeClass","contentFilter","useCssTransforms3d","useCssTransforms","useCssTransitions","dragTolerance","mouseDragHandler","mouseDrag","touchDrag","pointerDrag","enableTouchScroll","duration","easing","beforeLoad","$","noop","afterLoad","beforeShow","afterShow","onChange","beforeHide","afterHide","beforeDrag","afterDrag","Instance","_len","arguments","args","Array","_key","initialize","apply","concat","undefined","url","nodeType","$element","attr","settings","data","extend","Support","support","events","transition","end","WebkitTransition","MozTransition","OTransition","animation","WebkitAnimation","MozAnimation","OAnimation","prefixes","style","get","tests","csstransforms","Boolean","test","csstransforms3d","csstransitions","cssanimations","property","prefixed","result","upper","charAt","toUpperCase","slice","each","prefix","toLowerCase","String","transform","transform3d","DocumentTouch","document","touch","PointerEvent","MSPointerEvent","pointer","prefixPointerEvent","pointerEvent","Easings","ease","linear","ease-in","ease-out","ease-in-out","Animate","prepareTransition","delay","temp","push","isNumeric","join","do","view","callback","SlidePanel","enter","that","makePositionStyle","hasOwnProperty","call","setTimeout","$panel","one","isFunction","leave","setPosition","startTime","start","getPosition","_frameId","requestAnimationFrame","run","time","percent","current","parseFloat","cancelAnimationFrame","Loading","_view","build","_builded","html","Drag","_drag","bindEvents","on","eventName","proxy","onDragStart","event","is","parents","onDragEnd","which","_position","trigger","onDragMove","preventDefault","distance","Math","abs","scroll","drag","_willClose","move","off","revert","hide","x","y","originalEvent","touches","changedTouches","pageX","pageY","clientX","clientY","first","second","d","dx","dy","position","View","_instance","_showed","_isLoading","_length","outerHeight","outerWidth","$content","find","setLength","getHidePosition","height","width","empty","setContent","hideLoading","showLoading","ajax","done","load","_current","toString","px","_states","_views","state"],"mappings":"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","file":"jquery-slidePanel.min.js","sourcesContent":["/**\n* jQuery slidePanel v0.3.5\n* https://github.com/amazingSurge/jquery-slidePanel\n*\n* Copyright (c) amazingSurge\n* Released under the LGPL-3.0 license\n*/\nimport $$1 from 'jquery';\n\nvar info = {\n version:'0.3.5'\n};\n\nfunction convertMatrixToArray(value) {\n if (value && (value.substr(0, 6) === 'matrix')) {\n return value.replace(/^.*\\((.*)\\)$/g, '$1').replace(/px/g, '').split(/, +/);\n }\n return false;\n}\n\nfunction getHashCode(object) {\n /* eslint no-bitwise: \"off\" */\n if (typeof object !== 'string') {\n object = JSON.stringify(object);\n }\n\n let chr, hash = 0,\n i, len;\n if (object.length === 0) {\n return hash;\n }\n for (i = 0, len = object.length; i < len; i++) {\n chr = object.charCodeAt(i);\n hash = ((hash << 5) - hash) + chr;\n hash |= 0; // Convert to 32bit integer\n }\n\n return hash;\n}\n\nfunction getTime() {\n if (typeof window.performance !== 'undefined' && window.performance.now) {\n return window.performance.now();\n }\n return Date.now();\n}\n\nfunction isPercentage(n) {\n return typeof n === 'string' && n.indexOf('%') !== -1;\n}\n\nfunction isPx(n) {\n return typeof n === 'string' && n.indexOf('px') !== -1;\n}\n\n/* eslint no-unused-vars: \"off\" */\nvar DEFAULTS = {\n skin: null,\n\n classes: {\n base: 'slidePanel',\n show: 'slidePanel-show',\n loading: 'slidePanel-loading',\n content: 'slidePanel-content',\n dragging: 'slidePanel-dragging',\n willClose: 'slidePanel-will-close'\n },\n\n closeSelector: null,\n\n template(options) {\n return `
`;\n },\n\n loading: {\n appendTo: 'panel', // body, panel\n template(options) {\n return `
`;\n },\n showCallback(options) {\n this.$el.addClass(`${options.classes.loading}-show`);\n },\n hideCallback(options) {\n this.$el.removeClass(`${options.classes.loading}-show`);\n }\n },\n\n contentFilter(content, object) {\n return content;\n },\n\n useCssTransforms3d: true,\n useCssTransforms: true,\n useCssTransitions: true,\n\n dragTolerance: 150,\n\n mouseDragHandler: null,\n mouseDrag: true,\n touchDrag: true,\n pointerDrag: true,\n enableTouchScroll: false,\n\n direction: 'right', // top, bottom, left, right\n duration: '500',\n easing: 'ease', // linear, ease-in, ease-out, ease-in-out,\n\n // callbacks\n beforeLoad: $.noop, // Before loading\n afterLoad: $.noop, // After loading\n beforeShow: $.noop, // Before opening\n afterShow: $.noop, // After opening\n onChange: $.noop, // On changing\n beforeHide: $.noop, // Before closing\n afterHide: $.noop, // After closing\n beforeDrag: $.noop, // Before drag\n afterDrag: $.noop // After drag\n};\n\nclass Instance {\n constructor(object,...args){\n this.initialize(object,...args);\n }\n initialize(object,...args) {\n const options = args[0] || {};\n\n if (typeof object === 'string') {\n object = {\n url: object\n };\n } else if (object && object.nodeType === 1) {\n const $element = $$1(object);\n\n object = {\n url: $element.attr('href'),\n settings: $element.data('settings') || {},\n options: $element.data() || {}\n };\n }\n\n if (object && object.options) {\n object.options = $$1.extend(true, options, object.options);\n } else {\n object.options = options;\n }\n\n object.options = $$1.extend(true, {}, DEFAULTS, object.options);\n\n $$1.extend(this, object);\n\n return this;\n }\n}\n\n/**\n * Css features detect\n **/\nlet Support = {};\n\n((support) => {\n /**\n * Borrowed from Owl carousel\n **/\n 'use strict';\n\n const events = {\n transition: {\n end: {\n WebkitTransition: 'webkitTransitionEnd',\n MozTransition: 'transitionend',\n OTransition: 'oTransitionEnd',\n transition: 'transitionend'\n }\n },\n animation: {\n end: {\n WebkitAnimation: 'webkitAnimationEnd',\n MozAnimation: 'animationend',\n OAnimation: 'oAnimationEnd',\n animation: 'animationend'\n }\n }\n },\n prefixes = ['webkit', 'Moz', 'O', 'ms'],\n style = $$1('').get(0).style,\n tests = {\n csstransforms() {\n return Boolean(test('transform'));\n },\n csstransforms3d() {\n return Boolean(test('perspective'));\n },\n csstransitions() {\n return Boolean(test('transition'));\n },\n cssanimations() {\n return Boolean(test('animation'));\n }\n };\n\n const test = (property, prefixed) => {\n let result = false,\n upper = property.charAt(0).toUpperCase() + property.slice(1);\n\n if (style[property] !== undefined) {\n result = property;\n }\n if (!result) {\n $$1.each(prefixes, (i, prefix) => {\n if (style[prefix + upper] !== undefined) {\n result = `-${prefix.toLowerCase()}-${upper}`;\n return false;\n }\n return true;\n });\n }\n\n if (prefixed) {\n return result;\n }\n if (result) {\n return true;\n }\n return false;\n };\n\n const prefixed = (property) => {\n return test(property, true);\n };\n\n if (tests.csstransitions()) {\n /*eslint no-new-wrappers: \"off\"*/\n support.transition = new String(prefixed('transition'));\n support.transition.end = events.transition.end[support.transition];\n }\n\n if (tests.cssanimations()) {\n /*eslint no-new-wrappers: \"off\"*/\n support.animation = new String(prefixed('animation'));\n support.animation.end = events.animation.end[support.animation];\n }\n\n if (tests.csstransforms()) {\n /*eslint no-new-wrappers: \"off\"*/\n support.transform = new String(prefixed('transform'));\n support.transform3d = tests.csstransforms3d();\n }\n\n if (('ontouchstart' in window) || window.DocumentTouch && document instanceof window.DocumentTouch) {\n support.touch = true;\n } else {\n support.touch = false;\n }\n\n if (window.PointerEvent || window.MSPointerEvent) {\n support.pointer = true;\n } else {\n support.pointer = false;\n }\n\n support.prefixPointerEvent = (pointerEvent) => {\n return window.MSPointerEvent ?\n `MSPointer${pointerEvent.charAt(9).toUpperCase()}${pointerEvent.substr(10)}` :\n pointerEvent;\n };\n})(Support);\n\nfunction easingBezier(mX1, mY1, mX2, mY2) {\n 'use strict';\n function a(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function b(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function c(aA1) {\n return 3.0 * aA1;\n }\n\n // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n function calcBezier(aT, aA1, aA2) {\n return ((a(aA1, aA2) * aT + b(aA1, aA2)) * aT + c(aA1)) * aT;\n }\n\n // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n function getSlope(aT, aA1, aA2) {\n return 3.0 * a(aA1, aA2) * aT * aT + 2.0 * b(aA1, aA2) * aT + c(aA1);\n }\n\n function getTForX(aX) {\n // Newton raphson iteration\n let aGuessT = aX;\n for (let i = 0; i < 4; ++i) {\n const currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) {\n return aGuessT;\n }\n const currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n return aGuessT;\n }\n\n if (mX1 === mY1 && mX2 === mY2) {\n return {\n css: 'linear',\n fn(aX) {\n return aX;\n }\n };\n }\n return {\n css: `cubic-bezier(${mX1},${mY1},${mX2},${mY2})`,\n fn(aX) {\n return calcBezier(getTForX(aX), mY1, mY2);\n }\n };\n}\n\nconst Easings = {\n ease: easingBezier(0.25, 0.1, 0.25, 1.0),\n linear: easingBezier(0.00, 0.0, 1.00, 1.0),\n 'ease-in': easingBezier(0.42, 0.0, 1.00, 1.0),\n 'ease-out': easingBezier(0.00, 0.0, 0.58, 1.0),\n 'ease-in-out': easingBezier(0.42, 0.0, 0.58, 1.0)\n};\n\nconst Animate = {\n prepareTransition($el, property, duration, easing, delay) {\n const temp = [];\n if (property) {\n temp.push(property);\n }\n if (duration) {\n if ($$1.isNumeric(duration)) {\n duration = `${duration}ms`;\n }\n temp.push(duration);\n }\n if (easing) {\n temp.push(easing);\n } else {\n temp.push(this.easing.css);\n }\n if (delay) {\n temp.push(delay);\n }\n $el.css(Support.transition, temp.join(' '));\n },\n do(view, value, callback) {\n SlidePanel.enter('animating');\n\n const duration = view.options.duration,\n easing = view.options.easing || 'ease';\n\n const that = this;\n let style = view.makePositionStyle(value);\n let property = null;\n\n for (property in style) {\n if ({}.hasOwnProperty.call(style, property)) {\n break;\n }\n }\n\n if (view.options.useCssTransitions && Support.transition) {\n setTimeout(() => {\n that.prepareTransition(view.$panel, property, duration, easing);\n }, 20);\n\n view.$panel.one(Support.transition.end, () => {\n if ($$1.isFunction(callback)) {\n callback();\n }\n\n view.$panel.css(Support.transition, '');\n\n SlidePanel.leave('animating');\n });\n setTimeout(() => {\n view.setPosition(value);\n }, 20);\n } else {\n const startTime = getTime();\n const start = view.getPosition();\n const end = value;\n\n const run = time => {\n let percent = (time - startTime) / view.options.duration;\n\n if (percent > 1) {\n percent = 1;\n }\n\n percent = Easings[easing].fn(percent);\n\n const current = parseFloat(start + percent * (end - start), 10);\n\n view.setPosition(current);\n\n if (percent === 1) {\n window.cancelAnimationFrame(that._frameId);\n that._frameId = null;\n\n if ($$1.isFunction(callback)) {\n callback();\n }\n\n SlidePanel.leave('animating');\n } else {\n that._frameId = window.requestAnimationFrame(run);\n }\n };\n\n that._frameId = window.requestAnimationFrame(run);\n }\n }\n};\n\nclass Loading {\n constructor(view) {\n this.initialize(view);\n }\n\n initialize(view) {\n this._view = view;\n this.build();\n }\n\n build() {\n if (this._builded) {\n return;\n }\n\n const options = this._view.options;\n const html = options.loading.template.call(this, options);\n this.$el = $$1(html);\n\n switch (options.loading.appendTo) {\n case 'panel':\n this.$el.appendTo(this._view.$panel);\n break;\n case 'body':\n this.$el.appendTo('body');\n break;\n default:\n this.$el.appendTo(options.loading.appendTo);\n }\n\n this._builded = true;\n }\n\n show(callback) {\n this.build();\n const options = this._view.options;\n options.loading.showCallback.call(this, options);\n\n if ($$1.isFunction(callback)) {\n callback.call(this);\n }\n }\n\n hide(callback) {\n const options = this._view.options;\n options.loading.hideCallback.call(this, options);\n\n if ($$1.isFunction(callback)) {\n callback.call(this);\n }\n }\n}\n\nclass Drag {\n constructor(...args){\n this.initialize(...args);\n }\n\n initialize(view) {\n this._view = view;\n this.options = view.options;\n this._drag = {\n time: null,\n pointer: null\n };\n\n this.bindEvents();\n }\n bindEvents() {\n const $panel = this._view.$panel,\n options = this.options;\n\n if (options.mouseDrag) {\n $panel.on(SlidePanel.eventName('mousedown'), $$1.proxy(this.onDragStart, this));\n $panel.on(SlidePanel.eventName('dragstart selectstart'), (event) => {\n /* eslint consistent-return: \"off\" */\n if (options.mouseDragHandler) {\n if (!($$1(event.target).is(options.mouseDragHandler)) && !($$1(event.target).parents(options.mouseDragHandler).length > 0)) {\n return;\n }\n }\n return false;\n });\n }\n\n if (options.touchDrag && Support.touch) {\n $panel.on(SlidePanel.eventName('touchstart'), $$1.proxy(this.onDragStart, this));\n $panel.on(SlidePanel.eventName('touchcancel'), $$1.proxy(this.onDragEnd, this));\n }\n\n if (options.pointerDrag && Support.pointer) {\n $panel.on(SlidePanel.eventName(Support.prefixPointerEvent('pointerdown')), $$1.proxy(this.onDragStart, this));\n $panel.on(SlidePanel.eventName(Support.prefixPointerEvent('pointercancel')), $$1.proxy(this.onDragEnd, this));\n }\n }\n\n /**\n * Handles `touchstart` and `mousedown` events.\n */\n onDragStart(event) {\n const that = this;\n\n if (event.which === 3) {\n return;\n }\n\n const options = this.options;\n\n this._view.$panel.addClass(this.options.classes.dragging);\n\n this._position = this._view.getPosition(true);\n\n this._drag.time = new Date().getTime();\n this._drag.pointer = this.pointer(event);\n\n const callback = () => {\n SlidePanel.enter('dragging');\n SlidePanel.trigger(that._view, 'beforeDrag');\n };\n\n if (options.mouseDrag) {\n if (options.mouseDragHandler) {\n if (!($$1(event.target).is(options.mouseDragHandler)) && !($$1(event.target).parents(options.mouseDragHandler).length > 0)) {\n return;\n }\n }\n\n $$1(document).on(SlidePanel.eventName('mouseup'), $$1.proxy(this.onDragEnd, this));\n\n $$1(document).one(SlidePanel.eventName('mousemove'), $$1.proxy(function () {\n $$1(document).on(SlidePanel.eventName('mousemove'), $$1.proxy(this.onDragMove, this));\n\n callback();\n }, this));\n }\n\n if (options.touchDrag && Support.touch) {\n $$1(document).on(SlidePanel.eventName('touchend'), $$1.proxy(this.onDragEnd, this));\n\n $$1(document).one(SlidePanel.eventName('touchmove'), $$1.proxy(function () {\n $$1(document).on(SlidePanel.eventName('touchmove'), $$1.proxy(this.onDragMove, this));\n\n callback();\n }, this));\n }\n\n if (options.pointerDrag && Support.pointer) {\n $$1(document).on(SlidePanel.eventName(Support.prefixPointerEvent('pointerup')), $$1.proxy(this.onDragEnd, this));\n\n $$1(document).one(SlidePanel.eventName(Support.prefixPointerEvent('pointermove')), $$1.proxy(function () {\n $$1(document).on(SlidePanel.eventName(Support.prefixPointerEvent('pointermove')), $$1.proxy(this.onDragMove, this));\n\n callback();\n }, this));\n }\n\n $$1(document).on(SlidePanel.eventName('blur'), $$1.proxy(this.onDragEnd, this));\n\n !this.options.enableTouchScroll && event.preventDefault();\n }\n\n /**\n * Handles the `touchmove` and `mousemove` events.\n */\n onDragMove(event) {\n const distance = this.distance(this._drag.pointer, this.pointer(event));\n\n if (!SlidePanel.is('dragging') || Math.abs(distance.scroll) > Math.abs(distance.drag)) {\n return;\n }\n\n if (Math.abs(distance.drag) > this.options.dragTolerance) {\n if (this._willClose !== true) {\n this._willClose = true;\n this._view.$panel.addClass(this.options.classes.willClose);\n }\n } else if (this._willClose !== false) {\n this._willClose = false;\n this._view.$panel.removeClass(this.options.classes.willClose);\n }\n\n if (!SlidePanel.is('dragging')) {\n return;\n }\n\n !this.options.enableTouchScroll && event.preventDefault();\n this.move(distance.drag);\n }\n\n /**\n * Handles the `touchend` and `mouseup` events.\n */\n onDragEnd(event) {\n const distance = this.distance(this._drag.pointer, this.pointer(event));\n\n if (Math.abs(distance.scroll) > Math.abs(distance.drag)) {\n return;\n }\n\n $$1(document).off(SlidePanel.eventName('mousemove mouseup touchmove touchend pointermove pointerup MSPointerMove MSPointerUp blur'));\n\n this._view.$panel.removeClass(this.options.classes.dragging);\n\n if (this._willClose === true) {\n this._willClose = false;\n this._view.$panel.removeClass(this.options.classes.willClose);\n }\n\n if (!SlidePanel.is('dragging')) {\n return;\n }\n\n SlidePanel.leave('dragging');\n\n SlidePanel.trigger(this._view, 'afterDrag');\n\n if (Math.abs(distance.drag) < this.options.dragTolerance) {\n this._view.revert();\n } else {\n this._view.hide();\n // SlidePanel.hide();\n }\n }\n\n /**\n * Gets unified pointer coordinates from event.\n * @returns {Object} - Contains `x` and `y` coordinates of current pointer position.\n */\n pointer(event) {\n const result = {\n x: null,\n y: null\n };\n\n event = event.originalEvent || event || window.event;\n\n event = event.touches && event.touches.length ?\n event.touches[0] : event.changedTouches && event.changedTouches.length ?\n event.changedTouches[0] : event;\n\n if (event.pageX) {\n result.x = event.pageX;\n result.y = event.pageY;\n } else {\n result.x = event.clientX;\n result.y = event.clientY;\n }\n\n return result;\n }\n\n /**distance\n * Gets the distance of two pointer.\n * @returns {Object} - Contains 'drag' and 'scroll' distances between the given pointers.\n */\n distance(first, second) {\n const d = this.options.direction;\n var dx = second.x - first.x;\n var dy = second.y - first.y;\n\n return (d === 'left' || d === 'right') ?\n { drag: dx, scroll: this.options.enableTouchScroll ? dy : 0 }\n : { drag: dy, scroll: this.options.enableTouchScroll ? dx : 0 };\n }\n\n move(value) {\n let position = this._position + value;\n\n if (this.options.direction === 'right' || this.options.direction === 'bottom') {\n if (position < 0) {\n return;\n }\n } else if (position > 0) {\n return;\n }\n\n if (!this.options.useCssTransforms && !this.options.useCssTransforms3d) {\n if (this.options.direction === 'right' || this.options.direction === 'bottom') {\n position = -position;\n }\n }\n\n this._view.setPosition(`${position}px`);\n }\n}\n\nclass View {\n constructor(options) {\n this.initialize(options);\n }\n\n initialize(options) {\n this.options = options;\n this._instance = null;\n this._showed = false;\n this._isLoading = false;\n\n this.build();\n }\n\n setLength() {\n switch (this.options.direction) {\n case 'top':\n case 'bottom':\n this._length = this.$panel.outerHeight();\n break;\n case 'left':\n case 'right':\n this._length = this.$panel.outerWidth();\n break;\n // no default\n }\n }\n\n build() {\n if (this._builded) {\n return;\n }\n\n const options = this.options;\n\n const html = options.template.call(this, options);\n const that = this;\n\n this.$panel = $$1(html).appendTo('body');\n if (options.skin) {\n this.$panel.addClass(options.skin);\n }\n this.$content = this.$panel.find(`.${this.options.classes.content}`);\n\n if (options.closeSelector) {\n this.$panel.on('click touchstart', options.closeSelector, () => {\n that.hide();\n return false;\n });\n }\n this.loading = new Loading(this);\n\n this.setLength();\n this.setPosition(this.getHidePosition());\n\n if (options.mouseDrag || options.touchDrag || options.pointerDrag) {\n this.drag = new Drag(this);\n }\n\n this._builded = true;\n }\n\n getHidePosition() {\n /* eslint consistent-return: \"off\" */\n const options = this.options;\n\n if (options.useCssTransforms || options.useCssTransforms3d) {\n switch (options.direction) {\n case 'top':\n case 'left':\n return '-100';\n case 'bottom':\n case 'right':\n return '100';\n // no default\n }\n }\n switch (options.direction) {\n case 'top':\n case 'bottom':\n return parseFloat(-(this._length / $$1(window).height()) * 100, 10);\n case 'left':\n case 'right':\n return parseFloat(-(this._length / $$1(window).width()) * 100, 10);\n // no default\n }\n }\n\n empty() {\n this._instance = null;\n this.$content.empty();\n }\n\n load(object) {\n const that = this;\n const options = object.options;\n\n SlidePanel.trigger(this, 'beforeLoad', object);\n this.empty();\n\n function setContent(content) {\n content = options.contentFilter.call(this, content, object);\n that.$content.html(content);\n that.hideLoading();\n\n that._instance = object;\n\n SlidePanel.trigger(that, 'afterLoad', object);\n }\n\n if (object.content) {\n setContent(object.content);\n } else if (object.url) {\n this.showLoading();\n\n $$1.ajax(object.url, object.settings || {}).done(data => {\n setContent(data);\n });\n } else {\n setContent('');\n }\n }\n\n showLoading() {\n const that = this;\n this.loading.show(() => {\n that._isLoading = true;\n });\n }\n\n hideLoading() {\n const that = this;\n this.loading.hide(() => {\n that._isLoading = false;\n });\n }\n\n show(callback) {\n this.build();\n\n SlidePanel.enter('show');\n SlidePanel.trigger(this, 'beforeShow');\n\n $$1('html').addClass(`${this.options.classes.base}-html`);\n this.$panel.addClass(this.options.classes.show);\n\n const that = this;\n Animate.do(this, 0, () => {\n that._showed = true;\n SlidePanel.trigger(that, 'afterShow');\n\n if ($$1.isFunction(callback)) {\n callback.call(that);\n }\n });\n }\n\n change(object) {\n SlidePanel.trigger(this, 'beforeShow');\n\n SlidePanel.trigger(this, 'onChange', object, this._instance);\n\n this.load(object);\n\n SlidePanel.trigger(this, 'afterShow');\n }\n\n revert(callback) {\n const that = this;\n Animate.do(this, 0, () => {\n if ($$1.isFunction(callback)) {\n callback.call(that);\n }\n });\n }\n\n hide(callback) {\n SlidePanel.leave('show');\n SlidePanel.trigger(this, 'beforeHide');\n\n const that = this;\n\n Animate.do(this, this.getHidePosition(), () => {\n that.$panel.removeClass(that.options.classes.show);\n that._showed = false;\n that._instance = null;\n\n if (SlidePanel._current === that) {\n SlidePanel._current = null;\n }\n\n if (!SlidePanel.is('show')) {\n $$1('html').removeClass(`${that.options.classes.base}-html`);\n }\n\n if ($$1.isFunction(callback)) {\n callback.call(that);\n }\n\n SlidePanel.trigger(that, 'afterHide');\n });\n }\n\n makePositionStyle(value) {\n let property, x = '0',\n y = '0';\n\n if (!isPercentage(value) && !isPx(value)) {\n value = `${value}%`;\n }\n\n if (this.options.useCssTransforms && Support.transform) {\n if (this.options.direction === 'left' || this.options.direction === 'right') {\n x = value;\n } else {\n y = value;\n }\n\n property = Support.transform.toString();\n\n if (this.options.useCssTransforms3d && Support.transform3d) {\n value = `translate3d(${x},${y},0)`;\n } else {\n value = `translate(${x},${y})`;\n }\n } else {\n property = this.options.direction;\n }\n const temp = {};\n temp[property] = value;\n return temp;\n }\n\n getPosition(px) {\n let value;\n\n if (this.options.useCssTransforms && Support.transform) {\n value = convertMatrixToArray(this.$panel.css(Support.transform));\n if (!value) {\n return 0;\n }\n\n if (this.options.direction === 'left' || this.options.direction === 'right') {\n value = value[12] || value[4];\n\n } else {\n value = value[13] || value[5];\n }\n } else {\n value = this.$panel.css(this.options.direction);\n\n value = parseFloat(value.replace('px', ''));\n }\n\n if (px !== true) {\n value = (value / this._length) * 100;\n }\n\n return parseFloat(value, 10);\n }\n\n setPosition(value) {\n const style = this.makePositionStyle(value);\n this.$panel.css(style);\n }\n}\n\nconst SlidePanel = {\n // Current state information.\n _states: {},\n _views: {},\n _current: null,\n\n /**\n * Checks whether the carousel is in a specific state or not.\n */\n is(state) {\n return this._states[state] && this._states[state] > 0;\n },\n\n /**\n * Enters a state.\n */\n enter(state) {\n if (this._states[state] === undefined) {\n this._states[state] = 0;\n }\n\n this._states[state]++;\n },\n\n /**\n * Leaves a state.\n */\n leave(state) {\n this._states[state]--;\n },\n\n trigger(view, event, ...args) {\n const data = [view].concat(args);\n\n // event\n $$1(document).trigger(`slidePanel::${event}`, data);\n if ($$1.isFunction(view.options[event])) {\n view.options[event].apply(view, args);\n }\n },\n\n eventName(events) {\n if (typeof events !== 'string' || events === '') {\n return '.slidepanel';\n }\n events = events.split(' ');\n\n const length = events.length;\n for (let i = 0; i < length; i++) {\n events[i] = `${events[i]}.slidepanel`;\n }\n return events.join(' ');\n },\n\n show(object, options) {\n if (!(object instanceof Instance)) {\n switch (arguments.length) {\n case 0:\n object = new Instance();\n break;\n case 1:\n object = new Instance(object);\n break;\n case 2:\n object = new Instance(object, options);\n break;\n // no default\n }\n }\n\n const view = this.getView(object.options);\n\n const callback = () => {\n view.show();\n view.load(object);\n this._current = view;\n };\n if (this._current !== null) {\n if (view === this._current) {\n this._current.change(object);\n } else {\n this._current.hide(callback);\n }\n } else {\n callback();\n }\n },\n\n getView(options) {\n const code = getHashCode(options);\n\n if (this._views.hasOwnProperty(code)) {\n return this._views[code];\n }\n\n return (this._views[code] = new View(options));\n },\n\n hide(object) {\n if (typeof object !== 'undefined' && typeof object.options !== 'undefined') {\n const view = this.getView(object.options);\n view.hide();\n } else if (this._current !== null) {\n this._current.hide();\n }\n }\n};\n\nvar api = {\n is(state) {\n return SlidePanel.is(state);\n },\n\n show(object, options) {\n SlidePanel.show(object, options);\n return this;\n },\n\n hide(...args) {\n SlidePanel.hide(args);\n return this;\n }\n};\n\nif (!Date.now) {\n Date.now = () => {\n return new Date().getTime();\n };\n}\n\nconst vendors = ['webkit', 'moz'];\nfor (let i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n const vp = vendors[i];\n window.requestAnimationFrame = window[`${vp}RequestAnimationFrame`];\n window.cancelAnimationFrame = (window[`${vp}CancelAnimationFrame`] || window[`${vp}CancelRequestAnimationFrame`]);\n}\n\nif (/iP(ad|hone|od).*OS (6|7|8)/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n let lastTime = 0;\n window.requestAnimationFrame = callback => {\n const now = getTime();\n const nextTime = Math.max(lastTime + 16, now);\n return setTimeout(() => {\n callback(lastTime = nextTime);\n },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n}\n\nconst OtherSlidePanel = $$1.fn.slidePanel;\n\nconst jQuerySlidePanel = function(options, ...args) {\n const method = options;\n\n if (typeof options === 'string') {\n return this.each(function() {\n let instance = $$1.data(this, 'slidePanel');\n\n if (!(instance instanceof Instance)) {\n instance = new Instance(this, args);\n $$1.data(this, 'slidePanel', instance);\n }\n\n switch (method) {\n case 'hide':\n SlidePanel.hide(instance);\n break;\n case 'show':\n SlidePanel.show(instance);\n break;\n // no default\n }\n });\n }\n return this.each(function() {\n if (!$$1.data(this, 'slidePanel')) {\n $$1.data(this, 'slidePanel', new Instance(this, options));\n\n $$1(this).on('click', function(e) {\n const instance = $$1.data(this, 'slidePanel');\n SlidePanel.show(instance);\n\n e.preventDefault();\n e.stopPropagation();\n });\n }\n });\n};\n\n$$1.fn.slidePanel = jQuerySlidePanel;\n\n$$1.slidePanel = function(...args) {\n SlidePanel.show(...args);\n};\n\n$$1.extend($$1.slidePanel, {\n setDefaults: function(options) {\n $$1.extend(true, DEFAULTS, $$1.isPlainObject(options) && options);\n },\n noConflict: function() {\n $$1.fn.slidePanel = OtherSlidePanel;\n return jQuerySlidePanel;\n }\n}, info, api);\n"]} \ No newline at end of file diff --git a/examples/index.html b/examples/index.html index 9b9c588..3f94204 100644 --- a/examples/index.html +++ b/examples/index.html @@ -21,6 +21,11 @@ background: rgba(0, 0, 0, .4); } + .slidePanel-content { + overflow: auto; + max-height: 100%; + } + .slidePanel-will-close { background: rgba(0, 0, 255, .4); } @@ -146,6 +151,15 @@

Passing data to view

+
+

Touch scroll

+
+ top + left + right + bottom +
+