-
Notifications
You must be signed in to change notification settings - Fork 5
/
awesome-grid.min.js
1 lines (1 loc) · 9.96 KB
/
awesome-grid.min.js
1
(function(){var t,e=[].indexOf||function(t){for(var e=0,n=this.length;e<n;e++)if(e in this&&this[e]===t)return e;return-1};t=function(){function t(e,n,s){var r,i,o,l,_,u,h,c,p;if(null==n&&(n=t.options),null==s&&(s=!1),this.__els=s?[e]:document.querySelectorAll(e),!this.__els)return this;for(c=this.__els,i=l=0,u=c.length;l<u;i=++l)for(o=c[i],o.style.position="relative",this.__kids[i]=o.children.length,p=o.children,_=0,h=p.length;_<h;_++)r=p[_],r.style.position="absolute",r.style.margin=0;this._reset(this._merge(t.options,n)),this._respond(),this._docontext(),this._doresize(),this._doscroll()}return t.prototype.__els=[],t.prototype.__kids=[],t.prototype.__watch=null,t.prototype.__adopt=!1,t.prototype.__width=null,t.prototype.__rows=[0],t.prototype.__columns=[0],t.prototype.__scroll={watch:null,fn:null},t.prototype.__devices=null,t.prototype.__current=null,t.prototype.__screen=null,t.prototype.__small=null,t.prototype.__mobile=null,t.prototype.__tablet=null,t.prototype.__desktop=null,t.prototype.__tv=null,t.prototype.__events=[],t.prototype.__context=null,t.options={context:"window",mobile:420,tablet:768,desktop:992,tv:1200},t.prototype._make=function(t,e){return{device:t,screen:e,columns:1,gutters:{column:0,row:0,force:!1}}},t.prototype._reset=function(t){return this.__context=t.context,this.__small=this._make("small",0),this.__mobile=this._make("mobile",t.mobile),this.__tablet=this._make("tablet",t.tablet),this.__desktop=this._make("desktop",t.desktop),this.__tv=this._make("tv",t.tv),this.__columns=[0],this.__devices=["small"],this.__current={}},t.prototype._device=function(t,n,s,r){var i,o;return this.__els?(n===!1?this.__devices=function(){var e,n,s,r;for(s=this.__devices,r=[],e=0,n=s.length;e<n;e++)o=s[e],o!==t&&r.push(o);return r}.call(this):(i=function(){switch(!1){case"tv"!==t:return this.__tv;case"desktop"!==t:return this.__desktop;case"tablet"!==t:return this.__tablet;case"mobile"!==t:return this.__mobile}}.call(this),i.columns=n,this.gutters(s,r,i),e.call(this.__devices,t)<0&&this.__devices.push(t)),this._respond()):this},t.prototype._respond=function(t){var n,s,r,i,o,l;if(null==t&&(t=window.innerWidth),o=function(t){return function(n,s){var r;return t.__screen=function(){switch(!1){case!(n>=this.__tv.screen):return this.__tv;case!(n>=this.__desktop.screen):return this.__desktop;case!(n>=this.__tablet.screen):return this.__tablet;case!(n>=this.__mobile.screen):return this.__mobile;default:return this.__small}}.call(t),r=t.__current.device,t.__current=function(){var t,n,s,r;switch(!1){case t=this.__screen.device,e.call(this.__devices,t)<0:return this.__screen;case!("tv"===this.__screen.device&&e.call(this.__devices,"tv")>=0):return this.__tv;case!(("tv"===(n=this.__screen.device)||"desktop"===n)&&e.call(this.__devices,"desktop")>=0):return this.__desktop;case!(("tv"===(s=this.__screen.device)||"desktop"===s||"tablet"===s)&&e.call(this.__devices,"tablet")>=0):return this.__tablet;case!(("tv"===(r=this.__screen.device)||"desktop"===r||"tablet"===r||"mobile"===r)&&e.call(this.__devices,"mobile")>=0):return this.__mobile;default:return this.__small}}.call(t),t.__current.device!==r&&t._emit("grid:device",null,[t.__current.device,r]),t.grid(!1,s)}}(this),"self"===this.__context){for(i=this.__els,l=[],s=0,r=i.length;s<r;s++)n=i[s],l.push(o(n.offsetWidth,[n]));return l}return o(t,this.__els)},t.prototype._docontext=function(){return"self"!==this.__context?null:(this._respond(),this.__watch=setTimeout(function(t){return function(){return t._docontext()}}(this),220))},t.prototype._doresize=function(){var t;return"self"===this.__context?null:(t=null,window.addEventListener("resize",function(e){return function(){if(null==t)return t=setTimeout(function(){return t=null,e._respond()},66)}}(this),!0))},t.prototype._grow=function(){var t,e,n,s,r,i,o,l,_;if(null==this.__scroll.fn||null!=this.__scroll.watch)return this;for(i=this.__els,o=[],t=s=0,r=i.length;s<r;t=++s)e=i[t],l=getComputedStyle(e),n=parseInt(l.getPropertyValue("height")),document.body.scrollTop>=n+e.offsetTop-window.innerHeight?(this._emit("grid:scrolled",e,[this.__current.device]),this.__scroll.watch=!0,_=t,o.push(this.__scroll.fn(function(t){return function(){var n,s,r,i,o,l;if(!arguments.length||!arguments[0])return t.__scroll.watch=null,t;for(s=arguments[0].constructor===Array?arguments[0]:arguments,r=0,i=s.length;r<i;r++)n=s[r],o=e.children[0].tagName.toLowerCase(),l=document.createElement(o),l.innerHTML=n,e.appendChild(l);return t._sync(_),t.__scroll.watch=null}}(this)))):o.push(void 0);return o},t.prototype._doscroll=function(){var t;return t=null,window.addEventListener("scroll",function(e){return function(){if(null==t)return t=setTimeout(function(){return t=null,e._grow()},66)}}(this),!0)},t.prototype._isInt=function(t){return null!=t&&!isNaN(t)&&function(t){return(0|t)===t}(parseFloat(t))},t.prototype._clone=function(t){var e,n;if(null==t||"object"!=typeof t)return t;n={};for(e in t)n[e]=this._clone(t[e]);return n},t.prototype._merge=function(t,e){var n,s,r;s=this._clone(t);for(n in e)r=e[n],s[n]=r;return s},t.prototype._x=function(t,e){var n,s;return n=1,s=t.getAttribute("data-ag-x"),this._isInt(s)&&(n=parseInt(s)),n>e?e:n<1?1:n},t.prototype._spacing=function(t){var e,n;return e={},n=getComputedStyle(t),e.pl=parseInt(n.paddingLeft),e.pr=parseInt(n.paddingRight),e.bl=parseInt(n.getPropertyValue("border-left-width")),e.br=parseInt(n.getPropertyValue("border-right-width")),e},t.prototype._giant=function(t,e){var n;return null==t&&(t=-1),null==e&&(e=-1),t===e&&t>-1?t:t===e&&t===-1?this.__columns.indexOf(Math.max.apply(null,this.__columns)):(n=this.__columns.slice(t,+e+1||9e9),t+n.indexOf(Math.max.apply(null,n)))},t.prototype._midget=function(t,e){var n;return null==t&&(t=-1),null==e&&(e=-1),t===e&&t>-1?t:t===e&&t===-1?this.__columns.indexOf(Math.min.apply(null,this.__columns)):(n=this.__columns.slice(t,+e+1||9e9),t+n.indexOf(Math.min.apply(null,n)))},t.prototype._clearClass=function(t){var e;return e=t.className.replace(/(?:^|\s)(ag-col-.+?)|(ag-row-.+?)(?!\S)/gim,""),""!==e&&(e=e.trim()+" "),e},t.prototype._emit=function(t,e,n){var s,r,i,o,l;for(o=this.__events,l=[],r=0,i=o.length;r<i;r++)s=o[r],s[0]===t?l.push(s[1].apply(e,[t].concat(n))):l.push(void 0);return l},t.prototype._gutters=function(t){var e;return this.__els&&null!=t?this._isInt(t)?{column:parseInt(t),row:parseInt(t)}:(e={column:this.__small.gutters.column,row:this.__small.gutters.row},this._isInt(t.column)&&(e.column=parseInt(t.column)),this._isInt(t.row)&&(e.row=parseInt(t.row)),e):this},t.prototype._grid=function(t,n,s,r){var i,o,l,_,u,h,c,p,a,d,f,m,g,v,y;for(null==r&&(r=!1),r&&(n.style.position="absolute",n.style.margin=0),i=this._midget(),f=this._x(n,s),i+f>s&&(i-=i+f-s),u=i*this.__width+i*this.__current.gutters.column,y=f*this.__width+(f-1)*this.__current.gutters.column,d=this._spacing(n),g=this._giant(i,i+f-1),n.style.width=y-d.pl-d.pr-d.bl-d.br+"px",n.style.top=this.__columns[g]+"px",n.style.left=u+"px",n.className=this._clearClass(n),this.__columns[g]=this.__columns[g]+n.offsetHeight+this.__current.gutters.row,m="",v=[],l=[],a=[],o=_=h=i,c=i+f-1;h<=c?_<=c:_>=c;o=h<=c?++_:--_)n.className+=m+"ag-col-"+(o+1),p=this.__rows[o],e.call(v,p)<0&&(n.className+=" ag-row-"+(this.__rows[o]+1)),v.push(this.__rows[o]),this.__rows[o]++,m=" ",this.__columns[o]=this.__columns[g],l.push(o+1),a.push(this.__rows[o]);return t.style.height=this.__columns[this._giant()]+"px",this._emit("item:stacked",n,[t,a,l,this.__current.device])},t.prototype._sync=function(t){var e,n,s,r,i,o,l;if(r=this.__kids[t],n=this.__els[t].children.length,n>r){for(this.__kids[t]=n,l=[],e=s=i=r,o=n;i<=o?s<o:s>o;e=i<=o?++s:--s)l.push(this._grid(this.__els[t],this.__els[t].children[e],this.__columns.length,!0));return l}},t.prototype.gutters=function(t,e,n){var s;return null==e&&(e=!1),null==n&&(n=this.__small),this.__els?(s=this._gutters(t),n.gutters={column:s.column,row:s.row,force:!!e},this):this},t.prototype.grid=function(t,e){var n,s,r,i,o,l,_,u,h;if(null==e&&(e=this.__els),!this.__els)return this;if(t&&(this.__small.columns=t),s=this.__current,t=s.columns,!this._isInt(t))return this;for(o=0,_=e.length;o<_;o++){for(r=e[o],this.__columns=function(){var e,n,s;for(s=[],e=1,n=t;1<=n?e<=n:e>=n;1<=n?e++:e--)s.push(0);return s}(),this.__rows=this.__columns.slice(0),i=this._clone(s.gutters),i.force||this.gutters(r.getAttribute("data-ag-gutters")||{column:r.getAttribute("data-ag-gutters-column"),row:r.getAttribute("data-ag-gutters-row")},s),this.__width=(r.offsetWidth-(t-1)*s.gutters.column)/t,h=r.children,l=0,u=h.length;l<u;l++)n=h[l],this._grid(r,n,t);s.gutters=i,this._emit("grid:done",r,[s.device])}return this},t.prototype.apply=function(){var t,e,n,s,r;for(r=this.__kids,t=e=0,s=r.length;e<s;t=++e)n=r[t],this._sync(t);return this},t.prototype.scroll=function(t){return t===!1?(this.__scroll.fn=null,this.__scroll.watch=null,this):"function"!=typeof t?this:(this.__scroll.fn=t,this)},t.prototype.mobile=function(t,e,n){return null==e&&(e={}),null==n&&(n=!1),this._device("mobile",t,e,n),this},t.prototype.tablet=function(t,e,n){return null==e&&(e={}),null==n&&(n=!1),this._device("tablet",t,e,n),this},t.prototype.desktop=function(t,e,n){return null==e&&(e={}),null==n&&(n=!1),this._device("desktop",t,e,n),this},t.prototype.tv=function(t,e,n){return null==e&&(e={}),null==n&&(n=!1),this._device("tv",t,e,n),this},t.prototype.on=function(t,e){return"function"!=typeof e?this:(this.__events.push([t,e]),this)},t.prototype.off=function(t,e){var n,s,r,i,o,l;if(null==e&&(e=null),null==t)return this.__events=[],this;for(r=[],l=this.__events,n=i=0,o=l.length;i<o;n=++i)s=l[n],(s[0]!==t||null!=e&&e.toString()!==s[1].toString())&&r.push(s);return this.__events=r,this},t}(),window.addEventListener("load",function(){var e,n,s,r,i;for(r=document.querySelectorAll("[data-awesome-grid]"),i=[],n=0,s=r.length;n<s;n++)e=r[n],i.push(new t(e,t.options,(!0)).grid(e.getAttribute("data-awesome-grid")));return i},!0),"undefined"!=typeof window&&null!==window&&(window.AwesomeGrid=t),"function"==typeof define&&define.amd&&define("AwesomeGrid",[],function(){return t}),("undefined"!=typeof module&&null!==module?module.exports:void 0)&&(module.exports=t)}).call(this);