From de44e2d6319338f58345878dd053410caa26b1f4 Mon Sep 17 00:00:00 2001 From: Anthony Fu Date: Fri, 27 Dec 2024 22:12:55 +0800 Subject: [PATCH] feat: use screen capture for slides snapshot (#1988) Co-authored-by: _Kerman --- packages/client/constants.ts | 1 - packages/client/internals/QuickOverview.vue | 28 ++++- packages/client/internals/SlideContainer.vue | 31 +++-- packages/client/internals/SlidesShow.vue | 6 +- packages/client/logic/hmr.ts | 1 + packages/client/logic/snapshot.ts | 126 +++++++++++-------- packages/client/package.json | 1 - packages/client/pages/export.vue | 14 +-- packages/client/state/snapshot.ts | 2 +- packages/client/state/storage.ts | 1 + packages/parser/src/config.ts | 1 - packages/slidev/node/vite/extendConfig.ts | 1 - packages/types/src/frontmatter.ts | 7 -- packages/vscode/schema/headmatter.json | 6 - pnpm-lock.yaml | 11 -- pnpm-workspace.yaml | 1 - 16 files changed, 125 insertions(+), 113 deletions(-) diff --git a/packages/client/constants.ts b/packages/client/constants.ts index e21ba35cc2..045e773e2a 100644 --- a/packages/client/constants.ts +++ b/packages/client/constants.ts @@ -83,5 +83,4 @@ export const HEADMATTER_FIELDS = [ 'mdc', 'contextMenu', 'wakeLock', - 'overviewSnapshots', ] diff --git a/packages/client/internals/QuickOverview.vue b/packages/client/internals/QuickOverview.vue index 8b570a5694..bf41edbce3 100644 --- a/packages/client/internals/QuickOverview.vue +++ b/packages/client/internals/QuickOverview.vue @@ -4,15 +4,18 @@ import { computed, ref, watchEffect } from 'vue' import { createFixedClicks } from '../composables/useClicks' import { useNav } from '../composables/useNav' import { CLICKS_MAX } from '../constants' -import { configs, pathPrefix } from '../env' +import { pathPrefix } from '../env' import { currentOverviewPage, overviewRowCount } from '../logic/overview' +import { isScreenshotSupported } from '../logic/screenshot' +import { snapshotManager } from '../logic/snapshot' import { breakpoints, showOverview, windowSize } from '../state' import DrawingPreview from './DrawingPreview.vue' import IconButton from './IconButton.vue' import SlideContainer from './SlideContainer.vue' import SlideWrapper from './SlideWrapper.vue' -const { currentSlideNo, go: goSlide, slides } = useNav() +const nav = useNav() +const { currentSlideNo, go: goSlide, slides } = nav function close() { showOverview.value = false @@ -48,6 +51,12 @@ const rowCount = computed(() => { const keyboardBuffer = ref('') +async function captureSlidesOverview() { + showOverview.value = false + await snapshotManager.startCapturing(nav) + showOverview.value = true +} + useEventListener('keypress', (e) => { if (!showOverview.value) { keyboardBuffer.value = '' @@ -129,7 +138,7 @@ watchEffect(() => { @@ -157,7 +166,10 @@ watchEffect(() => { -
+
@@ -172,5 +184,13 @@ watchEffect(() => { >
+ +
+
diff --git a/packages/client/internals/SlideContainer.vue b/packages/client/internals/SlideContainer.vue index 637f936d46..a1b5375db9 100644 --- a/packages/client/internals/SlideContainer.vue +++ b/packages/client/internals/SlideContainer.vue @@ -1,9 +1,10 @@ @@ -84,13 +79,17 @@ onMounted(() => {
- - + +
+ +
+
+
+