@slidev/client 0.43.3 → 0.43.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/builtin/RenderWhen.vue +4 -4
- package/builtin/SlidevVideo.vue +8 -8
- package/constants.ts +2 -2
- package/internals/Play.vue +1 -1
- package/internals/Presenter.vue +2 -2
- package/internals/SlideWrapper.ts +5 -5
- package/internals/SlidesOverview.vue +1 -1
- package/internals/SlidesShow.vue +4 -2
- package/modules/context.ts +6 -4
- package/package.json +6 -6
package/builtin/RenderWhen.vue
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { computed, inject } from 'vue'
|
|
3
3
|
import type { RenderContext } from '@slidev/types'
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { injectionRenderContext } from '../constants'
|
|
6
6
|
|
|
7
7
|
type Context = 'main' | RenderContext
|
|
8
8
|
|
|
@@ -11,14 +11,14 @@ const props = defineProps<{
|
|
|
11
11
|
}>()
|
|
12
12
|
const { context } = props
|
|
13
13
|
|
|
14
|
-
const currentContext = inject(
|
|
14
|
+
const currentContext = inject(injectionRenderContext)
|
|
15
15
|
|
|
16
16
|
const shouldRender = computed(() => Array.isArray(context) ? context.some(contextMatch) : contextMatch(context))
|
|
17
17
|
|
|
18
18
|
function contextMatch(context: Context) {
|
|
19
|
-
if (context === currentContext)
|
|
19
|
+
if (context === currentContext?.value)
|
|
20
20
|
return true
|
|
21
|
-
if (context === 'main' && (currentContext === 'slide' || currentContext === 'presenter'))
|
|
21
|
+
if (context === 'main' && (currentContext?.value === 'slide' || currentContext?.value === 'presenter'))
|
|
22
22
|
return true
|
|
23
23
|
return false
|
|
24
24
|
}
|
package/builtin/SlidevVideo.vue
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
<script setup lang="ts">
|
|
2
2
|
import { computed, inject, onMounted, onUnmounted, ref, watch } from 'vue'
|
|
3
3
|
|
|
4
|
-
import { injectionClicks, injectionClicksDisabled, injectionClicksElements,
|
|
4
|
+
import { injectionClicks, injectionClicksDisabled, injectionClicksElements, injectionRenderContext, injectionRoute, injectionSlidevContext } from '../constants'
|
|
5
5
|
|
|
6
6
|
const props = defineProps<{
|
|
7
7
|
autoPlay?: boolean | 'once' | 'resume' | 'resumeOnce'
|
|
@@ -11,7 +11,7 @@ const props = defineProps<{
|
|
|
11
11
|
|
|
12
12
|
const $slidev = inject(injectionSlidevContext)
|
|
13
13
|
const route = inject(injectionRoute)
|
|
14
|
-
const currentContext = inject(
|
|
14
|
+
const currentContext = inject(injectionRenderContext)
|
|
15
15
|
const clicks = inject(injectionClicks)
|
|
16
16
|
const clicksDisabled = inject(injectionClicksDisabled)
|
|
17
17
|
const clicksElements = inject(injectionClicksElements)
|
|
@@ -21,13 +21,13 @@ const played = ref(false)
|
|
|
21
21
|
const ended = ref(false)
|
|
22
22
|
|
|
23
23
|
const matchRoute = computed(() => {
|
|
24
|
-
if (!video.value || currentContext !== 'slide')
|
|
24
|
+
if (!video.value || currentContext?.value !== 'slide')
|
|
25
25
|
return false
|
|
26
26
|
return route === $slidev?.nav.currentRoute
|
|
27
27
|
})
|
|
28
28
|
|
|
29
29
|
const matchClick = computed(() => {
|
|
30
|
-
if (!video.value || currentContext !== 'slide' || clicks?.value === undefined || clicksDisabled?.value)
|
|
30
|
+
if (!video.value || currentContext?.value !== 'slide' || clicks?.value === undefined || clicksDisabled?.value)
|
|
31
31
|
return false
|
|
32
32
|
return !clicksElements?.value.includes(video.value) || clicksElements?.value[clicks?.value - 1] === video.value
|
|
33
33
|
})
|
|
@@ -35,7 +35,7 @@ const matchClick = computed(() => {
|
|
|
35
35
|
const matchRouteAndClick = computed(() => matchRoute.value && matchClick.value)
|
|
36
36
|
|
|
37
37
|
watch(matchRouteAndClick, () => {
|
|
38
|
-
if (!video.value || currentContext !== 'slide')
|
|
38
|
+
if (!video.value || currentContext?.value !== 'slide')
|
|
39
39
|
return
|
|
40
40
|
|
|
41
41
|
if (matchRouteAndClick.value) {
|
|
@@ -50,7 +50,7 @@ watch(matchRouteAndClick, () => {
|
|
|
50
50
|
})
|
|
51
51
|
|
|
52
52
|
watch(matchRoute, () => {
|
|
53
|
-
if (!video.value || currentContext !== 'slide')
|
|
53
|
+
if (!video.value || currentContext?.value !== 'slide')
|
|
54
54
|
return
|
|
55
55
|
|
|
56
56
|
if (matchRoute.value && props.autoReset === 'slide')
|
|
@@ -66,14 +66,14 @@ function onEnded() {
|
|
|
66
66
|
}
|
|
67
67
|
|
|
68
68
|
onMounted(() => {
|
|
69
|
-
if (!video.value || currentContext !== 'slide')
|
|
69
|
+
if (!video.value || currentContext?.value !== 'slide')
|
|
70
70
|
return
|
|
71
71
|
video.value?.addEventListener('play', onPlay)
|
|
72
72
|
video.value?.addEventListener('ended', onEnded)
|
|
73
73
|
})
|
|
74
74
|
|
|
75
75
|
onUnmounted(() => {
|
|
76
|
-
if (!video.value || currentContext !== 'slide')
|
|
76
|
+
if (!video.value || currentContext?.value !== 'slide')
|
|
77
77
|
return
|
|
78
78
|
video.value?.removeEventListener('play', onPlay)
|
|
79
79
|
video.value?.removeEventListener('ended', onEnded)
|
package/constants.ts
CHANGED
|
@@ -7,11 +7,11 @@ export const injectionClicks: InjectionKey<Ref<number>> = Symbol('v-click-clicks
|
|
|
7
7
|
export const injectionClicksElements: InjectionKey<Ref<(Element | string)[]>> = Symbol('v-click-clicks-elements')
|
|
8
8
|
export const injectionClicksDisabled: InjectionKey<Ref<boolean>> = Symbol('v-click-clicks-disabled')
|
|
9
9
|
export const injectionOrderMap: InjectionKey<Ref<Map<number, HTMLElement[]>>> = Symbol('v-click-clicks-order-map')
|
|
10
|
-
export const injectionCurrentPage: InjectionKey<number
|
|
10
|
+
export const injectionCurrentPage: InjectionKey<Ref<number>> = Symbol('slidev-page')
|
|
11
11
|
export const injectionSlideScale: InjectionKey<ComputedRef<number>> = Symbol('slidev-slide-scale')
|
|
12
12
|
export const injectionSlidevContext: InjectionKey<UnwrapNestedRefs<SlidevContext>> = Symbol('slidev-slidev-context')
|
|
13
13
|
export const injectionRoute: InjectionKey<RouteRecordRaw> = Symbol('slidev-route')
|
|
14
|
-
export const
|
|
14
|
+
export const injectionRenderContext: InjectionKey<Ref<RenderContext>> = Symbol('slidev-render-context')
|
|
15
15
|
export const injectionActive: InjectionKey<Ref<boolean>> = Symbol('slidev-active')
|
|
16
16
|
export const injectionFrontmatter: InjectionKey<Record<string, any>> = Symbol('slidev-fontmatter')
|
|
17
17
|
|
package/internals/Play.vue
CHANGED
package/internals/Presenter.vue
CHANGED
|
@@ -108,7 +108,7 @@ onMounted(() => {
|
|
|
108
108
|
class="h-full w-full"
|
|
109
109
|
>
|
|
110
110
|
<template #default>
|
|
111
|
-
<SlidesShow context="presenter" />
|
|
111
|
+
<SlidesShow render-context="presenter" />
|
|
112
112
|
</template>
|
|
113
113
|
</SlideContainer>
|
|
114
114
|
<div class="context">
|
|
@@ -128,7 +128,7 @@ onMounted(() => {
|
|
|
128
128
|
:clicks-disabled="false"
|
|
129
129
|
:class="getSlideClass(nextSlide.route)"
|
|
130
130
|
:route="nextSlide.route"
|
|
131
|
-
context="previewNext"
|
|
131
|
+
render-context="previewNext"
|
|
132
132
|
/>
|
|
133
133
|
</SlideContainer>
|
|
134
134
|
<div class="context">
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { useVModel } from '@vueuse/core'
|
|
2
2
|
import type { Ref } from 'vue'
|
|
3
|
-
import { defineComponent, h, provide, toRef } from 'vue'
|
|
3
|
+
import { defineComponent, h, provide, ref, toRef } from 'vue'
|
|
4
4
|
import type { RenderContext } from '@slidev/types'
|
|
5
|
-
import { injectionActive, injectionClicks, injectionClicksDisabled, injectionClicksElements, injectionCurrentPage, injectionOrderMap,
|
|
5
|
+
import { injectionActive, injectionClicks, injectionClicksDisabled, injectionClicksElements, injectionCurrentPage, injectionOrderMap, injectionRenderContext, injectionRoute } from '../constants'
|
|
6
6
|
|
|
7
7
|
export default defineComponent({
|
|
8
8
|
name: 'SlideWrapper',
|
|
@@ -23,7 +23,7 @@ export default defineComponent({
|
|
|
23
23
|
type: Boolean,
|
|
24
24
|
default: false,
|
|
25
25
|
},
|
|
26
|
-
|
|
26
|
+
renderContext: {
|
|
27
27
|
type: String,
|
|
28
28
|
default: 'main',
|
|
29
29
|
},
|
|
@@ -49,8 +49,8 @@ export default defineComponent({
|
|
|
49
49
|
clicksElements.value.length = 0
|
|
50
50
|
|
|
51
51
|
provide(injectionRoute, props.route as any)
|
|
52
|
-
provide(injectionCurrentPage, +props.route?.path)
|
|
53
|
-
provide(
|
|
52
|
+
provide(injectionCurrentPage, ref(+props.route?.path))
|
|
53
|
+
provide(injectionRenderContext, ref(props.renderContext as RenderContext))
|
|
54
54
|
provide(injectionActive, toRef(props, 'active'))
|
|
55
55
|
provide(injectionClicks, clicks as Ref<number>)
|
|
56
56
|
provide(injectionClicksDisabled, clicksDisabled)
|
package/internals/SlidesShow.vue
CHANGED
|
@@ -12,7 +12,9 @@ import GlobalTop from '/@slidev/global-components/top'
|
|
|
12
12
|
import GlobalBottom from '/@slidev/global-components/bottom'
|
|
13
13
|
import PresenterMouse from './PresenterMouse.vue'
|
|
14
14
|
|
|
15
|
-
defineProps<{
|
|
15
|
+
defineProps<{
|
|
16
|
+
renderContext: 'slide' | 'presenter'
|
|
17
|
+
}>()
|
|
16
18
|
|
|
17
19
|
// preload next route
|
|
18
20
|
watch(currentRoute, () => {
|
|
@@ -56,7 +58,7 @@ const loadedRoutes = computed(() => rawRoutes.filter(r => r.meta?.__preloaded ||
|
|
|
56
58
|
:clicks-disabled="false"
|
|
57
59
|
:class="getSlideClass(route)"
|
|
58
60
|
:route="route"
|
|
59
|
-
:context="
|
|
61
|
+
:render-context="renderContext"
|
|
60
62
|
/>
|
|
61
63
|
</template>
|
|
62
64
|
</component>
|
package/modules/context.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type { App } from 'vue'
|
|
2
|
-
import { reactive } from 'vue'
|
|
2
|
+
import { computed, reactive } from 'vue'
|
|
3
3
|
import type { RouteLocationNormalizedLoaded, RouteRecordRaw } from 'vue-router'
|
|
4
4
|
import type { ComputedRef } from '@vue/reactivity'
|
|
5
5
|
import type { configs } from '../env'
|
|
6
6
|
import * as nav from '../logic/nav'
|
|
7
7
|
import { clicks, route } from '../logic/nav'
|
|
8
8
|
import { isDark } from '../logic/dark'
|
|
9
|
-
import { injectionSlidevContext } from '../constants'
|
|
9
|
+
import { injectionClicks, injectionCurrentPage, injectionSlidevContext } from '../constants'
|
|
10
10
|
import { useContext } from '../composables/useContext'
|
|
11
11
|
|
|
12
12
|
export type SlidevContextNavKey = 'path' | 'total' | 'currentPage' | 'currentPath' | 'currentRoute' | 'currentSlideId' | 'currentLayout' | 'nextRoute' | 'rawTree' | 'treeWithActiveStatuses' | 'tree' | 'downloadPDF' | 'next' | 'nextSlide' | 'openInEditor' | 'prev' | 'prevSlide' | 'rawRoutes'
|
|
@@ -26,8 +26,10 @@ export interface SlidevContext {
|
|
|
26
26
|
export default function createSlidevContext() {
|
|
27
27
|
return {
|
|
28
28
|
install(app: App) {
|
|
29
|
-
const context = useContext(route, clicks)
|
|
30
|
-
app.provide(injectionSlidevContext,
|
|
29
|
+
const context = reactive(useContext(route, clicks))
|
|
30
|
+
app.provide(injectionSlidevContext, context)
|
|
31
|
+
app.provide(injectionCurrentPage, computed(() => context.nav.currentPage))
|
|
32
|
+
app.provide(injectionClicks, computed(() => context.nav.clicks))
|
|
31
33
|
|
|
32
34
|
// allows controls from postMessages
|
|
33
35
|
if (__DEV__) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@slidev/client",
|
|
3
|
-
"version": "0.43.
|
|
3
|
+
"version": "0.43.4",
|
|
4
4
|
"description": "Presentation slides for developers",
|
|
5
5
|
"author": "antfu <anthonyfu117@hotmail.com>",
|
|
6
6
|
"license": "MIT",
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
"@antfu/utils": "^0.7.6",
|
|
19
19
|
"@unocss/reset": "^0.55.7",
|
|
20
20
|
"@vueuse/core": "^10.4.1",
|
|
21
|
-
"@vueuse/head": "^
|
|
21
|
+
"@vueuse/head": "^2.0.0",
|
|
22
22
|
"@vueuse/math": "^10.4.1",
|
|
23
23
|
"@vueuse/motion": "^2.0.0",
|
|
24
24
|
"codemirror": "^5.65.5",
|
|
@@ -31,18 +31,18 @@
|
|
|
31
31
|
"katex": "^0.16.8",
|
|
32
32
|
"mermaid": "^10.4.0",
|
|
33
33
|
"monaco-editor": "^0.37.1",
|
|
34
|
-
"nanoid": "^
|
|
34
|
+
"nanoid": "^5.0.1",
|
|
35
35
|
"prettier": "^3.0.3",
|
|
36
36
|
"recordrtc": "^5.6.2",
|
|
37
|
-
"resolve": "^1.22.
|
|
37
|
+
"resolve": "^1.22.6",
|
|
38
38
|
"unocss": "^0.55.7",
|
|
39
39
|
"vite-plugin-windicss": "^1.9.1",
|
|
40
40
|
"vue": "^3.3.4",
|
|
41
41
|
"vue-router": "^4.2.4",
|
|
42
42
|
"vue-starport": "^0.4.0",
|
|
43
43
|
"windicss": "^3.5.6",
|
|
44
|
-
"@slidev/parser": "0.43.
|
|
45
|
-
"@slidev/types": "0.43.
|
|
44
|
+
"@slidev/parser": "0.43.4",
|
|
45
|
+
"@slidev/types": "0.43.4"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
48
|
"vite": "^4.4.9"
|