birdpaper-ui
Version:
一个通用的 vue3 UI组件库。A common vue3 UI component library.
85 lines (84 loc) • 2.5 kB
JavaScript
;
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
const isElement = (vn) => {
return Boolean(
vn && vn.shapeFlag & 1
/* ELEMENT */
);
};
const isComponent = (vn, type) => {
return Boolean(
vn && vn.shapeFlag & 6
/* COMPONENT */
);
};
const isTextChildren = (child, children) => {
return Boolean(child && child.shapeFlag & 8);
};
const isArrayChildren = (vn, children) => {
return Boolean(
vn && vn.shapeFlag & 16
/* ARRAY_CHILDREN */
);
};
const opt = Object.prototype.toString;
const isArray = (obj) => {
return opt.call(obj) === "[object Array]";
};
const isSlotsChildren = (vn, children) => {
return Boolean(
vn && vn.shapeFlag & 32
/* SLOTS_CHILDREN */
);
};
const getAllElements = (children, includeText = false) => {
var _a, _b;
const results = [];
for (const item of children ?? []) {
if (isElement(item) || isComponent(item) || includeText && isTextChildren(item, item.children)) {
results.push(item);
} else if (isArrayChildren(item, item.children)) {
results.push(...getAllElements(item.children, includeText));
} else if (isSlotsChildren(item, item.children)) {
results.push(...getAllElements((_b = (_a = item.children).default) == null ? void 0 : _b.call(_a), includeText));
} else if (isArray(item)) {
results.push(...getAllElements(item, includeText));
}
}
return results;
};
const isScrollElement = (element) => {
return element.scrollHeight > element.offsetHeight || element.scrollWidth > element.offsetWidth;
};
const getScrollElements = (el) => {
const scrollElements = [];
let element = el;
while (element && element !== document.documentElement) {
if (isScrollElement(element)) {
scrollElements.push(element);
}
element = element.parentElement ?? void 0;
}
return scrollElements;
};
const getChildrenIndex = (ele) => {
if (ele.sourceIndex) {
return ele.sourceIndex - ele.parentNode.sourceIndex - 1;
}
var i = 0;
while (ele = ele.previousElementSibling) {
i++;
}
return i;
};
exports.getAllElements = getAllElements;
exports.getChildrenIndex = getChildrenIndex;
exports.getScrollElements = getScrollElements;
exports.isArray = isArray;
exports.isArrayChildren = isArrayChildren;
exports.isComponent = isComponent;
exports.isElement = isElement;
exports.isScrollElement = isScrollElement;
exports.isSlotsChildren = isSlotsChildren;
exports.isTextChildren = isTextChildren;
exports.opt = opt;