{"version":3,"sources":["flexibility.init.js","flexibility.each.js","flexibility.measurements.js","flexibility.process.js","flexibility.properties.js","flexibility.transform.js"],"names":["flexibility","test","navigator","userAgent","document","attachEvent","readyState","process","body","each","node","callback","child","firstChild","nodeType","nextSibling","measure","target","style","onlayoutcomplete","runCSS","runtimeStyle","oldCSS","cssText","scrollWidth","scrollHeight","width","fontSize","offsetWidth","borderWidths","medium","none","thick","thin","metrics","borderTopWidth","borderRightWidth","borderBottomWidth","borderLeftWidth","marginTop","marginRight","marginBottom","marginLeft","paddingTop","paddingRight","paddingBottom","paddingLeft","minWidth","maxWidth","minHeight","maxHeight","dummy","createElement","parent","parentNode","getCSS","currentStyle","setCSS","insertBefore","key","value","removeChild","borderTopStyle","borderRightStyle","borderBottomStyle","borderLeftStyle","height","offsetHeight","contentHeight","contentWidth","properties","parentElement","tfCSS","pfCSS","tFlex","display","pFlex","verticalAlign","index","children","childNodes","old","replaceChild","clone","childSetCSS","transform","attr","nodeName","attrs","attributes","attrc","createAttribute","name","setAttributeNode","lastChild","appendChild","boxSizing","settings","alignContent","initial","valid","alignItems","alignSelf","flexBasis","flexDirection","flexGrow","flexShrink","flexWrap","justifyContent","order","replace","toLowerCase","flexStyle","direction","align","justify","row","flex-start","targetCSS","childCSS","center","flex-end","stretch","column","marginX","contentMeasurements","startOffsetX","startOffsetY","startStyle","endOffsetX","endOffsetY","endStyle","push","offsetLeft","offsetTop","contents","length","space-around","diff","margin"],"mappings":"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","file":"flexibility.js","sourcesContent":["/*! flexibility v0.2.2 | MIT Licensed | github.com/10up/flexibility */\n\nflexibility = {};\n\nif (/MSIE [8-9]\\./i.test(navigator.userAgent)) {\n\tdocument.attachEvent('onreadystatechange', function () {\n\t\tif (document.readyState === 'complete') {\n\t\t\tflexibility.process(document.body);\n\t\t}\n\t});\n}\n","flexibility.each = function (node, callback) {\n\tvar child = node.firstChild;\n\n\twhile (child) {\n\t\tif (child.nodeType === 1) {\n\t\t\tcallback(child);\n\t\t}\n\n\t\tchild = child.nextSibling;\n\t}\n};\n","flexibility.measure = function (target) {\n\t// cache runtime CSS\n\tvar style = target.onlayoutcomplete = target.onlayoutcomplete || {};\n\n\tvar runCSS = target.runtimeStyle;\n\tvar oldCSS = runCSS.cssText;\n\n\t// get minimum scroll size\n\trunCSS.cssText = 'border:0;display:inline-block;height:0;overflow:hidden;padding:0;width:0';\n\n\tvar scrollWidth = target.scrollWidth;\n\tvar scrollHeight = target.scrollHeight;\n\n\t// get font size\n\trunCSS.width = '1em';\n\n\tvar fontSize = target.offsetWidth;\n\n\t// restore runtime CSS\n\trunCSS.cssText = oldCSS;\n\n\t// set predefined border widths\n\tvar borderWidths = {\n\t\tmedium: 4,\n\t\tnone: 0,\n\t\tthick: 6,\n\t\tthin: 2\n\t};\n\n\t// set metrics we wish to capture\n\tvar metrics = {\n\t\tborderTopWidth: 0,\n\t\tborderRightWidth: 0,\n\t\tborderBottomWidth: 0,\n\t\tborderLeftWidth: 0,\n\t\tmarginTop: 0,\n\t\tmarginRight: 0,\n\t\tmarginBottom: 0,\n\t\tmarginLeft: 0,\n\t\tpaddingTop: 0,\n\t\tpaddingRight: 0,\n\t\tpaddingBottom: 0,\n\t\tpaddingLeft: 0,\n\t\tminWidth: 0,\n\t\tmaxWidth: 0,\n\t\tminHeight: 0,\n\t\tmaxHeight: 0\n\t};\n\n\t// get metrics using a dummy element\n\tvar dummy = document.createElement('x');\n\tvar parent = target.parentNode;\n\tvar getCSS = target.currentStyle;\n\tvar setCSS = dummy.runtimeStyle;\n\n\tsetCSS.cssText = 'border:0;clip:rect(0 0 0 0);display:block;font-size:' + fontSize + 'px;line-height:0;margin:0;padding:0;position:absolute';\n\n\tparent.insertBefore(dummy, target);\n\n\tfor (var key in metrics) {\n\t\tvar value = getCSS[key];\n\n\t\tsetCSS.width = value in borderWidths ? borderWidths[value] : value;\n\n\t\tstyle[key] = dummy.offsetWidth;\n\t}\n\n\tparent.removeChild(dummy);\n\n\t// set font size\n\tstyle.fontSize = fontSize;\n\n\t// unset border widths without style\n\tif (getCSS.borderTopStyle === 'none') style.borderTopWidth = 0;\n\tif (getCSS.borderRightStyle === 'none') style.borderRightWidth = 0;\n\tif (getCSS.borderBottomStyle === 'none') style.borderBottomWidth = 0;\n\tif (getCSS.borderLeftStyle === 'none') style.borderLeftWidth = 0;\n\n\t// set additional metrics\n\tstyle.scrollWidth = scrollWidth;\n\tstyle.scrollHeight = scrollHeight;\n\tstyle.width = target.offsetWidth;\n\tstyle.height = target.offsetHeight;\n\n\tstyle.contentHeight = style.height - style.borderTopWidth - style.borderBottomWidth - style.paddingTop - style.paddingBottom;\n\tstyle.contentWidth = style.width - style.borderLeftWidth - style.borderRightWidth - style.paddingLeft - style.paddingRight;\n\n\treturn style;\n};\n","flexibility.process = function (target) {\n\tif (target.nodeType !== 1) return;\n\n\tvar setCSS = target.runtimeStyle;\n\n\tflexibility.properties(target);\n\tflexibility.properties(target.parentElement);\n\n\tvar tfCSS = target.onlayoutcomplete;\n\tvar pfCSS = target.parentElement.onlayoutcomplete;\n\tvar tFlex = /flex$/.test(tfCSS.display) && tfCSS.display;\n\tvar pFlex = /flex$/.test(pfCSS.display) && pfCSS.display;\n\n\tif (tFlex && !pFlex) {\n\t\tsetCSS.display = 'inline-block';\n\t\tsetCSS.verticalAlign = 'top';\n\n\t\tif (tFlex === 'flex') {\n\t\t\tsetCSS.display = 'block';\n\t\t}\n\n\t\tsetCSS.width = target.offsetWidth + 'px';\n\t}\n\n\tvar index = -1;\n\tvar children = target.childNodes;\n\tvar child;\n\n\twhile (child = children[++index]) {\n\t\tif (child.nodeType !== 1) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (tFlex) {\n\t\t\tvar old = child;\n\n\t\t\ttarget.replaceChild(child = flexibility.process.clone(child), old);\n\n\t\t\tvar childSetCSS = child.runtimeStyle;\n\n\t\t\tchildSetCSS.display = 'inline-block';\n\t\t\tchildSetCSS.verticalAlign = 'top';\n\t\t\tchildSetCSS.width = child.offsetWidth + 'px';\n\t\t}\n\n\t\tflexibility.process(child);\n\t}\n\n\tif (tFlex) {\n\t\tflexibility.measure(target);\n\t\tflexibility.transform(target);\n\t}\n};\n\nflexibility.process.clone = function (target) {\n\tvar clone = document.createElement(target.nodeName);\n\tvar attrs = target.attributes;\n\tvar index = -1;\n\tvar attr;\n\n\twhile (attr = attrs[++index]) {\n\t\tvar attrc = document.createAttribute(attr.name);\n\n\t\tattrc.value = attr.value;\n\n\t\tclone.setAttributeNode(attrc);\n\t}\n\n\twhile (target.lastChild) {\n\t\tclone.appendChild(target.firstChild);\n\t}\n\n\treturn clone;\n};\n","flexibility.properties = function (target) {\n\tvar style = target.onlayoutcomplete = target.onlayoutcomplete || {};\n\tvar getCSS = target.currentStyle;\n\n\t// var cssFlex = (getCSS.flex || '0 1 auto').split(/\\s+/);\n\t// var cssFlexFlow = (getCSS['flex-flow'] || 'row nowrap').split(/\\s+/);\n\n\tstyle.boxSizing = getCSS.boxSizing || 'content-box';\n\tstyle.display = getCSS['-js-display'] || getCSS.display;\n\n\tvar settings = {\n\t\talignContent: {\n\t\t\tinitial: 'stretch',\n\t\t\tvalid: /^(flex-start|flex-end|center|space-between|space-around|stretch)/\n\t\t},\n\t\talignItems: {\n\t\t\tinitial: 'stretch',\n\t\t\tvalid: /^(flex-start|flex-end|center|baseline|stretch)$/\n\t\t},\n\t\talignSelf: {\n\t\t\tinitial: 'auto',\n\t\t\tvalid: /^(auto|flex-start|flex-end|center|baseline|stretch)$/\n\t\t},\n\t\tflexBasis: {\n\t\t\tinitial: 'auto',\n\t\t\tvalid: /^((?:[-+]?0|[-+]?[0-9]*\\.?[0-9]+(?:%|ch|cm|em|ex|in|mm|pc|pt|px|rem|vh|vmax|vmin|vw))|auto|fill|max-content|min-content|fit-content|content)$/\n\t\t},\n\t\tflexDirection: {\n\t\t\tinitial: 'row',\n\t\t\tvalid: /^(row|row-reverse|column|column-reverse)$/\n\t\t},\n\t\tflexGrow: {\n\t\t\tinitial: '0',\n\t\t\tvalid: /^\\+?(0|[1-9][0-9]*)$/\n\t\t},\n\t\tflexShrink: {\n\t\t\tinitial: '0',\n\t\t\tvalid: /^\\+?(0|[1-9][0-9]*)$/\n\t\t},\n\t\tflexWrap: {\n\t\t\tinitial: 'nowrap',\n\t\t\tvalid: /^(nowrap|wrap|wrap-reverse)$/\n\t\t},\n\t\tjustifyContent: {\n\t\t\tinitial: 'flex-start',\n\t\t\tvalid: /^(flex-start|flex-end|center|space-between|space-around)$/\n\t\t},\n\t\torder: {\n\t\t\tinitial: '0',\n\t\t\tvalid: /^([-+]?[0-9]+)$/\n\t\t}\n\t};\n\n\tfor (var key in settings) {\n\t\tvar value = (getCSS[key.replace(/[A-Z]/g, '-$&').toLowerCase()] || '').toLowerCase();\n\n\t\tstyle[key] = settings[key].valid.test(value) ? value : settings[key].initial;\n\t}\n};\n","flexibility.transform = function (target) {\n\tvar flexStyle = target.onlayoutcomplete;\n\tvar direction = flexStyle.flexDirection;\n\tvar align = flexStyle.alignItems;\n\tvar justify = flexStyle.justifyContent;\n\n\tif (flexibility.transform.align[direction][align]) {\n\t\tflexibility.transform.align[direction][align](target);\n\t}\n\n\tif (flexibility.transform.justify[direction][justify]) {\n\t\tflexibility.transform.justify[direction][justify](target);\n\t}\n};\n\nflexibility.transform.align = {\n\trow: {\n\t\t'flex-start': function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\n\t\t\tflexibility.each(target, function (child) {\n\t\t\t\tflexibility.measure(child);\n\n\t\t\t\tvar childCSS = child.onlayoutcomplete;\n\n\t\t\t\tchild.runtimeStyle.marginBottom = targetCSS.contentHeight - childCSS.height - childCSS.marginBottom;\n\t\t\t});\n\t\t},\n\t\tcenter: function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\n\t\t\tflexibility.each(target, function (child) {\n\t\t\t\tflexibility.measure(child);\n\n\t\t\t\tvar childCSS = child.onlayoutcomplete;\n\n\t\t\t\tchild.runtimeStyle.marginTop = (targetCSS.contentHeight - childCSS.height) / 2 + 'px';\n\t\t\t});\n\t\t},\n\t\t'flex-end': function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\n\t\t\tflexibility.each(target, function (child) {\n\t\t\t\tflexibility.measure(child);\n\n\t\t\t\tvar childCSS = child.onlayoutcomplete;\n\n\t\t\t\tchild.runtimeStyle.marginTop = targetCSS.contentHeight - childCSS.height - childCSS.marginTop;\n\t\t\t});\n\t\t},\n\t\tstretch: function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\n\t\t\tflexibility.each(target, function (child) {\n\t\t\t\tflexibility.measure(child);\n\n\t\t\t\tvar childCSS = child.onlayoutcomplete;\n\n\t\t\t\tchild.runtimeStyle.height = targetCSS.contentHeight - childCSS.marginTop - childCSS.marginBottom + 'px';\n\t\t\t});\n\t\t}\n\t},\n\tcolumn: {\n\t\t'flex-start': function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\n\t\t\tflexibility.each(target, function (child) {\n\t\t\t\tflexibility.measure(child);\n\n\t\t\t\tvar childCSS = child.onlayoutcomplete;\n\n\t\t\t\tchild.runtimeStyle.marginRight = targetCSS.contentWidth - childCSS.width - childCSS.marginRight;\n\t\t\t});\n\t\t},\n\t\t'flex-end': function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\n\t\t\tflexibility.each(target, function (child) {\n\t\t\t\tflexibility.measure(child);\n\n\t\t\t\tvar childCSS = child.onlayoutcomplete;\n\n\t\t\t\tchild.runtimeStyle.marginLeft = targetCSS.contentWidth - childCSS.width - childCSS.marginLeft;\n\t\t\t});\n\t\t},\n\t\tcenter: function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\n\t\t\tflexibility.each(target, function (child) {\n\t\t\t\tflexibility.measure(child);\n\n\t\t\t\tvar childCSS = child.onlayoutcomplete;\n\n\t\t\t\tvar marginX = (targetCSS.contentWidth - childCSS.width) / 2 + 'px';\n\n\t\t\t\tchild.runtimeStyle.marginLeft = child.runtimeStyle.marginRight = marginX;\n\t\t\t});\n\t\t},\n\t\tstretch: function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\n\t\t\tflexibility.each(target, function (child) {\n\t\t\t\tflexibility.measure(child);\n\n\t\t\t\tvar childCSS = child.onlayoutcomplete;\n\n\t\t\t\tchild.runtimeStyle.width = targetCSS.contentWidth - childCSS.marginLeft - childCSS.marginRight + 'px';\n\t\t\t});\n\t\t}\n\t}\n};\n\nflexibility.transform.contentMeasurements = function (target) {\n\tvar childNodes = target.childNodes;\n\tvar index = -1;\n\tvar children = [];\n\tvar child, startOffsetX, startOffsetY, startStyle, endOffsetX, endOffsetY, endStyle;\n\n\twhile (child = childNodes[++index]) {\n\t\tif (child.nodeType === 1) {\n\t\t\tchildren.push(child);\n\n\t\t\tif (!startStyle) {\n\t\t\t\tstartStyle = child.runtimeStyle;\n\t\t\t\tstartOffsetX = child.offsetLeft;\n\t\t\t\tstartOffsetY = child.offsetTop;\n\t\t\t}\n\n\t\t\tendStyle = child.runtimeStyle;\n\t\t\tendOffsetX = child.offsetLeft + child.offsetWidth;\n\t\t\tendOffsetY = child.offsetTop + child.offsetHeight;\n\t\t}\n\t}\n\n\treturn {\n\t\tchildren: children,\n\t\tstartStyle: startStyle,\n\t\tendStyle: endStyle,\n\t\twidth: endOffsetX - startOffsetX,\n\t\theight: endOffsetY - startOffsetY\n\t};\n};\n\nflexibility.transform.justify = {\n\trow: {\n\t\t'flex-end': function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\t\t\tvar contents = flexibility.transform.contentMeasurements(target);\n\t\t\tvar lastChild = contents.children[contents.children.length - 1];\n\n\t\t\tflexibility.measure(lastChild);\n\n\t\t\tvar childCSS = lastChild.onlayoutcomplete;\n\n\t\t\tvar marginX = targetCSS.contentWidth - contents.width - childCSS.marginRight;\n\n\t\t\tcontents.startStyle.marginLeft = marginX + 'px';\n\t\t},\n\t\tcenter: function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\t\t\tvar contents = flexibility.transform.contentMeasurements(target);\n\n\t\t\tvar marginX = (targetCSS.contentWidth - contents.width) / 2;\n\n\t\t\tcontents.startStyle.marginLeft = marginX;\n\t\t\tcontents.endStyle.marginRight = marginX;\n\t\t}\n\t},\n\tcolumn: {\n\t\t'space-around': function (target) {\n\t\t\tvar targetCSS = target.onlayoutcomplete;\n\t\t\tvar contents = flexibility.transform.contentMeasurements(target);\n\n\t\t\tvar diff = targetCSS.contentHeight - contents.height;\n\t\t\tvar length = contents.children.length;\n\t\t\tvar margin = diff / (length * 2);\n\n\t\t\tvar index = -1;\n\t\t\tvar child;\n\n\t\t\twhile (child = contents.children[++index]) {\n\t\t\t\tchild.runtimeStyle.marginTop = margin + 'px';\n\t\t\t\tchild.runtimeStyle.marginBottom = margin + 'px';\n\t\t\t}\n\t\t}\n\t}\n};\n"],"sourceRoot":"/source/"}