UNPKG

label-print-design

Version:

操作简单,组件丰富的一站式打印解决方案打印设计器

308 lines (303 loc) 12.9 kB
'use strict'; Object.defineProperty(exports, '__esModule', { value: true }); var vue = require('vue'); var vueDemi = require('vue-demi'); var devicePixelRatio = require('../../../utils/devicePixelRatio.js'); var design = require('../../design/design.vue.js'); var elementUtil = require('../../../utils/elementUtil.js'); var event = require('../../../utils/event.js'); var moveable = require('../../../plugins/moveable/moveable.js'); var app = require('../../../stores/app.js'); var dragWrapper = require('./dragWrapper.vue.js'); var mouseTips = require('../../../utils/mouseTips.js'); var historyUtil = require('../../../utils/historyUtil.js'); var dataTable = require('../../../utils/table/dataTable.js'); const padding = 30; var _sfc_main = /* @__PURE__ */ vue.defineComponent({ __name: "base-widget", props: { data: { default: () => ({}) }, pageUnit: {} }, setup(__props) { const appStore = app.useAppStoreHook(); const designRef = vueDemi.ref(); const isDrop = vueDemi.ref(false); const tmpElement = vueDemi.ref({}); const dragWrapper$1 = vueDemi.reactive({ visible: false, transitionAnime: false, x: 0, y: 0, width: 0, height: 0, opacity: 0 }); const props = __props; const panel = elementUtil.getCurrentPanel(); function dragStart(ev) { mouseTips.mouseTips.visible(); tmpElement.value = JSON.parse(JSON.stringify(props.data)); const element = tmpElement.value; let parentElement; let startX = 0, startY = 0; if (element.type == "PageHeader" || element.type == "PageFooter") { element.width = devicePixelRatio.unit2unit(panel.pageUnit, props.pageUnit, panel.width); } mouseTips.mouseTips.move(ev.clientX, ev.clientY, "\u677E\u5F00\u53D6\u6D88"); if (props.pageUnit != panel.pageUnit) { element.width = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, tmpElement.value.width); element.height = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, tmpElement.value.height); if (element.type == "DataTable") { dataTable.recursionForTableCell(element.columnList, (providerCell) => { const columnCell = providerCell; if (columnCell.height == null) { columnCell.height = 7; } if (!columnCell.data) { columnCell.data = columnCell.label; } columnCell.height = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, columnCell.height); columnCell.width = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, columnCell.width); if (columnCell.columnBody) { if (columnCell.columnBody.height) { columnCell.columnBody.height = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, columnCell.columnBody.height); } if (columnCell.columnBody.width) { columnCell.columnBody.width = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, columnCell.columnBody.width); } } }); } if (element.type.startsWith("Svg") && element.data) { const data = JSON.parse(element.data); const points = data.points; const controlPoints = data.controlPoints; const dataJson = {}; if (points) { for (let point of points) { point.x = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, point.x); point.y = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, point.y); } dataJson.points = points; } if (controlPoints) { for (let point of controlPoints) { point.x = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, point.x); point.y = devicePixelRatio.unit2unit(props.pageUnit, panel.pageUnit, point.y); } dataJson.controlPoints = controlPoints; } element.data = JSON.stringify(dataJson); } } else { if (element.type == "DataTable") { dataTable.recursionForTableCell(element.columnList, (providerCell) => { const columnCell = providerCell; if (columnCell.height == null) { columnCell.height = 7; } if (!columnCell.data) { columnCell.data = columnCell.label; } }); } } elementUtil.initElement(panel, element, 0); let halfWidth = devicePixelRatio.unit2px(tmpElement.value.width) / 2; let halfHeight = devicePixelRatio.unit2px(tmpElement.value.height) / 2; startX = ev.clientX - halfWidth; startY = ev.clientY - halfHeight; element.x = devicePixelRatio.px2unit(startX - appStore.panelPosition.x + appStore.panelPosition.scrollX - padding); element.y = devicePixelRatio.px2unit(startY - appStore.panelPosition.y + appStore.panelPosition.scrollY - padding); element.runtimeOption.x = devicePixelRatio.unit2px(element.x); element.runtimeOption.y = devicePixelRatio.unit2px(element.y); element.runtimeOption.init.x = element.runtimeOption.x; element.runtimeOption.init.y = element.runtimeOption.y; element.runtimeOption.parent = panel; dragWrapper$1.visible = true; dragWrapper$1.opacity = 1; dragWrapper$1.x = startX; dragWrapper$1.y = startY; dragWrapper$1.width = element.runtimeOption.width; dragWrapper$1.height = element.runtimeOption.height; isDrop.value = true; document.addEventListener("mousemove", mouseMove); document.addEventListener("mouseup", mouseup); event.clearEventBubble(ev); vueDemi.nextTick(() => { const myHtmlElement = designRef.value.$el; element.runtimeOption.target = myHtmlElement; myHtmlElement.element = element; moveable.dragNewElement(element.runtimeOption.target, ev); }); function mouseMove(evMove) { let diffXNum = evMove.clientX + -appStore.panelPosition.x + -appStore.panelPosition.w; let diffYNum = evMove.clientY + -appStore.panelPosition.y + -appStore.panelPosition.h; if (diffXNum < 0) { diffXNum = 0; } if (diffYNum < 0) { diffYNum = 0; } if (diffXNum <= halfWidth && diffYNum <= halfHeight) { if (evMove.clientY < appStore.panelPosition.y || evMove.clientX < appStore.panelPosition.x) { dragWrapper$1.opacity = 1; } else { if (diffYNum == 0) { dragWrapper$1.opacity = diffXNum / halfWidth; } else if (diffXNum == 0) { dragWrapper$1.opacity = diffYNum / halfHeight; } else { dragWrapper$1.opacity = (diffXNum / halfWidth + diffYNum / halfHeight) / 2; } } } dragWrapper$1.x = element.runtimeOption.x + appStore.panelPosition.x + padding - appStore.panelPosition.scrollX; dragWrapper$1.y = element.runtimeOption.y + appStore.panelPosition.y + padding - appStore.panelPosition.scrollY; mouseTips.mouseTips.move(dragWrapper$1.x + halfWidth, dragWrapper$1.y + halfHeight); if (diffXNum == 0 && diffYNum == 0) { mouseTips.mouseTips.setData("\u677E\u5F00\u653E\u7F6E"); const point = { x: element.runtimeOption.x + halfWidth, y: element.runtimeOption.y + halfHeight }; if (!parentElement || !elementUtil.innerElementIs(point, element, parentElement)) { if (parentElement) { parentElement.runtimeOption.dragInIs = false; parentElement = void 0; } if (panel.pageHeader && elementUtil.innerElementIs(point, element, panel.pageHeader)) { panel.pageHeader.runtimeOption.dragInIs = true; parentElement = panel.pageHeader; } else if (panel.pageFooter && elementUtil.innerElementIs(point, element, panel.pageFooter)) { panel.pageFooter.runtimeOption.dragInIs = true; parentElement = panel.pageFooter; } else { for (let elementOf of panel.elementList) { if (elementOf.type == "Container" && elementUtil.innerElementIs(point, element, elementOf)) { elementOf.runtimeOption.dragInIs = true; parentElement = elementOf; break; } } } panel.runtimeOption.dragInIs = !parentElement; } } else { mouseTips.mouseTips.setData("\u677E\u5F00\u53D6\u6D88"); panel.runtimeOption.dragInIs = false; } } function mouseup(mouseupEvent) { mouseTips.mouseTips.hidden(); mouseupEvent["tmpElement"] = true; if (dragWrapper$1.opacity > 0) { dragWrapper$1.opacity = 1; if (dragWrapper$1.x == startX && dragWrapper$1.y == startY) { dragWrapper$1.visible = false; } else { dragWrapper$1.transitionAnime = true; dragWrapper$1.x = startX; dragWrapper$1.y = startY; } moveable.dragNewElementCancel(element.runtimeOption.target); isDrop.value = false; } else { dragWrapper$1.visible = false; panel.runtimeOption.dragInIs = false; if (parentElement) { element.x = element.x - parentElement.x; element.y = element.y - parentElement.y; elementUtil.addElement(panel, parentElement, element); parentElement.runtimeOption.dragInIs = false; parentElement = void 0; } else { elementUtil.handleElementType(element).handle( "PageHeader", () => { if (panel.pageHeader != void 0) { return; } panel.pageHeader = element; element.width = panel.width; element.runtimeOption.width = devicePixelRatio.unit2px(panel.width); element.runtimeOption.x = 0; element.runtimeOption.y = 0; element.x = 0; element.y = 0; elementUtil.installParentElement(panel, element); } ).handle( "PageFooter", () => { if (panel.pageFooter != void 0) { return; } panel.pageFooter = element; element.width = panel.width; element.runtimeOption.width = devicePixelRatio.unit2px(panel.width); element.runtimeOption.x = 0; element.x = 0; element.y = panel.height - element.height; element.runtimeOption.y = devicePixelRatio.unit2px(panel.height - element.height); elementUtil.installParentElement(panel, element); } ).end(() => { elementUtil.addElement(panel, panel, element); }); } historyUtil.record({ type: "Element", action: historyUtil.ActionEnum.ADD, elementList: [element] }); vueDemi.nextTick(() => { moveable.updatePanel([element]); setTimeout(() => { isDrop.value = false; }, 1); }); } document.removeEventListener("mousemove", mouseMove); document.removeEventListener("mouseup", mouseup); } } return (_ctx, _cache) => { return vue.openBlock(), vue.createElementBlock( vue.Fragment, null, [ vue.createElementVNode( "div", { onMousedown: _cache[0] || (_cache[0] = ($event) => dragStart($event)) }, [ vue.renderSlot(_ctx.$slots, "default") ], 32 /* NEED_HYDRATION */ ), vue.unref(isDrop) ? (vue.openBlock(), vue.createBlock(vue.Teleport, { key: 0, to: ".design-content" }, [ vue.createVNode(design.default, { element: vue.unref(tmpElement), ref_key: "designRef", ref: designRef }, null, 8, ["element"]) ])) : vue.createCommentVNode("v-if", true), vue.unref(dragWrapper$1).visible ? (vue.openBlock(), vue.createBlock(vue.Teleport, { key: 1, to: "body" }, [ vue.createVNode(dragWrapper.default, { data: vue.unref(dragWrapper$1) }, null, 8, ["data"]) ])) : vue.createCommentVNode("v-if", true) ], 64 /* STABLE_FRAGMENT */ ); }; } }); exports.default = _sfc_main; //# sourceMappingURL=base-widget.vue2.js.map