diff --git a/src/views/Editor/useHotkey.ts b/src/hooks/useGlobalHotkey.ts similarity index 91% rename from src/views/Editor/useHotkey.ts rename to src/hooks/useGlobalHotkey.ts index c1ee7648..d667fb6b 100644 --- a/src/views/Editor/useHotkey.ts +++ b/src/hooks/useGlobalHotkey.ts @@ -4,17 +4,17 @@ import { ElementOrderCommand, ElementOrderCommands } from '@/types/edit' import { PPTElement } from '@/types/slides' import { KEYS } from '@/configs/hotkey' -import useSlideHandler from '@/hooks/useSlideHandler' -import useLockElement from '@/hooks/useLockElement' -import useDeleteElement from '@/hooks/useDeleteElement' -import useCombineElement from '@/hooks/useCombineElement' -import useCopyAndPasteElement from '@/hooks/useCopyAndPasteElement' -import useSelectAllElement from '@/hooks/useSelectAllElement' -import useMoveElement from '@/hooks/useMoveElement' -import useOrderElement from '@/hooks/useOrderElement' -import useHistorySnapshot from '@/hooks/useHistorySnapshot' -import useScreening from '@/hooks/useScreening' -import useScaleCanvas from '@/hooks/useScaleCanvas' +import useSlideHandler from './useSlideHandler' +import useLockElement from './useLockElement' +import useDeleteElement from './useDeleteElement' +import useCombineElement from './useCombineElement' +import useCopyAndPasteElement from './useCopyAndPasteElement' +import useSelectAllElement from './useSelectAllElement' +import useMoveElement from './useMoveElement' +import useOrderElement from './useOrderElement' +import useHistorySnapshot from './useHistorySnapshot' +import useScreening from './useScreening' +import useScaleCanvas from './useScaleCanvas' export default () => { const store = useStore() diff --git a/src/views/Editor/usePasteEvent.ts b/src/hooks/usePasteEvent.ts similarity index 80% rename from src/views/Editor/usePasteEvent.ts rename to src/hooks/usePasteEvent.ts index c88ec231..9c4fc815 100644 --- a/src/views/Editor/usePasteEvent.ts +++ b/src/hooks/usePasteEvent.ts @@ -1,8 +1,8 @@ import { computed, onMounted, onUnmounted } from 'vue' import { useStore } from '@/store' import { getImageDataURL } from '@/utils/image' -import usePasteTextClipboardData from '@/hooks/usePasteTextClipboardData' -import useCreateElement from '@/hooks/useCreateElement' +import usePasteTextClipboardData from './usePasteTextClipboardData' +import useCreateElement from './useCreateElement' export default () => { const store = useStore() @@ -13,10 +13,15 @@ export default () => { const { pasteTextClipboardData } = usePasteTextClipboardData() const { createImageElement } = useCreateElement() + // 粘贴图片到幻灯片元素 const pasteImageFile = (imageFile: File) => { getImageDataURL(imageFile).then(dataURL => createImageElement(dataURL)) } + /** + * 粘贴事件监听 + * @param e ClipboardEvent + */ const pasteListener = (e: ClipboardEvent) => { if (!editorAreaFocus.value && !thumbnailsFocus.value) return if (disableHotkeys.value) return @@ -28,6 +33,7 @@ export default () => { if (!clipboardDataFirstItem) return + // 如果剪贴板内有图片,优先尝试读取图片 for (const item of clipboardDataItems) { if (item.kind === 'file' && item.type.indexOf('image') !== -1) { const imageFile = item.getAsFile() @@ -35,7 +41,8 @@ export default () => { return } } - + + // 如果剪贴板内没有图片,但有文字内容,尝试解析文字内容 if (clipboardDataFirstItem.kind === 'string' && clipboardDataFirstItem.type === 'text/plain') { clipboardDataFirstItem.getAsString(text => pasteTextClipboardData(text)) } diff --git a/src/views/Editor/CanvasTool/index.vue b/src/views/Editor/CanvasTool/index.vue index e2cac522..21e4c865 100644 --- a/src/views/Editor/CanvasTool/index.vue +++ b/src/views/Editor/CanvasTool/index.vue @@ -113,12 +113,15 @@ export default defineComponent({ const chartPoolVisible = ref(false) const tableGeneratorVisible = ref(false) + // 绘制文字范围 const drawText = () => { store.commit(MutationTypes.SET_CREATING_ELEMENT, { type: 'text', data: null, }) } + + // 绘制形状范围 const drawShape = (shape: ShapePoolItem) => { store.commit(MutationTypes.SET_CREATING_ELEMENT, { type: 'shape', @@ -126,6 +129,8 @@ export default defineComponent({ }) shapePoolVisible.value = false } + + // 绘制线条路径 const drawLine = (line: LinePoolItem) => { store.commit(MutationTypes.SET_CREATING_ELEMENT, { type: 'line', diff --git a/src/views/Editor/Thumbnails/index.vue b/src/views/Editor/Thumbnails/index.vue index 3c816594..0f0ab408 100644 --- a/src/views/Editor/Thumbnails/index.vue +++ b/src/views/Editor/Thumbnails/index.vue @@ -63,6 +63,7 @@ export default defineComponent({ cutSlide, } = useSlideHandler() + // 切换页面 const changSlideIndex = (index: number) => { store.commit(MutationTypes.SET_ACTIVE_ELEMENT_ID_LIST, []) @@ -72,11 +73,13 @@ export default defineComponent({ const thumbnailsFocus = computed(() => store.state.thumbnailsFocus) + // 设置缩略图工具栏聚焦状态(只有聚焦状态下,该部分的快捷键才能生效) const setThumbnailsFocus = (focus: boolean) => { if (thumbnailsFocus.value === focus) return store.commit(MutationTypes.SET_THUMBNAILS_FOCUS, focus) } + // 拖拽调整顺序后进行数据的同步 const handleDragEnd = (eventData: { newIndex: number; oldIndex: number }) => { const { newIndex, oldIndex } = eventData if (oldIndex === newIndex) return diff --git a/src/views/Editor/index.vue b/src/views/Editor/index.vue index a76212c4..b1de568d 100644 --- a/src/views/Editor/index.vue +++ b/src/views/Editor/index.vue @@ -15,8 +15,8 @@