@opensig/opendesign
Version:
40 lines (39 loc) • 1.11 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const vue = require("vue");
const dom = require("../_utils/dom.js");
const useResizeObserver = require("./use-resize-observer.js");
function useElementOverflown(elementRef) {
const result = vue.ref(false);
const check = () => {
result.value = dom.isOverflown(vue.toValue(elementRef) ?? void 0);
};
vue.onMounted(() => {
const { observe, unobserve } = useResizeObserver.useResizeObserver();
const el = vue.toValue(elementRef);
if (el) {
check();
observe(el, check);
}
const stopWatch = vue.watch(
() => vue.toValue(elementRef),
(_el, oldEl) => {
if (oldEl) unobserve(oldEl, check);
if (_el) {
check();
observe(_el, check);
} else {
result.value = false;
}
},
{ flush: "post" }
);
vue.onUnmounted(() => {
stopWatch();
const _el = vue.toValue(elementRef);
if (_el) unobserve(_el, check);
});
});
return result;
}
exports.useElementOverflown = useElementOverflown;