{"version":3,"sources":["ResizeSensor.js"],"names":["ResizeSensor","element","callback","EventQueue","this","q","add","ev","push","i","j","call","length","getComputedStyle","prop","currentStyle","window","getPropertyValue","style","attachResizeEvent","resized","resizedAttached","resizeSensor","document","createElement","className","styleChild","cssText","innerHTML","appendChild","fixed","absolute","position","lastWidth","lastHeight","expand","childNodes","expandChild","shrink","reset","width","offsetWidth","height","offsetHeight","scrollLeft","scrollWidth","scrollTop","scrollHeight","changed","addEvent","el","name","cb","attachEvent","addEventListener","onScroll","elementType","Object","prototype","toString","isCollectionTyped","jQuery","Elements","detach","removeChild","module","exports"],"mappings":"CAMA,WAUA,GAAAA,GAAA,SAAAC,EAAAC,GAKA,QAAAC,KACAC,KAAAC,KACAD,KAAAE,IAAA,SAAAC,GACAH,KAAAC,EAAAG,KAAAD,GAGA,IAAAE,GAAAC,CACAN,MAAAO,KAAA,WACA,IAAAF,EAAA,EAAAC,EAAAN,KAAAC,EAAAO,OAAAH,EAAAC,EAAAD,IACAL,KAAAC,EAAAI,GAAAE,QAUA,QAAAE,GAAAZ,EAAAa,GACA,MAAAb,GAAAc,aACAd,EAAAc,aAAAD,GACAE,OAAAH,iBACAG,OAAAH,iBAAAZ,EAAA,MAAAgB,iBAAAH,GAEAb,EAAAiB,MAAAJ,GASA,QAAAK,GAAAlB,EAAAmB,GACA,GAAAnB,EAAAoB,iBAGA,GAAApB,EAAAoB,gBAEA,WADApB,GAAAoB,gBAAAf,IAAAc,OAHAnB,GAAAoB,gBAAA,GAAAlB,GACAF,EAAAoB,gBAAAf,IAAAc,EAMAnB,GAAAqB,aAAAC,SAAAC,cAAA,OACAvB,EAAAqB,aAAAG,UAAA,eACA,IAAAP,GAAA,+GACAQ,EAAA,sDAEAzB,GAAAqB,aAAAJ,MAAAS,QAAAT,EACAjB,EAAAqB,aAAAM,UACA,4CAAAV,EAAA,iBACAQ,EAAA,0DAEAR,EAAA,iBACAQ,EAAA,2CAEAzB,EAAA4B,YAAA5B,EAAAqB,eAEAQ,MAAA,EAAAC,SAAA,GAAAlB,EAAAZ,EAAA,eACAA,EAAAiB,MAAAc,SAAA,WAGA,IAKAC,GAAAC,EALAC,EAAAlC,EAAAqB,aAAAc,WAAA,GACAC,EAAAF,EAAAC,WAAA,GACAE,EAAArC,EAAAqB,aAAAc,WAAA,GAKAG,GAJAD,EAAAF,WAAA,GAIA,WACAC,EAAAnB,MAAAsB,MAAAL,EAAAM,YAAA,GAAA,KACAJ,EAAAnB,MAAAwB,OAAAP,EAAAQ,aAAA,GAAA,KACAR,EAAAS,WAAAT,EAAAU,YACAV,EAAAW,UAAAX,EAAAY,aACAT,EAAAM,WAAAN,EAAAO,YACAP,EAAAQ,UAAAR,EAAAS,aACAd,EAAAhC,EAAAwC,YACAP,EAAAjC,EAAA0C,cAGAJ,IAEA,IAAAS,GAAA,WACA/C,EAAAoB,iBACApB,EAAAoB,gBAAAV,QAIAsC,EAAA,SAAAC,EAAAC,EAAAC,GACAF,EAAAG,YACAH,EAAAG,YAAA,KAAAF,EAAAC,GAEAF,EAAAI,iBAAAH,EAAAC,IAIAG,EAAA,WACAtD,EAAAwC,aAAAR,GAAAhC,EAAA0C,cAAAT,GACAc,IAEAT,IAGAU,GAAAd,EAAA,SAAAoB,GACAN,EAAAX,EAAA,SAAAiB,GAGA,GAAAC,GAAAC,OAAAC,UAAAC,SAAAhD,KAAAV,GACA2D,EAAA,mBAAAJ,GACA,sBAAAA,GACA,4BAAAA,GACA,mBAAAK,SAAA5D,YAAA4D,SACA,mBAAAC,WAAA7D,YAAA6D,SAGA,IAAAF,EAEA,IADA,GAAAnD,GAAA,EAAAC,EAAAT,EAAAW,OACAH,EAAAC,EAAAD,IACAU,EAAAlB,EAAAQ,GAAAP,OAGAiB,GAAAlB,EAAAC,EAGAE,MAAA2D,OAAA,WACA,GAAAH,EAEA,IADA,GAAAnD,GAAA,EAAAC,EAAAT,EAAAW,OACAH,EAAAC,EAAAD,IACAT,EAAA+D,OAAA9D,EAAAQ,QAGAT,GAAA+D,OAAA9D,IAKAD,GAAA+D,OAAA,SAAA9D,GACAA,EAAAqB,eACArB,EAAA+D,YAAA/D,EAAAqB,oBACArB,GAAAqB,mBACArB,GAAAoB,kBAKA,mBAAA4C,SAAA,mBAAAA,QAAAC,QACAD,OAAAC,QAAAlE,EAGAgB,OAAAhB,aAAAA","file":"../ResizeSensor.min.js","sourcesContent":["/**\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;\n(function() {\n\n /**\n * Class for dimension change detection.\n *\n * @param {Element|Element[]|Elements|jQuery} element\n * @param {Function} callback\n *\n * @constructor\n */\n var ResizeSensor = function(element, callback) {\n /**\n *\n * @constructor\n */\n function EventQueue() {\n this.q = [];\n this.add = function(ev) {\n this.q.push(ev);\n };\n\n var i, j;\n this.call = function() {\n for (i = 0, j = this.q.length; i < j; i++) {\n this.q[i].call();\n }\n };\n }\n\n /**\n * @param {HTMLElement} element\n * @param {String} prop\n * @returns {String|Number}\n */\n function getComputedStyle(element, prop) {\n if (element.currentStyle) {\n return element.currentStyle[prop];\n } else if (window.getComputedStyle) {\n return window.getComputedStyle(element, null).getPropertyValue(prop);\n } else {\n return element.style[prop];\n }\n }\n\n /**\n *\n * @param {HTMLElement} element\n * @param {Function} resized\n */\n function attachResizeEvent(element, resized) {\n if (!element.resizedAttached) {\n element.resizedAttached = new EventQueue();\n element.resizedAttached.add(resized);\n } else if (element.resizedAttached) {\n element.resizedAttached.add(resized);\n return;\n }\n\n element.resizeSensor = document.createElement('div');\n element.resizeSensor.className = 'resize-sensor';\n var style = 'position: absolute; left: 0; top: 0; right: 0; bottom: 0; overflow: hidden; z-index: -1; visibility: hidden;';\n var styleChild = 'position: absolute; left: 0; top: 0; transition: 0s;';\n\n element.resizeSensor.style.cssText = style;\n element.resizeSensor.innerHTML =\n '
' +\n '
' +\n '
' +\n '
' +\n '
' +\n '
';\n element.appendChild(element.resizeSensor);\n\n if (!{fixed: 1, absolute: 1}[getComputedStyle(element, 'position')]) {\n element.style.position = 'relative';\n }\n\n var expand = element.resizeSensor.childNodes[0];\n var expandChild = expand.childNodes[0];\n var shrink = element.resizeSensor.childNodes[1];\n var shrinkChild = shrink.childNodes[0];\n\n var lastWidth, lastHeight;\n\n var reset = function() {\n expandChild.style.width = expand.offsetWidth + 10 + 'px';\n expandChild.style.height = expand.offsetHeight + 10 + 'px';\n expand.scrollLeft = expand.scrollWidth;\n expand.scrollTop = expand.scrollHeight;\n shrink.scrollLeft = shrink.scrollWidth;\n shrink.scrollTop = shrink.scrollHeight;\n lastWidth = element.offsetWidth;\n lastHeight = element.offsetHeight;\n };\n\n reset();\n\n var changed = function() {\n if (element.resizedAttached) {\n element.resizedAttached.call();\n }\n };\n\n var addEvent = function(el, name, cb) {\n if (el.attachEvent) {\n el.attachEvent('on' + name, cb);\n } else {\n el.addEventListener(name, cb);\n }\n };\n\n var onScroll = function() {\n if (element.offsetWidth != lastWidth || element.offsetHeight != lastHeight) {\n changed();\n }\n reset();\n };\n\n addEvent(expand, 'scroll', onScroll);\n addEvent(shrink, 'scroll', onScroll);\n }\n\n var elementType = Object.prototype.toString.call(element);\n var isCollectionTyped = ('[object Array]' === elementType\n || ('[object NodeList]' === elementType)\n || ('[object HTMLCollection]' === elementType)\n || ('undefined' !== typeof jQuery && element instanceof jQuery) //jquery\n || ('undefined' !== typeof Elements && element instanceof Elements) //mootools\n );\n\n if (isCollectionTyped) {\n var i = 0, j = element.length;\n for (; i < j; i++) {\n attachResizeEvent(element[i], callback);\n }\n } else {\n attachResizeEvent(element, callback);\n }\n\n this.detach = function() {\n if (isCollectionTyped) {\n var i = 0, j = element.length;\n for (; i < j; i++) {\n ResizeSensor.detach(element[i]);\n }\n } else {\n ResizeSensor.detach(element);\n }\n };\n };\n\n ResizeSensor.detach = function(element) {\n if (element.resizeSensor) {\n element.removeChild(element.resizeSensor);\n delete element.resizeSensor;\n delete element.resizedAttached;\n }\n };\n\n // make available to common module loader\n if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') {\n module.exports = ResizeSensor;\n }\n else {\n window.ResizeSensor = ResizeSensor;\n }\n\n})();\n"]}