{"version":3,"file":"Fix.vue2.mjs","sources":["../../../../../../packages/components/fix/src/Fix.vue"],"sourcesContent":["<script lang=\"ts\">\nconst DRAG_THRESHOLD = 5\n\nimport { defineComponent as DO_defineComponent } from 'vue';\nexport default /*#__PURE__*/ DO_defineComponent({\n\tname: 'ToFix'\n});</script>\n<template>\n\t<div class=\"to-fix\" :class=\"setClass\">\n\t\t<div ref=\"content\" class=\"to-fix-wrapper\" :style=\"setStyle\" @mousedown=\"onMouseDown\" @touchstart=\"onTouchStart\">\n\t\t\t<slot></slot>\n\t\t\t<to-tag v-if=\"Number(number)\" class=\"to-fix-number\" type=\"number\">{{ number }}</to-tag>\n\t\t</div>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, computed, watch, onMounted, onActivated, onDeactivated, onBeforeUnmount, nextTick } from 'vue'\nimport { getEm } from '@touchvue/utils'\n\n// 定义 props\nconst props = defineProps({\n\tmode: {\n\t\ttype: String,\n\t\tdefault: 'default'\n\t},\n\ttop: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tnumber: {\n\t\ttype: [String, Number],\n\t\tdefault: ''\n\t},\n\tleft: {\n\t\ttype: [String, Number],\n\t\tdefault: 'auto'\n\t},\n\tright: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tbottom: {\n\t\ttype: [String, Number],\n\t\tdefault: 1\n\t},\n\tappendToBody: {\n\t\ttype: Boolean,\n\t\tdefault: true\n\t},\n\tdraggable: Boolean\n})\n\n// 响应式数据\nconst content = ref<HTMLElement | null>(null)\nconst resizeTimer = ref<number | null>(null)\nconst isDown = ref(false)\nconst offsetX = ref(0)\nconst offsetY = ref(0)\nconst currentTop = ref<string | null>(null)\nconst currentLeft = ref<string | null>(null)\nconst currentRight = ref<string | null>(null)\nconst currentBottom = ref<string | null>(null)\nconst isDraging = ref(false) // 拖动开始标志\nconst startX = ref(0) // 记录起始X位置\nconst startY = ref(0) // 记录起始Y位置\n // 拖动阈值，5px\n\n// 计算属性\nconst setStyle = computed(() => {\n\tconst obj: Record<string, string> = {}\n\tif (currentTop.value) {\n\t\tobj.top = currentTop.value\n\t\tobj.bottom = 'auto'\n\t} else {\n\t\tif (props.top && props.top !== 'auto') {\n\t\t\tobj.top = props.top + 'em'\n\t\t\tobj.bottom = 'auto'\n\t\t} else if (props.bottom && props.bottom !== 'auto') {\n\t\t\tobj.bottom = props.bottom + 'em'\n\t\t\tobj.top = 'auto'\n\t\t}\n\t}\n\tif (currentLeft.value) {\n\t\tobj.left = currentLeft.value\n\t\tobj.right = 'auto'\n\t} else {\n\t\tif (props.left && props.left !== 'auto') {\n\t\t\tobj.left = props.left + 'em'\n\t\t\tobj.right = 'auto'\n\t\t} else if (props.right && props.right !== 'auto') {\n\t\t\tobj.right = props.right + 'em'\n\t\t\tobj.left = 'auto'\n\t\t}\n\t}\n\treturn obj\n})\n\nconst setClass = computed(() => {\n\tconst arr = []\n\tif (props.mode) {\n\t\tarr.push(`mode-${props.mode}`)\n\t}\n\tif (isDraging.value) {\n\t\tarr.push(`is-dragging`)\n\t}\n\treturn arr\n})\n\n// 监听器\nwatch(isDown, val => {\n\tif (val) {\n\t\tdocument.body.style.userSelect = 'none'\n\t} else {\n\t\tdocument.body.style.userSelect = ''\n\t}\n})\n\n// 方法\nconst init = () => {\n\tif (props.appendToBody && content.value?.parentElement) {\n\t\tdocument.body.appendChild(content.value.parentElement)\n\t}\n\twindow.addEventListener('resize', resize)\n}\n\nconst destroy = () => {\n\twindow.removeEventListener('resize', resize)\n\tif (props.appendToBody && content.value?.parentElement?.parentNode) {\n\t\tcontent.value.parentElement.parentNode.removeChild(content.value.parentElement)\n\t}\n}\n\n// 鼠标事件\nconst onMouseDown = (event: MouseEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\tstartX.value = event.clientX // 记录起始位置\n\tstartY.value = event.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = event.clientX - rect.left\n\t\toffsetY.value = event.clientY - rect.top\n\t}\n\tdocument.addEventListener('mousemove', onMouseMove)\n\tdocument.addEventListener('mouseup', onMouseUp)\n}\n\nconst onMouseMove = (event: MouseEvent) => {\n\tif (!isDown.value) return\n\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(event.clientX - startX.value, 2) + Math.pow(event.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(event.clientX, event.clientY)\n\t}\n}\n\nconst onMouseUp = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('mousemove', onMouseMove)\n\tdocument.removeEventListener('mouseup', onMouseUp)\n\tsetEmUnit()\n}\n\n// 触摸事件\nconst onTouchStart = (event: TouchEvent) => {\n\tif (!props.draggable) return\n\n\tisDown.value = true\n\tisDraging.value = false // 重置拖动开始标志\n\n\tconst touch = event.touches[0]\n\tstartX.value = touch.clientX // 记录起始位置\n\tstartY.value = touch.clientY\n\tif (content.value) {\n\t\tconst rect = content.value.getBoundingClientRect()\n\t\toffsetX.value = touch.clientX - rect.left\n\t\toffsetY.value = touch.clientY - rect.top\n\t}\n\n\tdocument.addEventListener('touchmove', onTouchMove)\n\tdocument.addEventListener('touchend', onTouchEnd)\n}\n\nconst onTouchMove = (event: TouchEvent) => {\n\tif (!isDown.value) return\n\n\tconst touch = event.touches[0]\n\t// 计算移动距离\n\tconst distance = Math.sqrt(Math.pow(touch.clientX - startX.value, 2) + Math.pow(touch.clientY - startY.value, 2))\n\n\t// 只有当移动距离超过阈值时才开始拖动\n\tif (distance >= DRAG_THRESHOLD) {\n\t\tisDraging.value = true // 标记拖动已经开始\n\t\tsetPosition(touch.clientX, touch.clientY)\n\t}\n}\n\nconst onTouchEnd = () => {\n\tisDown.value = false\n\tisDraging.value = false\n\tdocument.removeEventListener('touchmove', onTouchMove)\n\tdocument.removeEventListener('touchend', onTouchEnd)\n\tsetEmUnit()\n}\n\nconst setEmUnit = () => {\n\tif (content.value) {\n\t\tcurrentTop.value = content.value.getBoundingClientRect().top / getEm() + 'em'\n\t\tcurrentLeft.value = content.value.getBoundingClientRect().left / getEm() + 'em'\n\t}\n}\n\nconst setPosition = (clientX?: number, clientY?: number) => {\n\tif (!content.value) return\n\n\tconst container = content.value.offsetParent || document.documentElement\n\tconst containerRect = container.getBoundingClientRect()\n\tconst elRect = content.value.getBoundingClientRect()\n\tconst elWidth = content.value.offsetWidth\n\tconst elHeight = content.value.offsetHeight\n\tlet newLeft = clientX ? clientX - offsetX.value : elRect.left\n\tlet newTop = clientY ? clientY - offsetY.value : elRect.top\n\n\t// 确保元素不会拖出可视范围\n\tif (newLeft < 0) newLeft = 0\n\tif (newLeft + elWidth > containerRect.width) newLeft = containerRect.width - elWidth\n\tif (newTop < 0) newTop = 0\n\tif (newTop + elHeight > containerRect.height) newTop = containerRect.height - elHeight\n\n\tcurrentTop.value = `${newTop}px`\n\tcurrentLeft.value = `${newLeft}px`\n\tcurrentRight.value = 'auto'\n\tcurrentBottom.value = 'auto'\n}\n\nconst resize = () => {\n\tif (resizeTimer.value) {\n\t\tclearTimeout(resizeTimer.value)\n\t}\n\tresizeTimer.value = window.setTimeout(() => {\n\t\tsetPosition()\n\t\tnextTick(() => {\n\t\t\tsetEmUnit()\n\t\t})\n\t}, 300)\n}\n\n// 生命周期钩子\nonMounted(() => {\n\tinit()\n})\n\nonActivated(() => {\n\tinit()\n})\n\nonDeactivated(() => {\n\tdestroy()\n})\n\nonBeforeUnmount(() => {\n\tdestroy()\n})\n</script>\n"],"names":["DO_defineComponent","_createElementBlock","_normalizeClass","_createElementVNode","_renderSlot","_createBlock"],"mappings":"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"}