{"version":3,"file":"dom.mjs","sources":["../../../../packages/utils/dom.ts"],"sourcesContent":["/* istanbul ignore next */\n/* eslint-disable */\n// import Vue from 'vue';\n\n// const isServer = Vue.prototype.$isServer;\nconst isServer = false\nconst SPECIAL_CHARS_REGEXP = /([\\:\\-\\_]+(.))/g\nconst MOZ_HACK_REGEXP = /^moz([A-Z])/\nconst ieVersion = isServer ? 0 : Number((document as any).documentMode)\n\n/* istanbul ignore next */\nconst trim = function (string) {\n\treturn (string || '').replace(/^[\\s\\uFEFF]+|[\\s\\uFEFF]+$/g, '')\n}\n/* istanbul ignore next */\nconst camelCase = function (name) {\n\treturn name\n\t\t.replace(SPECIAL_CHARS_REGEXP, function (_, separator, letter, offset) {\n\t\t\treturn offset ? letter.toUpperCase() : letter\n\t\t})\n\t\t.replace(MOZ_HACK_REGEXP, 'Moz$1')\n}\n\n/* istanbul ignore next */\nexport const on = (function () {\n\tif (!isServer && document.addEventListener) {\n\t\treturn function (element, event, handler) {\n\t\t\tif (element && event && handler) {\n\t\t\t\telement.addEventListener(event, handler, false)\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn function (element, event, handler) {\n\t\t\tif (element && event && handler) {\n\t\t\t\telement.attachEvent('on' + event, handler)\n\t\t\t}\n\t\t}\n\t}\n})()\n\n/* istanbul ignore next */\nexport const off = (function () {\n\tif (!isServer && document.removeEventListener) {\n\t\treturn function (element, event, handler) {\n\t\t\tif (element && event) {\n\t\t\t\telement.removeEventListener(event, handler, false)\n\t\t\t}\n\t\t}\n\t} else {\n\t\treturn function (element, event, handler) {\n\t\t\tif (element && event) {\n\t\t\t\telement.detachEvent('on' + event, handler)\n\t\t\t}\n\t\t}\n\t}\n})()\n\n/* istanbul ignore next */\nexport const once = function (el, event, fn) {\n\tvar listener = function () {\n\t\tif (fn) {\n\t\t\tfn.apply(this, arguments)\n\t\t}\n\t\toff(el, event, listener)\n\t}\n\ton(el, event, listener)\n}\n\n/* istanbul ignore next */\nexport function hasClass(el, cls) {\n\tif (!el || !cls) return false\n\tif (cls.indexOf(' ') !== -1) throw new Error('className should not contain space.')\n\tif (el.classList) {\n\t\treturn el.classList.contains(cls)\n\t} else {\n\t\treturn (' ' + el.className + ' ').indexOf(' ' + cls + ' ') > -1\n\t}\n}\n\n/* istanbul ignore next */\nexport function addClass(el, cls) {\n\tif (!el) return\n\tvar curClass = el.className\n\tvar classes = (cls || '').split(' ')\n\n\tfor (var i = 0, j = classes.length; i < j; i++) {\n\t\tvar clsName = classes[i]\n\t\tif (!clsName) continue\n\n\t\tif (el.classList) {\n\t\t\tel.classList.add(clsName)\n\t\t} else if (!hasClass(el, clsName)) {\n\t\t\tcurClass += ' ' + clsName\n\t\t}\n\t}\n\tif (!el.classList) {\n\t\tel.className = curClass\n\t}\n}\n\n/* istanbul ignore next */\nexport function removeClass(el, cls) {\n\tif (!el || !cls) return\n\tvar classes = cls.split(' ')\n\tvar curClass = ' ' + el.className + ' '\n\n\tfor (var i = 0, j = classes.length; i < j; i++) {\n\t\tvar clsName = classes[i]\n\t\tif (!clsName) continue\n\n\t\tif (el.classList) {\n\t\t\tel.classList.remove(clsName)\n\t\t} else if (hasClass(el, clsName)) {\n\t\t\tcurClass = curClass.replace(' ' + clsName + ' ', ' ')\n\t\t}\n\t}\n\tif (!el.classList) {\n\t\tel.className = trim(curClass)\n\t}\n}\n\n/* istanbul ignore next */\nexport const getStyle = function (element, styleName) {\n\tif (isServer) return\n\tif (!element || !styleName) return null\n\tstyleName = camelCase(styleName)\n\tif (styleName === 'float') {\n\t\tstyleName = 'cssFloat'\n\t}\n\tvar currentStyle = element.currentStyle || document.defaultView.getComputedStyle(element, '')\n\treturn currentStyle[styleName] || ''\n}\n\n/* istanbul ignore next */\nexport function setStyle(element, styleName, value) {\n\tif (!element || !styleName) return\n\n\tif (typeof styleName === 'object') {\n\t\tfor (var prop in styleName) {\n\t\t\tif (Object.prototype.hasOwnProperty.call(styleName, prop)) {\n\t\t\t\tsetStyle(element, prop, styleName[prop])\n\t\t\t}\n\t\t}\n\t} else {\n\t\tstyleName = camelCase(styleName)\n\t\tif (styleName === 'opacity' && ieVersion < 9) {\n\t\t\telement.style.filter = isNaN(value) ? '' : 'alpha(opacity=' + value * 100 + ')'\n\t\t} else {\n\t\t\telement.style[styleName] = value\n\t\t}\n\t}\n}\n\nexport const isScroll = (el, vertical) => {\n\tif (isServer) return\n\n\tconst determinedDirection = vertical !== null || vertical !== undefined\n\tconst overflow = determinedDirection\n\t\t? vertical\n\t\t\t? getStyle(el, 'overflow-y')\n\t\t\t: getStyle(el, 'overflow-x')\n\t\t: getStyle(el, 'overflow')\n\n\treturn overflow.match(/(scroll|auto)/)\n}\n\nexport const getScrollContainer = (el, vertical) => {\n\tif (isServer) return\n\n\tlet parent = el\n\twhile (parent) {\n\t\tif ([window, document, document.documentElement].includes(parent)) {\n\t\t\treturn window\n\t\t}\n\t\tif (isScroll(parent, vertical)) {\n\t\t\treturn parent\n\t\t}\n\t\tparent = parent.parentNode\n\t}\n\n\treturn parent\n}\n\nexport const isInContainer = (el, container) => {\n\tif (isServer || !el || !container) return false\n\n\tconst elRect = el.getBoundingClientRect()\n\tlet containerRect\n\n\tif ([window, document, document.documentElement, null, undefined].includes(container)) {\n\t\tcontainerRect = {\n\t\t\ttop: 0,\n\t\t\tright: window.innerWidth,\n\t\t\tbottom: window.innerHeight,\n\t\t\tleft: 0,\n\t\t}\n\t} else {\n\t\tcontainerRect = container.getBoundingClientRect()\n\t}\n\n\treturn (\n\t\telRect.top < containerRect.bottom &&\n\t\telRect.bottom > containerRect.top &&\n\t\telRect.right > containerRect.left &&\n\t\telRect.left < containerRect.right\n\t)\n}\n\n/* get event composedPath */\nexport function getEventPath(evt) {\n\tconst path = Array.isArray(evt) ? evt : (evt.composedPath && evt.composedPath()) || evt.path\n\tconst target = path ? path[0] : evt.target\n\tif (path != null) {\n\t\treturn path.indexOf(window) < 0 ? path.concat(window) : path\n\t}\n\tif (target === window) {\n\t\treturn [window]\n\t}\n\tfunction getParents(node, memo?: any[]) {\n\t\tmemo = memo || []\n\t\tconst parentNode = node.parentNode\n\t\tif (!parentNode) {\n\t\t\treturn memo\n\t\t} else {\n\t\t\treturn getParents(parentNode, memo.concat(parentNode))\n\t\t}\n\t}\n\treturn [target].concat(getParents(target), window)\n}\n\n/**\n *  兼容获取document element的dataset\n * @param {DocumentElement} ele\n * @returns\n */\nexport function getDataSet(ele) {\n\tif (!ele) return\n\tif (ele.dataset) return ele.dataset\n\telse {\n\t\t// 以下是兼容代码\n\t\tvar dataset = {}\n\t\tvar ele_split = ele.outerHTML.split(' ')\n\t\tfor (var i = 0, element; i < ele_split.length; i++) {\n\t\t\telement = ele_split[i]\n\t\t\tif (element.substring(0, 4) === 'data') {\n\t\t\t\tif (element.indexOf('>') !== -1) {\n\t\t\t\t\telement = element.split('>')[0]\n\t\t\t\t}\n\t\t\t\tvar ele_key = element.split('=')[0].slice(5)\n\t\t\t\tvar ele_value = element.split('=')[1].slice(1, -1)\n\t\t\t\tif (ele_key.indexOf('-') === -1) {\n\t\t\t\t\tdataset[ele_key] = ele_value\n\t\t\t\t} else {\n\t\t\t\t\tvar ele_keys = ele_key.split('-')\n\t\t\t\t\tele_key = ele_keys[0]\n\t\t\t\t\tfor (i = 1; i < ele_keys.length; i++) {\n\t\t\t\t\t\tele_key += __replaceReg__(ele_keys[i])\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn dataset\n\t}\n}\n\n// 正则表达式变换首字母大写\nfunction __replaceReg__(str) {\n\tvar reg = /\\b(\\w)|\\s(\\w)/g\n\tstr = str.toLowerCase()\n\treturn str.replace(reg, function (m) {\n\t\treturn m.toUpperCase()\n\t})\n}\n\n/**\n * 根据名称查找 Vue 组件\n *\n * 此函数尝试从给定的 DOM 节点开始，向上遍历 DOM 树，以查找具有指定名称的 Vue 组件\n * 它主要用于在复杂的 DOM 结构中定位特定的 Vue 组件实例\n *\n * @param {HTMLElement} dom - 开始查找的 DOM 节点必须是 Vue 组件的关联 DOM 节点\n * @param {string} targetName - 目标 Vue 组件的名称\n * @returns {Object|null} - 返回找到的 Vue 组件实例，如果没有找到则返回 null\n */\nexport function queryVm(dom, targetName) {\n\t// 基础检查，确保传入的是 DOM 节点\n\tif (!dom || !(dom instanceof HTMLElement)) {\n\t\treturn null\n\t}\n\n\t// 获取当前 DOM 节点关联的 Vue 实例\n\tlet vueInstance = (dom as any).__vue__\n\n\t// 如果找到 Vue 实例\n\twhile (vueInstance) {\n\t\t// 检查组件的 name 是否符合要求\n\t\tif (vueInstance.$options.name === targetName) {\n\t\t\treturn vueInstance\n\t\t}\n\t\t// 如果不符合要求，向上查找 $parent\n\t\tvueInstance = vueInstance.$parent\n\t}\n\n\t// 如果未找到，递归向上查找父 DOM 节点\n\treturn queryVm(dom.parentElement, targetName)\n}\n"],"names":[],"mappings":"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"}