UNPKG

box-overflow-core

Version:

Headless UI for automatically collapsing boxes when overflow.

66 lines (65 loc) 2 kB
var __defProp = Object.defineProperty; var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value; var __publicField = (obj, key, value) => { __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value); return value; }; import { ObserverType } from "./types.js"; class Observer { constructor(type, handler) { __publicField(this, "_observer", null); this.type = type; this.handler = handler; } static createResizeObserver(handler) { return new Observer(ObserverType.Resize, handler); } static createMutationObserver(handler) { return new Observer(ObserverType.Mutation, handler); } get ob() { if (this._observer) return this._observer; if (this.type === ObserverType.Resize) { if (typeof ResizeObserver !== "undefined") { return this._observer = new ResizeObserver((entries) => { entries.forEach((entry) => { this.handler(entry.target, entry); }); }); } return null; } else { if (typeof MutationObserver !== "undefined") { return this._observer = new MutationObserver((mutations) => { mutations.forEach((mutation) => { if (mutation.type === "childList") this.handler(mutation); }); }); } return null; } } observe(target) { var _a, _b; if (this.type === ObserverType.Resize) (_a = this.ob) == null ? void 0 : _a.observe(target, { box: "border-box" }); else (_b = this.ob) == null ? void 0 : _b.observe(target, { childList: true }); } unobserve(target) { var _a; this.ob instanceof ResizeObserver && ((_a = this.ob) == null ? void 0 : _a.unobserve(target)); } disconnect() { var _a; if (!this.ob) return; (_a = this.ob) == null ? void 0 : _a.disconnect(); } } export { Observer }; //# sourceMappingURL=observer.js.map