{"version":3,"file":"auxiliary-line.vue2.mjs","sources":["../../../../../../src/components/design/auxiliary/auxiliary-line.vue"],"sourcesContent":["<template>\n    <div :class=\"['design-auxiliary-line', props.element.direction == 'vertical'?\n              'design-auxiliary-line-v': 'design-auxiliary-line-h',\n              {\n                'pointer-events': tmp,\n                'design-auxiliary-line-hidden': props.element.runtimeOption?.auxiliaryLineStatus == 'HIDDEN'\n              }]\"\n         ref=\"designAuxiliaryLineRef\"\n         :style=\"style\">\n        <div class=\"design-auxiliary-line-control cursor-resize\"\n             data-rotation=\"move\"\n             v-if=\"!tmp\"\n             @mousedown=\"auxiliaryLineControlMouseDown($event)\" />\n        \n        <div class=\"icon-design-remove iconfont design-auxiliary-line-remove cursor-pointer\"\n             @click=\"removeAuxiliaryLine\" />\n    </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { MyAuxiliaryLine, RuntimeElementOption } from '@myprint/design/types/entity';\nimport { computed, CSSProperties, onMounted, ref, watch } from 'vue-demi';\nimport { useAppStoreHook } from '@myprint/design/stores/app';\nimport { getCurrentPanel } from '@myprint/design/utils/elementUtil';\nimport { arrayRemove } from '@myprint/design/utils/arrays';\n\nconst props = withDefaults(defineProps<{\n    element: MyAuxiliaryLine,\n    scrollX?: number,\n    scrollY?: number,\n    tmp?: boolean,\n}>(), {\n    element: () => ({} as MyAuxiliaryLine),\n    scrollX: 0,\n    scrollY: 0,\n    tmp: false\n});\n\nconst designAuxiliaryLineRef = ref();\n\nonMounted(() => {\n    if (props.element.runtimeOption == null) {\n        props.element.runtimeOption = {} as RuntimeElementOption;\n    }\n    props.element.runtimeOption.target = designAuxiliaryLineRef.value;\n});\n\nconst style = computed(() => {\n    return {\n        transform: `translate(${props.element.x + props.element.runtimeOption.x}px, ${props.element.y + props.element.runtimeOption.y}px)`\n    } as CSSProperties;\n});\nconst useApp = useAppStoreHook();\n\nfunction removeAuxiliaryLine() {\n    arrayRemove(getCurrentPanel().auxiliaryLineList, props.element);\n}\n\nfunction auxiliaryLineControlMouseDown(event: MouseEvent) {\n    const { clientX, clientY } = event;\n    const { x, y } = props.element;\n    \n    useApp.dataRotation = 'move';\n    const { offsetWidth, offsetHeight } = (event.target as HTMLDivElement).parentElement!.parentElement!;\n    \n    function auxiliaryLineControlMouseMove(moveEvent: MouseEvent) {\n        const moveClientX = moveEvent.clientX;\n        const moveClientY = moveEvent.clientY;\n        if (props.element.direction == 'vertical') {\n            props.element.x = Math.min(Math.max(x + moveClientX - clientX, 0), offsetWidth);\n        } else {\n            props.element.y = Math.min(Math.max(y + moveClientY - clientY, 0), offsetHeight);\n        }\n    }\n    \n    function auxiliaryLineControlMouseUp() {\n        document.removeEventListener('mousemove', auxiliaryLineControlMouseMove);\n        document.removeEventListener('mouseup', auxiliaryLineControlMouseUp);\n        useApp.dataRotation = 'none';\n    }\n    \n    event.stopPropagation();\n    document.addEventListener('mousemove', auxiliaryLineControlMouseMove);\n    document.addEventListener('mouseup', auxiliaryLineControlMouseUp);\n}\n\nif (props.element.direction == 'horizontal') {\n    watch(() => props.scrollY, (_n, _o) => {\n        props.element.runtimeOption.y = -props.scrollY;\n    });\n}\n\nif (props.element.direction == 'vertical') {\n    watch(() => props.scrollX, (_n, _o) => {\n        props.element.runtimeOption.x = -props.scrollX;\n    });\n}\n\n\n</script>\n"],"names":[],"mappings":"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"}