* * @param {HTMLElement} element * @param {Function} resized
(element, resized)
| 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', |
| 169 | right: '0px', |
| 170 | bottom: '0px', |
| 171 | overflow: 'hidden', |
| 172 | zIndex: '-1', |
| 173 | visibility: 'hidden', |
| 174 | maxWidth: '100%' |
| 175 | }; |
| 176 | var styleChild = { |
| 177 | position: 'absolute', |
| 178 | left: '0px', |
| 179 | top: '0px', |
| 180 | transition: '0s', |
| 181 | }; |
| 182 | |
| 183 | setStyle(element.resizeSensor, style); |
| 184 | |
| 185 | var expand = document.createElement('div'); |
| 186 | expand.className = 'resize-sensor-expand'; |
| 187 | setStyle(expand, style); |
| 188 | |
| 189 | var expandChild = document.createElement('div'); |
| 190 | setStyle(expandChild, styleChild); |
| 191 | expand.appendChild(expandChild); |
| 192 | |
| 193 | var shrink = document.createElement('div'); |
| 194 | shrink.className = 'resize-sensor-shrink'; |
| 195 | setStyle(shrink, style); |
| 196 | |
| 197 | var shrinkChild = document.createElement('div'); |
| 198 | setStyle(shrinkChild, styleChild); |
| 199 | setStyle(shrinkChild, { width: '200%', height: '200%' }); |
| 200 | shrink.appendChild(shrinkChild); |
| 201 | |
| 202 | element.resizeSensor.appendChild(expand); |
| 203 | element.resizeSensor.appendChild(shrink); |
| 204 | element.appendChild(element.resizeSensor); |
| 205 | |
| 206 | var computedStyle = window.getComputedStyle(element); |
| 207 | var position = computedStyle ? computedStyle.getPropertyValue('position') : null; |
no test coverage detected