{"version":3,"file":"base-widget.vue2.mjs","sources":["../../../../../../src/components/content/widget/base-widget.vue"],"sourcesContent":["<script lang=\"ts\">\nconst padding = 30\n</script>\n<template>\n    <div @mousedown=\"dragStart($event)\">\n        <slot />\n    </div>\n    <Teleport v-if=\"isDrop\" to=\".design-content\">\n        <design :element=\"tmpElement\" ref=\"designRef\" />\n    </Teleport>\n    <Teleport v-if=\"dragWrapper.visible\" to=\"body\">\n        <drag-wrapper :data=\"dragWrapper\" />\n    </Teleport>\n</template>\n<script setup lang=\"ts\">\nimport { nextTick, reactive, ref } from 'vue-demi';\n// @ts-ignore\nimport { Container, MyElement, PageUnit, Point, SvgData } from '@myprint/design/types/entity';\nimport { px2unit, unit2px, unit2unit } from '@myprint/design/utils/devicePixelRatio';\nimport Design from '@myprint/design/components/design/design.vue';\nimport {\n    addElement, getCurrentPanel,\n    handleElementType,\n    initElement,\n    innerElementIs,\n    installParentElement\n} from '@myprint/design/utils/elementUtil';\nimport { clearEventBubble } from '@myprint/design/utils/event';\nimport { dragNewElement, dragNewElementCancel, updatePanel } from '@myprint/design/plugins/moveable/moveable';\nimport { useAppStoreHook as useAppStore } from '@myprint/design/stores/app';\nimport DragWrapper from '@myprint/design/components/content/widget/dragWrapper.vue';\nimport { mouseTips } from '@myprint/design/utils/mouseTips';\nimport { ActionEnum, record, Snapshot } from '@myprint/design/utils/historyUtil';\nimport { recursionForTableCell } from '@myprint/design/utils/table/dataTable';\n\nconst appStore = useAppStore();\n\nconst designRef = ref();\nconst isDrop = ref(false);\nconst tmpElement = ref({} as MyElement);\nconst dragWrapper = reactive({\n    visible: false,\n    transitionAnime: false,\n    x: 0,\n    y: 0,\n    width: 0,\n    height: 0,\n    opacity: 0\n} as Container & { visible: boolean, opacity: number, transitionAnime: boolean });\n\nconst props = withDefaults(defineProps<{\n    data?: MyElement,\n    pageUnit: PageUnit,\n}>(), {\n    data: () => ({} as MyElement)\n});\n\nconst panel = getCurrentPanel()\n\n\nfunction dragStart(ev: MouseEvent) {\n    mouseTips.visible();\n    tmpElement.value = JSON.parse(JSON.stringify(props.data));\n    const element = tmpElement.value;\n    let parentElement: MyElement;\n    \n    let startX = 0, startY = 0;\n    \n    if (element.type == 'PageHeader' || element.type == 'PageFooter') {\n        element.width = unit2unit(panel.pageUnit, props.pageUnit, panel.width);\n    }\n    mouseTips.move(ev.clientX, ev.clientY, '松开取消');\n    \n    if (props.pageUnit != panel.pageUnit) {\n        element.width = unit2unit(props.pageUnit, panel.pageUnit, tmpElement.value.width);\n        element.height = unit2unit(props.pageUnit, panel.pageUnit, tmpElement.value.height);\n        \n        if (element.type == 'DataTable') {\n            // 转表格行\n            \n            recursionForTableCell(element.columnList, providerCell => {\n                const columnCell = providerCell;\n                if (columnCell.height == null) {\n                    columnCell.height = 7;\n                }\n                if (!columnCell.data) {\n                    columnCell.data = columnCell.label;\n                }\n                columnCell.height = unit2unit(props.pageUnit, panel.pageUnit, columnCell.height);\n                columnCell.width = unit2unit(props.pageUnit, panel.pageUnit, columnCell.width);\n                if (columnCell.columnBody) {\n                    if (columnCell.columnBody.height) {\n                        columnCell.columnBody.height = unit2unit(props.pageUnit, panel.pageUnit, columnCell.columnBody.height);\n                    }\n                    if (columnCell.columnBody.width) {\n                        columnCell.columnBody.width = unit2unit(props.pageUnit, panel.pageUnit, columnCell.columnBody.width);\n                    }\n                }\n            });\n        }\n        \n        if (element.type.startsWith('Svg') && element.data) {\n            const data = JSON.parse(element.data) as SvgData;\n            const points = data.points as Point[];\n            const controlPoints = data.controlPoints as Point[];\n            const dataJson = {} as SvgData;\n            if (points) {\n                for (let point of points) {\n                    point.x = unit2unit(props.pageUnit, panel.pageUnit, point.x);\n                    point.y = unit2unit(props.pageUnit, panel.pageUnit, point.y);\n                }\n                dataJson.points = points;\n            }\n            \n            if (controlPoints) {\n                for (let point of controlPoints) {\n                    point.x = unit2unit(props.pageUnit, panel.pageUnit, point.x);\n                    point.y = unit2unit(props.pageUnit, panel.pageUnit, point.y);\n                }\n                dataJson.controlPoints = controlPoints;\n            }\n            element.data = JSON.stringify(dataJson);\n        }\n    } else {\n        if (element.type == 'DataTable') {\n            // 转表格行\n            recursionForTableCell(element.columnList, providerCell => {\n                const columnCell = providerCell;\n                if (columnCell.height == null) {\n                    columnCell.height = 7;\n                }\n                if (!columnCell.data) {\n                    columnCell.data = columnCell.label;\n                }\n            });\n        }\n    }\n    \n    initElement(panel, element, 0);\n    \n    // console.log(element.width);\n    // console.log(element.height);\n    let halfWidth = unit2px(tmpElement.value.width) / 2;\n    let halfHeight = unit2px(tmpElement.value.height) / 2;\n    // console.log(halfWidth);\n    startX = ev.clientX - halfWidth;\n    startY = ev.clientY - halfHeight;\n    \n    element.x = px2unit(startX - appStore.panelPosition.x + appStore.panelPosition.scrollX - padding);\n    element.y = px2unit(startY - appStore.panelPosition.y + appStore.panelPosition.scrollY - padding);\n    \n    element.runtimeOption.x = unit2px(element.x);\n    element.runtimeOption.y = unit2px(element.y);\n    \n    element.runtimeOption.init.x = element.runtimeOption.x;\n    element.runtimeOption.init.y = element.runtimeOption.y;\n    \n    element.runtimeOption.parent = panel;\n    \n    dragWrapper.visible = true;\n    dragWrapper.opacity = 1;\n    \n    dragWrapper.x = startX;\n    dragWrapper.y = startY;\n    \n    dragWrapper.width = element.runtimeOption.width;\n    dragWrapper.height = element.runtimeOption.height;\n    \n    isDrop.value = true;\n    \n    document.addEventListener('mousemove', mouseMove);\n    document.addEventListener('mouseup', mouseup);\n    clearEventBubble(ev);\n    \n    nextTick(() => {\n        // console.log(designRef.value.$el)\n        const myHtmlElement = designRef.value.$el;\n        element.runtimeOption.target = myHtmlElement;\n        myHtmlElement.element = element;\n        dragNewElement(element.runtimeOption.target, ev);\n    });\n    \n    function mouseMove(evMove: MouseEvent) {\n        let diffXNum = -evMove.clientX + appStore.panelPosition.x;\n        let diffYNum = -evMove.clientY + appStore.panelPosition.y;\n        if (diffXNum < 0) {\n            diffXNum = 0;\n        }\n        if (diffYNum < 0) {\n            diffYNum = 0;\n        }\n        \n        if (diffXNum <= halfWidth && diffYNum <= halfHeight) {\n            if (diffYNum == 0) {\n                dragWrapper.opacity = (diffXNum / halfWidth);\n            } else if (diffXNum == 0) {\n                dragWrapper.opacity = (diffYNum / halfHeight);\n            } else {\n                dragWrapper.opacity = ((diffXNum / halfWidth) + (diffYNum / halfHeight)) / 2;\n            }\n        }\n        \n        dragWrapper.x = element.runtimeOption.x + appStore.panelPosition.x + padding - appStore.panelPosition.scrollX;\n        dragWrapper.y = element.runtimeOption.y + appStore.panelPosition.y + padding - appStore.panelPosition.scrollY;\n        \n        mouseTips.move(dragWrapper.x + halfWidth, dragWrapper.y + halfHeight);\n        \n        if (diffXNum == 0 && diffYNum == 0) {\n            mouseTips.setData('松开放置');\n            \n            // 判断有没有进入容器/页眉/页脚\n            \n            const point = { x: element.runtimeOption.x + halfWidth, y: element.runtimeOption.y + halfHeight };\n            \n            if (!parentElement || !innerElementIs(point, element, parentElement)) {\n                if (parentElement) {\n                    parentElement.runtimeOption.dragInIs = false;\n                    parentElement = undefined!;\n                }\n                if (panel.pageHeader && innerElementIs(point, element, panel.pageHeader)) {\n                    panel.pageHeader.runtimeOption.dragInIs = true;\n                    parentElement = panel.pageHeader;\n                } else if (panel.pageFooter && innerElementIs(point, element, panel.pageFooter)) {\n                    panel.pageFooter.runtimeOption.dragInIs = true;\n                    parentElement = panel.pageFooter;\n                } else {\n                    for (let elementOf of panel.elementList!) {\n                        if (elementOf.type == 'Container' && innerElementIs(point, element, elementOf)) {\n                            elementOf.runtimeOption.dragInIs = true;\n                            parentElement = elementOf;\n                            break;\n                        }\n                    }\n                }\n                panel.runtimeOption.dragInIs = !parentElement;\n            }\n        } else {\n            mouseTips.setData('松开取消');\n            \n            panel.runtimeOption.dragInIs = false;\n        }\n    }\n    \n    function mouseup(mouseupEvent: MouseEvent) {\n        mouseTips.hidden();\n        mouseupEvent['tmpElement'] = true;\n        if (dragWrapper.opacity > 0) {\n            // 放回原处\n            dragWrapper.opacity = 1;\n            if (dragWrapper.x == startX && dragWrapper.y == startY) {\n                // console.log('==');\n                dragWrapper.visible = false;\n            } else {\n                dragWrapper.transitionAnime = true;\n                dragWrapper.x = startX;\n                dragWrapper.y = startY;\n            }\n            dragNewElementCancel(element.runtimeOption.target);\n            isDrop.value = false;\n        } else {\n            dragWrapper.visible = false;\n            panel.runtimeOption.dragInIs = false;\n            \n            if (parentElement) {\n                element.x = element.x - parentElement.x;\n                element.y = element.y - parentElement.y;\n                addElement(panel, parentElement, element);\n                parentElement.runtimeOption.dragInIs = false;\n                parentElement = undefined!;\n            } else {\n                handleElementType(element)\n                    .handle('PageHeader', () => {\n                            if (panel.pageHeader != undefined) {\n                                return;\n                            }\n                            panel.pageHeader = element;\n                            element.width = panel.width;\n                            element.runtimeOption.width = unit2px(panel.width);\n                            element.runtimeOption.x = 0;\n                            element.runtimeOption.y = 0;\n                            element.x = 0;\n                            element.y = 0;\n                            // element.y = panel.height - element.height\n                            // element.runtimeOption.y = unit2px(panel.height - element.height)\n                            installParentElement(panel, element);\n                        }\n                    )\n                    .handle('PageFooter', () => {\n                            if (panel.pageFooter != undefined) {\n                                return;\n                            }\n                            panel.pageFooter = element;\n                            element.width = panel.width;\n                            element.runtimeOption.width = unit2px(panel.width);\n                            element.runtimeOption.x = 0;\n                            element.x = 0;\n                            element.y = panel.height - element.height;\n                            element.runtimeOption.y = unit2px(panel.height - element.height);\n                            installParentElement(panel, element);\n                        }\n                    ).end(() => {\n                    addElement(panel, panel, element);\n                });\n                // console.log(panel)\n            }\n            \n            // 记录历史\n            record(<Snapshot>{\n                type: 'Element',\n                action: ActionEnum.ADD,\n                elementList: [element]\n            });\n            \n            nextTick(() => {\n                updatePanel([element]);\n                setTimeout(() => {\n                    isDrop.value = false;\n                }, 1);\n            });\n        }\n        \n        document.removeEventListener('mousemove', mouseMove);\n        document.removeEventListener('mouseup', mouseup);\n    }\n    \n}\n\n</script>\n"],"names":["useAppStore"],"mappings":"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"}