{"version":3,"sources":["resize-sensor.js"],"names":["root","factory","define","amd","exports","module","ResizeSensor","window","this","globalWindow","Math","self","Function","requestAnimationFrame","mozRequestAnimationFrame","webkitRequestAnimationFrame","fn","setTimeout","forEachElement","elements","callback","elementsType","Object","prototype","toString","call","isCollectionTyped","jQuery","Elements","i","j","length","getElementSize","element","getBoundingClientRect","width","offsetWidth","height","offsetHeight","rect","round","setStyle","style","keys","forEach","key","EventQueue","q","add","ev","push","sizeInfo","remove","newQueue","attachResizeEvent","resized","resizedAttached","resizeSensor","document","createElement","dir","className","pointerEvents","position","left","top","right","bottom","overflow","zIndex","visibility","maxWidth","styleChild","transition","expand","expandChild","appendChild","shrink","shrinkChild","dirty","rafId","computedStyle","getComputedStyle","getPropertyValue","size","lastWidth","lastHeight","initialHiddenCheck","lastAnimationFrame","reset","scrollLeft","scrollTop","resetSensor","onResized","onScroll","addEvent","el","name","cb","attachEvent","addEventListener","elem","detach","contains","removeChild","MutationObserver","observer","mutations","hasOwnProperty","items","addedNodes","event","observe","body","childList","subtree"],"mappings":"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","file":"../resize-sensor.min.js","sourcesContent":["'use strict';\n\n/**\n * Copyright Marc J. Schmidt. See the LICENSE file at the top-level\n * directory of this distribution and at\n * https://github.com/marcj/css-element-queries/blob/master/LICENSE.\n */\n(function (root, factory) {\n\tif (typeof define === \"function\" && define.amd) {\n\t\tdefine(factory);\n\t} else if (typeof exports === \"object\") {\n\t\tmodule.exports = factory();\n\t} else {\n\t\troot.ResizeSensor = factory();\n\t}\n}(typeof window !== 'undefined' ? window : this, function () {\n\n\t// Make sure it does not throw in a SSR (Server Side Rendering) situation\n\tif (typeof window === \"undefined\") {\n\t\treturn null;\n\t}\n\t// https://github.com/Semantic-Org/Semantic-UI/issues/3855\n\t// https://github.com/marcj/css-element-queries/issues/257\n\tvar globalWindow = typeof window != 'undefined' && window.Math == Math\n\t\t? window\n\t\t: typeof self != 'undefined' && self.Math == Math\n\t\t\t? self\n\t\t\t: Function('return this')();\n\t// Only used for the dirty checking, so the event callback count is limited to max 1 call per fps per sensor.\n\t// In combination with the event based resize sensor this saves cpu time, because the sensor is too fast and\n\t// would generate too many unnecessary events.\n\tvar requestAnimationFrame = globalWindow.requestAnimationFrame ||\n\t\tglobalWindow.mozRequestAnimationFrame ||\n\t\tglobalWindow.webkitRequestAnimationFrame ||\n\t\tfunction (fn) {\n\t\t\treturn globalWindow.setTimeout(fn, 20);\n\t\t};\n\n\t/**\n\t * Iterate over each of the provided element(s).\n\t *\n\t * @param {HTMLElement|HTMLElement[]} elements\n\t * @param {Function} callback\n\t */\n\tfunction forEachElement(elements, callback){\n\t\tvar elementsType = Object.prototype.toString.call(elements);\n\t\tvar isCollectionTyped = ('[object Array]' === elementsType\n\t\t\t|| ('[object NodeList]' === elementsType)\n\t\t\t|| ('[object HTMLCollection]' === elementsType)\n\t\t\t|| ('[object Object]' === elementsType)\n\t\t\t|| ('undefined' !== typeof jQuery && elements instanceof jQuery) //jquery\n\t\t\t|| ('undefined' !== typeof Elements && elements instanceof Elements) //mootools\n\t\t);\n\t\tvar i = 0, j = elements.length;\n\t\tif (isCollectionTyped) {\n\t\t\tfor (; i < j; i++) {\n\t\t\t\tcallback(elements[i]);\n\t\t\t}\n\t\t} else {\n\t\t\tcallback(elements);\n\t\t}\n\t}\n\n\t/**\n\t * Get element size\n\t * @param {HTMLElement} element\n\t * @returns {Object} {width, height}\n\t */\n\tfunction getElementSize(element) {\n\t\tif (!element.getBoundingClientRect) {\n\t\t\treturn {\n\t\t\t\twidth: element.offsetWidth,\n\t\t\t\theight: element.offsetHeight\n\t\t\t}\n\t\t}\n\n\t\tvar rect = element.getBoundingClientRect();\n\t\treturn {\n\t\t\twidth: Math.round(rect.width),\n\t\t\theight: Math.round(rect.height)\n\t\t}\n\t}\n\n\t/**\n\t * Apply CSS styles to element.\n\t *\n\t * @param {HTMLElement} element\n\t * @param {Object} style\n\t */\n\tfunction setStyle(element, style) {\n\t\tObject.keys(style).forEach(function(key) {\n\t\t\telement.style[key] = style[key];\n\t\t});\n\t}\n\n\t/**\n\t * Class for dimension change detection.\n\t *\n\t * @param {Element|Element[]|Elements|jQuery} element\n\t * @param {Function} callback\n\t *\n\t * @constructor\n\t */\n\tvar ResizeSensor = function(element, callback) {\n\t\t/**\n\t\t *\n\t\t * @constructor\n\t\t */\n\t\tfunction EventQueue() {\n\t\t\tvar q = [];\n\t\t\tthis.add = function(ev) {\n\t\t\t\tq.push(ev);\n\t\t\t};\n\n\t\t\tvar i, j;\n\t\t\tthis.call = function(sizeInfo) {\n\t\t\t\tfor (i = 0, j = q.length; i < j; i++) {\n\t\t\t\t\tq[i].call(this, sizeInfo);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tthis.remove = function(ev) {\n\t\t\t\tvar newQueue = [];\n\t\t\t\tfor(i = 0, j = q.length; i < j; i++) {\n\t\t\t\t\tif(q[i] !== ev) newQueue.push(q[i]);\n\t\t\t\t}\n\t\t\t\tq = newQueue;\n\t\t\t};\n\n\t\t\tthis.length = function() {\n\t\t\t\treturn q.length;\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t *\n\t\t * @param {HTMLElement} element\n\t\t * @param {Function} resized\n\t\t */\n\t\tfunction attachResizeEvent(element, resized) {\n\t\t\tif (!element) return;\n\t\t\tif (element.resizedAttached) {\n\t\t\t\telement.resizedAttached.add(resized);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\telement.resizedAttached = new EventQueue();\n\t\t\telement.resizedAttached.add(resized);\n\n\t\t\telement.resizeSensor = document.createElement('div');\n\t\t\telement.resizeSensor.dir = 'ltr';\n\t\t\telement.resizeSensor.className = 'resize-sensor';\n\n\t\t\tvar style = {\n\t\t\t\tpointerEvents: 'none',\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: '0px',\n\t\t\t\ttop: '0px',\n\t\t\t\tright: '0px',\n\t\t\t\tbottom: '0px',\n\t\t\t\toverflow: 'hidden',\n\t\t\t\tzIndex: '-1',\n\t\t\t\tvisibility: 'hidden',\n\t\t\t\tmaxWidth: '100%'\n\t\t\t};\n\t\t\tvar styleChild = {\n\t\t\t\tposition: 'absolute',\n\t\t\t\tleft: '0px',\n\t\t\t\ttop: '0px',\n\t\t\t\ttransition: '0s',\n\t\t\t};\n\n\t\t\tsetStyle(element.resizeSensor, style);\n\n\t\t\tvar expand = document.createElement('div');\n\t\t\texpand.className = 'resize-sensor-expand';\n\t\t\tsetStyle(expand, style);\n\n\t\t\tvar expandChild = document.createElement('div');\n\t\t\tsetStyle(expandChild, styleChild);\n\t\t\texpand.appendChild(expandChild);\n\n\t\t\tvar shrink = document.createElement('div');\n\t\t\tshrink.className = 'resize-sensor-shrink';\n\t\t\tsetStyle(shrink, style);\n\n\t\t\tvar shrinkChild = document.createElement('div');\n\t\t\tsetStyle(shrinkChild, styleChild);\n\t\t\tsetStyle(shrinkChild, { width: '200%', height: '200%' });\n\t\t\tshrink.appendChild(shrinkChild);\n\n\t\t\telement.resizeSensor.appendChild(expand);\n\t\t\telement.resizeSensor.appendChild(shrink);\n\t\t\telement.appendChild(element.resizeSensor);\n\n\t\t\tvar computedStyle = window.getComputedStyle(element);\n\t\t\tvar position = computedStyle ? computedStyle.getPropertyValue('position') : null;\n\t\t\tif ('absolute' !== position && 'relative' !== position && 'fixed' !== position) {\n\t\t\t\telement.style.position = 'relative';\n\t\t\t}\n\n\t\t\tvar dirty, rafId;\n\t\t\tvar size = getElementSize(element);\n\t\t\tvar lastWidth = 0;\n\t\t\tvar lastHeight = 0;\n\t\t\tvar initialHiddenCheck = true;\n\t\t\tvar lastAnimationFrame = 0;\n\n\t\t\tvar resetExpandShrink = function () {\n\t\t\t\tvar width = element.offsetWidth;\n\t\t\t\tvar height = element.offsetHeight;\n\n\t\t\t\texpandChild.style.width = (width + 10) + 'px';\n\t\t\t\texpandChild.style.height = (height + 10) + 'px';\n\n\t\t\t\texpand.scrollLeft = width + 10;\n\t\t\t\texpand.scrollTop = height + 10;\n\n\t\t\t\tshrink.scrollLeft = width + 10;\n\t\t\t\tshrink.scrollTop = height + 10;\n\t\t\t};\n\n\t\t\tvar reset = function() {\n\t\t\t\t// Check if element is hidden\n\t\t\t\tif (initialHiddenCheck) {\n\t\t\t\t\tvar invisible = element.offsetWidth === 0 && element.offsetHeight === 0;\n\t\t\t\t\tif (invisible) {\n\t\t\t\t\t\t// Check in next frame\n\t\t\t\t\t\tif (!lastAnimationFrame){\n\t\t\t\t\t\t\tlastAnimationFrame = requestAnimationFrame(function(){\n\t\t\t\t\t\t\t\tlastAnimationFrame = 0;\n\n\t\t\t\t\t\t\t\treset();\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Stop checking\n\t\t\t\t\t\tinitialHiddenCheck = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tresetExpandShrink();\n\t\t\t};\n\t\t\telement.resizeSensor.resetSensor = reset;\n\n\t\t\tvar onResized = function() {\n\t\t\t\trafId = 0;\n\n\t\t\t\tif (!dirty) return;\n\n\t\t\t\tlastWidth = size.width;\n\t\t\t\tlastHeight = size.height;\n\n\t\t\t\tif (element.resizedAttached) {\n\t\t\t\t\telement.resizedAttached.call(size);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tvar onScroll = function() {\n\t\t\t\tsize = getElementSize(element);\n\t\t\t\tdirty = size.width !== lastWidth || size.height !== lastHeight;\n\n\t\t\t\tif (dirty && !rafId) {\n\t\t\t\t\trafId = requestAnimationFrame(onResized);\n\t\t\t\t}\n\n\t\t\t\treset();\n\t\t\t};\n\n\t\t\tvar addEvent = function(el, name, cb) {\n\t\t\t\tif (el.attachEvent) {\n\t\t\t\t\tel.attachEvent('on' + name, cb);\n\t\t\t\t} else {\n\t\t\t\t\tel.addEventListener(name, cb);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\taddEvent(expand, 'scroll', onScroll);\n\t\t\taddEvent(shrink, 'scroll', onScroll);\n\n\t\t\t// Fix for custom Elements\n\t\t\trequestAnimationFrame(reset);\n\t\t}\n\n\t\tforEachElement(element, function(elem){\n\t\t\tattachResizeEvent(elem, callback);\n\t\t});\n\n\t\tthis.detach = function(ev) {\n\t\t\tResizeSensor.detach(element, ev);\n\t\t};\n\n\t\tthis.reset = function() {\n\t\t\telement.resizeSensor.resetSensor();\n\t\t};\n\t};\n\n\tResizeSensor.reset = function(element) {\n\t\tforEachElement(element, function(elem){\n\t\t\telem.resizeSensor.resetSensor();\n\t\t});\n\t};\n\n\tResizeSensor.detach = function(element, ev) {\n\t\tforEachElement(element, function(elem){\n\t\t\tif (!elem) return;\n\t\t\tif(elem.resizedAttached && typeof ev === \"function\"){\n\t\t\t\telem.resizedAttached.remove(ev);\n\t\t\t\tif(elem.resizedAttached.length()) return;\n\t\t\t}\n\t\t\tif (elem.resizeSensor) {\n\t\t\t\tif (elem.contains(elem.resizeSensor)) {\n\t\t\t\t\telem.removeChild(elem.resizeSensor);\n\t\t\t\t}\n\t\t\t\tdelete elem.resizeSensor;\n\t\t\t\tdelete elem.resizedAttached;\n\t\t\t}\n\t\t});\n\t};\n\n\tif (typeof MutationObserver !== \"undefined\") {\n\t\tvar observer = new MutationObserver(function (mutations) {\n\t\t\tfor (var i in mutations) {\n\t\t\t\tif (mutations.hasOwnProperty(i)) {\n\t\t\t\t\tvar items = mutations[i].addedNodes;\n\t\t\t\t\tfor (var j = 0; j < items.length; j++) {\n\t\t\t\t\t\tif (items[j].resizeSensor) {\n\t\t\t\t\t\t\tResizeSensor.reset(items[j]);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\tdocument.addEventListener(\"DOMContentLoaded\", function (event) {\n\t\t\tobserver.observe(document.body, {\n\t\t\t\tchildList: true,\n\t\t\t\tsubtree: true,\n\t\t\t});\n\t\t});\n\t}\n\n\treturn ResizeSensor;\n\n}));\n"]}