From 7f03f741bb55f532880d1b3f9d7beb0f9d7ea4bf Mon Sep 17 00:00:00 2001 From: _Kerman Date: Wed, 10 Apr 2024 22:32:38 +0800 Subject: [PATCH 01/20] feat: custom page templates --- packages/client/internals/Controls.vue | 10 + packages/client/internals/QuickOverview.vue | 2 +- packages/client/internals/SlideContainer.vue | 10 +- packages/client/page-templates/play.vue | 20 ++ packages/client/page-templates/presenter.vue | 89 ++++++++ packages/client/pages/play.vue | 81 +++---- packages/client/pages/presenter.vue | 219 ++++++------------- packages/slidev/node/resolver.ts | 35 ++- packages/slidev/node/virtual/types.ts | 1 + packages/slidev/node/vite/loaders.ts | 49 ++--- packages/types/client.d.ts | 7 + 11 files changed, 280 insertions(+), 243 deletions(-) create mode 100644 packages/client/page-templates/play.vue create mode 100644 packages/client/page-templates/presenter.vue diff --git a/packages/client/internals/Controls.vue b/packages/client/internals/Controls.vue index dc8d83c28b..9894159eae 100644 --- a/packages/client/internals/Controls.vue +++ b/packages/client/internals/Controls.vue @@ -2,10 +2,17 @@ import { shallowRef } from 'vue' import { showInfoDialog, showOverview, showRecordingDialog } from '../state' import { configs } from '../env' +import { useNav } from '../composables/useNav' import QuickOverview from './QuickOverview.vue' import InfoDialog from './InfoDialog.vue' import Goto from './Goto.vue' +const { isEmbedded } = useNav() +const drawingEnabled = __SLIDEV_FEATURE_DRAWINGS__ && !configs.drawings.presenterOnly && !isEmbedded.value +const DrawingControls = shallowRef() +if (drawingEnabled) + import('../internals/DrawingControls.vue').then(v => DrawingControls.value = v.default) + const WebCamera = shallowRef() const RecordingDialog = shallowRef() if (__SLIDEV_FEATURE_RECORD__) { @@ -15,6 +22,9 @@ if (__SLIDEV_FEATURE_RECORD__) { diff --git a/packages/client/internals/DrawingPreview.vue b/packages/client/internals/DrawingPreview.vue index 36612c7a9e..c21fe541d0 100644 --- a/packages/client/internals/DrawingPreview.vue +++ b/packages/client/internals/DrawingPreview.vue @@ -12,4 +12,4 @@ const { drawingState } = useDrawings() class="w-full h-full absolute top-0 pointer-events-none" v-html="drawingState[page]" /> -../composables/drawings + diff --git a/packages/client/internals/PrintContainer.vue b/packages/client/internals/PrintContainer.vue deleted file mode 100644 index 76666cff86..0000000000 --- a/packages/client/internals/PrintContainer.vue +++ /dev/null @@ -1,58 +0,0 @@ - - - - - diff --git a/packages/client/internals/PrintSlideClick.vue b/packages/client/internals/PrintSlideClick.vue index 49dd1101d1..e04821447f 100644 --- a/packages/client/internals/PrintSlideClick.vue +++ b/packages/client/internals/PrintSlideClick.vue @@ -59,3 +59,9 @@ provideLocal(injectionSlidevContext, reactive({ + + diff --git a/packages/client/internals/PrintStyle.vue b/packages/client/internals/PrintStyle.vue index 9331ac19c6..f9f659106c 100644 --- a/packages/client/internals/PrintStyle.vue +++ b/packages/client/internals/PrintStyle.vue @@ -1,16 +1,13 @@ - + diff --git a/packages/client/internals/SlideContainer.vue b/packages/client/internals/SlideContainer.vue index d4e81f2b35..cf2c1f3a2f 100644 --- a/packages/client/internals/SlideContainer.vue +++ b/packages/client/internals/SlideContainer.vue @@ -1,9 +1,9 @@ diff --git a/packages/client/pages/overview.vue b/packages/client/pages/overview.vue index 2458dd7c0d..8553466079 100644 --- a/packages/client/pages/overview.vue +++ b/packages/client/pages/overview.vue @@ -163,7 +163,7 @@ onMounted(() => { v-if="route.meta?.slide" class="mr--3 op0 group-hover:op80" title="Open in editor" - @click="openInEditor(`${route.meta.slide.filepath}:${route.meta.slide.start}`)" + @click="openInEditor(`${route.meta.slide.filepath}:${route.meta.slide!.start}`)" > @@ -190,9 +190,8 @@ onMounted(() => { diff --git a/packages/client/pages/play.vue b/packages/client/pages/play.vue index 9fd6f0e675..0b67be2cff 100644 --- a/packages/client/pages/play.vue +++ b/packages/client/pages/play.vue @@ -7,12 +7,11 @@ import Controls from '../internals/Controls.vue' import SlideContainer from '../internals/SlideContainer.vue' import NavControls from '../internals/NavControls.vue' import SlidesShow from '../internals/SlidesShow.vue' -import PrintStyle from '../internals/PrintStyle.vue' import { useNav } from '../composables/useNav' import { useDrawings } from '../composables/useDrawings' import PlayTemplate from '#slidev/page-templates/play' -const { next, prev, isPrintMode } = useNav() +const { next, prev } = useNav() const { isDrawing } = useDrawings() const root = ref() @@ -41,7 +40,6 @@ if (__DEV__ && __SLIDEV_FEATURE_EDITOR__) diff --git a/packages/client/pages/presenter/print.vue b/packages/client/pages/presenter/print.vue deleted file mode 100644 index b168f4ee53..0000000000 --- a/packages/client/pages/presenter/print.vue +++ /dev/null @@ -1,70 +0,0 @@ - - - diff --git a/packages/client/pages/print.vue b/packages/client/pages/print.vue index d3958efcae..2ad1cc40e4 100644 --- a/packages/client/pages/print.vue +++ b/packages/client/pages/print.vue @@ -1,57 +1,46 @@ - diff --git a/packages/client/pages/entry.vue b/packages/client/pages/entry.vue index 921380245e..f4408d5a64 100644 --- a/packages/client/pages/entry.vue +++ b/packages/client/pages/entry.vue @@ -1,32 +1,7 @@ + + From 8cf763cca03deb47807855f8a0ed4a61ab807ca3 Mon Sep 17 00:00:00 2001 From: _Kerman Date: Sun, 14 Apr 2024 13:24:53 +0800 Subject: [PATCH 06/20] fix: print styles --- packages/client/internals/PrintStyle.vue | 9 ++++++--- packages/client/page-templates/print/default.vue | 3 +-- packages/client/pages/play.vue | 1 + 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/packages/client/internals/PrintStyle.vue b/packages/client/internals/PrintStyle.vue index f9f659106c..a7c7c37234 100644 --- a/packages/client/internals/PrintStyle.vue +++ b/packages/client/internals/PrintStyle.vue @@ -1,13 +1,16 @@ diff --git a/packages/client/page-templates/print/default.vue b/packages/client/page-templates/print/default.vue index 910c413926..87f432915c 100644 --- a/packages/client/page-templates/print/default.vue +++ b/packages/client/page-templates/print/default.vue @@ -2,7 +2,6 @@ import { provideLocal } from '@vueuse/core' import { computed } from 'vue' import { injectionSlideScale } from '../../constants' -import { slideHeight, slideWidth } from '../../env' import { useNav } from '../../composables/useNav' import PrintStyle from '../../internals/PrintStyle.vue' import PrintSlide from '../../internals/PrintSlide.vue' @@ -13,7 +12,7 @@ const { slidesToPrint } = useNav()