This commit is contained in:
49
node_modules/@juggle/resize-observer/lib/ResizeObserverController.js
generated
vendored
Normal file
49
node_modules/@juggle/resize-observer/lib/ResizeObserverController.js
generated
vendored
Normal file
@@ -0,0 +1,49 @@
|
||||
import { scheduler, updateCount } from './utils/scheduler';
|
||||
import { ResizeObservation } from './ResizeObservation';
|
||||
import { ResizeObserverDetail } from './ResizeObserverDetail';
|
||||
import { resizeObservers } from './utils/resizeObservers';
|
||||
var observerMap = new WeakMap();
|
||||
var getObservationIndex = function (observationTargets, target) {
|
||||
for (var i = 0; i < observationTargets.length; i += 1) {
|
||||
if (observationTargets[i].target === target) {
|
||||
return i;
|
||||
}
|
||||
}
|
||||
return -1;
|
||||
};
|
||||
var ResizeObserverController = (function () {
|
||||
function ResizeObserverController() {
|
||||
}
|
||||
ResizeObserverController.connect = function (resizeObserver, callback) {
|
||||
var detail = new ResizeObserverDetail(resizeObserver, callback);
|
||||
observerMap.set(resizeObserver, detail);
|
||||
};
|
||||
ResizeObserverController.observe = function (resizeObserver, target, options) {
|
||||
var detail = observerMap.get(resizeObserver);
|
||||
var firstObservation = detail.observationTargets.length === 0;
|
||||
if (getObservationIndex(detail.observationTargets, target) < 0) {
|
||||
firstObservation && resizeObservers.push(detail);
|
||||
detail.observationTargets.push(new ResizeObservation(target, options && options.box));
|
||||
updateCount(1);
|
||||
scheduler.schedule();
|
||||
}
|
||||
};
|
||||
ResizeObserverController.unobserve = function (resizeObserver, target) {
|
||||
var detail = observerMap.get(resizeObserver);
|
||||
var index = getObservationIndex(detail.observationTargets, target);
|
||||
var lastObservation = detail.observationTargets.length === 1;
|
||||
if (index >= 0) {
|
||||
lastObservation && resizeObservers.splice(resizeObservers.indexOf(detail), 1);
|
||||
detail.observationTargets.splice(index, 1);
|
||||
updateCount(-1);
|
||||
}
|
||||
};
|
||||
ResizeObserverController.disconnect = function (resizeObserver) {
|
||||
var _this = this;
|
||||
var detail = observerMap.get(resizeObserver);
|
||||
detail.observationTargets.slice().forEach(function (ot) { return _this.unobserve(resizeObserver, ot.target); });
|
||||
detail.activeTargets.splice(0, detail.activeTargets.length);
|
||||
};
|
||||
return ResizeObserverController;
|
||||
}());
|
||||
export { ResizeObserverController };
|
||||
Reference in New Issue
Block a user