box-overflow-core
Version:
Headless UI for automatically collapsing boxes when overflow.
66 lines (65 loc) • 2 kB
JavaScript
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