@slidev-react/client 0.2.5

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.
Files changed (131) hide show
  1. package/CHANGELOG.md +42 -0
  2. package/LICENSE +21 -0
  3. package/README.md +16 -0
  4. package/package.json +44 -0
  5. package/src/addons/AddonProvider.tsx +25 -0
  6. package/src/addons/g2/G2Chart.tsx +370 -0
  7. package/src/addons/g2/chartPresets.ts +43 -0
  8. package/src/addons/g2/chartThemeTokens.ts +124 -0
  9. package/src/addons/g2/index.ts +36 -0
  10. package/src/addons/g2/style.css +31 -0
  11. package/src/addons/insight/Insight.tsx +10 -0
  12. package/src/addons/insight/InsightAddonProvider.tsx +20 -0
  13. package/src/addons/insight/SpotlightLayout.tsx +11 -0
  14. package/src/addons/insight/index.ts +17 -0
  15. package/src/addons/insight/style.css +34 -0
  16. package/src/addons/mermaid/MermaidDiagram.tsx +379 -0
  17. package/src/addons/mermaid/index.ts +10 -0
  18. package/src/addons/registry.test.ts +28 -0
  19. package/src/addons/registry.ts +61 -0
  20. package/src/addons/types.ts +6 -0
  21. package/src/app/App.tsx +125 -0
  22. package/src/app/README.md +18 -0
  23. package/src/app/providers/SlidesNavigationProvider.tsx +82 -0
  24. package/src/app/usePresentationBootstrap.ts +85 -0
  25. package/src/features/presentation/PresentationStatus.tsx +514 -0
  26. package/src/features/presentation/PrintSlidesView.tsx +350 -0
  27. package/src/features/presentation/browser.ts +5 -0
  28. package/src/features/presentation/draw/DrawOverlay.tsx +170 -0
  29. package/src/features/presentation/draw/DrawProvider.tsx +394 -0
  30. package/src/features/presentation/draw/persistence.test.ts +80 -0
  31. package/src/features/presentation/draw/persistence.ts +54 -0
  32. package/src/features/presentation/exportArtifacts.test.ts +48 -0
  33. package/src/features/presentation/exportArtifacts.ts +6 -0
  34. package/src/features/presentation/location.test.ts +73 -0
  35. package/src/features/presentation/location.ts +113 -0
  36. package/src/features/presentation/navigation/KeyboardController.tsx +73 -0
  37. package/src/features/presentation/navigation/PresentationNavbar.tsx +162 -0
  38. package/src/features/presentation/navigation/ShortcutsHelpOverlay.test.tsx +24 -0
  39. package/src/features/presentation/navigation/ShortcutsHelpOverlay.tsx +111 -0
  40. package/src/features/presentation/navigation/keyboardShortcuts.test.ts +74 -0
  41. package/src/features/presentation/navigation/keyboardShortcuts.ts +221 -0
  42. package/src/features/presentation/navigation/useSlidesNavigation.ts +15 -0
  43. package/src/features/presentation/overview/NotesOverview.tsx +200 -0
  44. package/src/features/presentation/overview/QuickOverview.tsx +126 -0
  45. package/src/features/presentation/path.ts +137 -0
  46. package/src/features/presentation/presenter/FlowTimelinePreview.test.tsx +54 -0
  47. package/src/features/presentation/presenter/FlowTimelinePreview.tsx +274 -0
  48. package/src/features/presentation/presenter/PresenterModeView.tsx +93 -0
  49. package/src/features/presentation/presenter/PresenterShell.tsx +286 -0
  50. package/src/features/presentation/presenter/PresenterSidePreview.tsx +68 -0
  51. package/src/features/presentation/presenter/PresenterTopProgress.tsx +28 -0
  52. package/src/features/presentation/presenter/SpeakerNotesPanel.tsx +51 -0
  53. package/src/features/presentation/presenter/StandaloneModeView.tsx +36 -0
  54. package/src/features/presentation/presenter/persistence.test.ts +26 -0
  55. package/src/features/presentation/presenter/persistence.ts +31 -0
  56. package/src/features/presentation/presenter/presentationSyncBridge.test.ts +87 -0
  57. package/src/features/presentation/presenter/presentationSyncBridge.ts +82 -0
  58. package/src/features/presentation/presenter/stage.ts +15 -0
  59. package/src/features/presentation/presenter/types.ts +30 -0
  60. package/src/features/presentation/presenter/useFullscreen.ts +58 -0
  61. package/src/features/presentation/presenter/useIdleCursor.ts +37 -0
  62. package/src/features/presentation/presenter/usePresentationFlowRuntime.ts +238 -0
  63. package/src/features/presentation/presenter/usePresenterChromeRuntime.ts +358 -0
  64. package/src/features/presentation/presenter/usePresenterSessionState.ts +226 -0
  65. package/src/features/presentation/presenter/useWakeLock.ts +110 -0
  66. package/src/features/presentation/recordingFilename.test.ts +46 -0
  67. package/src/features/presentation/recordingFilename.ts +56 -0
  68. package/src/features/presentation/reveal/Reveal.tsx +119 -0
  69. package/src/features/presentation/reveal/RevealContext.tsx +29 -0
  70. package/src/features/presentation/reveal/useRevealStep.ts +35 -0
  71. package/src/features/presentation/session.test.ts +122 -0
  72. package/src/features/presentation/session.ts +124 -0
  73. package/src/features/presentation/stage/SlidePreviewSurface.tsx +92 -0
  74. package/src/features/presentation/stage/SlideStage.tsx +159 -0
  75. package/src/features/presentation/stage/slideSurface.ts +71 -0
  76. package/src/features/presentation/stage/slideViewport.tsx +47 -0
  77. package/src/features/presentation/sync/adapters/broadcastChannelTransport.ts +40 -0
  78. package/src/features/presentation/sync/adapters/websocketTransport.ts +128 -0
  79. package/src/features/presentation/sync/model/presence.test.ts +42 -0
  80. package/src/features/presentation/sync/model/presence.ts +33 -0
  81. package/src/features/presentation/sync/model/replication.test.ts +72 -0
  82. package/src/features/presentation/sync/model/replication.ts +113 -0
  83. package/src/features/presentation/sync/model/status.test.ts +52 -0
  84. package/src/features/presentation/sync/model/status.ts +33 -0
  85. package/src/features/presentation/types.ts +1 -0
  86. package/src/features/presentation/usePresentationRecorder.ts +194 -0
  87. package/src/features/presentation/usePresentationSync.ts +423 -0
  88. package/src/index.ts +7 -0
  89. package/src/main.tsx +12 -0
  90. package/src/theme/ThemeProvider.test.ts +36 -0
  91. package/src/theme/ThemeProvider.tsx +79 -0
  92. package/src/theme/__mocks__/active-theme.ts +3 -0
  93. package/src/theme/base.css +14 -0
  94. package/src/theme/components.css +231 -0
  95. package/src/theme/index.css +11 -0
  96. package/src/theme/layouts/center.tsx +9 -0
  97. package/src/theme/layouts/cover.tsx +9 -0
  98. package/src/theme/layouts/default.tsx +5 -0
  99. package/src/theme/layouts/defaultLayouts.ts +20 -0
  100. package/src/theme/layouts/helpers.tsx +12 -0
  101. package/src/theme/layouts/image-right.tsx +21 -0
  102. package/src/theme/layouts/immersive.tsx +9 -0
  103. package/src/theme/layouts/resolveLayout.ts +9 -0
  104. package/src/theme/layouts/section.tsx +9 -0
  105. package/src/theme/layouts/statement.tsx +9 -0
  106. package/src/theme/layouts/two-cols.tsx +21 -0
  107. package/src/theme/layouts/types.ts +1 -0
  108. package/src/theme/layouts.css +133 -0
  109. package/src/theme/mark.css +379 -0
  110. package/src/theme/print.css +106 -0
  111. package/src/theme/prose.css +263 -0
  112. package/src/theme/registry.test.ts +21 -0
  113. package/src/theme/registry.ts +40 -0
  114. package/src/theme/tokens.css +148 -0
  115. package/src/theme/transitions.css +141 -0
  116. package/src/theme/types.ts +9 -0
  117. package/src/theme/useResolvedLayout.ts +24 -0
  118. package/src/types/generated-slides.d.ts +7 -0
  119. package/src/types/mdx-components.ts +7 -0
  120. package/src/types/plantuml-encoder.d.ts +7 -0
  121. package/src/ui/diagrams/PlantUmlDiagram.tsx +33 -0
  122. package/src/ui/mdx/MagicMoveDemo.tsx +114 -0
  123. package/src/ui/mdx/index.ts +21 -0
  124. package/src/ui/primitives/Annotate.test.tsx +64 -0
  125. package/src/ui/primitives/Annotate.tsx +82 -0
  126. package/src/ui/primitives/Badge.tsx +5 -0
  127. package/src/ui/primitives/Callout.tsx +24 -0
  128. package/src/ui/primitives/ChromeIconButton.tsx +58 -0
  129. package/src/ui/primitives/ChromePanel.tsx +79 -0
  130. package/src/ui/primitives/ChromeTag.tsx +70 -0
  131. package/src/ui/primitives/FormSelect.tsx +51 -0
