@phont-ai/subtitles 0.1.59 → 0.1.61

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/index.d.mts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { AnimationFetcher, PhontClient, LoginResponse, RegisterResponse, WordAnimationState } from '@phont-ai/subtitles-core';
2
2
  export { AnimationFetcher, LoginResponse, PhontClient, PhontClientOptions, PublishedAnimationResolver, RegisterResponse, VodMetadata, calculateAnimationState, createPublishedAnimationResolver, decodeAnimationUrl, subtitleManager } from '@phont-ai/subtitles-core';
3
- import React, { ReactNode } from 'react';
3
+ import * as React from 'react';
4
+ import React__default, { ReactNode } from 'react';
4
5
 
5
6
  interface PhontClientConfig {
6
7
  apiKey: string;
@@ -33,7 +34,7 @@ type EmotionAnimationUrls = Record<string, string>;
33
34
  /**
34
35
  * Provider component for animation config (URL-based system)
35
36
  */
36
- declare function AnimationConfigProvider({ children, customUrls, }: AnimationConfigProviderProps): React.JSX.Element;
37
+ declare function AnimationConfigProvider({ children, customUrls, }: AnimationConfigProviderProps): React__default.JSX.Element;
37
38
  /**
38
39
  * Hook to access animation config
39
40
  */
@@ -45,7 +46,7 @@ declare function useAnimationConfig(): AnimationConfigContextValue;
45
46
  */
46
47
 
47
48
  interface PhontRootProps {
48
- children: React.ReactNode;
49
+ children: React__default.ReactNode;
49
50
  /**
50
51
  * Phont Subtitles API origin (no trailing slash), e.g. `process.env.NEXT_PUBLIC_API_SUB_BASE_URL`.
51
52
  * When set, configures the published animation resolver to hit `{apiBaseUrl}/animations`.
@@ -57,7 +58,7 @@ interface PhontRootProps {
57
58
  /** Initial stylesheet name for resolver/emotion lookup (`default` | `children` in built-in registry) */
58
59
  defaultStylesheet?: string;
59
60
  }
60
- declare function PhontRoot({ children, apiBaseUrl, customEmotionUrls, defaultStylesheet, }: PhontRootProps): React.JSX.Element;
61
+ declare function PhontRoot({ children, apiBaseUrl, customEmotionUrls, defaultStylesheet, }: PhontRootProps): React__default.JSX.Element;
61
62
 
62
63
  /**
63
64
  * React hook for the published animation resolver.
@@ -87,17 +88,24 @@ declare function configurePublishedAnimationFetcher(fetcher: AnimationFetcher):
87
88
  *
88
89
  * Returns a function: `(backendUrl, emotion) => resolvedUrl | null`
89
90
  *
90
- * Resolution order:
91
- * 1. backendUrl from segment (if truthy string)
92
- * 2. Published animation from API cache
93
- * 3. Hardcoded getAnimationUrlForEmotion from core
91
+ * Resolution order (Model A — backend is source of truth):
92
+ * 1. Per-segment `animation_url` from the backend. The backend embeds the
93
+ * latest published URL for the segment's emotion at serialize time, so
94
+ * this is the freshest and most specific value available.
95
+ * 2. Published animation from the `/animations` API cache. Legacy safety
96
+ * net for old subtitles that didn't have `animation_url` baked in.
97
+ * 3. Hardcoded `getAnimationUrlForEmotion` from core.
98
+ *
99
+ * Note: only the query-string portion of the URL is read by the renderer.
100
+ * The URL origin (localhost vs. phont.ai vs. tenant subdomain) is
101
+ * irrelevant — animation URLs are parsed, not fetched.
94
102
  */
95
103
  declare function usePublishedAnimationResolver(): {
96
104
  /**
97
105
  * Resolve an animation URL.
98
106
  *
99
- * Priority: published animation (always up-to-date) > baked-in segment URL > hardcoded mapping.
100
- * Pass `stylesheetName` and `segmentEmotion` to look up the video's stylesheet first.
107
+ * Priority: per-segment `animation_url` > published cache > hardcoded mapping.
108
+ * Pass `stylesheetName` and `segmentEmotion` to control the published lookup.
101
109
  */
102
110
  resolve(backendUrl: string | undefined | null, emotion: string | null, opts?: {
103
111
  stylesheetName?: string | null;
@@ -117,63 +125,11 @@ interface StylesheetContextValue {
117
125
  isDefaultActive: boolean;
118
126
  }
119
127
  declare function StylesheetProvider({ children, defaultStylesheet, }: {
120
- children: React.ReactNode;
128
+ children: React__default.ReactNode;
121
129
  defaultStylesheet?: string;
122
- }): React.JSX.Element;
130
+ }): React__default.JSX.Element;
123
131
  declare function useStylesheet(): StylesheetContextValue;
124
132
 
125
- interface FontAxisConfig {
126
- min: number;
127
- max: number;
128
- default: number;
129
- cssProperty: string;
130
- tag: string;
131
- unit?: string;
132
- description?: string;
133
- }
134
- interface OptionalAxisConfig {
135
- min: number;
136
- max: number;
137
- default: number;
138
- cssProperty: string;
139
- tag: string;
140
- description?: string;
141
- usedBy?: string[];
142
- }
143
- interface VariableFontConfig {
144
- name: string;
145
- id: string;
146
- family: string;
147
- axes: {
148
- weight: FontAxisConfig;
149
- width: FontAxisConfig;
150
- };
151
- optionalAxes?: {
152
- thinStroke?: OptionalAxisConfig;
153
- ascenderHeight?: OptionalAxisConfig;
154
- };
155
- fallbacks?: string[];
156
- loadCheck: string;
157
- variationAxes?: string[];
158
- mapping?: {
159
- volume?: {
160
- source?: string;
161
- target?: string;
162
- min: number;
163
- max: number;
164
- description?: string;
165
- };
166
- speechRate?: {
167
- source?: string;
168
- target?: string;
169
- min: number;
170
- max: number;
171
- inverse?: boolean;
172
- description?: string;
173
- };
174
- };
175
- }
176
-
177
133
  /**
178
134
  * PhontSubtitles Component
179
135
  *
@@ -191,12 +147,108 @@ interface PhontSubtitlesProps {
191
147
  isRTL?: boolean;
192
148
  phontClient?: PhontClient | null;
193
149
  className?: string;
194
- style?: React.CSSProperties;
150
+ style?: React__default.CSSProperties;
195
151
  subtitleAvailable?: boolean;
196
- variableFontEnabled?: boolean;
197
- variableFontConfig?: VariableFontConfig;
198
152
  }
199
- declare function PhontSubtitles({ vodId, currentTime, isPlaying, mode, language, maxExpression, threshold, isRTL, phontClient, className, style, subtitleAvailable, variableFontEnabled, variableFontConfig, }: PhontSubtitlesProps): React.JSX.Element | null;
153
+ declare function PhontSubtitles({ vodId, currentTime, isPlaying, mode, language, maxExpression, threshold, isRTL, phontClient, className, style, subtitleAvailable, }: PhontSubtitlesProps): React__default.JSX.Element | null;
154
+
155
+ declare function PhontSubtitlesWithUrlAnimations({ segment, currentTime, isPlaying, maxExpression, threshold, className, style, nextSegment, forceMobile, fontFallbackMode, disablePublishedAnimationFetch, }: {
156
+ segment: any;
157
+ currentTime: number;
158
+ isPlaying?: boolean;
159
+ maxExpression?: number;
160
+ threshold?: number;
161
+ className?: string;
162
+ style?: React__default.CSSProperties;
163
+ nextSegment?: any;
164
+ forceMobile?: boolean;
165
+ fontFallbackMode?: boolean;
166
+ disablePublishedAnimationFetch?: boolean;
167
+ }): React__default.JSX.Element;
168
+
169
+ declare function useUrlAnimations({ segment, currentTime, maxExpression, threshold, nextSegmentStartTime, extendedEndTime, transparentUntilSpoken, disablePublishedAnimationFetch, stylesheetName: stylesheetNameProp, }: {
170
+ segment: any;
171
+ currentTime: number;
172
+ maxExpression?: number;
173
+ threshold?: number;
174
+ nextSegmentStartTime?: number | null;
175
+ extendedEndTime?: number | null;
176
+ transparentUntilSpoken?: boolean;
177
+ disablePublishedAnimationFetch?: boolean;
178
+ stylesheetName?: string | null;
179
+ }): {
180
+ text: string;
181
+ words: never[];
182
+ emotion: string;
183
+ emotionIntensity: number;
184
+ fontFamily: string;
185
+ currentWordIndex: number;
186
+ startTime: number;
187
+ endTime: number;
188
+ isActive: boolean;
189
+ hasMergedSubtitles: boolean;
190
+ debug: {
191
+ segmentFontSize?: undefined;
192
+ finalWeight?: undefined;
193
+ mergedRange?: undefined;
194
+ currentTime?: undefined;
195
+ finalIsActive?: undefined;
196
+ };
197
+ extendedMergedEndTime?: undefined;
198
+ } | {
199
+ text: string;
200
+ words: {
201
+ word: any;
202
+ start: any;
203
+ end: any;
204
+ animationEnd: any;
205
+ isActive: boolean;
206
+ emotion: string;
207
+ emotionIntensity: number;
208
+ fontFamily: string;
209
+ emphasisEffect: null;
210
+ strongEmphasis: null;
211
+ animationParameters: Record<string, any>;
212
+ effects: {
213
+ standardEmphasis: null;
214
+ strongEmphasis: null;
215
+ };
216
+ emotionCategory: string | null;
217
+ volume: any;
218
+ }[];
219
+ emotion: string;
220
+ emotionIntensity: number;
221
+ fontFamily: string;
222
+ currentWordIndex: number;
223
+ startTime: any;
224
+ endTime: any;
225
+ extendedMergedEndTime: any;
226
+ isActive: boolean;
227
+ hasMergedSubtitles: boolean;
228
+ debug: {
229
+ segmentFontSize: number;
230
+ finalWeight: number;
231
+ mergedRange: null;
232
+ currentTime: number;
233
+ finalIsActive: boolean;
234
+ };
235
+ };
236
+
237
+ declare function WordRenderer({ text, words, fontFamily, className, style, debugMode, currentTime, mergedSubtitleStart, mergedSubtitleEnd, mergedSubtitleExtendedEnd, hasMultipleSubtitles, fontFallbackMode, gts, }: {
238
+ text?: string;
239
+ words?: any[];
240
+ fontFamily?: string;
241
+ className?: string;
242
+ style?: React__default.CSSProperties;
243
+ debugMode?: boolean;
244
+ currentTime?: number;
245
+ mergedSubtitleStart?: number | null;
246
+ mergedSubtitleEnd?: number | null;
247
+ mergedSubtitleExtendedEnd?: number | null;
248
+ hasMultipleSubtitles?: boolean;
249
+ fontFallbackMode?: boolean;
250
+ gts?: number;
251
+ }): React__default.JSX.Element | null;
200
252
 
201
253
  /**
202
254
  * SDK Authentication Hook
@@ -248,7 +300,7 @@ interface SDKAuthProps {
248
300
  apiBaseUrl?: string;
249
301
  onAuthenticated?: (client: any) => void;
250
302
  }
251
- declare function SDKAuth({ apiBaseUrl, onAuthenticated }: SDKAuthProps): React.JSX.Element;
303
+ declare function SDKAuth({ apiBaseUrl, onAuthenticated }: SDKAuthProps): React__default.JSX.Element;
252
304
 
253
305
  /**
254
306
  * SDK Animation Hook
@@ -605,11 +657,11 @@ interface PhontVideoPlayerProps extends Omit<PhontSubtitlesProps, 'currentTime'
605
657
  /** Custom update interval in ms */
606
658
  updateInterval?: number;
607
659
  /** Children to render (your video player UI) */
608
- children?: React.ReactNode;
660
+ children?: React__default.ReactNode;
609
661
  /** Subtitle container className */
610
662
  subtitleClassName?: string;
611
663
  /** Subtitle container style */
612
- subtitleStyle?: React.CSSProperties;
664
+ subtitleStyle?: React__default.CSSProperties;
613
665
  }
614
666
  /**
615
667
  * All-in-one component for video + PHONT subtitles.
@@ -617,7 +669,7 @@ interface PhontVideoPlayerProps extends Omit<PhontSubtitlesProps, 'currentTime'
617
669
  * Automatically syncs with your video player and renders subtitles.
618
670
  * Works with HTML5, Bitmovin, Shaka, Video.js, 3Q Video Player, or any custom adapter.
619
671
  */
620
- declare function PhontVideoPlayer(props: PhontVideoPlayerProps): React.JSX.Element;
672
+ declare function PhontVideoPlayer(props: PhontVideoPlayerProps): React__default.JSX.Element;
621
673
 
622
674
  interface PositionConfig {
623
675
  bottomVh: number;
@@ -643,7 +695,7 @@ interface SoundbiteContainerProps {
643
695
  isPhontControlsOpen?: boolean;
644
696
  config?: Partial<PositionConfig>;
645
697
  }
646
- declare function SoundbiteContainer({ isVodMode, boxSize, width, height, bottomVh, intensity, hideWhenPanelsOpen, isMetaPanelOpen, isPhontControlsOpen, config }: SoundbiteContainerProps): React.JSX.Element | null;
698
+ declare function SoundbiteContainer({ isVodMode, boxSize, width, height, bottomVh, intensity, hideWhenPanelsOpen, isMetaPanelOpen, isPhontControlsOpen, config }: SoundbiteContainerProps): React__default.JSX.Element | null;
647
699
 
648
700
  /**
649
701
  * PlayerTestSuite - Standalone Test Component
@@ -681,7 +733,7 @@ interface PlayerTestSuiteProps {
681
733
  threeqDataId?: string;
682
734
  }
683
735
  declare function PlayerTestSuite({ defaultVodId, // Default to Pooh_Compilation
684
- defaultPlayer, apiEndpoint, bitmovinLicenseKey: propBitmovinLicenseKey, threeqDataId, }: PlayerTestSuiteProps): React.JSX.Element;
736
+ defaultPlayer, apiEndpoint, bitmovinLicenseKey: propBitmovinLicenseKey, threeqDataId, }: PlayerTestSuiteProps): React__default.JSX.Element;
685
737
 
686
738
  /**
687
739
  * Animation Mode Toggle Component
@@ -694,15 +746,45 @@ interface AnimationModeToggleProps {
694
746
  animationMode: AnimationMode;
695
747
  setAnimationMode: (mode: AnimationMode) => void;
696
748
  }
697
- declare function AnimationModeToggle({ animationMode, setAnimationMode, }: AnimationModeToggleProps): React.JSX.Element;
749
+ declare function AnimationModeToggle({ animationMode, setAnimationMode, }: AnimationModeToggleProps): React__default.JSX.Element;
698
750
 
699
751
  /**
700
- * Phont Controls - Composition Component
701
- * SDK version - Aggregates all Phont subtitle controls (GTS, Translation, Mode, Toggles, Animation Config)
702
- * Matches app/components/phont-controls/PhontControls.jsx but with additional animation controls and settings panel
752
+ * Production Phont Controls same UI as phont.ai /video fullscreen.
753
+ * Stage Content Manager fullscreen should import this from @phont-ai/subtitles.
703
754
  */
704
755
 
705
756
  interface PhontControlsProps {
757
+ isVisible?: boolean;
758
+ onPanelMouseEnter?: () => void;
759
+ onPanelMouseLeave?: () => void;
760
+ isLive?: boolean;
761
+ currentVideoId?: string | null;
762
+ gts: number;
763
+ setGTS: (value: number) => void;
764
+ threshold: number;
765
+ maxExpression: number;
766
+ subtitleLanguage?: string | null;
767
+ availableLanguages?: Record<string, string>;
768
+ currentSubtitleLanguage?: string | null;
769
+ handleLanguageChange?: (language: string | null) => void;
770
+ isTranslating?: boolean;
771
+ translatingToLanguage?: string | null;
772
+ translationProvider?: string | null;
773
+ translationModel?: string | null;
774
+ /** Accepted for API compat; production UI is word-by-word only. */
775
+ animationMode?: AnimationMode;
776
+ setAnimationMode?: (mode: AnimationMode) => void;
777
+ toggles: boolean[];
778
+ handleToggle: (index: number) => void;
779
+ }
780
+ declare function PhontControls({ isVisible, onPanelMouseEnter, onPanelMouseLeave, isLive, currentVideoId, gts, setGTS, threshold, maxExpression, subtitleLanguage, availableLanguages, currentSubtitleLanguage, handleLanguageChange, isTranslating, translatingToLanguage, translationProvider, translationModel, toggles, handleToggle, }: PhontControlsProps): React__default.JSX.Element | null;
781
+
782
+ /**
783
+ * Dev-only Phont Controls — PlayerTestSuite / internal testing.
784
+ * Production integrators (Stage, html5 demo) should use PhontControls instead.
785
+ */
786
+
787
+ interface PhontControlsDevProps {
706
788
  isVisible?: boolean;
707
789
  controlsVisible?: boolean;
708
790
  onControlsVisibilityChange?: (visible: boolean) => void;
@@ -742,7 +824,50 @@ interface PhontControlsProps {
742
824
  onLogout?: () => void;
743
825
  username?: string | null;
744
826
  }
745
- declare function PhontControls({ isVisible, controlsVisible: externalControlsVisible, onControlsVisibilityChange, isLive, currentVideoId, gts, setGTS, subtitleLanguage, availableLanguages, currentSubtitleLanguage, handleLanguageChange, isTranslating, translatingToLanguage, translationProvider, translationModel, animationMode, setAnimationMode, toggles, handleToggle, customAnimationUrl, setCustomAnimationUrl, emotionMappings, setEmotionMappings, showSettingsPanel, selectedPlayer, setSelectedPlayer, players, vodId, setVodId, vods, onLogout, username, }: PhontControlsProps): React.JSX.Element | null;
827
+ declare function PhontControlsDev({ isVisible, controlsVisible: externalControlsVisible, onControlsVisibilityChange, isLive, currentVideoId, gts, setGTS, subtitleLanguage, availableLanguages, currentSubtitleLanguage, handleLanguageChange, isTranslating, translatingToLanguage, translationProvider, translationModel, animationMode, setAnimationMode, toggles, handleToggle, customAnimationUrl, setCustomAnimationUrl, emotionMappings, setEmotionMappings, showSettingsPanel, selectedPlayer, setSelectedPlayer, players, vodId, setVodId, vods, onLogout, username, }: PhontControlsDevProps): React__default.JSX.Element | null;
828
+
829
+ /**
830
+ * GTS (Global Tone & Style) Utilities
831
+ * SDK version - calculates threshold and maxExpression from GTS value
832
+ * Matches the logic from app/context/GTSContext.js
833
+ */
834
+ /**
835
+ * Calculate emotion threshold from GTS value
836
+ * Threshold: Uses RENDERING_CONTROL values (0.3 at GTS=0, 0.0 at GTS=1)
837
+ */
838
+ declare function calculateThreshold(gts: number): number;
839
+ /**
840
+ * Calculate max expression from GTS value
841
+ * Max Expression: M(G) = 0.20 + 0.80*G (20% at 0, 100% at 1)
842
+ */
843
+ declare function calculateMaxExpression(gts: number): number;
844
+
845
+ /** Default translation languages — same list as SDK integration demos. */
846
+ declare const PHONT_DEFAULT_LANGUAGES: Record<string, string>;
847
+ interface UsePhontVodControlsOptions {
848
+ vodId: string | null;
849
+ phontClient: PhontClient | null;
850
+ initialGts?: number;
851
+ closedCaptionsOn?: boolean;
852
+ availableLanguages?: Record<string, string>;
853
+ }
854
+ /**
855
+ * Wires GTS, translation, and CC toggles for VOD playback.
856
+ * Use with PhontSubtitles + PhontControls for Stage / integrator parity.
857
+ */
858
+ declare function usePhontVodControls({ vodId, phontClient, initialGts, closedCaptionsOn, availableLanguages, }: UsePhontVodControlsOptions): {
859
+ gts: number;
860
+ setGTS: React.Dispatch<React.SetStateAction<number>>;
861
+ threshold: number;
862
+ maxExpression: number;
863
+ toggles: boolean[];
864
+ handleToggle: (index: number) => void;
865
+ subtitleLanguage: string | null;
866
+ handleLanguageChange: (lang: string | null) => void;
867
+ isTranslating: boolean;
868
+ translatingToLanguage: string | null;
869
+ availableLanguages: Record<string, string>;
870
+ };
746
871
 
747
872
  /**
748
873
  * GTS (Global Tone & Style) Slider Component
@@ -756,7 +881,7 @@ interface GTSSliderProps {
756
881
  threshold: number;
757
882
  maxExpression: number;
758
883
  }
759
- declare function GTSSlider({ gts, setGTS, threshold, maxExpression }: GTSSliderProps): React.JSX.Element;
884
+ declare function GTSSlider({ gts, setGTS, threshold, maxExpression }: GTSSliderProps): React__default.JSX.Element;
760
885
 
761
886
  /**
762
887
  * Translation Dropdown Component
@@ -774,7 +899,7 @@ interface TranslationDropdownProps {
774
899
  translationProvider?: string;
775
900
  translationModel?: string;
776
901
  }
777
- declare function TranslationDropdown({ subtitleLanguage, availableLanguages, currentSubtitleLanguage, onLanguageChange, isTranslating, translatingToLanguage, translationProvider, translationModel, }: TranslationDropdownProps): React.JSX.Element;
902
+ declare function TranslationDropdown({ subtitleLanguage, availableLanguages, currentSubtitleLanguage, onLanguageChange, isTranslating, translatingToLanguage, translationProvider, translationModel, }: TranslationDropdownProps): React__default.JSX.Element;
778
903
 
779
904
  /**
780
905
  * Reusable Toggle Switch Component
@@ -787,7 +912,7 @@ interface ToggleSwitchProps {
787
912
  label: string;
788
913
  onToggle: () => void;
789
914
  }
790
- declare function ToggleSwitch({ isOn, label, onToggle }: ToggleSwitchProps): React.JSX.Element;
915
+ declare function ToggleSwitch({ isOn, label, onToggle }: ToggleSwitchProps): React__default.JSX.Element;
791
916
 
792
917
  /**
793
918
  * Animation URL Config Component
@@ -800,6 +925,6 @@ interface AnimationUrlConfigProps {
800
925
  emotionMappings: Partial<EmotionAnimationUrls>;
801
926
  setEmotionMappings: (mappings: Partial<EmotionAnimationUrls>) => void;
802
927
  }
803
- declare function AnimationUrlConfig({ customAnimationUrl, setCustomAnimationUrl, emotionMappings, setEmotionMappings, }: AnimationUrlConfigProps): React.JSX.Element;
928
+ declare function AnimationUrlConfig({ customAnimationUrl, setCustomAnimationUrl, emotionMappings, setEmotionMappings, }: AnimationUrlConfigProps): React__default.JSX.Element;
804
929
 
805
- export { AnimationConfigProvider, type AnimationConfigProviderProps, type AnimationMode, AnimationModeToggle, type AnimationModeToggleProps, AnimationUrlConfig, type AnimationUrlConfigProps, type BitmovinPlayer, BitmovinPlayerAdapter, type EmotionAnimationUrls, GTSSlider, type GTSSliderProps, HTML5VideoAdapter, type PhontClientConfig, PhontControls, type PhontControlsProps, PhontRoot, type PhontRootProps, PhontSubtitles, type PhontSubtitlesProps, PhontVideoPlayer, type PhontVideoPlayerProps, type PlayerAdapter, PlayerTestSuite, type PlayerTestSuiteProps, type PlayerType, SDKAuth, type SDKAuthProps, type SDKAuthState, type ShakaPlayer, ShakaPlayerAdapter, SoundbiteContainer, StylesheetProvider, type ThreeQPlayer, ThreeQPlayerAdapter, ToggleSwitch, type ToggleSwitchProps, TranslationDropdown, type TranslationDropdownProps, type UsePlayerSyncOptions, type UsePlayerSyncResult, type UseSDKAnimationOptions, type UseVideoPlayerOptions, type VideoJSPlayer, VideoJSPlayerAdapter, buildPhontAnimationRequestHeaders, configurePublishedAnimationFetcher, createPhontAnimationFetcher, useAnimationConfig, usePlayerSync, usePublishedAnimationResolver, useSDKAnimation, useSDKAuth, useStylesheet, useVideoPlayer };
930
+ export { AnimationConfigProvider, type AnimationConfigProviderProps, type AnimationMode, AnimationModeToggle, type AnimationModeToggleProps, AnimationUrlConfig, type AnimationUrlConfigProps, type BitmovinPlayer, BitmovinPlayerAdapter, type EmotionAnimationUrls, GTSSlider, type GTSSliderProps, HTML5VideoAdapter, PHONT_DEFAULT_LANGUAGES, type PhontClientConfig, PhontControls, PhontControlsDev, type PhontControlsDevProps, type PhontControlsProps, PhontRoot, type PhontRootProps, PhontSubtitles, type PhontSubtitlesProps, PhontSubtitlesWithUrlAnimations, PhontVideoPlayer, type PhontVideoPlayerProps, type PlayerAdapter, PlayerTestSuite, type PlayerTestSuiteProps, type PlayerType, SDKAuth, type SDKAuthProps, type SDKAuthState, type ShakaPlayer, ShakaPlayerAdapter, SoundbiteContainer, StylesheetProvider, type ThreeQPlayer, ThreeQPlayerAdapter, ToggleSwitch, type ToggleSwitchProps, TranslationDropdown, type TranslationDropdownProps, type UsePhontVodControlsOptions, type UsePlayerSyncOptions, type UsePlayerSyncResult, type UseSDKAnimationOptions, type UseVideoPlayerOptions, type VideoJSPlayer, VideoJSPlayerAdapter, WordRenderer, buildPhontAnimationRequestHeaders, calculateMaxExpression, calculateThreshold, configurePublishedAnimationFetcher, createPhontAnimationFetcher, useAnimationConfig, usePhontVodControls, usePlayerSync, usePublishedAnimationResolver, useSDKAnimation, useSDKAuth, useStylesheet, useUrlAnimations, useVideoPlayer };