@lifaon/rx-js-light
Version:
Blazing fast Observables
46 lines (45 loc) • 1.56 kB
JavaScript
;
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;