UNPKG

@lifaon/rx-js-light

Version:

Blazing fast Observables

46 lines (45 loc) 1.56 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.fromResizeObserver = void 0; var create_multicast_source_1 = require("../../../../../../observer-observable-pair/build-in/source/built-in/multicast-source/create-multicast-source.cjs"); var freeze_1 = require("../../../../../../misc/helpers/freeze.cjs"); var RESIZE_OBSERVER_AND_SUBSCRIPTION_CACHED; function getResizeObserverAndSubscription() { if (RESIZE_OBSERVER_AND_SUBSCRIPTION_CACHED === void 0) { var source_1 = (0, create_multicast_source_1.createMulticastSource)(); var observer = new ResizeObserver(function (entries) { source_1.emit(entries); }); RESIZE_OBSERVER_AND_SUBSCRIPTION_CACHED = (0, freeze_1.freeze)({ subscribe: source_1.subscribe, observer: observer }); } return RESIZE_OBSERVER_AND_SUBSCRIPTION_CACHED; } function fromResizeObserver(element, options) { return function (emit) { var running = true; var _a = getResizeObserverAndSubscription(), subscribe = _a.subscribe, observer = _a.observer; var unsubscribe = subscribe(function (entries) { for (var i = 0, l = entries.length; i < l; i++) { var entry = entries[i]; if (running && entry.target === element) { emit(entry); break; } } }); observer.observe(element, options); return function () { if (running) { running = false; unsubscribe(); observer.unobserve(element); } }; }; } exports.fromResizeObserver = fromResizeObserver;