mirror of
https://github.com/pipipi-pikachu/PPTist.git
synced 2025-04-15 02:20:00 +08:00
75 lines
2.0 KiB
Vue
75 lines
2.0 KiB
Vue
<template>
|
|
<div class="chart-element-operate">
|
|
<BorderLine
|
|
class="operate-border-line"
|
|
v-for="line in borderLines"
|
|
:key="line.type"
|
|
:type="line.type"
|
|
:style="line.style"
|
|
/>
|
|
<template v-if="!elementInfo.lock && (isActiveGroupElement || !isMultiSelect)">
|
|
<ResizeHandler
|
|
class="operate-resize-handler"
|
|
v-for="point in resizeHandlers"
|
|
:key="point.direction"
|
|
:type="point.direction"
|
|
:style="point.style"
|
|
@mousedown.stop="$event => scaleElement($event, elementInfo, point.direction)"
|
|
/>
|
|
</template>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts">
|
|
import { computed, defineComponent, PropType } from 'vue'
|
|
import { useStore } from 'vuex'
|
|
import { State } from '@/store'
|
|
|
|
import { PPTShapeElement } from '@/types/slides'
|
|
import { OperateResizeHandler } from '@/types/edit'
|
|
import useCommonOperate from '../hooks/useCommonOperate'
|
|
|
|
import ResizeHandler from './ResizeHandler.vue'
|
|
import BorderLine from './BorderLine.vue'
|
|
|
|
export default defineComponent({
|
|
name: 'chart-element-operate',
|
|
inheritAttrs: false,
|
|
components: {
|
|
ResizeHandler,
|
|
BorderLine,
|
|
},
|
|
props: {
|
|
elementInfo: {
|
|
type: Object as PropType<PPTShapeElement>,
|
|
required: true,
|
|
},
|
|
isActiveGroupElement: {
|
|
type: Boolean,
|
|
required: true,
|
|
},
|
|
isMultiSelect: {
|
|
type: Boolean,
|
|
required: true,
|
|
},
|
|
scaleElement: {
|
|
type: Function as PropType<(e: MouseEvent, element: PPTShapeElement, command: OperateResizeHandler) => void>,
|
|
required: true,
|
|
},
|
|
},
|
|
setup(props) {
|
|
const store = useStore<State>()
|
|
const canvasScale = computed(() => store.state.canvasScale)
|
|
|
|
const scaleWidth = computed(() => props.elementInfo.width * canvasScale.value)
|
|
const scaleHeight = computed(() => props.elementInfo.height * canvasScale.value)
|
|
const { resizeHandlers, borderLines } = useCommonOperate(scaleWidth, scaleHeight)
|
|
|
|
return {
|
|
scaleWidth,
|
|
resizeHandlers,
|
|
borderLines,
|
|
}
|
|
},
|
|
})
|
|
</script> |