{"version":3,"file":"rule.vue2.mjs","sources":["../../../../../../src/components/my/rule/rule.vue"],"sourcesContent":["<template>\n    <!-- 刻度尺容 -->\n    <div class=\"verticalRule\"\n         ref=\"ruleRef\"\n         :style=\"styleWrapper\"\n         @mousemove=\"mouseMove($event)\"\n         @mouseleave=\"mouseLeave\"\n         @click=\"mouseClick($event)\">\n        <div v-if=\"highlight.x != undefined\"\n             class=\"ruleHighlight pointer-events\"\n             :style=\"highlightStyle\" />\n        <svg id=\"canvas\" ref=\"canvas\"\n             class=\"rule pointer-events\"\n             :style=\"style\">\n            <path class=\"u-path\" d=\"\" />\n        </svg>\n    </div>\n</template>\n\n<script setup lang=\"ts\">\nimport { computed, CSSProperties, nextTick, onMounted, ref, watch, watchEffect } from 'vue-demi';\nimport { unit2px, unit2unit } from '@myprint/design/utils/devicePixelRatio';\nimport { scaleUtil } from '@myprint/design/utils/scaleUtil';\nimport { getCurrentPanel, valueUnit } from '@myprint/design/utils/elementUtil';\nimport { _defaultVal, generateUUID, getRatio } from '@myprint/design/utils/utils';\nimport { useAppStoreHook as useAppStore } from '@myprint/design/stores/app';\nimport { Container, MyAuxiliaryLine } from '@myprint/design/types/entity';\nimport { Path } from 'd3-path';\nimport * as d3Selection from 'd3-selection';\nimport * as d3Path from 'd3-path';\nimport { changeDragSnapIs } from '@myprint/design/plugins/moveable/moveable';\n\nconst appStore = useAppStore();\n\nconst props = withDefaults(defineProps<{\n    direction?: 'vertical' | string,\n    highlight?: Container,\n    length?: number\n    auxiliaryLineVisible: boolean\n    scroll?: number,\n}>(), {\n    direction: 'horizontal',\n    highlight: () => {\n        return { x: undefined! as number, width: 1 } as Container;\n    },\n    length: 0,\n    scroll: 0\n});\nconst highlightStyle = computed(() => {\n    if (props.direction == 'horizontal') {\n        return {\n            position: 'absolute',\n            left: (props.highlight.x! + 30) + 'px',\n            bottom: 0,\n            width: props.highlight.width + 'px',\n            height: '5px',\n            border: '1px solid #8c939d'\n        } as CSSProperties;\n    } else {\n        return {\n            position: 'absolute',\n            top: (props.highlight.x! + 30) + 'px',\n            right: 0,\n            width: '5px',\n            height: props.highlight.width + 'px',\n            border: '1px solid #8c939d'\n        } as CSSProperties;\n    }\n});\n\nconst canvas = ref<SVGElement>();\nconst ruleRef = ref<HTMLDivElement>();\n\nlet height = 20;\nconst length = ref(0);\n\nconst ruleWidth = ref(0);\nconst ruleHeight = ref(0);\nlet chartSvg: any;\n\nfunction mouseMove(event: MouseEvent) {\n    if (event.buttons == 1) {\n        return;\n    }\n    \n    appStore.auxiliaryLineTmp = {\n        x: 0,\n        y: 0,\n        runtimeOption: { x: 0, y: 0, auxiliaryLineStatus: 'SHOW' },\n        direction: props.direction == 'vertical' ? 'horizontal' : 'vertical'\n    } as MyAuxiliaryLine;\n    \n    if (appStore.auxiliaryLineTmp.direction == 'vertical') {\n        appStore.auxiliaryLineTmp.x = event.offsetX + 20;\n    } else {\n        appStore.auxiliaryLineTmp.y = event.offsetY + 20;\n    }\n    \n}\n\nfunction mouseLeave() {\n    appStore.auxiliaryLineTmp = { runtimeOption: { x: 0, y: 0, auxiliaryLineStatus: 'SHOW' } } as MyAuxiliaryLine;\n}\n\nfunction mouseClick(event: MouseEvent) {\n    if (!props.auxiliaryLineVisible) {\n        return;\n    }\n    const auxiliaryLine = {\n        id: generateUUID(),\n        x: 0,\n        y: 0,\n        runtimeOption: { x: 0, y: 0, auxiliaryLineStatus: 'SHOW' },\n        direction: props.direction == 'vertical' ? 'horizontal' : 'vertical'\n    } as MyAuxiliaryLine;\n    if (auxiliaryLine.direction == 'vertical') {\n        auxiliaryLine.x = event.offsetX + 20;\n    } else {\n        auxiliaryLine.y = event.offsetY + 20;\n    }\n    \n    getCurrentPanel().auxiliaryLineList.push(auxiliaryLine);\n    nextTick(() => {\n        changeDragSnapIs();\n    });\n}\n\n// 可以直接侦听一个 ref\n// watch(() => props.highlight, (_newQuestion, _oldQuestion) => {\n//   drawRuler()\n//   // console.log(newQuestion[0])\n//\n//\n//   // if (newQuestion[0] == null) {\n//   //   highlightLine.attr({\n//   //     strokeWidth: 0,\n//   //   });\n//   // } else {\n//   //   highlightLine.attr({\n//   //     strokeWidth: 1,\n//   //   });\n//   // }\n//   // if (highlightLine != null) {\n//   //   var matrix = new Snap.Matrix()\n//   //   if (props.direction == 'horizontal') {\n//   //     matrix.translate(newQuestion[0], 0);\n//   //   } else {\n//   //     matrix.translate(0, newQuestion[0]);\n//   //   }\n//   //   highlightLine.transform(matrix);\n//   // }\n//\n// })\n\nwatch(() => props.scroll, (_newQuestion, _oldQuestion) => {\n    if (props.direction == 'horizontal') {\n        ruleRef.value!.scrollTo(props.scroll, 0);\n    } else {\n        ruleRef.value!.scrollTo(0, props.scroll);\n    }\n});\n\nconst styleWrapper = computed(() => {\n    const styleTmp = {} as any;\n    if (props.direction == 'horizontal') {\n        styleTmp['box-sizing'] = 'border-box';\n        styleTmp['borderTop'] = '1px solid rgb(233, 233, 233)';\n        styleTmp['paddingLeft'] = '30px';\n        styleTmp['paddingRight'] = '30px';\n        styleTmp['height'] = height + 'px';\n        // styleTmp['marginLeft'] = '20px'\n    } else {\n        styleTmp['paddingTop'] = '30px';\n        styleTmp['paddingBottom'] = '50px';\n        styleTmp['width'] = height + 'px';\n        // styleTmp['minWidth'] = scaleUtil.scale(height) + 'px'\n    }\n    return styleTmp;\n});\n\nconst style = computed(() => {\n    const styleTmp = {} as any;\n    if (props.direction == 'horizontal') {\n        styleTmp['width'] = valueUnit(props.length);\n        styleTmp['height'] = height + 'px';\n        styleTmp['transformOrigin'] = scaleUtil.miniMap.scale < 1 ? '0' : '' + ' left';\n        styleTmp['transform'] = 'scaleX(' + scaleUtil.miniMap.scale + ')';\n    } else {\n        styleTmp['width'] = height + 'px';\n        styleTmp['minWidth'] = height + 'px';\n        styleTmp['height'] = valueUnit(props.length);\n        styleTmp['transformOrigin'] = scaleUtil.miniMap.scale < 1 ? '0' : '' + ' top';\n        styleTmp['transform'] = 'scaleY(' + scaleUtil.miniMap.scale + ')';\n    }\n    return styleTmp;\n});\n\nwatchEffect(() => {\n    length.value = unit2px(Number.parseInt(props.length.toString()) * 2) + 20;\n    if (length.value != 0) {\n        nextTick(() => {\n            drawRuler();\n        });\n    }\n    \n    if (props.direction == 'horizontal') {\n        ruleWidth.value = length.value;\n        ruleHeight.value = height;\n    } else {\n        ruleWidth.value = height;\n        ruleHeight.value = length.value;\n    }\n    \n});\n\nfunction drawRuler() {\n    const path = d3Path.path() as Path;\n    \n    const space = getRatio();\n    \n    const pxLength = unit2unit(_defaultVal(appStore.lastPageUnit, 'px'), _defaultVal(getCurrentPanel().pageUnit, 'px'), props.length);\n    \n    chartSvg.selectAll('text').remove();\n    \n    if (props.direction == 'horizontal') {\n        // svg.line(0, 0, 0, 20).attr({\n        //   stroke: \"#8f9292\",\n        //   strokeWidth: 1,\n        // });\n        \n        for (let i = 1; i < pxLength; i++) {\n            // 绘制横标尺\n            // let line;\n            if (i % 5 == 0) {\n                path.moveTo(space * i, 10);\n            } else if (i % 2 == 0) {\n                path.moveTo(space * i, 13);\n            } else {\n                path.moveTo(space * i, 14);\n            }\n            path.lineTo(space * i, 20);\n            \n            if (i % 10 == 0) {\n                chartSvg.append('text')  // 添加一个 text 元素\n                    .attr('x', space * i - 7)  // 设置 text 元素的 x 坐标\n                    .attr('y', 10)  // 设置 text 元素的 y 坐标\n                    .text(i + '')  // 设置 text 元素的文本内容\n                    .style('fill', 'black')  // b1b4b4 设置 text 元素的颜色\n                    .style('font-size', '12px');  // 设置 text 元素的字体大小\n            }\n        }\n    } else {\n        for (var i = 1; i < pxLength; i++) {\n            if (i % 5 == 0) {\n                path.moveTo(10, space * i);\n            } else if (i % 2 == 0) {\n                path.moveTo(13, space * i);\n            } else {\n                path.moveTo(14, space * i);\n            }\n            path.lineTo(20, space * i);\n            if (i % 10 == 0) {\n                chartSvg.append('text')  // 添加一个 text 元素\n                    .attr('x', 3)  // 设置 text 元素的 x 坐标\n                    .attr('y', space * i)  // 设置 text 元素的 y 坐标\n                    .text(i + '')  // 设置 text 元素的文本内容\n                    .style('fill', 'black')  // 设置 text 元素的颜色\n                    .attr('transform', `rotate(-90, 10, ${space * i})`)\n                    .style('font-size', '12px');  // 设置 text 元素的字体大小\n            }\n        }\n        \n    }\n    chartSvg.select('.u-path')\n        // #8f9292\n        .style('stroke', 'black')\n        .style('fill', 'white')\n        // .attr(\"stroke-width\", 1.9)\n        .attr('d', path.toString());\n}\n\nonMounted(() => {\n    chartSvg = d3Selection.select(canvas.value!);\n});\n</script>\n"],"names":["useAppStore","i"],"mappings":"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"}