UNPKG

@josmangarsal/pragmatic-scheduler

Version:
60 lines (59 loc) 2.17 kB
"use strict"; var __read = (this && this.__read) || function (o, n) { var m = typeof Symbol === "function" && o[Symbol.iterator]; if (!m) return o; var i = m.call(o), r, ar = [], e; try { while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); } catch (error) { e = { error: error }; } finally { try { if (r && !r.done && (m = i["return"])) m.call(i); } finally { if (e) throw e.error; } } return ar; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.useEllipsisObserver = void 0; var react_1 = require("react"); var useEllipsisObserver = function (ref) { var _a = __read((0, react_1.useState)(false), 2), isEllipsis = _a[0], setIsEllipsis = _a[1]; (0, react_1.useEffect)(function () { var el = ref.current; if (!el) return; var getLeafElements = function (node) { var leafNodes = []; var traverse = function (n) { if (!(n instanceof HTMLElement)) return; var childElements = Array.from(n.children).filter(function (c) { return c instanceof HTMLElement; }); if (childElements.length === 0 && n.classList.contains('ellipsisText')) { leafNodes.push(n); } else { childElements.forEach(traverse); } }; traverse(node); return leafNodes; }; var checkEllipsis = function () { var leafElements = getLeafElements(el); var hasEllipsis = leafElements.some(function (child) { return child.scrollWidth > child.offsetWidth; }); setIsEllipsis(hasEllipsis); }; checkEllipsis(); var resizeObserver = new ResizeObserver(checkEllipsis); resizeObserver.observe(el); return function () { resizeObserver.disconnect(); }; }, [ref]); return { isEllipsis: isEllipsis, }; }; exports.useEllipsisObserver = useEllipsisObserver;