@mtdt.temp/browser-rum-core
Version: 
Datadog browser RUM core utilities.
37 lines • 1.48 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.initViewportObservable = initViewportObservable;
exports.createViewportObservable = createViewportObservable;
exports.getViewportDimension = getViewportDimension;
const browser_core_1 = require("@mtdt.temp/browser-core");
let viewportObservable;
function initViewportObservable(configuration) {
    if (!viewportObservable) {
        viewportObservable = createViewportObservable(configuration);
    }
    return viewportObservable;
}
function createViewportObservable(configuration) {
    return new browser_core_1.Observable((observable) => {
        const { throttled: updateDimension } = (0, browser_core_1.throttle)(() => {
            observable.notify(getViewportDimension());
        }, 200);
        return (0, browser_core_1.addEventListener)(configuration, window, "resize" /* DOM_EVENT.RESIZE */, updateDimension, { capture: true, passive: true })
            .stop;
    });
}
// excludes the width and height of any rendered classic scrollbar that is fixed to the visual viewport
function getViewportDimension() {
    const visual = window.visualViewport;
    if (visual) {
        return {
            width: Number(visual.width * visual.scale),
            height: Number(visual.height * visual.scale),
        };
    }
    return {
        width: Number(window.innerWidth || 0),
        height: Number(window.innerHeight || 0),
    };
}
//# sourceMappingURL=viewportObservable.js.map