@@ -0,0 +1,379 @@
1
+ .slide-mark {
2
+ display: inline-block;
3
+ position: relative;
4
+ border-radius: var(--slide-mark-radius);
5
+ vertical-align: baseline;
6
+ line-height: inherit;
7
+ isolation: isolate;
8
+ }
9
+
10
+ .slide-mark-target {
11
+ display: inline-block;
12
+ line-height: inherit;
13
+ position: relative;
14
+ z-index: 1;
15
+ }
16
+
17
+ .slide-mark-overlay {
18
+ position: absolute;
19
+ pointer-events: none;
20
+ }
21
+
22
+ .slide-mark--highlight .slide-mark-overlay {
23
+ left: calc(var(--mark-pad-left) * -1);
24
+ right: calc(var(--mark-pad-right) * -1);
25
+ top: 0.42em;
26
+ bottom: -0.05em;
27
+ z-index: 0;
28
+ border-radius: 0.3em 0.16em 0.34em 0.22em;
29
+ background:
30
+ repeating-linear-gradient(
31
+ 96deg,
32
+ rgb(255 255 255 / 0.045) 0 0.08em,
33
+ rgb(255 255 255 / 0) 0.08em 0.2em,
34
+ rgb(0 0 0 / 0.012) 0.2em 0.28em,
35
+ rgb(255 255 255 / 0) 0.28em 0.42em
36
+ ),
37
+ linear-gradient(
38
+ 180deg,
39
+ rgb(255 255 255 / 0.05) 0%,
40
+ color-mix(in srgb, var(--mark-color) 92%, rgb(255 255 255 / 0) 8%) 16%,
41
+ var(--mark-color) 48%,
42
+ color-mix(in srgb, var(--mark-color) 94%, rgb(0 0 0 / 0) 6%) 82%,
43
+ rgb(255 255 255 / 0.04) 100%
44
+ );
45
+ opacity: 0.9;
46
+ transform: rotate(-0.75deg);
47
+ box-shadow:
48
+ 0 0.01em 0 rgb(255 255 255 / 0.06) inset,
49
+ 0 -0.015em 0 rgb(0 0 0 / 0.015) inset;
50
+ }
51
+
52
+ .slide-mark--highlight .slide-mark-overlay::before,
53
+ .slide-mark--highlight .slide-mark-overlay::after {
54
+ content: "";
55
+ position: absolute;
56
+ inset: 0;
57
+ background: var(--mark-color);
58
+ pointer-events: none;
59
+ }
60
+
61
+ .slide-mark--highlight .slide-mark-overlay::before {
62
+ inset: -0.01em 0.08em 0.03em -0.03em;
63
+ border-radius: 0.24em 0.25em 0.34em 0.18em;
64
+ opacity: 0.34;
65
+ background:
66
+ repeating-linear-gradient(
67
+ 92deg,
68
+ rgb(255 255 255 / 0.035) 0 0.07em,
69
+ rgb(255 255 255 / 0) 0.07em 0.16em,
70
+ rgb(0 0 0 / 0.01) 0.16em 0.22em,
71
+ rgb(255 255 255 / 0) 0.22em 0.34em
72
+ ),
73
+ linear-gradient(
74
+ 180deg,
75
+ rgb(255 255 255 / 0.02) 0%,
76
+ var(--mark-color) 28%,
77
+ color-mix(in srgb, var(--mark-color) 95%, rgb(255 255 255 / 0) 5%) 100%
78
+ );
79
+ transform: rotate(0.45deg);
80
+ }
81
+
82
+ .slide-mark--highlight .slide-mark-overlay::after {
83
+ inset: 0.04em -0.05em -0.01em 0.05em;
84
+ border-radius: 0.34em 0.14em 0.28em 0.24em;
85
+ opacity: 0.12;
86
+ background:
87
+ linear-gradient(
88
+ 180deg,
89
+ rgb(255 255 255 / 0.04) 0%,
90
+ rgb(255 255 255 / 0) 36%,
91
+ rgb(0 0 0 / 0.012) 100%
92
+ ),
93
+ repeating-linear-gradient(
94
+ 100deg,
95
+ rgb(255 255 255 / 0.03) 0 0.06em,
96
+ rgb(255 255 255 / 0) 0.06em 0.18em
97
+ );
98
+ transform: rotate(-0.28deg);
99
+ }
100
+
101
+ .slide-mark--underline .slide-mark-overlay {
102
+ left: calc(var(--mark-pad-left) * -0.5);
103
+ right: calc(var(--mark-pad-right) * -0.5);
104
+ bottom: -0.1em;
105
+ height: 0.48em;
106
+ z-index: 0;
107
+ border-bottom: var(--mark-stroke-width) solid var(--mark-color);
108
+ border-radius: 999px;
109
+ transform: rotate(-0.85deg);
110
+ }
111
+
112
+ .slide-mark--underline .slide-mark-overlay::before {
113
+ content: "";
114
+ position: absolute;
115
+ inset: auto 0 0.05em 0.06em;
116
+ border-bottom: calc(var(--mark-stroke-width) * 0.78) solid var(--mark-color);
117
+ border-radius: 999px;
118
+ opacity: 0.42;
119
+ transform: rotate(0.38deg);
120
+ }
121
+
122
+ .slide-mark--box .slide-mark-overlay {
123
+ inset: calc(var(--mark-pad-top) * -1) calc(var(--mark-pad-right) * -1)
124
+ calc(var(--mark-pad-bottom) * -1) calc(var(--mark-pad-left) * -1);
125
+ z-index: 0;
126
+ border: var(--mark-stroke-width) solid var(--mark-color);
127
+ border-radius: 0.34em 0.26em 0.32em 0.22em;
128
+ transform: rotate(-0.95deg);
129
+ }
130
+
131
+ .slide-mark--box .slide-mark-overlay::before {
132
+ content: "";
133
+ position: absolute;
134
+ inset: -0.03em 0.04em 0.02em -0.05em;
135
+ border: calc(var(--mark-stroke-width) * 0.84) solid var(--mark-color);
136
+ border-radius: 0.26em 0.34em 0.22em 0.36em;
137
+ opacity: 0.42;
138
+ transform: rotate(0.42deg);
139
+ }
140
+
141
+ .slide-mark--circle .slide-mark-overlay {
142
+ inset: calc(var(--mark-pad-top) * -1) calc(var(--mark-pad-right) * -1)
143
+ calc(var(--mark-pad-bottom) * -1) calc(var(--mark-pad-left) * -1);
144
+ z-index: 0;
145
+ border: var(--mark-stroke-width) solid var(--mark-color);
146
+ border-radius: 48% 52% 50% 55% / 53% 47% 56% 44%;
147
+ transform: rotate(-2.6deg);
148
+ }
149
+
150
+ .slide-mark--circle .slide-mark-overlay::before {
151
+ content: "";
152
+ position: absolute;
153
+ inset: -0.02em 0.04em 0.02em -0.04em;
154
+ border: calc(var(--mark-stroke-width) * 0.82) solid var(--mark-color);
155
+ border-radius: 52% 48% 55% 49% / 45% 54% 46% 55%;
156
+ opacity: 0.38;
157
+ transform: rotate(1.35deg);
158
+ }
159
+
160
+ .slide-mark--strike-through .slide-mark-overlay {
161
+ left: calc(var(--mark-pad-left) * -0.5);
162
+ right: calc(var(--mark-pad-right) * -0.5);
163
+ top: 50%;
164
+ height: 0;
165
+ z-index: 0;
166
+ border-top: var(--mark-stroke-width) solid var(--mark-color);
167
+ transform: translateY(-50%) rotate(-1.1deg);
168
+ }
169
+
170
+ .slide-mark--strike-through .slide-mark-overlay::before {
171
+ content: "";
172
+ position: absolute;
173
+ inset: -0.02em 0.04em auto 0;
174
+ border-top: calc(var(--mark-stroke-width) * 0.78) solid var(--mark-color);
175
+ opacity: 0.42;
176
+ transform: rotate(0.42deg);
177
+ }
178
+
179
+ .slide-mark--crossed-off .slide-mark-overlay {
180
+ inset: calc(var(--mark-pad-top) * -1) calc(var(--mark-pad-right) * -1)
181
+ calc(var(--mark-pad-bottom) * -1) calc(var(--mark-pad-left) * -1);
182
+ z-index: 0;
183
+ }
184
+
185
+ .slide-mark--crossed-off .slide-mark-overlay::before,
186
+ .slide-mark--crossed-off .slide-mark-overlay::after {
187
+ content: "";
188
+ position: absolute;
189
+ left: 50%;
190
+ top: 50%;
191
+ width: calc(100% + 0.3em);
192
+ border-top: var(--mark-stroke-width) solid var(--mark-color);
193
+ transform-origin: center;
194
+ }
195
+
196
+ .slide-mark--crossed-off .slide-mark-overlay::before {
197
+ transform: translate(-50%, -50%) rotate(22deg);
198
+ }
199
+
200
+ .slide-mark--crossed-off .slide-mark-overlay::after {
201
+ transform: translate(-50%, -50%) rotate(-22deg);
202
+ }
203
+
204
+ @keyframes slide-mark-highlight-draw {
205
+ from {
206
+ opacity: 0;
207
+ clip-path: inset(-0.08em 100% -0.08em 0);
208
+ }
209
+
210
+ 78% {
211
+ opacity: 0.96;
212
+ clip-path: inset(-0.08em -7% -0.08em 0);
213
+ }
214
+
215
+ to {
216
+ opacity: 0.92;
217
+ clip-path: inset(-0.08em 0 -0.08em 0);
218
+ }
219
+ }
220
+
221
+ @keyframes slide-mark-line-draw {
222
+ from {
223
+ opacity: 0;
224
+ clip-path: inset(-0.24em 100% -0.24em 0);
225
+ }
226
+
227
+ 80% {
228
+ opacity: 1;
229
+ clip-path: inset(-0.24em -9% -0.24em 0);
230
+ }
231
+
232
+ to {
233
+ opacity: 1;
234
+ clip-path: inset(-0.24em 0 -0.24em 0);
235
+ }
236
+ }
237
+
238
+ @keyframes slide-mark-shape-draw {
239
+ from {
240
+ opacity: 0;
241
+ clip-path: inset(-0.25em 100% -0.25em 0);
242
+ }
243
+
244
+ 82% {
245
+ opacity: 1;
246
+ clip-path: inset(-0.25em -10% -0.25em 0);
247
+ }
248
+
249
+ to {
250
+ opacity: 1;
251
+ clip-path: inset(-0.25em 0 -0.25em 0);
252
+ }
253
+ }
254
+
255
+ @keyframes slide-mark-cross-a-draw {
256
+ from {
257
+ opacity: 0;
258
+ clip-path: inset(-0.24em 100% -0.24em 0);
259
+ }
260
+
261
+ 82% {
262
+ opacity: 1;
263
+ clip-path: inset(-0.24em -10% -0.24em 0);
264
+ }
265
+
266
+ to {
267
+ opacity: 1;
268
+ clip-path: inset(-0.24em 0 -0.24em 0);
269
+ }
270
+ }
271
+
272
+ @keyframes slide-mark-cross-b-draw {
273
+ from {
274
+ opacity: 0;
275
+ clip-path: inset(-0.24em 100% -0.24em 0);
276
+ }
277
+
278
+ 82% {
279
+ opacity: 1;
280
+ clip-path: inset(-0.24em -10% -0.24em 0);
281
+ }
282
+
283
+ to {
284
+ opacity: 1;
285
+ clip-path: inset(-0.24em 0 -0.24em 0);
286
+ }
287
+ }
288
+
289
+ .slide-mark--animate .slide-mark-overlay,
290
+ .slide-mark--animate .slide-mark-overlay::before,
291
+ .slide-mark--animate .slide-mark-overlay::after {
292
+ animation-duration: var(--mark-animation-duration);
293
+ animation-fill-mode: both;
294
+ animation-timing-function: cubic-bezier(0.2, 0.9, 0.22, 1.08);
295
+ animation-iteration-count: var(--mark-animation-iterations);
296
+ will-change: clip-path, opacity;
297
+ }
298
+
299
+ .slide-mark--highlight.slide-mark--animate .slide-mark-overlay {
300
+ transform-origin: left center;
301
+ animation-name: slide-mark-highlight-draw;
302
+ }
303
+
304
+ .slide-mark--highlight.slide-mark--animate .slide-mark-overlay::before,
305
+ .slide-mark--highlight.slide-mark--animate .slide-mark-overlay::after {
306
+ animation-name: slide-mark-highlight-draw;
307
+ }
308
+
309
+ .slide-mark--highlight.slide-mark--animate .slide-mark-overlay::before {
310
+ animation-duration: calc(var(--mark-animation-duration) * 0.92);
311
+ }
312
+
313
+ .slide-mark--highlight.slide-mark--animate .slide-mark-overlay::after {
314
+ animation-duration: calc(var(--mark-animation-duration) * 0.84);
315
+ animation-delay: calc(var(--mark-animation-duration) * 0.04);
316
+ }
317
+
318
+ .slide-mark--underline.slide-mark--animate .slide-mark-overlay {
319
+ --mark-line-transform: rotate(-0.85deg);
320
+ transform-origin: left center;
321
+ animation-name: slide-mark-line-draw;
322
+ }
323
+
324
+ .slide-mark--underline.slide-mark--animate .slide-mark-overlay::before {
325
+ --mark-line-transform: rotate(0.38deg);
326
+ transform-origin: left center;
327
+ animation-name: slide-mark-line-draw;
328
+ animation-duration: calc(var(--mark-animation-duration) * 0.86);
329
+ animation-delay: calc(var(--mark-animation-duration) * 0.06);
330
+ }
331
+
332
+ .slide-mark--strike-through.slide-mark--animate .slide-mark-overlay {
333
+ --mark-line-transform: translateY(-50%) rotate(-1.1deg);
334
+ transform-origin: left center;
335
+ animation-name: slide-mark-line-draw;
336
+ }
337
+
338
+ .slide-mark--strike-through.slide-mark--animate .slide-mark-overlay::before {
339
+ --mark-line-transform: rotate(0.42deg);
340
+ transform-origin: left center;
341
+ animation-name: slide-mark-line-draw;
342
+ animation-duration: calc(var(--mark-animation-duration) * 0.82);
343
+ animation-delay: calc(var(--mark-animation-duration) * 0.08);
344
+ }
345
+
346
+ .slide-mark--box.slide-mark--animate .slide-mark-overlay {
347
+ animation-name: slide-mark-shape-draw;
348
+ }
349
+
350
+ .slide-mark--box.slide-mark--animate .slide-mark-overlay::before {
351
+ animation-duration: calc(var(--mark-animation-duration) * 0.88);
352
+ animation-delay: calc(var(--mark-animation-duration) * 0.05);
353
+ animation-name: slide-mark-shape-draw;
354
+ }
355
+
356
+ .slide-mark--circle.slide-mark--animate .slide-mark-overlay {
357
+ --mark-shape-transform: rotate(-2.6deg);
358
+ transform-origin: center;
359
+ animation-name: slide-mark-shape-draw;
360
+ }
361
+
362
+ .slide-mark--circle.slide-mark--animate .slide-mark-overlay::before {
363
+ --mark-shape-transform: rotate(1.35deg);
364
+ transform-origin: center;
365
+ animation-name: slide-mark-shape-draw;
366
+ animation-duration: calc(var(--mark-animation-duration) * 0.86);
367
+ animation-delay: calc(var(--mark-animation-duration) * 0.06);
368
+ }
369
+
370
+ .slide-mark--crossed-off.slide-mark--animate .slide-mark-overlay::before {
371
+ transform-origin: center;
372
+ animation-name: slide-mark-cross-a-draw;
373
+ }
374
+
375
+ .slide-mark--crossed-off.slide-mark--animate .slide-mark-overlay::after {
376
+ transform-origin: center;
377
+ animation-name: slide-mark-cross-b-draw;
378
+ animation-delay: calc(var(--mark-animation-duration) * 0.14);
379
+ }
@@ -0,0 +1,106 @@
1
+ html[data-presentation-mode="print"],
2
+ html[data-presentation-mode="print"] body,
3
+ html[data-presentation-mode="print"] #root {
4
+ height: auto;
5
+ min-height: 100%;
6
+ overflow: auto;
7
+ }
8
+
9
+ html[data-presentation-mode="print"] body {
10
+ overscroll-behavior: auto;
11
+ }
12
+
13
+ .print-slide-viewport {
14
+ margin: 0 auto;
15
+ max-width: 100%;
16
+ }
17
+
18
+ .print-slide-sheet {
19
+ position: relative;
20
+ width: 100%;
21
+ aspect-ratio: var(--print-page-aspect-ratio, 297 / 210);
22
+ overflow: hidden;
23
+ }
24
+
25
+ .print-slide-frame {
26
+ display: flex;
27
+ height: 100%;
28
+ width: 100%;
29
+ align-items: center;
30
+ justify-content: center;
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ @media print {
35
+ html,
36
+ body,
37
+ #root {
38
+ width: auto;
39
+ height: auto;
40
+ min-height: auto;
41
+ overflow: visible;
42
+ background: #fff;
43
+ }
44
+
45
+ body {
46
+ print-color-adjust: exact;
47
+ -webkit-print-color-adjust: exact;
48
+ }
49
+
50
+ .print-slides-toolbar {
51
+ display: none;
52
+ }
53
+
54
+ .print-slides-view {
55
+ min-height: auto;
56
+ background: #fff;
57
+ }
58
+
59
+ .print-slides-content {
60
+ align-items: center;
61
+ width: 100%;
62
+ max-width: none;
63
+ padding: 0;
64
+ gap: 0;
65
+ }
66
+
67
+ .print-slide-shell {
68
+ break-inside: avoid;
69
+ page-break-inside: avoid;
70
+ break-after: page;
71
+ page-break-after: always;
72
+ margin: 0;
73
+ width: var(--print-page-width, 297mm);
74
+ height: var(--print-page-height, 210mm);
75
+ }
76
+
77
+ .print-slide-meta {
78
+ display: none;
79
+ }
80
+
81
+ .print-slide-shell:last-child {
82
+ break-after: auto;
83
+ page-break-after: auto;
84
+ }
85
+
86
+ .print-slide-sheet {
87
+ width: var(--print-page-width, 297mm);
88
+ height: var(--print-page-height, 210mm);
89
+ aspect-ratio: auto;
90
+ border: none;
91
+ border-radius: 0;
92
+ box-shadow: none;
93
+ }
94
+
95
+ .print-slide-frame {
96
+ padding: 0;
97
+ border: none;
98
+ border-radius: 0;
99
+ background: transparent;
100
+ box-shadow: none;
101
+ }
102
+
103
+ .print-slide-frame article {
104
+ box-shadow: none;
105
+ }
106
+ }