framework7
Version:
Full featured mobile HTML framework for building iOS & Android apps
2 lines (1 loc) • 3.23 kB
JavaScript
(function framework7ComponentLoader(e,t){void 0===t&&(t=!0);var r=e.$,s=e.utils,i=(e.getDevice,e.getSupport,e.Class,e.Modal,e.ConstructorMethods,e.ModalMethods,e.$jsx,s.extend);function a(e,t){let r=t.css(`min-${e}`);return"auto"===r||"none"===r?r=0:r.indexOf("px")>=0?r=parseFloat(r):r.indexOf("%")>=0&&(r=t.parent()[0]["height"===e?"offsetHeight":"offsetWidth"]*parseFloat(r)/100),r}function o(e,t){let r=t.css(`max-${e}`);return"auto"===r||"none"===r?r=null:r.indexOf("px")>=0?r=parseFloat(r):r.indexOf("%")>=0&&(r=t.parent()[0]["height"===e?"offsetHeight":"offsetWidth"]*parseFloat(r)/100),r}const n={init(){const e=this;let t,s,i,n,l,g,d,h,c,p,f,u,v,z,m,x,b;r(document).on(e.touchEvents.start,".col > .resize-handler, .row > .resize-handler",(function(e){t||s||(l=r(e.target).closest(".resize-handler"),i="touchstart"===e.type?e.targetTouches[0].pageX:e.pageX,n="touchstart"===e.type?e.targetTouches[0].pageY:e.pageY,t=!0,g=void 0,d=void 0,b=void 0)})),e.on("touchmove",(function(r){if(!t)return;const w=1===l.parent(".row").length,$=w?"height":"width",y=w?"offsetHeight":"offsetWidth";s||(g=l.parent(w?".row":".col"),!g.length||g.hasClass("resizable")&&!g.hasClass("resizable-fixed")||(g=g.prevAll(".resizable:not(.resizable-fixed)").eq(0)),d=g.next(w?".row":".col"),!d.length||d.hasClass("resizable")&&!d.hasClass("resizable-fixed")||(d=d.nextAll(".resizable:not(.resizable-fixed)").eq(0)),g.length&&(h=g[0][y],c=a($,g),p=o($,g),z=g.parent()[0][y],m=g.parent().children(w?".row":'[class*="col-"], .col').length,x=parseFloat(g.css(w?"--f7-grid-row-gap":"--f7-grid-gap"))),d.length&&(f=d[0][y],u=a($,d),v=o($,d),g.length||(z=d.parent()[0][y],m=d.parent().children(w?".row":'[class*="col-"], .col').length,x=parseFloat(d.css(w?"--f7-grid-row-gap":"--f7-grid-gap"))))),s=!0;const C="touchmove"===r.type?r.targetTouches[0].pageX:r.pageX,M="touchmove"===r.type?r.targetTouches[0].pageY:r.pageY;if(void 0!==b||w||(b=!!(b||Math.abs(M-n)>Math.abs(C-i))),b)return t=!1,void(s=!1);const F=g.hasClass("resizable-absolute")||d.hasClass("resizable-absolute"),O=!w||w&&!F;if(O&&!d.length||!g.length)return t=!1,void(s=!1);r.preventDefault();let R,T,X=w?M-n:C-i;if(g.length&&(R=h+X,R<c&&(R=c,X=R-h),p&&R>p&&(R=p,X=R-h)),d.length&&O&&(T=f-X,T<u&&(T=u,X=f-T,R=h+X),v&&T>v&&(T=v,X=f-T,R=h+X)),F)return g[0].style[$]=`${R}px`,O&&(d[0].style[$]=`${T}px`),g.trigger("grid:resize"),d.trigger("grid:resize"),e.emit("gridResize",g[0]),void e.emit("gridResize",d[0]);const Y=(m-1)*x/m,H=w?`${m-1} * var(--f7-grid-row-gap) / ${m}`:"(var(--f7-cols-per-row) - 1) * var(--f7-grid-gap) / var(--f7-cols-per-row)",W=R+Y,q=T+Y;g[0].style[$]=`calc(${W/z*100}% - ${H})`,d[0].style[$]=`calc(${q/z*100}% - ${H})`,g.trigger("grid:resize"),d.trigger("grid:resize"),e.emit("gridResize",g[0]),e.emit("gridResize",d[0])})),e.on("touchend",(function(){t&&(s||(t=!1),t=!1,s=!1)}))}};var l={name:"grid",create(){i(this,{grid:{init:n.init.bind(this)}})},on:{init(){this.grid.init()}}};if(t){if(e.prototype.modules&&e.prototype.modules[l.name])return;e.use(l),e.instance&&(e.instance.useModuleParams(l,e.instance.params),e.instance.useModule(l))}return l}(Framework7, typeof Framework7AutoInstallComponent === 'undefined' ? undefined : Framework7AutoInstallComponent))