tdesign-vue-next
Version:
TDesign Component for vue-next
407 lines (397 loc) • 12.3 kB
JavaScript
/**
* tdesign v1.11.5
* (c) 2025 tdesign
* @license MIT
*/
import { c as commonjsGlobal } from '../_chunks/dep-caecb55d.js';
import { isFunction, isString, isArray } from 'lodash-es';
var raf$2 = {exports: {}};
var performanceNow = {exports: {}};
// Generated by CoffeeScript 1.12.2
(function () {
var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime;
if (typeof performance !== "undefined" && performance !== null && performance.now) {
performanceNow.exports = function () {
return performance.now();
};
} else if (typeof process !== "undefined" && process !== null && process.hrtime) {
performanceNow.exports = function () {
return (getNanoSeconds() - nodeLoadTime) / 1e6;
};
hrtime = process.hrtime;
getNanoSeconds = function getNanoSeconds() {
var hr;
hr = hrtime();
return hr[0] * 1e9 + hr[1];
};
moduleLoadTime = getNanoSeconds();
upTime = process.uptime() * 1e9;
nodeLoadTime = moduleLoadTime - upTime;
} else if (Date.now) {
performanceNow.exports = function () {
return Date.now() - loadTime;
};
loadTime = Date.now();
} else {
performanceNow.exports = function () {
return new Date().getTime() - loadTime;
};
loadTime = new Date().getTime();
}
}).call(commonjsGlobal);
var now = performanceNow.exports,
root = typeof window === 'undefined' ? commonjsGlobal : window,
vendors = ['moz', 'webkit'],
suffix = 'AnimationFrame',
raf = root['request' + suffix],
caf = root['cancel' + suffix] || root['cancelRequest' + suffix];
for (var i = 0; !raf && i < vendors.length; i++) {
raf = root[vendors[i] + 'Request' + suffix];
caf = root[vendors[i] + 'Cancel' + suffix] || root[vendors[i] + 'CancelRequest' + suffix];
}
// Some versions of FF have rAF but not cAF
if (!raf || !caf) {
var last = 0,
id = 0,
queue = [],
frameDuration = 1000 / 60;
raf = function raf(callback) {
if (queue.length === 0) {
var _now = now(),
next = Math.max(0, frameDuration - (_now - last));
last = next + _now;
setTimeout(function () {
var cp = queue.slice(0);
// Clear queue here to prevent
// callbacks from appending listeners
// to the current frame's queue
queue.length = 0;
var _loop = function _loop() {
if (!cp[i].cancelled) {
try {
cp[i].callback(last);
} catch (e) {
setTimeout(function () {
throw e;
}, 0);
}
}
};
for (var i = 0; i < cp.length; i++) {
_loop();
}
}, Math.round(next));
}
queue.push({
handle: ++id,
callback: callback,
cancelled: false
});
return id;
};
caf = function caf(handle) {
for (var i = 0; i < queue.length; i++) {
if (queue[i].handle === handle) {
queue[i].cancelled = true;
}
}
};
}
raf$2.exports = function (fn) {
// Wrap in a new function to prevent
// `cancel` potentially being assigned
// to the native rAF function
return raf.call(root, fn);
};
raf$2.exports.cancel = function () {
caf.apply(root, arguments);
};
raf$2.exports.polyfill = function (object) {
if (!object) {
object = root;
}
object.requestAnimationFrame = raf;
object.cancelAnimationFrame = caf;
};
var raf$1 = raf$2.exports;
var easeInOutCubic = function easeInOutCubic(current, start, end, duration) {
var change = (end - start) / 2;
var time = current / (duration / 2);
if (time < 1) {
return change * time * time * time + start;
}
time -= 2;
return change * (time * time * time + 2) + start;
};
var isServer = typeof window === "undefined";
var trim = function trim(str) {
return (str || "").replace(/^[\s\uFEFF]+|[\s\uFEFF]+$/g, "");
};
var on = function () {
if (!isServer && document.addEventListener) {
return function (element, event, handler, options) {
if (element && event && handler) {
element.addEventListener(event, handler, options);
}
};
}
return function (element, event, handler) {
if (element && event && handler) {
element.attachEvent("on".concat(event), handler);
}
};
}();
var off = function () {
if (!isServer && document.removeEventListener) {
return function (element, event, handler, options) {
if (element && event) {
element.removeEventListener(event, handler, options);
}
};
}
return function (element, event, handler) {
if (element && event) {
element.detachEvent("on".concat(event), handler);
}
};
}();
function once(element, event, handler, options) {
var handlerFn = isFunction(handler) ? handler : handler.handleEvent;
var _callback = function callback(evt) {
handlerFn(evt);
off(element, event, _callback, options);
};
on(element, event, _callback, options);
}
function hasClass(el, cls) {
if (!el || !cls) return false;
if (cls.indexOf(" ") !== -1) throw new Error("className should not contain space.");
if (el.classList) {
return el.classList.contains(cls);
}
return " ".concat(el.className, " ").indexOf(" ".concat(cls, " ")) > -1;
}
function addClass(el, cls) {
if (!el) return;
var curClass = el.className;
var classes = (cls || "").split(" ");
for (var i = 0, j = classes.length; i < j; i++) {
var clsName = classes[i];
if (!clsName) continue;
if (el.classList) {
el.classList.add(clsName);
} else if (!hasClass(el, clsName)) {
curClass += " ".concat(clsName);
}
}
if (!el.classList) {
el.className = curClass;
}
}
function removeClass(el, cls) {
if (!el || !cls) return;
var classes = cls.split(" ");
var curClass = " ".concat(el.className, " ");
for (var i = 0, j = classes.length; i < j; i++) {
var clsName = classes[i];
if (!clsName) continue;
if (el.classList) {
el.classList.remove(clsName);
} else if (hasClass(el, clsName)) {
curClass = curClass.replace(" ".concat(clsName, " "), " ");
}
}
if (!el.classList) {
el.className = trim(curClass);
}
}
var getAttach = function getAttach(node, triggerNode) {
var attachNode = isFunction(node) ? node(triggerNode) : node;
if (!attachNode) {
return document.body;
}
if (isString(attachNode)) {
return document.querySelector(attachNode);
}
if (attachNode instanceof HTMLElement) {
return attachNode;
}
return document.body;
};
var getSSRAttach = function getSSRAttach() {
if (process.env.NODE_ENV === "test-snap") return "body";
};
var getScrollContainer = function getScrollContainer() {
var container = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "body";
if (isString(container)) {
return document.querySelector(container);
}
if (isFunction(container)) {
return container();
}
return container;
};
function isWindow(obj) {
return obj && obj === obj.window;
}
function getScroll(target, isLeft) {
if (isServer || !target) {
return 0;
}
var method = isLeft ? "scrollLeft" : "scrollTop";
var result = 0;
if (isWindow(target)) {
result = target[isLeft ? "pageXOffset" : "pageYOffset"];
} else if (target instanceof Document) {
result = target.documentElement[method];
} else if (target) {
result = target[method];
}
return result;
}
function scrollTo(target, opt) {
var _opt$container = opt.container,
container = _opt$container === void 0 ? window : _opt$container,
_opt$duration = opt.duration,
duration = _opt$duration === void 0 ? 450 : _opt$duration,
_opt$easing = opt.easing,
easing = _opt$easing === void 0 ? easeInOutCubic : _opt$easing;
var scrollTop = getScroll(container);
var startTime = Date.now();
return new Promise(function (res) {
var _fnc = function fnc() {
var timestamp = Date.now();
var time = timestamp - startTime;
var nextScrollTop = easing(Math.min(time, duration), scrollTop, target, duration);
if (isWindow(container)) {
container.scrollTo(window.pageXOffset, nextScrollTop);
} else if (container instanceof Document || container.constructor.name === "HTMLDocument") {
container.documentElement.scrollTop = nextScrollTop;
} else {
container.scrollTop = nextScrollTop;
}
if (time < duration) {
raf$1(_fnc);
} else {
raf$1(res);
}
};
raf$1(_fnc);
});
}
function containerDom(parent, child) {
if (parent && child) {
var pNode = child;
while (pNode) {
if (parent === pNode) {
return true;
}
var _pNode = pNode,
parentNode = _pNode.parentNode;
pNode = parentNode;
}
}
return false;
}
var clickOut = function clickOut(els, cb) {
on(document, "click", function (event) {
if (isArray(els)) {
var isFlag = Array.from(els).every(function (item) {
return containerDom(item, event.target) === false;
});
return isFlag && cb && cb();
}
if (containerDom(els, event.target)) {
return false;
}
return cb && cb();
});
};
var isTextEllipsis = function isTextEllipsis(ele) {
var _ele$clientWidth = ele.clientWidth,
clientWidth = _ele$clientWidth === void 0 ? 0 : _ele$clientWidth,
_ele$scrollWidth = ele.scrollWidth,
scrollWidth = _ele$scrollWidth === void 0 ? 0 : _ele$scrollWidth;
return scrollWidth > clientWidth;
};
var scrollSelectedIntoView = function scrollSelectedIntoView(parentEle, selected) {
if (isServer) return;
if (!selected || selected.offsetParent !== parentEle) {
parentEle.scrollTop = 0;
return;
}
var selectedTop = selected.offsetTop;
var selectedBottom = selectedTop + selected.offsetHeight;
var parentScrollTop = parentEle.scrollTop;
var parentViewBottom = parentScrollTop + parentEle.clientHeight;
if (selectedTop < parentScrollTop) {
parentEle.scrollTop = selectedTop;
} else if (selectedBottom > parentViewBottom) {
parentEle.scrollTop = selectedBottom - parentEle.clientHeight;
}
};
var requestSubmit = function requestSubmit(target) {
if (!(target instanceof HTMLFormElement)) {
throw new Error("target must be HTMLFormElement");
}
var submitter = document.createElement("input");
submitter.type = "submit";
submitter.hidden = true;
target.appendChild(submitter);
submitter.click();
target.removeChild(submitter);
};
function elementInViewport(elm, parent) {
var rect = elm.getBoundingClientRect();
if (parent) {
var parentRect = parent.getBoundingClientRect();
return rect.top >= parentRect.top && rect.left >= parentRect.left && rect.bottom <= parentRect.bottom && rect.right <= parentRect.right;
}
return rect.top >= 0 && rect.left >= 0 && rect.bottom + 80 <= window.innerHeight && rect.right <= window.innerWidth;
}
function getElmCssPropValue(element, propName) {
var propValue = "";
if (document.defaultView && document.defaultView.getComputedStyle) {
propValue = document.defaultView.getComputedStyle(element, null).getPropertyValue(propName);
}
if (propValue && propValue.toLowerCase) {
return propValue.toLowerCase();
}
return propValue;
}
function isFixed(element) {
var p = element.parentNode;
if (!p || p.nodeName === "HTML") {
return false;
}
if (getElmCssPropValue(element, "position") === "fixed") {
return true;
}
return isFixed(p);
}
function getWindowScroll() {
var _document = document,
body = _document.body;
var docElm = document.documentElement;
var scrollTop = window.pageYOffset || docElm.scrollTop || body.scrollTop;
var scrollLeft = window.pageXOffset || docElm.scrollLeft || body.scrollLeft;
return {
scrollTop: scrollTop,
scrollLeft: scrollLeft
};
}
function getWindowSize() {
if (window.innerWidth !== void 0) {
return {
width: window.innerWidth,
height: window.innerHeight
};
}
var doc = document.documentElement;
return {
width: doc.clientWidth,
height: doc.clientHeight
};
}
export { addClass, clickOut, elementInViewport, getAttach, getElmCssPropValue, getSSRAttach, getScroll, getScrollContainer, getWindowScroll, getWindowSize, hasClass, isFixed, isServer, isTextEllipsis, off, on, once, removeClass, requestSubmit, scrollSelectedIntoView, scrollTo };
//# sourceMappingURL=dom.js.map