mirror of
https://github.com/pipipi-pikachu/PPTist.git
synced 2025-04-15 02:20:00 +08:00
88 lines
2.1 KiB
Vue
88 lines
2.1 KiB
Vue
<template>
|
|
<div class="pptist-editor">
|
|
<EditorHeader class="layout-header" />
|
|
<div class="layout-content">
|
|
<Thumbnails class="layout-content-left" />
|
|
<div class="layout-content-center">
|
|
<CanvasTool class="center-top" />
|
|
<Canvas class="center-body" :style="{ height: `calc(100% - ${remarkHeight + 40}px)` }" />
|
|
<Remark
|
|
class="center-bottom"
|
|
v-model:height="remarkHeight"
|
|
:style="{ height: `${remarkHeight}px` }"
|
|
/>
|
|
</div>
|
|
<Toolbar class="layout-content-right" />
|
|
</div>
|
|
</div>
|
|
|
|
<SelectPanel v-if="showSelectPanel" />
|
|
|
|
<Modal
|
|
:open="!!dialogForExport"
|
|
:footer="null"
|
|
centered
|
|
:closable="false"
|
|
:width="680"
|
|
destroyOnClose
|
|
@cancel="closeExportDialog()"
|
|
>
|
|
<ExportDialog />
|
|
</Modal>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { ref } from 'vue'
|
|
import { storeToRefs } from 'pinia'
|
|
import { useMainStore } from '@/store'
|
|
import useGlobalHotkey from '@/hooks/useGlobalHotkey'
|
|
import usePasteEvent from '@/hooks/usePasteEvent'
|
|
|
|
import EditorHeader from './EditorHeader/index.vue'
|
|
import Canvas from './Canvas/index.vue'
|
|
import CanvasTool from './CanvasTool/index.vue'
|
|
import Thumbnails from './Thumbnails/index.vue'
|
|
import Toolbar from './Toolbar/index.vue'
|
|
import Remark from './Remark/index.vue'
|
|
import ExportDialog from './ExportDialog/index.vue'
|
|
import SelectPanel from './SelectPanel.vue'
|
|
import { Modal } from 'ant-design-vue'
|
|
|
|
const mainStore = useMainStore()
|
|
const { dialogForExport, showSelectPanel } = storeToRefs(mainStore)
|
|
const closeExportDialog = () => mainStore.setDialogForExport('')
|
|
|
|
const remarkHeight = ref(40)
|
|
|
|
useGlobalHotkey()
|
|
usePasteEvent()
|
|
</script>
|
|
|
|
<style lang="scss" scoped>
|
|
.pptist-editor {
|
|
height: 100%;
|
|
}
|
|
.layout-header {
|
|
height: 40px;
|
|
}
|
|
.layout-content {
|
|
height: calc(100% - 40px);
|
|
display: flex;
|
|
}
|
|
.layout-content-left {
|
|
width: 160px;
|
|
height: 100%;
|
|
flex-shrink: 0;
|
|
}
|
|
.layout-content-center {
|
|
width: calc(100% - 160px - 260px);
|
|
|
|
.center-top {
|
|
height: 40px;
|
|
}
|
|
}
|
|
.layout-content-right {
|
|
width: 260px;
|
|
height: 100%;
|
|
}
|
|
</style> |