12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- 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 };
|