framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
2 lines (1 loc) • 16.2 kB
JavaScript
(function framework7ComponentLoader(e,o){void 0===o&&(o=!0);document,window;var r=e.$,a=(e.Template7,e.utils),t=(e.device,e.support,e.Class),n=(e.Modal,e.ConstructorMethods),p=(e.ModalMethods,function(e){function o(o,r){void 0===r&&(r={}),e.call(this,r,[o]);var t=this;t.app=o;var n=a.extend({on:{}},o.params.photoBrowser);t.useModulesParams(n),t.params=a.extend(n,r),a.extend(t,{exposed:!1,opened:!1,activeIndex:t.params.swiper.initialSlide,url:t.params.url,swipeToClose:{allow:!0,isTouched:!1,diff:void 0,start:void 0,current:void 0,started:!1,activeSlide:void 0,timeStart:void 0}}),t.useModules(),t.init()}e&&(o.__proto__=e),o.prototype=Object.create(e&&e.prototype),o.prototype.constructor=o;var t={view:{configurable:!0}};return t.view.get=function(){var e=this.params,o=this.app;return e.view||o.views.main},o.prototype.onSlideChange=function(e){var o=this;o.activeIndex=e.activeIndex;var a=e.activeIndex+1,t=o.params.virtualSlides?o.params.photos.length:e.slides.length;e.params.loop&&(t-=2,(a-=e.loopedSlides)<1&&(a=t+a),a>t&&(a-=t));var n,p=o.params.virtualSlides?e.$wrapperEl.find('.swiper-slide[data-swiper-slide-index="'+e.activeIndex+'"]'):e.slides.eq(e.activeIndex),s=o.params.virtualSlides?e.$wrapperEl.find('.swiper-slide[data-swiper-slide-index="'+e.previousIndex+'"]'):e.slides.eq(e.previousIndex),i=o.$el.find(".photo-browser-current"),l=o.$el.find(".photo-browser-total");if("page"===o.params.type&&o.params.navbar&&0===i.length&&"ios"===o.app.theme&&(n=o.app.navbar.getElByPage(o.$el))&&(i=r(n).find(".photo-browser-current"),l=r(n).find(".photo-browser-total")),i.length&&l.length&&(i.text(a),l.text(t),n||(n=i.parents(".navbar")[0]),n&&o.app.navbar.size(n)),o.captions.length>0){var d=e.params.loop?p.attr("data-swiper-slide-index"):o.activeIndex;o.$captionsContainerEl.find(".photo-browser-caption-active").removeClass("photo-browser-caption-active"),o.$captionsContainerEl.find('[data-caption-index="'+d+'"]').addClass("photo-browser-caption-active")}var c=s.find("video");c.length>0&&"pause"in c[0]&&c[0].pause()},o.prototype.onTouchStart=function(){var e=this.swipeToClose;e.allow&&(e.isTouched=!0)},o.prototype.onTouchMove=function(e){var o=this,r=o.swipeToClose;r.isTouched&&(r.started||(r.started=!0,r.start="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,o.params.virtualSlides?r.activeSlide=o.swiper.$wrapperEl.children(".swiper-slide-active"):r.activeSlide=o.swiper.slides.eq(o.swiper.activeIndex),r.timeStart=a.now()),e.preventDefault(),r.current="touchmove"===e.type?e.targetTouches[0].pageY:e.pageY,r.diff=r.start-r.current,o.$el.transition(0).transform("translate3d(0,"+-r.diff+"px,0)"))},o.prototype.onTouchEnd=function(){var e=this,o=e.swipeToClose;if(o.isTouched=!1,o.started){o.started=!1,o.allow=!1;var r=Math.abs(o.diff),t=(new Date).getTime()-o.timeStart;t<300&&r>20||t>=300&&r>100?a.nextTick((function(){e.$el&&(o.diff<0?e.$el.addClass("swipe-close-to-bottom"):e.$el.addClass("swipe-close-to-top")),e.emit("local::swipeToClose",e),e.$el.transform("").transition(""),e.close(),o.allow=!0})):(0!==r?e.$el.addClass("photo-browser-transitioning").transitionEnd((function(){o.allow=!0,e.$el.removeClass("photo-browser-transitioning")})):o.allow=!0,a.nextTick((function(){e.$el.transform("").transition("")})))}else o.started=!1},o.prototype.renderNavbar=function(){var e=this;if(e.params.renderNavbar)return e.params.renderNavbar.call(e);var o=e.params.iconsColor;e.params.iconsColor||"dark"!==e.params.theme||(o="white");var r="ios"!==e.app.theme&&"aurora"!==e.app.theme||!e.params.pageBackLinkText?"":e.params.pageBackLinkText,a=void 0===e.params.navbarShowCount?e.params.photos.length>1:e.params.navbarShowCount,t="page"!==e.params.type;return('\n <div class="navbar navbar-photo-browser '+("dark"===e.params.theme?"navbar-photo-browser-dark":"")+'">\n <div class="navbar-bg"></div>\n <div class="navbar-inner navbar-inner-centered-title sliding">\n '+(t?"":'\n <div class="left">\n <a class="link '+(r?"":"icon-only")+' back">\n <i class="icon icon-back '+(o?"color-"+o:"")+'"></i>\n '+(r?"<span>"+r+"</span>":"")+"\n </a>\n </div>\n ")+"\n "+(a?'\n <div class="title">\n <span class="photo-browser-current"></span>\n <span class="photo-browser-of">'+e.params.navbarOfText+'</span>\n <span class="photo-browser-total"></span>\n </div>\n ':"")+"\n "+(t?'\n <div class="right">\n <a class="link popup-close" data-popup=".photo-browser-popup">\n <span>'+e.params.popupCloseLinkText+"</span>\n </a>\n </div>\n ":"")+"\n </div>\n </div>\n ").trim()},o.prototype.renderToolbar=function(){var e=this;if(e.params.renderToolbar)return e.params.renderToolbar.call(e);var o=e.params.iconsColor;return e.params.iconsColor||"dark"!==e.params.theme||(o="white"),('\n <div class="toolbar toolbar-bottom tabbar">\n <div class="toolbar-inner">\n <a class="link photo-browser-prev">\n <i class="icon icon-back '+(o?"color-"+o:"")+'"></i>\n </a>\n <a class="link photo-browser-next">\n <i class="icon icon-forward '+(o?"color-"+o:"")+'"></i>\n </a>\n </div>\n </div>\n ').trim()},o.prototype.renderCaption=function(e,o){return this.params.renderCaption?this.params.renderCaption.call(this,e,o):('\n <div class="photo-browser-caption" data-caption-index="'+o+'">\n '+e+"\n </div>\n ").trim()},o.prototype.renderObject=function(e,o){return this.params.renderObject?this.params.renderObject.call(this,e,o):'\n <div class="photo-browser-slide photo-browser-object-slide swiper-slide" data-swiper-slide-index="'+o+'">'+(e.html?e.html:e)+"</div>\n "},o.prototype.renderLazyPhoto=function(e,o){return this.params.renderLazyPhoto?this.params.renderLazyPhoto.call(this,e,o):('\n <div class="photo-browser-slide photo-browser-slide-lazy swiper-slide" data-swiper-slide-index="'+o+'">\n <div class="swiper-lazy-preloader"></div>\n <span class="swiper-zoom-container">\n <img data-src="'+(e.url?e.url:e)+'" class="swiper-lazy">\n </span>\n </div>\n ').trim()},o.prototype.renderPhoto=function(e,o){return this.params.renderPhoto?this.params.renderPhoto.call(this,e,o):('\n <div class="photo-browser-slide swiper-slide" data-swiper-slide-index="'+o+'">\n <span class="swiper-zoom-container">\n <img src="'+(e.url?e.url:e)+'">\n </span>\n </div>\n ').trim()},o.prototype.render=function(){var e=this;return e.params.render?e.params.render.call(e,e.params):('\n <div class="photo-browser photo-browser-'+e.params.theme+'">\n <div class="view">\n <div class="page photo-browser-page photo-browser-page-'+e.params.theme+" no-toolbar "+(e.params.navbar?"":"no-navbar")+'" data-name="photo-browser-page">\n '+(e.params.navbar?e.renderNavbar():"")+"\n "+(e.params.toolbar?e.renderToolbar():"")+'\n <div class="photo-browser-captions photo-browser-captions-'+(e.params.captionsTheme||e.params.theme)+'">\n '+e.params.photos.map((function(o,r){return o.caption?e.renderCaption(o.caption,r):""})).join(" ")+'\n </div>\n <div class="photo-browser-swiper-container swiper-container">\n <div class="photo-browser-swiper-wrapper swiper-wrapper">\n '+(e.params.virtualSlides?"":e.params.photos.map((function(o,r){return o.html||("string"==typeof o||o instanceof String)&&o.indexOf("<")>=0&&o.indexOf(">")>=0?e.renderObject(o,r):!0===e.params.swiper.lazy||e.params.swiper.lazy&&e.params.swiper.lazy.enabled?e.renderLazyPhoto(o,r):e.renderPhoto(o,r)})).join(" "))+"\n </div>\n </div>\n </div>\n </div>\n </div>\n ").trim()},o.prototype.renderStandalone=function(){return this.params.renderStandalone?this.params.renderStandalone.call(this):'<div class="popup photo-browser-popup photo-browser-standalone popup-tablet-fullscreen">'+this.render()+"</div>"},o.prototype.renderPage=function(){return this.params.renderPage?this.params.renderPage.call(this):this.render()},o.prototype.renderPopup=function(){return this.params.renderPopup?this.params.renderPopup.call(this):'<div class="popup photo-browser-popup">'+this.render()+"</div>"},o.prototype.onOpen=function(e,o){var t,n=this,p=n.app,s=r(o);s[0].f7PhotoBrowser=n,n.$el=s,n.el=s[0],n.openedIn=e,n.opened=!0,n.$swiperContainerEl=n.$el.find(".photo-browser-swiper-container"),n.$swiperWrapperEl=n.$el.find(".photo-browser-swiper-wrapper"),n.slides=n.$el.find(".photo-browser-slide"),n.$captionsContainerEl=n.$el.find(".photo-browser-captions"),n.captions=n.$el.find(".photo-browser-caption");var i=a.extend({},n.params.swiper,{initialSlide:n.activeIndex,on:{click:function(e){clearTimeout(t),n.params.exposition&&(t=setTimeout((function(){n.expositionToggle()}),350)),n.emit("local::tap",e),n.emit("local::click",e)},doubleClick:function(e){clearTimeout(t),n.emit("local::doubleTap",e),n.emit("local::doubleClick",e)},slideChange:function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];var r=this;n.onSlideChange(r),n.emit.apply(n,["local::slideChange"].concat(e))},transitionStart:function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];n.emit.apply(n,["local::transitionStart"].concat(e))},transitionEnd:function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];n.emit.apply(n,["local::transitionEnd"].concat(e))},slideChangeTransitionStart:function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];var r=this;n.onSlideChange(r),n.emit.apply(n,["local::slideChangeTransitionStart"].concat(e))},slideChangeTransitionEnd:function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];n.emit.apply(n,["local::slideChangeTransitionEnd"].concat(e))},lazyImageLoad:function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];n.emit.apply(n,["local::lazyImageLoad"].concat(e))},lazyImageReady:function(){for(var e=[],o=arguments.length;o--;)e[o]=arguments[o];var a=e[0];r(a).removeClass("photo-browser-slide-lazy"),n.emit.apply(n,["local::lazyImageReady"].concat(e))}}});n.params.swipeToClose&&"page"!==n.params.type&&a.extend(i.on,{touchStart:function(e){n.onTouchStart(e),n.emit("local::touchStart",e)},touchMoveOpposite:function(e){n.onTouchMove(e),n.emit("local::touchMoveOpposite",e)},touchEnd:function(e){n.onTouchEnd(e),n.emit("local::touchEnd",e)}}),n.params.virtualSlides&&a.extend(i,{virtual:{slides:n.params.photos,renderSlide:function(e,o){return e.html||("string"==typeof e||e instanceof String)&&e.indexOf("<")>=0&&e.indexOf(">")>=0?n.renderObject(e,o):!0===n.params.swiper.lazy||n.params.swiper.lazy&&n.params.swiper.lazy.enabled?n.renderLazyPhoto(e,o):n.renderPhoto(e,o)}}}),n.swiper=p.swiper.create(n.$swiperContainerEl,i),0===n.activeIndex&&n.onSlideChange(n.swiper),n.$el&&n.$el.trigger("photobrowser:open"),n.emit("local::open photoBrowserOpen",n)},o.prototype.onOpened=function(){var e=this;e.$el&&"standalone"===e.params.type&&e.$el.css("animation","none"),e.$el&&e.$el.trigger("photobrowser:opened"),e.emit("local::opened photoBrowserOpened",e)},o.prototype.onClose=function(){var e=this;e.destroyed||(e.swiper&&e.swiper.destroy&&(e.swiper.destroy(!0,!1),e.swiper=null,delete e.swiper),e.$el&&e.$el.trigger("photobrowser:close"),e.emit("local::close photoBrowserClose",e))},o.prototype.onClosed=function(){var e=this;e.destroyed||(e.opened=!1,e.$el=null,e.el=null,delete e.$el,delete e.el,e.$el&&e.$el.trigger("photobrowser:closed"),e.emit("local::closed photoBrowserClosed",e))},o.prototype.openPage=function(){var e=this;if(e.opened)return e;var o=e.renderPage();return e.view.router.navigate({url:e.url,route:{content:o,path:e.url,on:{pageBeforeIn:function(o,r){e.view.$el.addClass("with-photo-browser-page with-photo-browser-page-"+e.params.theme),e.onOpen("page",r.el)},pageAfterIn:function(o,r){e.onOpened("page",r.el)},pageBeforeOut:function(o,r){e.view.$el.removeClass("with-photo-browser-page with-photo-browser-page-exposed with-photo-browser-page-"+e.params.theme),e.onClose("page",r.el)},pageAfterOut:function(o,r){e.onClosed("page",r.el)}}}}),e},o.prototype.openStandalone=function(){var e=this;if(e.opened)return e;var o={backdrop:!1,content:e.renderStandalone(),on:{popupOpen:function(o){e.onOpen("popup",o.el)},popupOpened:function(o){e.onOpened("popup",o.el)},popupClose:function(o){e.onClose("popup",o.el)},popupClosed:function(o){e.onClosed("popup",o.el)}}};return e.params.routableModals&&e.view?e.view.router.navigate({url:e.url,route:{path:e.url,popup:o}}):e.modal=e.app.popup.create(o).open(),e},o.prototype.openPopup=function(){var e=this;if(e.opened)return e;var o={content:e.renderPopup(),push:e.params.popupPush,on:{popupOpen:function(o){e.onOpen("popup",o.el)},popupOpened:function(o){e.onOpened("popup",o.el)},popupClose:function(o){e.onClose("popup",o.el)},popupClosed:function(o){e.onClosed("popup",o.el)}}};return e.params.routableModals&&e.view?e.view.router.navigate({url:e.url,route:{path:e.url,popup:o}}):e.modal=e.app.popup.create(o).open(),e},o.prototype.expositionEnable=function(){var e=this;return"page"===e.params.type&&e.view.$el.addClass("with-photo-browser-page-exposed"),e.$el&&e.$el.addClass("photo-browser-exposed"),e.params.expositionHideCaptions&&e.$captionsContainerEl.addClass("photo-browser-captions-exposed"),e.exposed=!0,e},o.prototype.expositionDisable=function(){var e=this;return"page"===e.params.type&&e.view.$el.removeClass("with-photo-browser-page-exposed"),e.$el&&e.$el.removeClass("photo-browser-exposed"),e.params.expositionHideCaptions&&e.$captionsContainerEl.removeClass("photo-browser-captions-exposed"),e.exposed=!1,e},o.prototype.expositionToggle=function(){var e=this;return"page"===e.params.type&&e.view.$el.toggleClass("with-photo-browser-page-exposed"),e.$el&&e.$el.toggleClass("photo-browser-exposed"),e.params.expositionHideCaptions&&e.$captionsContainerEl.toggleClass("photo-browser-captions-exposed"),e.exposed=!e.exposed,e},o.prototype.open=function(e){var o=this,r=o.params.type;return o.opened?(o.swiper&&void 0!==e&&o.swiper.slideTo(parseInt(e,10)),o):(void 0!==e&&(o.activeIndex=e),"standalone"===r&&o.openStandalone(),"page"===r&&o.openPage(),"popup"===r&&o.openPopup(),o)},o.prototype.close=function(){var e=this;return e.opened?(e.params.routableModals&&e.view||"page"===e.openedIn?e.view.router.back():(e.modal.once("modalClosed",(function(){a.nextTick((function(){e.destroyed||(e.modal.destroy(),delete e.modal)}))})),e.modal.close()),e):e},o.prototype.init=function(){},o.prototype.destroy=function(){var e=this;e.emit("local::beforeDestroy photoBrowserBeforeDestroy",e),e.$el&&(e.$el.trigger("photobrowser:beforedestroy"),e.$el[0].f7PhotoBrowser=null,delete e.$el[0].f7PhotoBrowser),a.deleteProps(e),e.destroyed=!0,e=null},Object.defineProperties(o.prototype,t),o}(t)),s={name:"photoBrowser",params:{photoBrowser:{photos:[],exposition:!0,expositionHideCaptions:!1,type:"standalone",navbar:!0,toolbar:!0,theme:"light",captionsTheme:void 0,iconsColor:void 0,popupPush:!1,swipeToClose:!0,pageBackLinkText:"Back",popupCloseLinkText:"Close",navbarOfText:"of",navbarShowCount:void 0,view:void 0,url:"photos/",routableModals:!0,virtualSlides:!0,renderNavbar:void 0,renderToolbar:void 0,renderCaption:void 0,renderObject:void 0,renderLazyPhoto:void 0,renderPhoto:void 0,renderPage:void 0,renderPopup:void 0,renderStandalone:void 0,swiper:{initialSlide:0,spaceBetween:20,speed:300,loop:!1,preloadImages:!0,navigation:{nextEl:".photo-browser-next",prevEl:".photo-browser-prev"},zoom:{enabled:!0,maxRatio:3,minRatio:1},lazy:{enabled:!0}}}},create:function(){this.photoBrowser=n({defaultSelector:".photo-browser-popup, .photo-browser-page",constructor:p,app:this,domProp:"f7PhotoBrowser"})},static:{PhotoBrowser:p}};if(o){if(e.prototype.modules&&e.prototype.modules[s.name])return;e.use(s),e.instance&&(e.instance.useModuleParams(s,e.instance.params),e.instance.useModule(s))}return s}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))