@bendyline/squisq-react 1.0.2 → 1.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.
- package/dist/BlockRenderer.d.ts.map +1 -1
- package/dist/BlockRenderer.js +3 -0
- package/dist/BlockRenderer.js.map +1 -1
- package/dist/CaptionOverlay.d.ts +16 -7
- package/dist/CaptionOverlay.d.ts.map +1 -1
- package/dist/CaptionOverlay.js +7 -3
- package/dist/CaptionOverlay.js.map +1 -1
- package/dist/DocControlsBottom.d.ts.map +1 -1
- package/dist/DocControlsBottom.js +5 -1
- package/dist/DocControlsBottom.js.map +1 -1
- package/dist/DocControlsOverlay.d.ts.map +1 -1
- package/dist/DocControlsOverlay.js +9 -4
- package/dist/DocControlsOverlay.js.map +1 -1
- package/dist/DocControlsSidebar.d.ts.map +1 -1
- package/dist/DocControlsSidebar.js +5 -1
- package/dist/DocControlsSidebar.js.map +1 -1
- package/dist/DocPlayer.d.ts +5 -2
- package/dist/DocPlayer.d.ts.map +1 -1
- package/dist/DocPlayer.js +36 -7
- package/dist/DocPlayer.js.map +1 -1
- package/dist/DocPlayerWithSidebar.d.ts.map +1 -1
- package/dist/DocPlayerWithSidebar.js +1 -0
- package/dist/DocPlayerWithSidebar.js.map +1 -1
- package/dist/DocProgressBar.js +2 -2
- package/dist/LinearDocView.d.ts.map +1 -1
- package/dist/LinearDocView.js +130 -6
- package/dist/LinearDocView.js.map +1 -1
- package/dist/SocialCaptionOverlay.d.ts +27 -0
- package/dist/SocialCaptionOverlay.d.ts.map +1 -0
- package/dist/SocialCaptionOverlay.js +184 -0
- package/dist/SocialCaptionOverlay.js.map +1 -0
- package/dist/__tests__/DocControlsSlideshow.test.js +1 -0
- package/dist/__tests__/DocControlsSlideshow.test.js.map +1 -1
- package/dist/__tests__/TableLayer.test.d.ts +2 -0
- package/dist/__tests__/TableLayer.test.d.ts.map +1 -0
- package/dist/__tests__/TableLayer.test.js +121 -0
- package/dist/__tests__/TableLayer.test.js.map +1 -0
- package/dist/hooks/useAudioSync.d.ts.map +1 -1
- package/dist/hooks/useAudioSync.js +4 -2
- package/dist/hooks/useAudioSync.js.map +1 -1
- package/dist/hooks/useDocPlayback.d.ts.map +1 -1
- package/dist/hooks/useDocPlayback.js +7 -4
- package/dist/hooks/useDocPlayback.js.map +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/layers/ShapeLayer.d.ts.map +1 -1
- package/dist/layers/ShapeLayer.js +7 -3
- package/dist/layers/ShapeLayer.js.map +1 -1
- package/dist/layers/TableLayer.d.ts +23 -0
- package/dist/layers/TableLayer.d.ts.map +1 -0
- package/dist/layers/TableLayer.js +58 -0
- package/dist/layers/TableLayer.js.map +1 -0
- package/dist/layers/TextLayer.js +1 -1
- package/dist/layers/TextLayer.js.map +1 -1
- package/dist/squisq-player.global.js +91 -5
- package/dist/squisq-player.global.js.map +1 -1
- package/dist/standalone-entry.d.ts +8 -0
- package/dist/standalone-entry.d.ts.map +1 -1
- package/dist/standalone-entry.js +6 -3
- package/dist/standalone-entry.js.map +1 -1
- package/dist/standalone-source.js +1 -1
- package/dist/types.d.ts +19 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
- package/src/BlockRenderer.tsx +3 -0
- package/src/CaptionOverlay.tsx +33 -8
- package/src/DocControlsBottom.tsx +11 -5
- package/src/DocControlsOverlay.tsx +18 -6
- package/src/DocControlsSidebar.tsx +11 -5
- package/src/DocPlayer.tsx +56 -9
- package/src/DocPlayerWithSidebar.tsx +1 -0
- package/src/DocProgressBar.tsx +2 -2
- package/src/LinearDocView.tsx +149 -12
- package/src/SocialCaptionOverlay.tsx +254 -0
- package/src/__tests__/DocControlsSlideshow.test.tsx +1 -0
- package/src/__tests__/TableLayer.test.tsx +142 -0
- package/src/hooks/useAudioSync.ts +5 -2
- package/src/hooks/useDocPlayback.ts +8 -3
- package/src/index.ts +4 -0
- package/src/layers/ShapeLayer.tsx +8 -3
- package/src/layers/TableLayer.tsx +129 -0
- package/src/layers/TextLayer.tsx +1 -1
- package/src/standalone-entry.tsx +23 -3
- package/src/types.ts +21 -0
package/src/standalone-entry.tsx
CHANGED
|
@@ -53,6 +53,14 @@ export interface MountOptions {
|
|
|
53
53
|
theme?: Theme;
|
|
54
54
|
/** Auto-play on mount (only for slideshow mode, default: false) */
|
|
55
55
|
autoPlay?: boolean;
|
|
56
|
+
/**
|
|
57
|
+
* Enable render mode for headless frame capture.
|
|
58
|
+
* Exposes window.seekTo(), getDuration(), getCaptions(), etc.
|
|
59
|
+
* Disables controls and auto-play. Used by Playwright video export.
|
|
60
|
+
*/
|
|
61
|
+
renderMode?: boolean;
|
|
62
|
+
/** Caption style: 'standard' or 'social'. Omit or set to undefined for no captions. */
|
|
63
|
+
captionStyle?: 'standard' | 'social';
|
|
56
64
|
}
|
|
57
65
|
|
|
58
66
|
// ── CSS Injection ──────────────────────────────────────────────────
|
|
@@ -159,7 +167,16 @@ const roots = new WeakMap<Element, Root>();
|
|
|
159
167
|
export function mount(element: Element, doc: Doc, options: MountOptions = {}): void {
|
|
160
168
|
injectCss();
|
|
161
169
|
|
|
162
|
-
const {
|
|
170
|
+
const {
|
|
171
|
+
mode = 'slideshow',
|
|
172
|
+
basePath = '.',
|
|
173
|
+
images,
|
|
174
|
+
audio,
|
|
175
|
+
autoPlay = false,
|
|
176
|
+
theme,
|
|
177
|
+
renderMode = false,
|
|
178
|
+
captionStyle,
|
|
179
|
+
} = options;
|
|
163
180
|
|
|
164
181
|
// Rewrite audio URLs if map provided
|
|
165
182
|
const finalDoc = audio ? rewriteAudioUrls(doc, audio) : doc;
|
|
@@ -180,9 +197,12 @@ export function mount(element: Element, doc: Doc, options: MountOptions = {}): v
|
|
|
180
197
|
script: finalDoc,
|
|
181
198
|
basePath,
|
|
182
199
|
displayMode: 'slideshow',
|
|
183
|
-
autoPlay,
|
|
184
|
-
showControls:
|
|
200
|
+
autoPlay: renderMode ? false : autoPlay,
|
|
201
|
+
showControls: !renderMode,
|
|
202
|
+
renderMode,
|
|
185
203
|
theme,
|
|
204
|
+
captionsEnabled: !!captionStyle,
|
|
205
|
+
captionStyle: captionStyle ?? 'standard',
|
|
186
206
|
});
|
|
187
207
|
}
|
|
188
208
|
|
package/src/types.ts
CHANGED
|
@@ -32,6 +32,23 @@ export type ControlsLayout = 'overlay' | 'sidebar' | 'bottom';
|
|
|
32
32
|
*/
|
|
33
33
|
export type DisplayMode = 'video' | 'slideshow' | 'linear';
|
|
34
34
|
|
|
35
|
+
/**
|
|
36
|
+
* Caption display style.
|
|
37
|
+
*
|
|
38
|
+
* - `'standard'` — Traditional broadcast-style captions: small white text
|
|
39
|
+
* on a semi-transparent black badge at the top of the player.
|
|
40
|
+
* - `'social'` — Social media-style (Instagram/TikTok): large centered words
|
|
41
|
+
* showing 3-5 words at a time with the active word highlighted in the
|
|
42
|
+
* theme's primary color. Font and colors pulled from the active theme.
|
|
43
|
+
*/
|
|
44
|
+
export type CaptionStyle = 'standard' | 'social';
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Caption display mode — combines enable/disable with style selection.
|
|
48
|
+
* The CC button cycles through: off → standard → social → off.
|
|
49
|
+
*/
|
|
50
|
+
export type CaptionMode = 'off' | 'standard' | 'social';
|
|
51
|
+
|
|
35
52
|
/** Slide navigation actions for slideshow display mode */
|
|
36
53
|
export interface SlideNavActions {
|
|
37
54
|
/** Navigate to the next slide */
|
|
@@ -52,6 +69,8 @@ export interface PlaybackState {
|
|
|
52
69
|
docProgress: number;
|
|
53
70
|
hasCaptions: boolean;
|
|
54
71
|
captionsEnabled: boolean;
|
|
72
|
+
/** Current caption display mode (off, standard, social). */
|
|
73
|
+
captionMode: CaptionMode;
|
|
55
74
|
isFullscreen?: boolean;
|
|
56
75
|
/** Current audio segment index (0-based) */
|
|
57
76
|
currentSegmentIndex: number;
|
|
@@ -67,6 +86,8 @@ export interface PlaybackActions {
|
|
|
67
86
|
restart: () => void;
|
|
68
87
|
seekTo: (time: number) => void;
|
|
69
88
|
setCaptionsEnabled: (enabled: boolean) => void;
|
|
89
|
+
/** Cycle caption mode: off → standard → social → off */
|
|
90
|
+
cycleCaptionMode: () => void;
|
|
70
91
|
toggleFullscreen?: () => void;
|
|
71
92
|
}
|
|
72
93
|
|