All files / src/utils/dom resize-event.js

63.63% Statements 7/11
25% Branches 1/4
33.33% Functions 1/3
70% Lines 7/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28    7x             7x 648x 648x 648x 648x   648x                        
import ResizeObserver from 'resize-observer-polyfill';
 
const resizeHandler = function (entries) {
    for (const entry of entries) {
        const listeners = entry.target.__resizeListeners__ || [];
        listeners.forEach((listener) => listener());
    }
};
 
export const addResizeListener = function (element, listener) {
    Eif (!element.__resizeListeners__) {
        element.__resizeListeners__ = [];
        element.__ro__ = new ResizeObserver(resizeHandler);
        element.__ro__.observe(element);
    }
    element.__resizeListeners__.push(listener);
};
 
/* istanbul ignore next */
export const removeResizeListener = function (element, listener) {
    if (!element || !element.__resizeListeners__)
        return;
    element.__resizeListeners__.splice(element.__resizeListeners__.indexOf(listener), 1);
    if (!element.__resizeListeners__.length) {
        element.__ro__.disconnect();
    }
};