Skip to content

Instantly share code, notes, and snippets.

@koyanloshe
Last active April 17, 2020 08:32
Show Gist options
  • Save koyanloshe/fc8c28a1824cff972a4783d9f418eae1 to your computer and use it in GitHub Desktop.
Save koyanloshe/fc8c28a1824cff972a4783d9f418eae1 to your computer and use it in GitHub Desktop.
Foundation equaliser #Javascript
/*
* This is a JavaScript Scratchpad.
*
* Enter some JavaScript, then Right Click or choose from the Execute Menu:
* 1. Run to evaluate the selected text (Cmd-R),
* 2. Inspect to bring up an Object Inspector on the result (Cmd-I), or,
* 3. Display to insert the result in a comment after the selection. (Cmd-L)
*/
(function webpackUniversalModuleDefinition(root,factory){if(typeof exports==='object'&&typeof module==='object')
module.exports=factory(require("./foundation.core"),require("./foundation.core.plugin"),require("./foundation.core.utils"),require("./foundation.util.imageLoader"),require("./foundation.util.mediaQuery"),require("jquery"));else if(typeof define==='function'&&define.amd)
define(["./foundation.core","./foundation.core.plugin","./foundation.core.utils","./foundation.util.imageLoader","./foundation.util.mediaQuery","jquery"],factory);else if(typeof exports==='object')
exports["foundation.equalizer"]=factory(require("./foundation.core"),require("./foundation.core.plugin"),require("./foundation.core.utils"),require("./foundation.util.imageLoader"),require("./foundation.util.mediaQuery"),require("jquery"));else
root["__FOUNDATION_EXTERNAL__"]=root["__FOUNDATION_EXTERNAL__"]||{},root["__FOUNDATION_EXTERNAL__"]["foundation.equalizer"]=factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"],root["__FOUNDATION_EXTERNAL__"]["foundation.core"],root["__FOUNDATION_EXTERNAL__"]["foundation.core"],root["__FOUNDATION_EXTERNAL__"]["foundation.util.imageLoader"],root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"],root["jQuery"]);})(window,function(__WEBPACK_EXTERNAL_MODULE__foundation_core__,__WEBPACK_EXTERNAL_MODULE__foundation_core_plugin__,__WEBPACK_EXTERNAL_MODULE__foundation_core_utils__,__WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__,__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__,__WEBPACK_EXTERNAL_MODULE_jquery__){return(function(modules){var installedModules={};function __webpack_require__(moduleId){if(installedModules[moduleId]){return installedModules[moduleId].exports;}
var module=installedModules[moduleId]={i:moduleId,l:false,exports:{}};modules[moduleId].call(module.exports,module,module.exports,__webpack_require__);module.l=true;return module.exports;}
__webpack_require__.m=modules;__webpack_require__.c=installedModules;__webpack_require__.d=function(exports,name,getter){if(!__webpack_require__.o(exports,name)){Object.defineProperty(exports,name,{enumerable:true,get:getter});}};__webpack_require__.r=function(exports){if(typeof Symbol!=='undefined'&&Symbol.toStringTag){Object.defineProperty(exports,Symbol.toStringTag,{value:'Module'});}
Object.defineProperty(exports,'__esModule',{value:true});};__webpack_require__.t=function(value,mode){if(mode&1)value=__webpack_require__(value);if(mode&8)return value;if((mode&4)&&typeof value==='object'&&value&&value.__esModule)return value;var ns=Object.create(null);__webpack_require__.r(ns);Object.defineProperty(ns,'default',{enumerable:true,value:value});if(mode&2&&typeof value!='string')for(var key in value)__webpack_require__.d(ns,key,function(key){return value[key];}.bind(null,key));return ns;};__webpack_require__.n=function(module){var getter=module&&module.__esModule?function getDefault(){return module['default'];}:function getModuleExports(){return module;};__webpack_require__.d(getter,'a',getter);return getter;};__webpack_require__.o=function(object,property){return Object.prototype.hasOwnProperty.call(object,property);};__webpack_require__.p="";return __webpack_require__(__webpack_require__.s=6);})
({"./foundation.core":/*!****************************************************************************************************************************************************************!*\
!*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***!
\****************************************************************************************************************************************************************//*!no static exports found*/(function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core__;}),"./foundation.core.plugin":/*!*************************************************************************************************************************************************************************************!*\
!*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core.plugin","commonjs":"./foundation.core.plugin","commonjs2":"./foundation.core.plugin"} ***!
\*************************************************************************************************************************************************************************************//*!no static exports found*/(function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core_plugin__;}),"./foundation.core.utils":/*!**********************************************************************************************************************************************************************************!*\
!*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core.utils","commonjs":"./foundation.core.utils","commonjs2":"./foundation.core.utils"} ***!
\**********************************************************************************************************************************************************************************//*!no static exports found*/(function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_core_utils__;}),"./foundation.util.imageLoader":/*!****************************************************************************************************************************************************************************************************************!*\
!*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.imageLoader"],"amd":"./foundation.util.imageLoader","commonjs":"./foundation.util.imageLoader","commonjs2":"./foundation.util.imageLoader"} ***!
\****************************************************************************************************************************************************************************************************************//*!no static exports found*/(function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__;}),"./foundation.util.mediaQuery":/*!************************************************************************************************************************************************************************************************************!*\
!*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***!
\************************************************************************************************************************************************************************************************************//*!no static exports found*/(function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__;}),"./js/entries/plugins/foundation.equalizer.js":/*!****************************************************!*\
!*** ./js/entries/plugins/foundation.equalizer.js ***!
\****************************************************//*!exports provided: Foundation, Equalizer*/(function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);var _foundation_core__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*!./foundation.core*/"./foundation.core");var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__);__webpack_require__.d(__webpack_exports__,"Foundation",function(){return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"];});var _foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*!../../foundation.equalizer*/"./js/foundation.equalizer.js");__webpack_require__.d(__webpack_exports__,"Equalizer",function(){return _foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__["Equalizer"];});_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__["Equalizer"],'Equalizer');}),"./js/foundation.equalizer.js":/*!************************************!*\
!*** ./js/foundation.equalizer.js ***!
\************************************//*!exports provided: Equalizer*/(function(module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.r(__webpack_exports__);__webpack_require__.d(__webpack_exports__,"Equalizer",function(){return Equalizer;});var jquery__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(/*!jquery*/"jquery");var jquery__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__);var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(/*!./foundation.util.mediaQuery*/"./foundation.util.mediaQuery");var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__);var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(/*!./foundation.util.imageLoader*/"./foundation.util.imageLoader");var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2___default=__webpack_require__.n(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__);var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(/*!./foundation.core.utils*/"./foundation.core.utils");var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3___default=__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__);var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(/*!./foundation.core.plugin*/"./foundation.core.plugin");var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4___default=__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__);function _typeof(obj){if(typeof Symbol==="function"&&typeof Symbol.iterator==="symbol"){_typeof=function _typeof(obj){return typeof obj;};}else{_typeof=function _typeof(obj){return obj&&typeof Symbol==="function"&&obj.constructor===Symbol&&obj!==Symbol.prototype?"symbol":typeof obj;};}return _typeof(obj);}
function _classCallCheck(instance,Constructor){if(!(instance instanceof Constructor)){throw new TypeError("Cannot call a class as a function");}}
function _defineProperties(target,props){for(var i=0;i<props.length;i++){var descriptor=props[i];descriptor.enumerable=descriptor.enumerable||false;descriptor.configurable=true;if("value"in descriptor)descriptor.writable=true;Object.defineProperty(target,descriptor.key,descriptor);}}
function _createClass(Constructor,protoProps,staticProps){if(protoProps)_defineProperties(Constructor.prototype,protoProps);if(staticProps)_defineProperties(Constructor,staticProps);return Constructor;}
function _possibleConstructorReturn(self,call){if(call&&(_typeof(call)==="object"||typeof call==="function")){return call;}return _assertThisInitialized(self);}
function _assertThisInitialized(self){if(self===void 0){throw new ReferenceError("this hasn't been initialised - super() hasn't been called");}return self;}
function _getPrototypeOf(o){_getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf:function _getPrototypeOf(o){return o.__proto__||Object.getPrototypeOf(o);};return _getPrototypeOf(o);}
function _inherits(subClass,superClass){if(typeof superClass!=="function"&&superClass!==null){throw new TypeError("Super expression must either be null or a function");}subClass.prototype=Object.create(superClass&&superClass.prototype,{constructor:{value:subClass,writable:true,configurable:true}});if(superClass)_setPrototypeOf(subClass,superClass);}
function _setPrototypeOf(o,p){_setPrototypeOf=Object.setPrototypeOf||function _setPrototypeOf(o,p){o.__proto__=p;return o;};return _setPrototypeOf(o,p);}
var Equalizer=function(_Plugin){_inherits(Equalizer,_Plugin);function Equalizer(){_classCallCheck(this,Equalizer);return _possibleConstructorReturn(this,_getPrototypeOf(Equalizer).apply(this,arguments));}
_createClass(Equalizer,[{key:"_setup",value:function _setup(element,options){this.$element=element;this.options=jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({},Equalizer.defaults,this.$element.data(),options);this.className='Equalizer';this._init();}},{key:"_init",value:function _init(){var eqId=this.$element.attr('data-equalizer')||'';var $watched=this.$element.find("[data-equalizer-watch=\"".concat(eqId,"\"]"));_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init();this.$watched=$watched.length?$watched:this.$element.find('[data-equalizer-watch]');this.$element.attr('data-resize',eqId||Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6,'eq'));this.$element.attr('data-mutate',eqId||Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6,'eq'));this.hasNested=this.$element.find('[data-equalizer]').length>0;this.isNested=this.$element.parentsUntil(document.body,'[data-equalizer]').length>0;this.isOn=false;this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var imgs=this.$element.find('img');var tooSmall;if(this.options.equalizeOn){tooSmall=this._checkMQ();jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery',this._checkMQ.bind(this));}else{this._events();}
if(typeof tooSmall!=='undefined'&&tooSmall===false||typeof tooSmall==='undefined'){if(imgs.length){Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__["onImagesLoaded"])(imgs,this._reflow.bind(this));}else{this._reflow();}}}},{key:"_pauseEvents",value:function _pauseEvents(){this.isOn=false;this.$element.off({'.zf.equalizer':this._bindHandler.onPostEqualizedBound,'resizeme.zf.trigger':this._bindHandler.onResizeMeBound,'mutateme.zf.trigger':this._bindHandler.onResizeMeBound});}},{key:"_onResizeMe",value:function _onResizeMe(e){this._reflow();}},{key:"_onPostEqualized",value:function _onPostEqualized(e){if(e.target!==this.$element[0]){this._reflow();}}},{key:"_events",value:function _events(){var _this=this;this._pauseEvents();if(this.hasNested){this.$element.on('postequalized.zf.equalizer',this._bindHandler.onPostEqualizedBound);}else{this.$element.on('resizeme.zf.trigger',this._bindHandler.onResizeMeBound);this.$element.on('mutateme.zf.trigger',this._bindHandler.onResizeMeBound);}
this.isOn=true;}},{key:"_checkMQ",value:function _checkMQ(){var tooSmall=!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].is(this.options.equalizeOn);if(tooSmall){if(this.isOn){this._pauseEvents();this.$watched.css('height','auto');}}else{if(!this.isOn){this._events();}}
return tooSmall;}},{key:"_killswitch",value:function _killswitch(){return;}},{key:"_reflow",value:function _reflow(){if(!this.options.equalizeOnStack){if(this._isStacked()){this.$watched.css('height','auto');return false;}}
if(this.options.equalizeByRow){this.getHeightsByRow(this.applyHeightByRow.bind(this));}else{this.getHeights(this.applyHeight.bind(this));}}},{key:"_isStacked",value:function _isStacked(){if(!this.$watched[0]||!this.$watched[1]){return true;}
return this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top;}},{key:"getHeights",value:function getHeights(cb){var heights=[];for(var i=0,len=this.$watched.length;i<len;i++){this.$watched[i].style.height='auto';heights.push(this.$watched[i].offsetHeight);}
cb(heights);}},{key:"getHeightsByRow",value:function getHeightsByRow(cb){var lastElTopOffset=this.$watched.length?this.$watched.first().offset().top:0,groups=[],group=0;groups[group]=[];for(var i=0,len=this.$watched.length;i<len;i++){this.$watched[i].style.height='auto';var elOffsetTop=jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$watched[i]).offset().top;if(elOffsetTop!=lastElTopOffset){group++;groups[group]=[];lastElTopOffset=elOffsetTop;}
groups[group].push([this.$watched[i],this.$watched[i].offsetHeight]);}
for(var j=0,ln=groups.length;j<ln;j++){var heights=jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[j]).map(function(){return this[1];}).get();var max=Math.max.apply(null,heights);groups[j].push(max);}
cb(groups);}},{key:"applyHeight",value:function applyHeight(heights){var max=Math.max.apply(null,heights);this.$element.trigger('preequalized.zf.equalizer');this.$watched.css('height',max);this.$element.trigger('postequalized.zf.equalizer');}},{key:"applyHeightByRow",value:function applyHeightByRow(groups){this.$element.trigger('preequalized.zf.equalizer');for(var i=0,len=groups.length;i<len;i++){var groupsILength=groups[i].length,max=groups[i][groupsILength-1];if(groupsILength<=2){jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[i][0][0]).css({'height':'auto'});continue;}
this.$element.trigger('preequalizedrow.zf.equalizer');for(var j=0,lenJ=groupsILength-1;j<lenJ;j++){jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[i][j][0]).css({'height':max});}
this.$element.trigger('postequalizedrow.zf.equalizer');}
this.$element.trigger('postequalized.zf.equalizer');}},{key:"_destroy",value:function _destroy(){this._pauseEvents();this.$watched.css('height','auto');}}]);return Equalizer;}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_4__["Plugin"]);Equalizer.defaults={equalizeOnStack:false,equalizeByRow:false,equalizeOn:''};}),6:/*!**********************************************************!*\
!*** multi ./js/entries/plugins/foundation.equalizer.js ***!
\**********************************************************//*!no static exports found*/(function(module,exports,__webpack_require__){module.exports=__webpack_require__(/*!/Users/ncoden/Documents/Documents/Projects/Programmation/Web/2016/Foundation/foundation-sites/js/entries/plugins/foundation.equalizer.js*/"./js/entries/plugins/foundation.equalizer.js");}),"jquery":/*!********************************************************************************************!*\
!*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***!
\********************************************************************************************//*!no static exports found*/(function(module,exports){module.exports=__WEBPACK_EXTERNAL_MODULE_jquery__;})});});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment