framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
1 lines • 5.11 kB
JavaScript
(function framework7ComponentLoader(t,e){void 0===e&&(e=!0);document,window;var x=t.$,n=(t.Template7,t.utils),D=t.device,H=t.support,r=t.Class,o=(t.Modal,t.ConstructorMethods),s=(t.ModalMethods,function(a){function t(e,i){a.call(this,{},[e]);var l=this,p=x(i),u=p.find(".ptr-preloader");l.$el=p,l.el=p[0],l.app=e,l.useModulesParams({});var f,c,d,h="md"===e.theme;l.done=function(){return(h?u:p).transitionEnd(function(){p.removeClass("ptr-transitioning ptr-pull-up ptr-pull-down"),p.trigger("ptr:done"),l.emit("local::done ptrDone",p[0])}),p.removeClass("ptr-refreshing").addClass("ptr-transitioning"),l},l.refresh=function(){return p.hasClass("ptr-refreshing")||(p.addClass("ptr-transitioning ptr-refreshing"),p.trigger("ptr:refresh",l.done),l.emit("local::refresh ptrRefresh",p[0],l.done)),l};var g,v,m,C,y,T,M,w,b={},P=!1,E=!1,R=0,t=!1,r=p.parents(".page");function n(t){if(c){if("android"!==D.os)return;if("targetTouches"in t&&1<t.targetTouches.length)return}p.hasClass("ptr-refreshing")||x(t.target).closest(".sortable-handler").length||(c=!(w=d=!1),y=g=void 0,"touchstart"===t.type&&(f=t.targetTouches[0].identifier),b.x="touchstart"===t.type?t.targetTouches[0].pageX:t.pageX,b.y="touchstart"===t.type?t.targetTouches[0].pageY:t.pageY)}function o(t){if(c){var e,r,n;if("touchmove"===t.type){if(f&&t.touches)for(var o=0;o<t.touches.length;o+=1)t.touches[o].identifier===f&&(n=t.touches[o]);n||(n=t.targetTouches[0]),e=n.pageX,r=n.pageY}else e=t.pageX,r=t.pageY;if(e&&r)if(void 0===g&&(g=!!(g||Math.abs(r-b.y)>Math.abs(e-b.x))),g){if(C=p[0].scrollTop,void 0===y&&0!==C&&(y=!0),!d){var s,a;if(p.removeClass("ptr-transitioning"),x(t.target).parents().each(function(t,e){e===i&&(s=!0),s||e.scrollHeight>e.offsetHeight&&(a=!0)}),a||C>p[0].offsetHeight)return void(c=!1);M&&0<=(T=p.attr("data-ptr-distance")).indexOf("%")&&(T=p[0].offsetHeight*parseInt(T,10)/100),R=p.hasClass("ptr-refreshing")?T:0,E=!(p[0].scrollHeight!==p[0].offsetHeight&&"ios"===D.os&&!h)}d=!0,0<(v=r-b.y)&&C<=0||C<0?("ios"===D.os&&7<parseInt(D.osVersion.split(".")[0],10)&&0===C&&!y&&(E=!0),E&&(t.preventDefault(),m=Math.pow(v,.85)+R,h?u.transform("translate3d(0,"+m+"px,0)").find(".ptr-arrow").transform("rotate("+(v/66*180+100)+"deg)"):p.transform("translate3d(0,"+m+"px,0)")),E&&Math.pow(v,.85)>T||!E&&2*T<=v?(P=!0,p.addClass("ptr-pull-up").removeClass("ptr-pull-down")):(P=!1,p.removeClass("ptr-pull-up").addClass("ptr-pull-down")),w||(p.trigger("ptr:pullstart"),l.emit("local::pullStart ptrPullStart",p[0]),w=!0),p.trigger("ptr:pullmove",{event:t,scrollTop:C,translate:m,touchesDiff:v}),l.emit("local::pullMove ptrPullMove",p[0],{event:t,scrollTop:C,translate:m,touchesDiff:v})):(w=!1,p.removeClass("ptr-pull-up ptr-pull-down"),P=!1)}else c=!1}}function s(t){if("touchend"===t.type&&t.changedTouches&&0<t.changedTouches.length&&f&&t.changedTouches[0].identifier!==f)return d=g=c=!1,void(f=null);c&&d?(m&&(p.addClass("ptr-transitioning"),m=0),h?u.transform("").find(".ptr-arrow").transform(""):p.transform(""),P?(p.addClass("ptr-refreshing"),p.trigger("ptr:refresh",l.done),l.emit("local::refresh ptrRefresh",p[0],l.done)):p.removeClass("ptr-pull-down"),d=c=!1,w&&(p.trigger("ptr:pullend"),l.emit("local::pullEnd ptrPullEnd",p[0]))):d=c=!1}return(0<r.find(".navbar").length||0<r.parents(".view").children(".navbar").length)&&(t=!0),r.hasClass("no-navbar")&&(t=!1),t||p.addClass("ptr-no-navbar"),p.attr("data-ptr-distance")?M=!0:T=h?66:44,r.length&&p.length&&((p[0].f7PullToRefresh=l).attachEvents=function(){var t=!!H.passiveListener&&{passive:!0};p.on(e.touchEvents.start,n,t),e.on("touchmove",o),e.on("touchend:passive",s)},l.detachEvents=function(){var t=!!H.passiveListener&&{passive:!0};p.off(e.touchEvents.start,n,t),e.off("touchmove",o),e.off("touchend:passive",s)},l.useModules(),l.init()),l}return a&&(t.__proto__=a),((t.prototype=Object.create(a&&a.prototype)).constructor=t).prototype.init=function(){this.attachEvents()},t.prototype.destroy=function(){var t=this;t.emit("local::beforeDestroy ptrBeforeDestroy",t),t.$el.trigger("ptr:beforedestroy",t),delete t.el.f7PullToRefresh,t.detachEvents(),n.deleteProps(t),t=null},t}(r)),a={name:"pullToRefresh",create:function(){var r=this;r.ptr=n.extend(o({defaultSelector:".ptr-content",constructor:s,app:r,domProp:"f7PullToRefresh"}),{done:function(t){var e=r.ptr.get(t);if(e)return e.done()},refresh:function(t){var e=r.ptr.get(t);if(e)return e.refresh()}})},static:{PullToRefresh:s},on:{tabMounted:function(t){var r=this;x(t).find(".ptr-content").each(function(t,e){r.ptr.create(e)})},tabBeforeRemove:function(t){var e=x(t),r=this;e.find(".ptr-content").each(function(t,e){r.ptr.destroy(e)})},pageInit:function(t){var r=this;t.$el.find(".ptr-content").each(function(t,e){r.ptr.create(e)})},pageBeforeRemove:function(t){var r=this;t.$el.find(".ptr-content").each(function(t,e){r.ptr.destroy(e)})}}};if(e){if(t.prototype.modules&&t.prototype.modules[a.name])return;t.use(a),t.instance&&(t.instance.useModuleParams(a,t.instance.params),t.instance.useModule(a))}return a}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))