UNPKG

tdesign-vue-next

Version:
676 lines (661 loc) 22.8 kB
/** * tdesign v1.20.2 * (c) 2026 tdesign * @license MIT */ import { isVNode, Comment, Fragment, getCurrentInstance } from 'vue'; import { c as commonjsGlobal, g as getDefaultExportFromCjs } from './dep-57027bda.mjs'; import { isFunction, isString, isArray, isObject } from 'lodash-es'; var raf$2 = {exports: {}}; var performanceNow$2 = {exports: {}}; var performanceNow = performanceNow$2.exports; // Generated by CoffeeScript 1.12.2 (function () { var getNanoSeconds, hrtime, loadTime, moduleLoadTime, nodeLoadTime, upTime; if (typeof performance !== "undefined" && performance !== null && performance.now) { performanceNow$2.exports = function () { return performance.now(); }; } else if (typeof process !== "undefined" && process !== null && process.hrtime) { performanceNow$2.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$2.exports = function () { return Date.now() - loadTime; }; loadTime = Date.now(); } else { performanceNow$2.exports = function () { return new Date().getTime() - loadTime; }; loadTime = new Date().getTime(); } }).call(commonjsGlobal); var performanceNowExports = performanceNow$2.exports; var performanceNow$1 = /*@__PURE__*/getDefaultExportFromCjs(performanceNowExports); var raf_1 = raf$2.exports; var now = performanceNowExports, 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); }; var cancel = raf$2.exports.cancel = function () { caf.apply(root, arguments); }; var polyfill = raf$2.exports.polyfill = function (object) { if (!object) { object = root; } object.requestAnimationFrame = raf; object.cancelAnimationFrame = caf; }; var rafExports = raf$2.exports; var raf$1 = /*@__PURE__*/getDefaultExportFromCjs(rafExports); var linear = function linear(current, start, end, duration) { var change = end - start; var offset = change * current / duration; return offset + start; }; 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 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 }; } var isCommentVNode = function isCommentVNode(node) { return isVNode(node) && node.type === Comment; }; function withInstall(comp, alias, directive) { var componentPlugin = comp; componentPlugin.install = function (app, name) { app.component(alias || name || componentPlugin.name, comp); directive && app.directive(directive.name, directive.comp); }; return componentPlugin; } function getDefaultNode(options) { var defaultNode; if (isObject(options) && "defaultNode" in options) { defaultNode = options.defaultNode; } else if (isVNode(options) || isString(options)) { defaultNode = options; } return defaultNode; } function getChildren(content) { var childList = []; var _innerGetChildren = function innerGetChildren(content2) { if (!isArray(content2)) return; content2.forEach(function (item) { if (item.children && isArray(item.children)) { if (item.type !== Fragment) return; _innerGetChildren(item.children); } else { childList.push(item); } }); return childList; }; return _innerGetChildren(content); } function getParams(options) { return isObject(options) && "params" in options ? options.params : {}; } function getSlotFirst(options) { return isObject(options) && "slotFirst" in options ? options.slotFirst : false; } function isPropsUsed(propsName) { var _getCurrentInstance = getCurrentInstance(), vnode = _getCurrentInstance.vnode, slots = _getCurrentInstance.slots; var vProps = vnode.props || {}; if (Object.prototype.hasOwnProperty.call(vProps, propsName)) return true; if (slots && Object.prototype.hasOwnProperty.call(slots, propsName)) return true; return false; } var defaultMessage = "Copy to clipboard: #{key}, Enter"; var format = function format(message) { var copyKey = (/mac os x/i.test(navigator.userAgent) ? "\u2318" : "Ctrl") + "+C"; return message.replace(/#{\s*key\s*}/g, copyKey); }; var deselectCurrent = function deselectCurrent() { var selection = document.getSelection(); if (!selection.rangeCount) { return function () {}; } var active = document.activeElement; var ranges = []; for (var i = 0; i < selection.rangeCount; i++) { ranges.push(selection.getRangeAt(i)); } var tagName = active.tagName.toUpperCase(); switch (tagName) { case "INPUT": case "TEXTAREA": active.blur(); break; default: active = null; break; } selection.removeAllRanges(); return function () { selection.type === "Caret" && selection.removeAllRanges(); if (!selection.rangeCount) { ranges.forEach(function (range) { selection.addRange(range); }); } active && active.focus(); }; }; var copy = function copy(text, options) { var message, reselectPrevious, range, selection, mark, success = false; if (!options) { options = {}; } try { reselectPrevious = deselectCurrent(); range = document.createRange(); selection = document.getSelection(); mark = document.createElement("span"); mark.textContent = text; mark.style.all = "unset"; mark.style.position = "fixed"; mark.style.top = "0"; mark.style.clip = "rect(0, 0, 0, 0)"; mark.style.whiteSpace = "pre"; mark.style.webkitUserSelect = "text"; mark.style.userSelect = "text"; mark.addEventListener("copy", function (e) { e.stopPropagation(); if (options.format) { e.preventDefault(); e.clipboardData.clearData(); e.clipboardData.setData(options.format, text); } if (options.onCopy) { e.preventDefault(); options.onCopy(e.clipboardData); } }); document.body.appendChild(mark); range.selectNodeContents(mark); selection.addRange(range); var successful = document.execCommand("copy"); if (!successful) { throw new Error("copy command was unsuccessful"); } success = true; } catch (err) { try { window.clipboardData.setData(options.format || "text", text); options.onCopy && options.onCopy(window.clipboardData); success = true; } catch (err2) { message = format("message" in options ? options.message : defaultMessage); window.prompt(message, text); } } finally { if (selection) { if (typeof selection.removeRange == "function") { selection.removeRange(range); } else { selection.removeAllRanges(); } } if (mark) { document.body.removeChild(mark); } reselectPrevious(); } return success; }; var SAFE_URL_PROTOCOL_RE = /^(?:https?|mailto|tel|ftp|sms):/i; var SAFE_DATA_IMAGE_RE = /^data:image\/(?:png|jpe?g|gif|webp|svg\+xml|bmp|x-icon)[;,]/i; var DANGEROUS_SCRIPT_PROTOCOL_RE = /^(?:javascript|vbscript):/i; var RELATIVE_URL_RE = /^(?:[/?#]|\.{1,2}\/|\/\/)/; var ANY_PROTOCOL_RE = /^[a-z][a-z0-9+.-]*:/i; var DANGEROUS_TAG_RE = /<\s*\/?\s*(script|iframe|frame|frameset|object|embed|applet|link|meta|style|base|form|input|button|textarea|select|option|svg|math|template|portal|noscript)\b[^>]*>/gi; var DANGEROUS_BLOCK_RE = /<\s*(script|style|iframe|object|embed|noscript|template|svg|math)\b[^>]*>[\s\S]*?<\s*\/\s*\1\s*>/gi; var ON_EVENT_ATTR_RE = /\s+on[a-z]+\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi; var DANGEROUS_URL_ATTR_RE = /\s+(href|src|xlink:href|formaction|action|poster|background|data|cite|longdesc|ping|srcdoc)\s*=\s*(?:"\s*(?:javascript|vbscript|data)\s*:[^"]*"|'\s*(?:javascript|vbscript|data)\s*:[^']*'|\s*(?:javascript|vbscript|data)\s*:[^\s>]*)/gi; var SRCDOC_ATTR_RE = /\s+srcdoc\s*=\s*(?:"[^"]*"|'[^']*'|[^\s>]+)/gi; var stripCtrlChars = function stripCtrlChars(value) { return (value || "").replace(/[\u0000-\u001F\u007F]+/g, ""); }; var normalizeUrlInput = function normalizeUrlInput(rawHref) { if (rawHref == null) return ""; return stripCtrlChars(String(rawHref)).trim(); }; var isDangerousUrl = function isDangerousUrl(rawValue) { var value = normalizeUrlInput(rawValue); if (!value) return false; if (DANGEROUS_SCRIPT_PROTOCOL_RE.test(value)) return true; if (/^data:/i.test(value) && !SAFE_DATA_IMAGE_RE.test(value)) return true; return false; }; var isDangerousStyle = function isDangerousStyle(rawValue) { var value = stripCtrlChars(rawValue || ""); return /expression\s*\(|javascript\s*:|vbscript\s*:|@import/i.test(value); }; function sanitizeUrl(rawHref) { var href = normalizeUrlInput(rawHref); if (!href) return ""; if (RELATIVE_URL_RE.test(href)) return href; if (!ANY_PROTOCOL_RE.test(href)) return href; if (SAFE_URL_PROTOCOL_RE.test(href)) return href; return ""; } function sanitizeImageUrl(rawHref) { var href = normalizeUrlInput(rawHref); if (!href) return ""; if (RELATIVE_URL_RE.test(href)) return href; if (!ANY_PROTOCOL_RE.test(href)) return href; if (SAFE_URL_PROTOCOL_RE.test(href)) return href; if (SAFE_DATA_IMAGE_RE.test(href)) return href; return ""; } function sanitizeHtml(html) { if (!html) return ""; return html.replace(DANGEROUS_BLOCK_RE, "").replace(DANGEROUS_TAG_RE, "").replace(ON_EVENT_ATTR_RE, "").replace(SRCDOC_ATTR_RE, "").replace(DANGEROUS_URL_ATTR_RE, ""); } var SVG_DANGEROUS_TAGS = /* @__PURE__ */new Set(["script", "foreignobject", "iframe", "frame", "frameset", "object", "embed", "link", "meta", "base", "style", "form", "input", "button", "textarea", "select", "option", "audio", "video", "source", "track", "portal", "noscript", "template", "handler", "listener", "set"]); var SVG_URL_ATTR_NAMES = /* @__PURE__ */new Set(["href", "xlink:href", "src", "action", "formaction", "background", "poster", "ping", "longdesc", "cite", "data", "srcdoc"]); var sanitizeElementAttributes = function sanitizeElementAttributes(el) { for (var _i = 0, _Array$from = Array.from(el.attributes); _i < _Array$from.length; _i++) { var attr = _Array$from[_i]; var name = attr.name.toLowerCase(); if (name.startsWith("on")) { el.removeAttribute(attr.name); continue; } if (SVG_URL_ATTR_NAMES.has(name) && isDangerousUrl(attr.value)) { el.removeAttribute(attr.name); continue; } if (name === "style" && isDangerousStyle(attr.value)) { el.removeAttribute(attr.name); } } }; var _sanitizeElementTree = function sanitizeElementTree(node) { for (var _i2 = 0, _Array$from2 = Array.from(node.children); _i2 < _Array$from2.length; _i2++) { var _child$localName$toLo, _child$localName, _child$localName$toLo2; var child = _Array$from2[_i2]; var tag = (_child$localName$toLo = (_child$localName = child.localName) === null || _child$localName === void 0 || (_child$localName$toLo2 = _child$localName.toLowerCase) === null || _child$localName$toLo2 === void 0 ? void 0 : _child$localName$toLo2.call(_child$localName)) !== null && _child$localName$toLo !== void 0 ? _child$localName$toLo : ""; if (SVG_DANGEROUS_TAGS.has(tag)) { child.remove(); continue; } sanitizeElementAttributes(child); _sanitizeElementTree(child); } }; var sanitizeSvg = function sanitizeSvg(svgText) { var _root$localName; if (!svgText || typeof svgText !== "string") return ""; if (typeof DOMParser === "undefined" || typeof XMLSerializer === "undefined") return ""; var doc; try { doc = new DOMParser().parseFromString(svgText, "image/svg+xml"); } catch (_unused) { return ""; } if (doc.querySelector("parsererror")) return ""; var root = doc.documentElement; if (!root || ((_root$localName = root.localName) === null || _root$localName === void 0 ? void 0 : _root$localName.toLowerCase()) !== "svg") return ""; sanitizeElementAttributes(root); _sanitizeElementTree(root); try { return new XMLSerializer().serializeToString(root); } catch (_unused2) { return ""; } }; export { getWindowSize as A, addClass as a, getScrollContainer as b, off as c, getScroll as d, isTextEllipsis as e, requestSubmit as f, getAttach as g, getChildren as h, isServer as i, isPropsUsed as j, copy as k, isFixed as l, getWindowScroll as m, once as n, on as o, isCommentVNode as p, getParams as q, removeClass as r, scrollTo as s, getDefaultNode as t, getSlotFirst as u, sanitizeSvg as v, withInstall as w, hasClass as x, getElmCssPropValue as y, elementInViewport as z }; //# sourceMappingURL=dep-05bddb06.mjs.map