| <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" /> | |
| <SearchPanel v-if="showSearchPanel" /> | |
| <NotesPanel v-if="showNotesPanel" /> | |
| <MarkupPanel v-if="showMarkupPanel" /> | |
| <Modal | |
| :visible="!!dialogForExport" | |
| :width="680" | |
| @closed="closeExportDialog()" | |
| > | |
| <ExportDialog /> | |
| </Modal> | |
| <Modal | |
| :visible="showAIPPTDialog" | |
| :width="680" | |
| :closeOnClickMask="false" | |
| :closeOnEsc="false" | |
| closeButton | |
| @closed="closeAIPPTDialog()" | |
| > | |
| <AIPPTDialog /> | |
| </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 SearchPanel from './SearchPanel.vue' | |
| import NotesPanel from './NotesPanel.vue' | |
| import MarkupPanel from './MarkupPanel.vue' | |
| import AIPPTDialog from './AIPPTDialog.vue' | |
| import Modal from '@/components/Modal.vue' | |
| const mainStore = useMainStore() | |
| const { dialogForExport, showSelectPanel, showSearchPanel, showNotesPanel, showMarkupPanel, showAIPPTDialog } = storeToRefs(mainStore) | |
| const closeExportDialog = () => mainStore.setDialogForExport('') | |
| const closeAIPPTDialog = () => mainStore.setAIPPTDialogState(false) | |
| 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> |