slidev-pane 0.1.0

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.
@@ -0,0 +1,23 @@
1
+ import { defineRoutesSetup } from '@slidev/types'
2
+ import { SIDEBAR_PRESENTER_PATH, SIDEBAR_PRESENTER_ROUTE_NAME } from '../composables/useSidebarPresenterNav'
3
+
4
+ export default defineRoutesSetup((routes) => {
5
+ const presenterRoute = routes.find(route => route.name === 'presenter')
6
+
7
+ if (presenterRoute) {
8
+ routes.unshift(
9
+ {
10
+ name: SIDEBAR_PRESENTER_ROUTE_NAME,
11
+ path: `${SIDEBAR_PRESENTER_PATH}/:no`,
12
+ component: () => import('../pages/SidebarPreviewPresenter.vue'),
13
+ beforeEnter: presenterRoute.beforeEnter,
14
+ },
15
+ {
16
+ path: SIDEBAR_PRESENTER_PATH,
17
+ redirect: { path: `${SIDEBAR_PRESENTER_PATH}/1` },
18
+ },
19
+ )
20
+ }
21
+
22
+ return routes
23
+ })
@@ -0,0 +1,63 @@
1
+ import { useNav } from '@slidev/client'
2
+ import { currentOverviewPage } from '@slidev/client/logic/overview.ts'
3
+ import { showOverview } from '@slidev/client/state/index.ts'
4
+ import { defineShortcutsSetup } from '@slidev/types'
5
+ import { useSidebarPresenterNav } from '../composables/useSidebarPresenterNav'
6
+
7
+ export default defineShortcutsSetup((_nav, shortcuts) => {
8
+ const { next, prev, nextSlide, prevSlide } = useNav()
9
+ const {
10
+ enterSidebarPresenter,
11
+ exitSidebarPresenter,
12
+ goSidebar,
13
+ isSidebarPresenter,
14
+ nextSidebar,
15
+ nextSlideSidebar,
16
+ prevSidebar,
17
+ prevSlideSidebar,
18
+ } = useSidebarPresenterNav()
19
+
20
+ const navigationOverrides = {
21
+ next_space: () => isSidebarPresenter.value ? nextSidebar() : next(),
22
+ prev_space: () => isSidebarPresenter.value ? prevSidebar() : prev(),
23
+ next_right: () => isSidebarPresenter.value ? nextSidebar() : next(),
24
+ prev_left: () => isSidebarPresenter.value ? prevSidebar() : prev(),
25
+ next_page_key: () => isSidebarPresenter.value ? nextSidebar() : next(),
26
+ prev_page_key: () => isSidebarPresenter.value ? prevSidebar() : prev(),
27
+ next_down: () => isSidebarPresenter.value ? nextSlideSidebar() : nextSlide(),
28
+ prev_up: () => isSidebarPresenter.value ? prevSlideSidebar() : prevSlide(),
29
+ next_shift: () => isSidebarPresenter.value ? nextSlideSidebar() : nextSlide(),
30
+ prev_shift: () => isSidebarPresenter.value ? prevSlideSidebar() : prevSlide(),
31
+ goto_from_overview: (fallback?: () => void) => {
32
+ if (!isSidebarPresenter.value) {
33
+ fallback?.()
34
+ return
35
+ }
36
+ goSidebar(currentOverviewPage.value)
37
+ showOverview.value = false
38
+ },
39
+ } as const
40
+
41
+ return [
42
+ ...shortcuts.map((shortcut) => {
43
+ const override = shortcut.name && navigationOverrides[shortcut.name as keyof typeof navigationOverrides]
44
+ if (!override)
45
+ return shortcut
46
+
47
+ return {
48
+ ...shortcut,
49
+ fn: () => override(shortcut.fn),
50
+ }
51
+ }),
52
+ {
53
+ name: 'toggle_pane_presenter',
54
+ key: 'p',
55
+ fn: () => {
56
+ if (isSidebarPresenter.value)
57
+ exitSidebarPresenter()
58
+ else
59
+ enterSidebarPresenter()
60
+ },
61
+ },
62
+ ]
63
+ })