{"version":3,"file":"tooltip.vue2.mjs","sources":["../../../../../../packages/components/tooltip/src/tooltip.vue"],"sourcesContent":["<script lang=\"ts\">\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToTooltip'\n});\n</script>\n<template>\n\t<div v-if=\"lazy ? show : true\" ref=\"tooltip\" :flex=\"flex ? flex : null\" class=\"to-tooltip\" :class=\"setClass\" :style=\"setStyle\">\n\t\t<div ref=\"arrow\" class=\"to-tooltip-arrow\"></div>\n\t\t<div ref=\"content\" class=\"to-tooltip-content\">\n\t\t\t<div class=\"to-tooltip-content-text\">\n\t\t\t\t<slot></slot>\n\t\t\t</div>\n\t\t</div>\n\t</div>\n</template>\n<script setup lang=\"ts\">\nimport { ref, computed, onDeactivated, onBeforeUnmount, nextTick, getCurrentInstance } from 'vue'\nimport { tooltipProps, tooltipEmits } from './tooltip'\n\nconst props = defineProps(tooltipProps)\nconst emit = defineEmits(tooltipEmits)\nconst blurable = ref(false)\nconst ialign = ref('')\nconst iarrow = ref('')\nconst iposition = ref('')\nconst show = ref(false)\nconst timer = ref(null)\nconst link = ref(null)\n\n// dom\nconst arrow = ref(null)\nconst content = ref(null)\nconst scrollNode = ref(null)\nconst tooltip = ref(null)\nconst instance = getCurrentInstance()\n\nconst setClass = computed(() => {\n\tlet arr = []\n\tif (props.color) {\n\t\tarr.push(`color-${props.color}`)\n\t}\n\tif (iposition.value) {\n\t\tarr.push(`position-${iposition.value}`)\n\t}\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\tif (props.readonly) {\n\t\tarr.push('is-readonly')\n\t}\n\tif (iarrow.value) {\n\t\tarr.push(`arrow-${iarrow.value}`)\n\t}\n\tif (show.value) {\n\t\tarr.push('is-show')\n\t}\n\treturn arr\n})\nconst setStyle = computed(() => {\n\tlet obj: {\n\t\twidth: string\n\t} = {\n\t\twidth: ''\n\t}\n\tif (props.width) {\n\t\tif (!isNaN(props.width as number)) {\n\t\t\tobj.width = props.width + 'em'\n\t\t} else if (props.width === 'full') {\n\t\t\tobj.width = '100%'\n\t\t} else {\n\t\t\tobj.width = props.width as string\n\t\t}\n\t}\n\treturn obj\n})\nonDeactivated(() => {\n\t// 组件销毁时销毁事件\n\tdestroy()\n})\nonBeforeUnmount(() => {\n\t// 组件销毁时销毁事件\n\tdestroy()\n})\nconst destroy = () => {\n\t// 销毁事件绑定\n\tif (document.body && document.body.removeEventListener) {\n\t\tdocument.body.removeEventListener('click', blur)\n\t}\n\n\tif (scrollNode.value && scrollNode.value.removeEventListener) {\n\t\tscrollNode.value.removeEventListener('scroll', close)\n\t}\n\n\t// 销毁移动过的 DOM\n\t// if (this.$el.parentNode) {\n\t// \tthis.$el.parentNode.removeChild(this.$el)\n\t// }\n\n\tif (timer.value) {\n\t\tclearTimeout(timer.value)\n\t\ttimer.value = null\n\t}\n}\nconst set = link => {\n\t// 整体参数\n\tconst bodyHeight = document.body.clientHeight\n\tconst bodyWidth = document.body.clientWidth\n\n\t// 目标参数\n\tconst linkHeight = link.offsetHeight\n\tconst linkWidth = link.offsetWidth\n\tconst linkTop = link.getBoundingClientRect().top\n\tconst linkLeft = link.getBoundingClientRect().left\n\tconst linkBottom = bodyHeight - linkTop - linkHeight\n\tconst linkRight = bodyWidth - linkLeft - linkWidth\n\tconst linkX = linkLeft + linkWidth / 2\n\tconst linkY = linkTop + linkHeight / 2\n\tconst arrowSize = arrow.value.offsetHeight\n\n\t// 提示参数\n\tlet tipWidth = content.value.offsetWidth\n\tlet tipHeight = content.value.offsetHeight\n\n\t// 已定义直接取值\n\tif (props.position !== 'auto') {\n\t\tiposition.value = props.position\n\t}\n\n\t// 未定义位置则需要计算从上还是从下弹出\n\telse {\n\t\t// 顶部空间足够则从顶部显示\n\t\tif (linkTop >= tipHeight + arrowSize / 2) {\n\t\t\tiposition.value = 'top'\n\t\t}\n\n\t\t// 底部空间足够则从底部显示\n\t\telse if (linkBottom >= tipHeight + arrowSize / 2) {\n\t\t\tiposition.value = 'bottom'\n\t\t}\n\n\t\t// 顶部底部空间都不足够时，放在文档顶部\n\t\telse {\n\t\t\tiposition.value = 'top-ab'\n\t\t}\n\t}\n\n\t// 计算提示对齐方式\n\tif (props.align !== 'auto') {\n\t\tialign.value = props.align\n\t} else {\n\t\t// 位置在上下的情况\n\t\tif (iposition.value === 'top' || iposition.value === 'bottom') {\n\t\t\t// 不能居中完整显示则看哪边空间大\n\t\t\tif ((tipWidth / 2 > linkLeft + linkWidth / 2 || tipWidth / 2 > linkRight + linkWidth / 2) && tipWidth > linkWidth) {\n\t\t\t\tif (linkLeft > linkRight) {\n\t\t\t\t\tialign.value = 'right'\n\t\t\t\t} else {\n\t\t\t\t\tialign.value = 'left'\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 能居中完整显示则居中完整显示\n\t\t\telse {\n\t\t\t\tialign.value = 'center'\n\t\t\t}\n\t\t}\n\n\t\t// 位置在左右的情况\n\t\telse {\n\t\t\t// 不能居中完整显示则看哪边空间大\n\t\t\tif ((tipHeight / 2 > linkTop + linkHeight / 2 || tipHeight / 2 > linkBottom + linkHeight / 2) && tipHeight > linkHeight) {\n\t\t\t\tif (linkTop > linkBottom) {\n\t\t\t\t\tialign.value = 'bottom'\n\t\t\t\t} else {\n\t\t\t\t\tialign.value = 'top'\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// 能居中完整显示则居中完整显示\n\t\t\telse {\n\t\t\t\tialign.value = 'middle'\n\t\t\t}\n\t\t}\n\t}\n\n\t// 计算箭头对齐方式\n\tif ((ialign.value === 'top' || ialign.value === 'bottom' || ialign.value === 'middle') && tipHeight < linkHeight) {\n\t\tiarrow.value = 'middle'\n\t} else if ((ialign.value === 'left' || ialign.value === 'right' || ialign.value === 'center') && tipWidth < linkWidth) {\n\t\tiarrow.value = 'center'\n\t} else {\n\t\tiarrow.value = ialign.value\n\t}\n\n\t// 计算位置\n\tnextTick(() => {\n\t\t// 因为 position 会导致 tip 高宽的变化，设置前需要重新获取一次\n\t\ttipWidth = tooltip.value.offsetWidth\n\t\ttipHeight = tooltip.value.offsetHeight\n\t\tarrow.value.style.left = ''\n\t\tarrow.value.style.right = ''\n\t\tarrow.value.style.top = ''\n\t\tarrow.value.style.bottom = ''\n\t\ttooltip.value.style.left = ''\n\t\ttooltip.value.style.right = ''\n\t\ttooltip.value.style.top = ''\n\t\ttooltip.value.style.bottom = ''\n\n\t\tif (iposition.value === 'top-ab') {\n\t\t\ttooltip.value.style.top = 0\n\t\t}\n\t\tif (iposition.value === 'top') {\n\t\t\ttooltip.value.style.top = linkTop - tipHeight + 'px'\n\t\t}\n\t\tif (iposition.value === 'bottom') {\n\t\t\ttooltip.value.style.top = linkTop + linkHeight + 'px'\n\t\t}\n\t\tif (iposition.value === 'left') {\n\t\t\ttooltip.value.style.left = linkLeft - tipWidth + 'px'\n\t\t}\n\t\tif (iposition.value === 'right') {\n\t\t\ttooltip.value.style.left = linkLeft + linkWidth + 'px'\n\t\t}\n\n\t\tif (ialign.value === 'left') {\n\t\t\ttooltip.value.style.left = linkLeft + 'px'\n\t\t\tarrow.value.style.left = linkWidth / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (ialign.value === 'right') {\n\t\t\ttooltip.value.style.left = bodyWidth - tipWidth - linkRight + 'px'\n\t\t\tarrow.value.style.right = linkWidth / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (ialign.value === 'center') {\n\t\t\ttooltip.value.style.left = linkX - tipWidth / 2 + 'px'\n\t\t\tarrow.value.style.left = ''\n\t\t\tarrow.value.style.right = ''\n\t\t}\n\t\tif (ialign.value === 'top') {\n\t\t\ttooltip.value.style.top = linkTop + 'px'\n\t\t\tarrow.value.style.top = linkHeight / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (ialign.value === 'bottom') {\n\t\t\ttooltip.value.style.top = linkTop - tipHeight + linkHeight + 'px'\n\t\t\tarrow.value.style.bottom = linkHeight / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (ialign.value === 'middle') {\n\t\t\ttooltip.value.style.top = linkY - tipHeight / 2 + 'px'\n\t\t\tarrow.value.style.top = ''\n\t\t\tarrow.value.style.bottom = ''\n\t\t}\n\n\t\tif (iarrow.value === 'left') {\n\t\t\tarrow.value.style.left = linkWidth / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (iarrow.value === 'right') {\n\t\t\tarrow.value.style.right = linkWidth / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (iarrow.value === 'center') {\n\t\t\tarrow.value.style.left = ''\n\t\t\tarrow.value.style.right = ''\n\t\t}\n\t\tif (iarrow.value === 'top') {\n\t\t\tarrow.value.style.top = linkHeight / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (iarrow.value === 'bottom') {\n\t\t\tarrow.value.style.bottom = linkHeight / 2 - arrowSize / 2 + 'px'\n\t\t}\n\t\tif (iarrow.value === 'middle') {\n\t\t\tarrow.value.style.top = ''\n\t\t\tarrow.value.style.bottom = ''\n\t\t}\n\t})\n}\nconst open = by => {\n\t// 延时显示\n\tif (props.delay) {\n\t\tif (timer.value) {\n\t\t\tclearTimeout(timer.value)\n\t\t\ttimer.value = null\n\t\t}\n\t\ttimer.value = setTimeout(() => {\n\t\t\topenHandle(by)\n\t\t}, props.delay as number)\n\t} else {\n\t\topenHandle(by)\n\t}\n}\nconst openHandle = by => {\n\temit('beforeOpen')\n\tblurable.value = false\n\tif (!by) {\n\t\treturn\n\t}\n\tlink.value = by\n\tshow.value = true\n\tnextTick(() => {\n\t\tif (!tooltip.value) {\n\t\t\treturn\n\t\t}\n\n\t\t// 点击层外关闭\n\t\tdocument.body.addEventListener('click', blur, true)\n\t\tset(by)\n\t\tif (link.value && props.closeOnScroll) {\n\t\t\tsetScrollStatus()\n\t\t}\n\t\t// 设置 z-index\n\t\tif (props.zIndex) {\n\t\t\t;(instance?.proxy?.$el as HTMLElement).style.zIndex = props.zIndex.toString()\n\t\t} else {\n\t\t\t;(instance?.proxy?.$el as HTMLElement).style.zIndex = (window as any).$TouchUI?.zIndex.toString()\n\t\t\t;(window as any).$TouchUI ? (window as any).$TouchUI.zIndex++ : ((window as any).$TouchUI = { zIndex: 1 })\n\t\t}\n\t})\n\n\tblurable.value = true\n\n\t// // 防止点开后立即因为 blur 事件而关闭掉\n\t// let timer = null\n\t// timer = setTimeout(() => {\n\t// \tblurable.value = true\n\t// \tclearTimeout(timer)\n\t// \ttimer = null\n\t// }, 100)\n\n\t// 显示\n\temit('opened')\n}\n// type?: number\nconst close = () => {\n\t// && type !== 1\n\tif (!tooltip.value || !blurable.value) return\n\tif (props.delay) {\n\t\tif (timer.value) {\n\t\t\tclearTimeout(timer.value)\n\t\t\ttimer.value = null\n\t\t}\n\t\ttimer.value = setTimeout(() => {\n\t\t\tcloseHandle()\n\t\t}, Number(props.delay))\n\t} else {\n\t\tcloseHandle()\n\t}\n}\nconst closeHandle = () => {\n\tshow.value = false\n\tif (scrollNode.value && scrollNode.value.removeEventListener) {\n\t\tscrollNode.value.removeEventListener('scroll', close)\n\t}\n}\nconst setScrollStatus = () => {\n\tconst searchNode = Node => {\n\t\tif (Node.nodeName === 'BODY') {\n\t\t\treturn Node\n\t\t} else {\n\t\t\tif (Node.nodeName === 'DIV' && typeof Node.className === 'string' && Node.className.indexOf('to-scroll-content') > -1) {\n\t\t\t\treturn Node\n\t\t\t} else {\n\t\t\t\treturn searchNode(Node.parentNode)\n\t\t\t}\n\t\t}\n\t}\n\tscrollNode.value = searchNode(link.value.parentNode)\n\n\tif (scrollNode.value) {\n\t\t// 鼠标滚动时，直接关闭\n\t\t// 设置延时是因为表单校验的时候，获取焦点同时要展示 tooltip，获取焦点的对象如果只有半边在视角以内，则会自动触发滚动条滚动事件\n\t\tlet timer = null\n\t\ttimer = setTimeout(() => {\n\t\t\tscrollNode.value.addEventListener('scroll', close)\n\t\t\tclearTimeout(timer)\n\t\t\ttimer = null\n\t\t}, 0)\n\t}\n}\n// 点击层外关闭，通过递归判断点击是否在绑定此对象实例的 DOM 之内\nconst blur = e => {\n\tif (!tooltip.value || !blurable.value || !props.closeOnBlur) return\n\tnextTick(() => {\n\t\tlet node = e.target\n\t\twhile (node && node !== tooltip.value && node !== link.value && node.nodeName !== 'BODY') {\n\t\t\tnode = node.parentNode\n\t\t}\n\t\tif (node && node.nodeName === 'BODY') {\n\t\t\tclose()\n\t\t}\n\t})\n}\n// 暴露方法\ndefineExpose({ open, close })\n</script>\n"],"names":["DO_defineComponent","link","timer","lazy","_createElementBlock","flex","_normalizeClass","_createElementVNode","_renderSlot"],"mappings":"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"}