@video-lab/react-frame 3.1.0 → 4.0.1

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.cts CHANGED
@@ -1,4 +1,5 @@
1
- import { AudioHealthPayload, BufferHealthPayload, ControlVisibilityConfig, DanmakuConfig, DanmakuItem, DeliveredPlayerEvent, FirstFramePayload, FrameFreezePayload, KernelHealthPayload, LocaleConfig, MediaSource, PageFullscreenAdapter, PageFullscreenAdapter as PageFullscreenAdapter$1, PageFullscreenState, PageFullscreenState as PageFullscreenState$1, PauseImageConfig, PlaybackContext, PlaybackContextPayload, PlayerError, PlayerEvent, PosterConfig, PresetName, QualityLevel, SourceRouteEventPayload, SubtitleTrackInfo, UserActionPayload } from "@video-lab/protocol";
1
+ import { AudioHealthPayload, BufferHealthPayload, ControlVisibilityConfig, DanmakuConfig, DanmakuItem, ErrorActionResult, ErrorButtonColors, FirstFramePayload, FrameFreezePayload, KernelHealthPayload, LoadingOverlayContext, LocaleConfig, MediaSource, PageFullscreenAdapter, PageFullscreenAdapter as PageFullscreenAdapter$1, PageFullscreenState, PageFullscreenState as PageFullscreenState$1, PauseImageConfig, PlaybackContext, PlaybackContextPayload, PlayerError, PlayerEvent, PosterConfig, PresetName, QualityLevel, ResolveSource, SourceRouteEventPayload, SubtitleTrackInfo, UserActionPayload } from "@video-lab/protocol";
2
+ import { PlayerProvider, PlayerProviderProps, usePlayerI18n } from "@video-lab/react-config";
2
3
  import { PlayerFrameHandle } from "@video-lab/frame-core";
3
4
  import { CSSProperties, ReactNode } from "react";
4
5
  //#region src/types.d.ts
