MCPcopy
hub / github.com/marcj/css-element-queries / ResizeSensor

Function ResizeSensor

src/ResizeSensor.js:111–318  ·  view source on GitHub ↗
(element, callback)

Source from the content-addressed store, hash-verified

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',

Callers

nothing calls this directly

Calls 2

forEachElementFunction · 0.85
attachResizeEventFunction · 0.85

Tested by

no test coverage detected