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