{"version":3,"file":"app/module/module.equalheight.js","sources":["module.equalheight.js"],"sourcesContent":["/*----------------------------------------------------------------------------*\\\r\n module.equalheight\r\n Equalheight in rows\r\n\\*----------------------------------------------------------------------------*/\r\n\r\n/**\r\n * Use strict as per:\r\n * http://ejohn.org/blog/ecmascript-5-strict-mode-json-and-more/\r\n */\r\n'use strict';\r\n\r\n\r\n/**\r\n * Check if oy object exists, otherwise create it\r\n */\r\nvar oy = oy || {};\r\noy.module = oy.module || {};\r\n\r\n\r\n/**\r\n * Jshint global references\r\n * Please define all third party plugins that you use to not break jshinting\r\n */\r\n\r\n\r\n\r\n/* Component\r\n\\*----------------------------------------------------------------------------*/\r\n\r\noy.module.equalheight = {\r\n name: 'equalheight', // name of object for debugging purposes\r\n\r\n init: () => {\r\n const self = oy.module.equalheight;\r\n self.setupContainer();\r\n },\r\n\r\n setupContainer: ($context) => {\r\n const self = oy.module.equalheight;\r\n\r\n // Always have a working context\r\n const $workingContext = $context || document.body;\r\n\r\n // Get elements which need equalheight\r\n const $elements = $workingContext.querySelectorAll(`[data-module=${self.name}]`);\r\n const levels = self.getLevels($elements);\r\n\r\n // filter items and equalheight them\r\n for (var i = 0; i < levels.length; i++) {\r\n self.setupEqualheight($workingContext.querySelectorAll(`[data-module=\"${self.name}\"][data-level=\"${levels[i]}\"]`));\r\n }\r\n },\r\n\r\n setupEqualheight: ($elements) => {\r\n const self = oy.module.equalheight;\r\n if (!$elements) {\r\n return;\r\n }\r\n\r\n // declare some vars\r\n const resetValue = 0;\r\n let currentTallest = null;\r\n let currentRowStart = 0;\r\n let topPosition = 0;\r\n let $el;\r\n const rowElements = [];\r\n\r\n window.requestAnimationFrame(() => {\r\n // Loop over elements\r\n [].forEach.call($elements, ($element) => {\r\n $el = $element;\r\n $el.setAttribute('data-initialised', self.name);\r\n $el.style.minHeight = resetValue;\r\n topPosition = oy.functions.getOffset($el).top;\r\n\r\n if (currentRowStart !== topPosition) {\r\n // Another offset another row\r\n for (var $currentElement = 0; $currentElement < rowElements.length; $currentElement++) {\r\n rowElements[$currentElement].style.minHeight = `${currentTallest}px`;\r\n }\r\n\r\n rowElements.length = 0;\r\n currentRowStart = topPosition;\r\n currentTallest = $el.clientHeight;\r\n rowElements.push($el);\r\n } else {\r\n // another div on the current row: Add it to the list and check if it's taller\r\n rowElements.push($el);\r\n currentTallest = (currentTallest < $el.clientHeight) ? ($el.clientHeight) : (currentTallest);\r\n }\r\n\r\n // the last row\r\n for ($currentElement = 0 ; $currentElement < rowElements.length ; $currentElement++) {\r\n rowElements[$currentElement].style.minHeight = `${currentTallest}px`;\r\n }\r\n });\r\n });\r\n },\r\n\r\n getLevels: ($elements) => {\r\n const levels = [];\r\n [].forEach.call($elements, ($element) => {\r\n let level = parseFloat($element.getAttribute('data-level'));\r\n if (!level && typeof level !== 'undefined' || typeof level !== 'number') {\r\n level = 1;\r\n $element.setAttribute('data-level', level);\r\n }\r\n\r\n if (levels.indexOf(level) === -1) {\r\n levels.push(level);\r\n }\r\n });\r\n\r\n // sort levels\r\n return levels.sort();\r\n }\r\n};\r\n\r\n\r\n\r\n/* Init all the things\r\n\\*----------------------------------------------------------------------------*/\r\n\r\nwindow.addEventListener('optimizedResize', function () {\r\n oy.module.equalheight.setupContainer();\r\n}, false);\r\n\r\nwindow.addEventListener('load', function () {\r\n oy.module.equalheight.init();\r\n}, false);\r\n"],"names":["const","let"],"mappings":"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","sourceRoot":"/source/"}