返回 slidev
DrawingLayer.vue
根目录 / packages / client / internals / DrawingLayer.vue
1 <script setup lang="ts">
2 import { onBeforeUnmount, onMounted, ref, watch } from 'vue'
3 import { useDrawings } from '../composables/useDrawings'
4 import { useSlideContext } from '../context'
5
6 const { drauu, drawingEnabled, loadCanvas } = useDrawings()
7
8 const scale = useSlideContext().$scale
9 const svg = ref<SVGSVGElement>()
10
11 onMounted(() => {
12 drauu.mount(svg.value!, svg.value!.parentElement!)
13 watch(scale, scale => drauu.options.coordinateScale = 1 / scale, { immediate: true })
14 loadCanvas()
15 })
16
17 onBeforeUnmount(() => {
18 drauu.unmount()
19 })
20 </script>
21
22 <template>
23 <svg
24 ref="svg"
25 class="w-full h-full absolute top-0"
26 :class="{ 'pointer-events-none': !drawingEnabled, 'touch-none': drawingEnabled }"
27 />
28 </template>
29
29 lines Plain Text