(element, callback)
| 109 | * @constructor |
| 110 | */ |
| 111 | var ResizeSensor = function(element, callback) { |
| 112 | //Is used when checking in reset() only for invisible elements |
| 113 | var lastAnimationFrameForInvisibleCheck = 0; |
| 114 | |
| 115 | /** |
| 116 | * |
| 117 | * @constructor |
| 118 | */ |
| 119 | function EventQueue() { |
| 120 | var q = []; |
| 121 | this.add = function(ev) { |
| 122 | q.push(ev); |
| 123 | }; |
| 124 | |
| 125 | var i, j; |
| 126 | this.call = function(sizeInfo) { |
| 127 | for (i = 0, j = q.length; i < j; i++) { |
| 128 | q[i].call(this, sizeInfo); |
| 129 | } |
| 130 | }; |
| 131 | |
| 132 | this.remove = function(ev) { |
| 133 | var newQueue = []; |
| 134 | for(i = 0, j = q.length; i < j; i++) { |
| 135 | if(q[i] !== ev) newQueue.push(q[i]); |
| 136 | } |
| 137 | q = newQueue; |
| 138 | }; |
| 139 | |
| 140 | this.length = function() { |
| 141 | return q.length; |
| 142 | } |
| 143 | } |
| 144 | |
| 145 | /** |
| 146 | * |
| 147 | * @param {HTMLElement} element |
| 148 | * @param {Function} resized |
| 149 | */ |
| 150 | function attachResizeEvent(element, resized) { |
| 151 | if (!element) return; |
| 152 | if (element.resizedAttached) { |
| 153 | element.resizedAttached.add(resized); |
| 154 | return; |
| 155 | } |
| 156 | |
| 157 | element.resizedAttached = new EventQueue(); |
| 158 | element.resizedAttached.add(resized); |
| 159 | |
| 160 | element.resizeSensor = document.createElement('div'); |
| 161 | element.resizeSensor.dir = 'ltr'; |
| 162 | element.resizeSensor.className = 'resize-sensor'; |
| 163 | |
| 164 | var style = { |
| 165 | pointerEvents: 'none', |
| 166 | position: 'absolute', |
| 167 | left: '0px', |
| 168 | top: '0px', |
nothing calls this directly
no test coverage detected