zmp-core
Version:
Full featured mobile HTML framework for building iOS & Android apps
2 lines (1 loc) • 9.58 kB
JavaScript
(function zmpComponentLoader(t,e){void 0===e&&(e=!0);var r=t.$,o=t.utils,n=t.getDevice,a=t.getSupport,s=t.Class,l=(t.Modal,t.ConstructorMethods),i=(t.ModalMethods,o.deleteProps),p=o.extend;function u(t){this.wrapped=t}function c(t){var e,r;function o(e,r){try{var a=t[e](r),s=a.value,l=s instanceof u;Promise.resolve(l?s.wrapped:s).then((function(t){l?o("return"===e?"return":"next",t):n(a.done?"return":"normal",t)}),(function(t){o("throw",t)}))}catch(t){n("throw",t)}}function n(t,n){switch(t){case"return":e.resolve({value:n,done:!0});break;case"throw":e.reject(n);break;default:e.resolve({value:n,done:!1})}(e=e.next)?o(e.key,e.arg):r=null}this._invoke=function(t,n){return new Promise((function(a,s){var l={key:t,arg:n,resolve:a,reject:s,next:null};r?r=r.next=l:(e=r=l,o(t,n))}))},"function"!=typeof t.return&&(this.return=void 0)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}function h(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}c.prototype["function"==typeof Symbol&&Symbol.asyncIterator||"@@asyncIterator"]=function(){return this},c.prototype.next=function(t){return this._invoke("next",t)},c.prototype.throw=function(t){return this._invoke("throw",t)},c.prototype.return=function(t){return this._invoke("return",t)};var d=function(t){var e,o;function s(e,o){var s,l=h(s=t.call(this,{},[e])||this),i=n(),p=a(),u=r(o),c=u.find(".ptr-preloader");l.$el=u,l.el=u[0],l.app=e,l.bottom=l.$el.hasClass("ptr-bottom"),l.useModulesParams({});var f,d,v,g="md"===e.theme,m="ios"===e.theme,b="aurora"===e.theme;l.done=function(){return(g?c:u).transitionEnd((function(){u.removeClass("ptr-transitioning ptr-pull-up ptr-pull-down ptr-closing"),u.trigger("ptr:done"),l.emit("local::done ptrDone",u[0])})),u.removeClass("ptr-refreshing").addClass("ptr-transitioning ptr-closing"),l},l.refresh=function(){return u.hasClass("ptr-refreshing")||(u.addClass("ptr-transitioning ptr-refreshing"),u.trigger("ptr:refresh",l.done),l.emit("local::refresh ptrRefresh",u[0],l.done)),l},l.mousewheel="true"===u.attr("data-ptr-mousewheel");var w,C,y,M,T,x,P,E,H,R,k,D,S,_={},I=!1,$=!1,O=!1,X=0,Y=!1,j=u.parents(".page");if((j.find(".navbar").length>0||j.parents(".view").children(".navbars").length>0)&&(Y=!0),j.hasClass("no-navbar")&&(Y=!1),!l.bottom){var z=e.navbar.getElByPage(j[0]);if(z){var B=r(z),L=B.hasClass("navbar-large-transparent")||B.hasClass("navbar-large")&&B.hasClass("navbar-transparent"),V=B.hasClass("navbar-transparent")&&!B.hasClass("navbar-large");L?u.addClass("ptr-with-navbar-large-transparent"):V&&u.addClass("ptr-with-navbar-transparent")}}function q(t){if(d){if("android"!==i.os)return;if("targetTouches"in t&&t.targetTouches.length>1)return}u.hasClass("ptr-refreshing")||r(t.target).closest(".sortable-handler, .ptr-ignore, .card-expandable.card-opened").length||(v=!1,E=!1,d=!0,w=void 0,T=void 0,"touchstart"===t.type&&(f=t.targetTouches[0].identifier),_.x="touchstart"===t.type?t.targetTouches[0].pageX:t.pageX,_.y="touchstart"===t.type?t.targetTouches[0].pageY:t.pageY)}function A(t){if(d){var e,n,a;if("touchmove"===t.type){if(f&&t.touches)for(var s=0;s<t.touches.length;s+=1)t.touches[s].identifier===f&&(a=t.touches[s]);a||(a=t.targetTouches[0]),e=a.pageX,n=a.pageY}else e=t.pageX,n=t.pageY;if(e&&n)if(void 0===w&&(w=!!(w||Math.abs(n-_.y)>Math.abs(e-_.x))),w){if(M=u[0].scrollTop,!v){var p;if(u.removeClass("ptr-transitioning"),H=u[0].scrollHeight,R=u[0].offsetHeight,l.bottom&&(k=H-R),M>H)return void(d=!1);var h=r(t.target).closest(".ptr-watch-scroll");if(h.length&&h.each((function(t){t!==o&&t.scrollHeight>t.offsetHeight&&"auto"===r(t).css("overflow")&&(!l.bottom&&t.scrollTop>0||l.bottom&&t.scrollTop<t.scrollHeight-t.offsetHeight)&&(p=!0)})),p)return void(d=!1);P&&(x=u.attr("data-ptr-distance")).indexOf("%")>=0&&(x=H*parseInt(x,10)/100),X=u.hasClass("ptr-refreshing")?x:0,$=!(H!==R&&"ios"===i.os&&!g),O=!1}v=!0,C=n-_.y,void 0===T&&(l.bottom?M!==k:0!==M)&&(T=!0),(l.bottom?C<0&&M>=k||M>k:C>0&&M<=0||M<0)?("ios"===i.os&&parseInt(i.osVersion.split(".")[0],10)>7&&(l.bottom||0!==M||T||($=!0),l.bottom&&M===k&&!T&&($=!0)),$||!l.bottom||g||(u.css("-webkit-overflow-scrolling","auto"),u.scrollTop(k),O=!0),($||O)&&(t.cancelable&&t.preventDefault(),y=(l.bottom?-1*Math.pow(Math.abs(C),.85):Math.pow(C,.85))+X,g?c.transform("translate3d(0,"+y+"px,0)").find(".ptr-arrow").transform("rotate("+(Math.abs(C)/66*180+100)+"deg)"):l.bottom?u.children().transform("translate3d(0,"+y+"px,0)"):u.transform("translate3d(0,"+y+"px,0)")),($||O)&&Math.pow(Math.abs(C),.85)>x||!$&&Math.abs(C)>=2*x?(I=!0,u.addClass("ptr-pull-up").removeClass("ptr-pull-down")):(I=!1,u.removeClass("ptr-pull-up").addClass("ptr-pull-down")),E||(u.trigger("ptr:pullstart"),l.emit("local::pullStart ptrPullStart",u[0]),E=!0),u.trigger("ptr:pullmove",{event:t,scrollTop:M,translate:y,touchesDiff:C}),l.emit("local::pullMove ptrPullMove",u[0],{event:t,scrollTop:M,translate:y,touchesDiff:C})):(E=!1,u.removeClass("ptr-pull-up ptr-pull-down"),I=!1)}else d=!1}}function F(t){return"touchend"===t.type&&t.changedTouches&&t.changedTouches.length>0&&f&&t.changedTouches[0].identifier!==f?(d=!1,w=!1,v=!1,void(f=null)):d&&v?(y&&(u.addClass("ptr-transitioning"),y=0),g?c.transform("").find(".ptr-arrow").transform(""):l.bottom?u.children().transform(""):u.transform(""),$||!l.bottom||g||u.css("-webkit-overflow-scrolling",""),I?(u.addClass("ptr-refreshing"),u.trigger("ptr:refresh",l.done),l.emit("local::refresh ptrRefresh",u[0],l.done)):u.removeClass("ptr-pull-down"),d=!1,v=!1,void(E&&(u.trigger("ptr:pullend"),l.emit("local::pullEnd ptrPullEnd",u[0])))):(d=!1,void(v=!1))}Y||l.bottom||u.addClass("ptr-no-navbar"),u.attr("data-ptr-distance")?P=!0:g?x=66:m?x=44:b&&(x=38);var G=!0,J=0;function K(){G=!0,S=!1,J=0,y&&(u.addClass("ptr-transitioning"),y=0),g?c.transform("").find(".ptr-arrow").transform(""):l.bottom?u.children().transform(""):u.transform(""),I?(u.addClass("ptr-refreshing"),u.trigger("ptr:refresh",l.done),l.emit("local::refresh ptrRefresh",u[0],l.done)):u.removeClass("ptr-pull-down"),E&&(u.trigger("ptr:pullend"),l.emit("local::pullEnd ptrPullEnd",u[0]))}function N(t){if(G){var e=t.deltaX,n=t.deltaY;if(!(Math.abs(e)>Math.abs(n)||u.hasClass("ptr-refreshing")||r(t.target).closest(".sortable-handler, .ptr-ignore, .card-expandable.card-opened").length)){if(clearTimeout(D),M=u[0].scrollTop,!S){var a;if(u.removeClass("ptr-transitioning"),H=u[0].scrollHeight,R=u[0].offsetHeight,l.bottom&&(k=H-R),M>H)return void(G=!1);var s=r(t.target).closest(".ptr-watch-scroll");if(s.length&&s.each((function(t){t!==o&&t.scrollHeight>t.offsetHeight&&"auto"===r(t).css("overflow")&&(!l.bottom&&t.scrollTop>0||l.bottom&&t.scrollTop<t.scrollHeight-t.offsetHeight)&&(a=!0)})),a)return void(G=!1);P&&(x=u.attr("data-ptr-distance")).indexOf("%")>=0&&(x=H*parseInt(x,10)/100)}v=!0,C=J-=n,void 0===T&&(l.bottom?M!==k:0!==M)&&(T=!0),(l.bottom?C<0&&M>=k||M>k:C>0&&M<=0||M<0)?(t.cancelable&&t.preventDefault(),y=C,Math.abs(y)>x&&(y=x+Math.pow(Math.abs(y)-x,.7),l.bottom&&(y=-y)),g?c.transform("translate3d(0,"+y+"px,0)").find(".ptr-arrow").transform("rotate("+(Math.abs(C)/66*180+100)+"deg)"):l.bottom?u.children().transform("translate3d(0,"+y+"px,0)"):u.transform("translate3d(0,"+y+"px,0)"),Math.abs(y)>x?(I=!0,u.addClass("ptr-pull-up").removeClass("ptr-pull-down")):(I=!1,u.removeClass("ptr-pull-up").addClass("ptr-pull-down")),E||(u.trigger("ptr:pullstart"),l.emit("local::pullStart ptrPullStart",u[0]),E=!0),u.trigger("ptr:pullmove",{event:t,scrollTop:M,translate:y,touchesDiff:C}),l.emit("local::pullMove ptrPullMove",u[0],{event:t,scrollTop:M,translate:y,touchesDiff:C})):(E=!1,u.removeClass("ptr-pull-up ptr-pull-down"),I=!1),D=setTimeout(K,300)}}}return j.length&&u.length?(u[0].zmpPullToRefresh=l,l.attachEvents=function(){var t=!!p.passiveListener&&{passive:!0};u.on(e.touchEvents.start,q,t),e.on("touchmove:active",A),e.on("touchend:passive",F),l.mousewheel&&!l.bottom&&u.on("wheel",N)},l.detachEvents=function(){var t=!!p.passiveListener&&{passive:!0};u.off(e.touchEvents.start,q,t),e.off("touchmove:active",A),e.off("touchend:passive",F),l.mousewheel&&!l.bottom&&u.off("wheel",N)},l.useModules(),l.init(),l||h(s)):l||h(s)}o=t,(e=s).prototype=Object.create(o.prototype),e.prototype.constructor=e,f(e,o);var l=s.prototype;return l.init=function(){this.attachEvents()},l.destroy=function(){var t=this;t.emit("local::beforeDestroy ptrBeforeDestroy",t),t.$el.trigger("ptr:beforedestroy"),delete t.el.zmpPullToRefresh,t.detachEvents(),i(t),t=null},s}(s),v={name:"pullToRefresh",create:function(){var t=this;t.ptr=p(l({defaultSelector:".ptr-content",constructor:d,app:t,domProp:"zmpPullToRefresh"}),{done:function(e){var r=t.ptr.get(e);if(r)return r.done()},refresh:function(e){var r=t.ptr.get(e);if(r)return r.refresh()}})},static:{PullToRefresh:d},on:{tabMounted:function(t){var e=this,o=r(t),n=o.find(".ptr-content");o.is(".ptr-content")&&n.add(o),n.each((function(t){e.ptr.create(t)}))},tabBeforeRemove:function(t){var e=r(t),o=this,n=e.find(".ptr-content");e.is(".ptr-content")&&n.add(e),n.each((function(t){o.ptr.destroy(t)}))},pageInit:function(t){var e=this;t.$el.find(".ptr-content").each((function(t){e.ptr.create(t)}))},pageBeforeRemove:function(t){var e=this;t.$el.find(".ptr-content").each((function(t){e.ptr.destroy(t)}))}}};if(e){if(t.prototype.modules&&t.prototype.modules[v.name])return;t.use(v),t.instance&&(t.instance.useModuleParams(v,t.instance.params),t.instance.useModule(v))}return v}(ZMP, typeof ZMPAutoInstallComponent === 'undefined' ? undefined : ZMPAutoInstallComponent))