@@ -22,14 +23,29 @@ interface VideoPlayerFrameProps {
22
23
  pageFullscreen?: PageFullscreenAdapter$1;
23
24
  /** 视频源。字符串按 URL 处理,对象可带 type / live / hls 等 */
24
25
  source: MediaSource | string;
26
+ /** 当前 URL 授权失效时由宿主取得完整新源;函数不会跨 iframe 传输。 */
27
+ resolveSource?: ResolveSource;
25
28
  autoplay?: boolean;
26
29
  muted?: boolean;
27
30
  loop?: boolean;
28
31
  controls?: boolean;
29
32
  /** 默认错误覆盖层,省略时开启。仅初始化读取;变更须重新挂载,不影响错误事件。 */
30
33
  showErrorOverlay?: boolean;
31
- /** 是否显示 SDK 运行时 Loading;构造期读取,默认 true。 */
32
- showLoadingOverlay?: boolean;
34
+ /** 是否显示 SDK 默认运行时 Loading;构造期读取,默认 true。 */
35
+ showDefaultLoadingOverlay?: boolean;
36
+ /** 在默认 Loading 转圈下显示状态文案;默认 false。 */
37
+ showLoadingText?: boolean;
38
+ /** 默认错误动作按钮的背景色与文字色;五种接入方式一致。 */
39
+ errorButtonColors?: ErrorButtonColors;
40
+ /**
41
+ * 在宿主 DOM 中渲染首次与运行时 Loading。传入后替换 iframe 内默认 Loading;
42
+ * 显隐和阶段由 SDK 管理,不受 `showDefaultLoadingOverlay` 影响。
43
+ */
44
+ renderLoading?: (context: LoadingOverlayContext) => ReactNode;
45
+ /** 自定义封面;显隐由 SDK 管理,在宿主 DOM 中渲染。 */
46
+ renderPoster?: () => ReactNode;
47
+ /** 自定义暂停画面;显隐由 SDK 管理,在宿主 DOM 中渲染。 */
48
+ renderPause?: () => ReactNode;
33
49
  /** 内置控件初始化显示策略;修改后须由宿主显式重建播放器。 */
34
50
  controlVisibility?: ControlVisibilityConfig;
35
51
  /** false 时播放器不接收指针事件(点击穿透到下层) */
@@ -56,14 +72,14 @@ interface VideoPlayerFrameProps {
56
72
  */
57
73
  preload?: 'none' | 'metadata' | 'auto';
58
74
  /** 封面。字符串按 URL 处理,对象形态可带 `fit` / `loading` —— 和 inline 面同宽(契约 PosterConfig) */
59
- poster?: string | PosterConfig;
75
+ poster?: string | PosterConfig | null;
60
76
  /**
61
77
  * 暂停时盖在画面中央的静态图(ADR-043)。字符串按 URL 处理,对象形态可带
62
- * `fit`(默认 `contain`,与封面的 `cover` 不同 —— 暂停图通常是完整构图)/ `closable`。
78
+ * `fit`(默认 `contain`,与封面的 `cover` 不同 —— 暂停图通常是完整构图)。
63
79
  *
64
80
  * **带倒计时 / 跳转 / 推荐列表的不在这里做** —— 那是业务调度,归团队封装层(ADR-025)。
65
81
  */
66
- pauseImage?: string | PauseImageConfig;
82
+ pauseImage?: string | PauseImageConfig | null;
67
83
  preset?: PresetName;
68
84
  /** iframe 部署基础 URL,可包含自定义目录。 */
69
85
  origin?: string;
@@ -86,7 +102,6 @@ interface VideoPlayerFrameProps {
86
102
  children?: ReactNode;
87
103
  /** 完整的契约事件流,供遥测适配器使用;不裁剪 iframe 转发的 payload。 */
88
104
  onPlayerEvent?: (event: PlayerEvent) => void;
89
- onDeliveredPlayerEvent?: (event: DeliveredPlayerEvent) => void;
90
105
  /**
91
106
  * metadata 就绪。`quality` 是可切档位清单(单码率源为空数组),团队层据此渲染清晰度菜单;
92
107
  * `subtitles` 是可切字幕轨清单(无字幕源为空/缺省,契约 1.0.0 起可选,ADR-027),团队层据此渲染字幕菜单。
@@ -246,6 +261,8 @@ interface VideoPlayerFrameHandle {
246
261
  /** 清空屏上弹幕(ADR-028) */
247
262
  clearDanmaku(): Promise<void>;
248
263
  retry(): Promise<void>;
264
+ /** 执行当前终态的默认错误按钮动作;无动作或已销毁时返回 unavailable。 */
265
+ performErrorAction(): Promise<ErrorActionResult>;
249
266
  destroy(): Promise<void>;
250
267
  getCurrentTime(): number;
251
268
  getDuration(): number;
@@ -283,5 +300,4 @@ interface VideoPlayerFrameHandle {
283
300
  */
284
301
  declare const VideoPlayerFrame: import("react").ForwardRefExoticComponent<VideoPlayerFrameProps & import("react").RefAttributes<VideoPlayerFrameHandle>>;
285
302
  //#endregion
286
- export { type DanmakuConfig, type DanmakuItem, type MediaSource, type PageFullscreenAdapter, type PageFullscreenState, type PlayerError, type PlayerHandle, type QualityLevel, type SubtitleTrackInfo, VideoPlayerFrame, type VideoPlayerFrameHandle, type VideoPlayerFrameProps };
287
- //# sourceMappingURL=index.d.cts.map
303
+ export { type DanmakuConfig, type DanmakuItem, type LoadingOverlayContext, type MediaSource, type PageFullscreenAdapter, type PageFullscreenState, type PlayerError, type PlayerHandle, PlayerProvider, type PlayerProviderProps, type QualityLevel, type ResolveSource, type SubtitleTrackInfo, VideoPlayerFrame, type VideoPlayerFrameHandle, type VideoPlayerFrameProps, usePlayerI18n };
package/dist/index.d.mts CHANGED
@@ -1,6 +1,7 @@
1
+ import { PlayerProvider, PlayerProviderProps, usePlayerI18n } from "@video-lab/react-config";
2
+ import { AudioHealthPayload, BufferHealthPayload, ControlVisibilityConfig, DanmakuConfig, DanmakuItem, ErrorActionResult, ErrorButtonColors, FirstFramePayload, FrameFreezePayload, KernelHealthPayload, LoadingOverlayContext, LocaleConfig, MediaSource, PageFullscreenAdapter, PageFullscreenAdapter as PageFullscreenAdapter$1, PageFullscreenState, PageFullscreenState as PageFullscreenState$1, PauseImageConfig, PlaybackContext, PlaybackContextPayload, PlayerError, PlayerEvent, PosterConfig, PresetName, QualityLevel, ResolveSource, SourceRouteEventPayload, SubtitleTrackInfo, UserActionPayload } from "@video-lab/protocol";
1
3
  import { CSSProperties, ReactNode } from "react";
2
4
  import { PlayerFrameHandle } from "@video-lab/frame-core";
3
- import { AudioHealthPayload, BufferHealthPayload, ControlVisibilityConfig, DanmakuConfig, DanmakuItem, DeliveredPlayerEvent, FirstFramePayload, FrameFreezePayload, KernelHealthPayload, LocaleConfig, MediaSource, PageFullscreenAdapter, PageFullscreenAdapter as PageFullscreenAdapter$1, PageFullscreenState, PageFullscreenState as PageFullscreenState$1, PauseImageConfig, PlaybackContext, PlaybackContextPayload, PlayerError, PlayerEvent, PosterConfig, PresetName, QualityLevel, SourceRouteEventPayload, SubtitleTrackInfo, UserActionPayload } from "@video-lab/protocol";
4
5
  //#region src/types.d.ts
5
6
  /**
6
7
  * 消费方拿到的播放器句柄(逃生舱)。
@@ -22,14 +23,29 @@ interface VideoPlayerFrameProps {
22
23
  pageFullscreen?: PageFullscreenAdapter$1;
23
24
  /** 视频源。字符串按 URL 处理,对象可带 type / live / hls 等 */
24
25
  source: MediaSource | string;
26
+ /** 当前 URL 授权失效时由宿主取得完整新源;函数不会跨 iframe 传输。 */
27
+ resolveSource?: ResolveSource;
25
28
  autoplay?: boolean;
26
29
  muted?: boolean;
27
30
  loop?: boolean;
28
31
  controls?: boolean;
29
32
  /** 默认错误覆盖层,省略时开启。仅初始化读取;变更须重新挂载,不影响错误事件。 */
30
33
  showErrorOverlay?: boolean;
31
- /** 是否显示 SDK 运行时 Loading;构造期读取,默认 true。 */
32
- showLoadingOverlay?: boolean;
34
+ /** 是否显示 SDK 默认运行时 Loading;构造期读取,默认 true。 */
35
+ showDefaultLoadingOverlay?: boolean;
36
+ /** 在默认 Loading 转圈下显示状态文案;默认 false。 */
37
+ showLoadingText?: boolean;
38
+ /** 默认错误动作按钮的背景色与文字色;五种接入方式一致。 */
39
+ errorButtonColors?: ErrorButtonColors;
40
+ /**
41
+ * 在宿主 DOM 中渲染首次与运行时 Loading。传入后替换 iframe 内默认 Loading;
42
+ * 显隐和阶段由 SDK 管理,不受 `showDefaultLoadingOverlay` 影响。
43
+ */
44
+ renderLoading?: (context: LoadingOverlayContext) => ReactNode;
45
+ /** 自定义封面;显隐由 SDK 管理,在宿主 DOM 中渲染。 */
46
+ renderPoster?: () => ReactNode;
47
+ /** 自定义暂停画面;显隐由 SDK 管理,在宿主 DOM 中渲染。 */
48
+ renderPause?: () => ReactNode;
33
49
  /** 内置控件初始化显示策略;修改后须由宿主显式重建播放器。 */
34
50
  controlVisibility?: ControlVisibilityConfig;
35
51
  /** false 时播放器不接收指针事件(点击穿透到下层) */
@@ -56,14 +72,14 @@ interface VideoPlayerFrameProps {
56
72
  */
57
73
  preload?: 'none' | 'metadata' | 'auto';
58
74
  /** 封面。字符串按 URL 处理,对象形态可带 `fit` / `loading` —— 和 inline 面同宽(契约 PosterConfig) */
59
- poster?: string | PosterConfig;
75
+ poster?: string | PosterConfig | null;
60
76
  /**
61
77
  * 暂停时盖在画面中央的静态图(ADR-043)。字符串按 URL 处理,对象形态可带
62
- * `fit`(默认 `contain`,与封面的 `cover` 不同 —— 暂停图通常是完整构图)/ `closable`。
78
+ * `fit`(默认 `contain`,与封面的 `cover` 不同 —— 暂停图通常是完整构图)。
63
79
  *
64
80
  * **带倒计时 / 跳转 / 推荐列表的不在这里做** —— 那是业务调度,归团队封装层(ADR-025)。
65
81
  */
66
- pauseImage?: string | PauseImageConfig;
82
+ pauseImage?: string | PauseImageConfig | null;
67
83
  preset?: PresetName;
68
84
  /** iframe 部署基础 URL,可包含自定义目录。 */
69
85
  origin?: string;
@@ -86,7 +102,6 @@ interface VideoPlayerFrameProps {
86
102
  children?: ReactNode;
87
103
  /** 完整的契约事件流,供遥测适配器使用;不裁剪 iframe 转发的 payload。 */
88
104
  onPlayerEvent?: (event: PlayerEvent) => void;
89
- onDeliveredPlayerEvent?: (event: DeliveredPlayerEvent) => void;
90
105
  /**
91
106
  * metadata 就绪。`quality` 是可切档位清单(单码率源为空数组),团队层据此渲染清晰度菜单;
92
107
  * `subtitles` 是可切字幕轨清单(无字幕源为空/缺省,契约 1.0.0 起可选,ADR-027),团队层据此渲染字幕菜单。
@@ -246,6 +261,8 @@ interface VideoPlayerFrameHandle {
246
261
  /** 清空屏上弹幕(ADR-028) */
247
262
  clearDanmaku(): Promise<void>;
248
263
  retry(): Promise<void>;
264
+ /** 执行当前终态的默认错误按钮动作;无动作或已销毁时返回 unavailable。 */
265
+ performErrorAction(): Promise<ErrorActionResult>;
249
266
  destroy(): Promise<void>;
250
267
  getCurrentTime(): number;
251
268
  getDuration(): number;
@@ -283,5 +300,4 @@ interface VideoPlayerFrameHandle {
283
300
  */
284
301
  declare const VideoPlayerFrame: import("react").ForwardRefExoticComponent<VideoPlayerFrameProps & import("react").RefAttributes<VideoPlayerFrameHandle>>;
285
302
  //#endregion
286
- export { type DanmakuConfig, type DanmakuItem, type MediaSource, type PageFullscreenAdapter, type PageFullscreenState, type PlayerError, type PlayerHandle, type QualityLevel, type SubtitleTrackInfo, VideoPlayerFrame, type VideoPlayerFrameHandle, type VideoPlayerFrameProps };
287
- //# sourceMappingURL=index.d.mts.map
303
+ export { type DanmakuConfig, type DanmakuItem, type LoadingOverlayContext, type MediaSource, type PageFullscreenAdapter, type PageFullscreenState, type PlayerError, type PlayerHandle, PlayerProvider, type PlayerProviderProps, type QualityLevel, type ResolveSource, type SubtitleTrackInfo, VideoPlayerFrame, type VideoPlayerFrameHandle, type VideoPlayerFrameProps, usePlayerI18n };