{"version":3,"file":"my-collapse.vue2.mjs","sources":["../../../../../../src/components/my/collapse/my-collapse.vue"],"sourcesContent":["<template>\n    <Teleport to=\"body\">\n        <div ref=\"headRef\"\n             v-show=\"modelValue\"\n             class=\"collapse-panel user-select-none\"\n             :class=\"{'disable-collapse-panel-height-duration': data.resizeIs, 'collapse-panel-height-duration': data.loaded}\"\n             :style=\"style\">\n            <div class=\"collapse-panel-head display-flex\">\n                <div class=\"collapse-panel-head-title display-flex\" @mousedown=\"headMouseDown\">\n                    {{ element.label }}\n                    <slot name=\"head\" />\n                </div>\n                \n                <my-icon class=\"my-handle-panel-icon\" @click=\"clickHead\">\n                    <ArrowRight class=\"collapse-panel-head-right-icon\" :class=\"{'is-active': data.show }\" />\n                </my-icon>\n                \n                <my-icon class=\"collapse-panel-head-right-close cursor-pointer\" @click=\"clickHeadClose\">\n                    <Close class=\"collapse-panel-head-right-icon\" />\n                </my-icon>\n            \n            </div>\n            <my-scrollbar height=\"calc(100% - 24px)\" @mousedown=\"bodyMouseDown\">\n                <slot />\n            </my-scrollbar>\n            <div @mousedown=\"resize\" v-if=\"data.show\" class=\"collapse-panel-resize\"></div>\n        \n        </div>\n    </Teleport>\n</template>\n<script setup lang=\"ts\">\nimport { computed, CSSProperties, nextTick, onMounted, reactive, ref } from 'vue-demi';\nimport { getCollapsePanelZIndex } from '@myprint/design/utils/utils';\nimport { HandlePanel, HandlePanelPosition } from '@myprint/design/types/entity';\nimport { useAppStoreHook } from '@myprint/design/stores/app';\nimport MyScrollbar from '@myprint/design/components/my/scrollbar/my-scrollbar.vue';\nimport MyIcon from '@myprint/design/components/my/icon/my-icon.vue';\nimport ArrowRight from '@myprint/design/components/my/icon/icons/ArrowRight.vue';\nimport Close from '@myprint/design/components/my/icon/icons/Close.vue';\n\nexport interface Props {\n    element?: HandlePanel;\n    position: HandlePanelPosition;\n    modelValue?: boolean;\n}\n\nconst props = withDefaults(defineProps<Props>(), {\n    element: () => ({} as HandlePanel),\n    position: () => ({} as HandlePanelPosition),\n    modelValue: false\n});\nconst appStore = useAppStoreHook();\n\nconst emit = defineEmits(['update:modelValue']);\n\nconst headRef = ref<HTMLDivElement>()!;\nconst data = reactive({\n    x: 0,\n    y: 0,\n    right: 0,\n    bodyResizeHeight: 0,\n    translateX: 0,\n    translateY: 0,\n    show: true,\n    resizeIs: false,\n    zIndex: 0,\n    loaded: false\n});\n\nonMounted(() => {\n    data.zIndex = getCollapsePanelZIndex(data.zIndex);\n    const boundingClientRect = headRef.value!.getBoundingClientRect();\n    const left = boundingClientRect.left;\n    const right = boundingClientRect.right;\n    data.x = left;\n    data.y = right;\n    // data.right = document.body.clientHeight - props.element.x\n    data.bodyResizeHeight = document.body.clientHeight;\n    \n    nextTick(() => {\n        data.loaded = true;\n    });\n});\n\nfunction clickHead() {\n    data.show = !data.show;\n}\n\nfunction clickHeadClose() {\n    // modelValue.visible = false\n    emit('update:modelValue', false);\n    // data.show = !data.show\n}\n\nconst style = computed(() => {\n    return {\n        right: props.position.x + 'px',\n        top: props.position.y + 'px',\n        width: props.position.width + 'px',\n        zIndex: data.zIndex,\n        transform: `translate(${data.translateX}px, ${data.translateY}px)`,\n        height: data.show ? `max(100% - ${(data.bodyResizeHeight - props.position.height)}px, 24px)` : '21px'\n    } as CSSProperties;\n});\n\nfunction headMouseDown(e: MouseEvent) {\n    // useConfigStore1.changeCursor('cursor-move')\n    appStore.dataRotation = 'move';\n    // data.zIndex = getCollapsePanelZIndex(data.zIndex)\n    e.preventDefault();\n    const disX = e.clientX;\n    const disY = e.clientY;\n    \n    const clientWidth = document.body.clientWidth - 20;\n    const clientHeight = document.body.clientHeight;\n    \n    let translateXTmp = data.translateX;\n    let translateYTmp = data.translateY;\n    \n    let height = headRef.value!.offsetHeight;\n    \n    const boundingClientRect = headRef.value!.getBoundingClientRect();\n    \n    document.onmousemove = function(e) {\n        // 通过事件委托，计算移动的距离\n        const l = e.clientX - disX;\n        const t = e.clientY - disY;\n        \n        // 移动当前元素\n        // if (props.element.x + translateXTmp + l < 0) {\n        //   data.translateX = -props.element.x\n        // } else if (data.right + translateXTmp + l > clientWidth) {\n        //   data.translateX = clientWidth - data.right\n        // } else {\n        //   data.translateX = translateXTmp + l\n        // }\n        if (boundingClientRect.left + l < 0) {\n            data.translateX = translateXTmp - boundingClientRect.left;\n        } else if (boundingClientRect.right + l > clientWidth) {\n            data.translateX = translateXTmp + clientWidth - boundingClientRect.right;\n        } else {\n            data.translateX = translateXTmp + l;\n        }\n        \n        if (props.position.y + translateYTmp + t < 0) {\n            data.translateY = -props.position.y;\n        } else if (props.position.y + height + translateYTmp + t > clientHeight) {\n            data.translateY = clientHeight - props.position.y - height;\n        } else {\n            data.translateY = translateYTmp + t;\n        }\n        e.preventDefault();\n        e.stopPropagation();\n    };\n    \n    document.onmouseup = function(_e) {\n        appStore.dataRotation = 'none';\n        \n        // 记录位置\n        props.position.y = props.position.y + data.translateY;\n        data.translateY = 0;\n        props.position.x = props.position.x - data.translateX;\n        data.translateX = 0;\n        document.onmousemove = null;\n        document.onmouseup = null;\n    };\n    return false;\n}\n\nfunction bodyMouseDown() {\n    data.zIndex = getCollapsePanelZIndex(data.zIndex);\n}\n\nfunction resize(e: MouseEvent) {\n    e.preventDefault();\n    data.zIndex = getCollapsePanelZIndex(data.zIndex);\n    appStore.dataRotation = 'ns-resize';\n    data.resizeIs = true;\n    const disY = e.clientY;\n    let tmpHeight = props.position.height;\n    \n    document.onmousemove = function(e) {\n        // 通过事件委托，计算移动的距离\n        const t = e.clientY - disY;\n        \n        props.position.height = tmpHeight + t;\n        \n        e.preventDefault();\n        e.stopPropagation();\n    };\n    \n    \n    document.onmouseup = function(_e) {\n        appStore.dataRotation = 'none';\n        data.resizeIs = false;\n        document.onmousemove = null;\n        document.onmouseup = null;\n    };\n    return false;\n}\n\n</script>\n"],"names":["e"],"mappings":"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"}