@video-lab/vue-frame 3.0.1 → 3.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/README.md CHANGED
@@ -51,7 +51,7 @@ function onError(err: PlayerError) {
51
51
  ## Props
52
52
 
53
53
  `source` 必填,其余可选:`autoplay` `muted` `loop` `controls` `interactive`
54
- `playsinline` `poster` `preset` `locale` `debug`,以及 iframe 部署配置 `origin` / `version`。
54
+ `playsinline` `poster` `preset` `locale` `debug`,以及 iframe 部署配置 `origin` / `iframeVersion`。省略 `iframeVersion` 时加载部署根目录。
55
55
  实际部署地址由内部配置提供,本包不声明公共播放器地址。
56
56
 
57
57
  **布尔 prop 不传就是 undefined**(不是 false),这样 `preset` 才能生效——比如
@@ -93,7 +93,7 @@ rejection 不保证产生 `error`,播放期 `error` 也不保证对应某个
93
93
 
94
94
  ### iframe 基础路径
95
95
 
96
- `origin` 是宿主提供的完整部署基础 URL,可包含 `/custom/player` 等目录。SDK 只追加 `/v{iframe应用版本}/`,不会自动追加 `/embed`。旧部署仍在 `/embed/v…/` 时,请把 `/embed` 显式保留在 `origin` 中;版本目录不要写进 `origin`。
96
+ `origin` 是宿主提供的完整部署基础 URL,可包含 `/custom/player` 等目录。SDK 直接访问该根目录,不追加版本段或 `/embed`;旧部署的 `/embed` 可显式保留在 `origin` 中。
97
97
 
98
98
  ## 错误 UI 接管
99
99
 
@@ -105,7 +105,7 @@ rejection 不保证产生 `error`,播放期 `error` 也不保证对应某个
105
105
  八个可选键为 `play`、`progress`、`time`、`volume`、`playbackRate`、`fullscreen`、`cssFullscreen`、`pip`。
106
106
  false 隐藏入口,true/省略保留平台默认;`controls=false` 整体关闭优先。隐藏不禁用既有命令,
107
107
  运行时修改须由宿主显式重建,不增加 PiP RPC。
108
- iframe 须使用支持该功能、已部署的精确版本 `/v1.2.0/`;旧 iframe 可能忽略新配置。
108
+ iframe 须与宿主代码同批部署并支持该功能;旧应用可能忽略新配置。
109
109
 
110
110
  ## 宿主网页全屏
111
111
 
package/dist/index.cjs CHANGED
@@ -1 +1 @@
1
- Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue"),t=require("@video-lab/frame-core");function n(n,r,i){let a=(0,e.shallowRef)(null),o=(0,e.ref)(!1),s=(0,e.ref)(!0);function c(){let e={};return r.preset!==void 0&&(e.preset=r.preset),r.autoplay!==void 0&&(e.autoplay=r.autoplay),r.muted!==void 0&&(e.muted=r.muted),r.loop!==void 0&&(e.loop=r.loop),r.playsinline!==void 0&&(e.playsinline=r.playsinline),r.playbackRate!==void 0&&(e.playbackRate=r.playbackRate),r.volume!==void 0&&(e.volume=r.volume),r.startTime!==void 0&&(e.startTime=r.startTime),r.preload!==void 0&&(e.preload=r.preload),r.controls!==void 0&&(e.controls=r.controls),r.showErrorOverlay!==void 0&&(e.showErrorOverlay=r.showErrorOverlay),r.showLoadingOverlay!==void 0&&(e.showLoadingOverlay=r.showLoadingOverlay),r.controlVisibility!==void 0&&(e.controlVisibility=r.controlVisibility),r.interactive!==void 0&&(e.interactive=r.interactive),r.poster!==void 0&&(e.poster=r.poster),r.pauseImage!==void 0&&(e.pauseImage=r.pauseImage),r.locale!==void 0&&(e.locale=r.locale),r.danmaku!==void 0&&(e.danmaku=r.danmaku),r.debug!==void 0&&(e.debug=r.debug),e}function l(e){(e.event===`play`||e.event===`error`)&&(s.value=!1);try{i(`playerEvent`,e)}catch{}switch(e.event){case`ready`:i(`ready`,e.payload);break;case`play`:i(`play`);break;case`pause`:i(`pause`);break;case`ended`:i(`ended`);break;case`timeupdate`:i(`timeUpdate`,e.payload);break;case`volumechange`:i(`volumeChange`,e.payload);break;case`seeking`:i(`seeking`,e.payload);break;case`seeked`:i(`seeked`,e.payload);break;case`waiting`:i(`waiting`);break;case`playing`:i(`playing`);break;case`qualitychange`:i(`qualityChange`,e.payload);break;case`subtitlechange`:i(`subtitleChange`,e.payload);break;case`error`:i(`error`,e.payload);break;case`autoplayblocked`:i(`autoplayBlocked`);break;case`compatwarning`:i(`compatWarning`,e.payload);break;case`stalled`:i(`stalled`,e.payload);break;case`playablechange`:i(`playableChange`,e.payload);break;case`bufferhealth`:i(`bufferHealth`,e.payload);break;case`contextchange`:i(`contextChange`,e.payload);break;case`sourceroute`:i(`sourceRoute`,e.payload);break;case`firstframe`:i(`firstFrame`,e.payload);break;case`framefreeze`:i(`frameFreeze`,e.payload);break;case`pagefullscreenchange`:i(`pageFullscreenChange`,e.payload);break;case`useraction`:i(`userAction`,e.payload);break;case`kernelhealth`:i(`kernelHealth`,e.payload);break;case`audiohealth`:i(`audioHealth`,e.payload);break;case`recovery`:break;default:break}}let u=!1;return(0,e.onMounted)(async()=>{o.value=!0;let e=n.value;if(!e)return;let s=await(0,t.createPlayerFrame)({container:e,source:r.source,config:c(),pageFullscreen:r.pageFullscreen,...r.origin===void 0?{}:{origin:r.origin},...r.version===void 0?{}:{version:r.version},onEvent:l,onDeliveredEvent:e=>{try{i(`deliveredPlayerEvent`,e)}catch{}},debug:r.debug??!1});if(u){s.destroy();return}a.value=s}),(0,e.watch)(()=>JSON.stringify(r.source),async()=>{s.value=!0;try{await a.value?.load(r.source)}catch(e){l({event:`error`,payload:(0,t.toPlayerError)(e)})}}),(0,e.watch)(()=>r.muted,async e=>{if(e!==void 0)try{await a.value?.setMuted(e)}catch(e){l({event:`error`,payload:(0,t.toPlayerError)(e)})}}),(0,e.watch)(()=>r.locale,async e=>{if(e!==void 0)try{await a.value?.setLocale(e)}catch(e){l({event:`error`,payload:(0,t.toPlayerError)(e)})}},{deep:!0}),(0,e.onBeforeUnmount)(async()=>{u=!0,await a.value?.destroy(),a.value=null}),{handle:a,isMounted:o,hostPosterVisible:s}}var r=(0,e.createElementVNode)(`div`,{class:`sentinel-video-frame__placeholder`,style:{width:`100%`,height:`100%`,background:`#000`}},null,-1),i=[`src`,`loading`],a=(0,e.defineComponent)({__name:`VideoPlayerFrame`,props:{pageFullscreen:{},source:{},autoplay:{type:Boolean,default:void 0},muted:{type:Boolean,default:void 0},loop:{type:Boolean,default:void 0},controls:{type:Boolean,default:void 0},showErrorOverlay:{type:Boolean,default:void 0},showLoadingOverlay:{type:Boolean,default:void 0},controlVisibility:{},interactive:{type:Boolean,default:void 0},playsinline:{type:Boolean,default:void 0},playbackRate:{},volume:{},startTime:{},preload:{},poster:{},pauseImage:{},preset:{},origin:{},version:{},locale:{},danmaku:{},debug:{type:Boolean,default:void 0}},emits:`playerEvent.deliveredPlayerEvent.ready.play.pause.ended.timeUpdate.volumeChange.seeking.seeked.waiting.playing.qualityChange.subtitleChange.error.autoplayBlocked.compatWarning.stalled.playableChange.kernelHealth.audioHealth.bufferHealth.contextChange.sourceRoute.firstFrame.frameFreeze.pageFullscreenChange.userAction`.split(`.`),setup(t,{expose:a,emit:o}){let s=t,c=o,l=(0,e.shallowRef)(null),{handle:u,isMounted:d,hostPosterVisible:f}=n(l,s,c),p=(0,e.computed)(()=>typeof s.poster==`string`?s.poster:s.poster?.url??``),m=(0,e.computed)(()=>typeof s.poster==`string`?`cover`:s.poster?.fit??`cover`),h=(0,e.computed)(()=>typeof s.poster!=`string`&&s.poster?.loading===`eager`?`eager`:`lazy`);return a({play:()=>u.value?.play()??Promise.resolve(),pause:()=>u.value?.pause()??Promise.resolve(),seek:e=>u.value?.seek(e)??Promise.resolve(),setMuted:e=>u.value?.setMuted(e)??Promise.resolve(),setVolume:e=>u.value?.setVolume(e)??Promise.resolve(),setPlaybackRate:e=>u.value?.setPlaybackRate(e)??Promise.resolve(),setPageFullscreen:e=>u.value?.setPageFullscreen(e)??Promise.reject(Error(`播放器未就绪`)),enterFullscreen:()=>u.value?.enterFullscreen()??Promise.resolve(),exitFullscreen:()=>u.value?.exitFullscreen()??Promise.resolve(),setQuality:e=>u.value?.setQuality(e)??Promise.resolve(),setSubtitle:e=>u.value?.setSubtitle(e)??Promise.resolve(),setLocale:e=>u.value?.setLocale(e)??Promise.resolve(),pushDanmaku:e=>u.value?.pushDanmaku(e)??Promise.resolve(),setDanmakuEnabled:e=>u.value?.setDanmakuEnabled(e)??Promise.resolve(),clearDanmaku:()=>u.value?.clearDanmaku()??Promise.resolve(),retry:()=>u.value?.retry()??Promise.resolve(),destroy:()=>u.value?.destroy()??Promise.resolve(),getCurrentTime:()=>u.value?.getCurrentTime()??0,getPlaybackContext:()=>u.value?.getPlaybackContext()??null,getDuration:()=>u.value?.getDuration()??0,getPlayerHandle:()=>u.value}),(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{ref_key:`containerRef`,ref:l,class:`sentinel-video-frame`,style:(0,e.normalizeStyle)({position:`relative`,width:`100%`,height:`100%`,pointerEvents:s.interactive===!1?`none`:void 0})},[(0,e.unref)(d)?(0,e.createCommentVNode)(``,!0):(0,e.renderSlot)(t.$slots,`ssr-placeholder`,{key:0},()=>[r]),(0,e.unref)(f)&&p.value?((0,e.openBlock)(),(0,e.createElementBlock)(`img`,{key:1,class:`sentinel-video-frame__poster`,src:p.value,alt:``,loading:h.value,style:(0,e.normalizeStyle)({position:`absolute`,inset:0,width:`100%`,height:`100%`,display:`block`,objectFit:m.value,zIndex:10})},null,12,i)):(0,e.createCommentVNode)(``,!0)],4))}});exports.VideoPlayerFrame=a;
1
+ Object.defineProperty(exports,Symbol.toStringTag,{value:`Module`});let e=require("vue"),t=require("@video-lab/frame-core");function n(n,r,i){let a=(0,e.shallowRef)(null),o=(0,e.ref)(!1),s=(0,e.ref)(!0);function c(){let e={};return r.preset!==void 0&&(e.preset=r.preset),r.autoplay!==void 0&&(e.autoplay=r.autoplay),r.muted!==void 0&&(e.muted=r.muted),r.loop!==void 0&&(e.loop=r.loop),r.playsinline!==void 0&&(e.playsinline=r.playsinline),r.playbackRate!==void 0&&(e.playbackRate=r.playbackRate),r.volume!==void 0&&(e.volume=r.volume),r.startTime!==void 0&&(e.startTime=r.startTime),r.preload!==void 0&&(e.preload=r.preload),r.controls!==void 0&&(e.controls=r.controls),r.showErrorOverlay!==void 0&&(e.showErrorOverlay=r.showErrorOverlay),r.showLoadingOverlay!==void 0&&(e.showLoadingOverlay=r.showLoadingOverlay),r.controlVisibility!==void 0&&(e.controlVisibility=r.controlVisibility),r.interactive!==void 0&&(e.interactive=r.interactive),r.poster!==void 0&&(e.poster=r.poster),r.pauseImage!==void 0&&(e.pauseImage=r.pauseImage),r.locale!==void 0&&(e.locale=r.locale),r.danmaku!==void 0&&(e.danmaku=r.danmaku),r.debug!==void 0&&(e.debug=r.debug),e}function l(e){(e.event===`play`||e.event===`error`)&&(s.value=!1);try{i(`playerEvent`,e)}catch{}switch(e.event){case`ready`:i(`ready`,e.payload);break;case`play`:i(`play`);break;case`pause`:i(`pause`);break;case`ended`:i(`ended`);break;case`timeupdate`:i(`timeUpdate`,e.payload);break;case`volumechange`:i(`volumeChange`,e.payload);break;case`seeking`:i(`seeking`,e.payload);break;case`seeked`:i(`seeked`,e.payload);break;case`waiting`:i(`waiting`);break;case`playing`:i(`playing`);break;case`qualitychange`:i(`qualityChange`,e.payload);break;case`subtitlechange`:i(`subtitleChange`,e.payload);break;case`error`:i(`error`,e.payload);break;case`autoplayblocked`:i(`autoplayBlocked`);break;case`compatwarning`:i(`compatWarning`,e.payload);break;case`stalled`:i(`stalled`,e.payload);break;case`playablechange`:i(`playableChange`,e.payload);break;case`bufferhealth`:i(`bufferHealth`,e.payload);break;case`contextchange`:i(`contextChange`,e.payload);break;case`sourceroute`:i(`sourceRoute`,e.payload);break;case`firstframe`:i(`firstFrame`,e.payload);break;case`framefreeze`:i(`frameFreeze`,e.payload);break;case`pagefullscreenchange`:i(`pageFullscreenChange`,e.payload);break;case`useraction`:i(`userAction`,e.payload);break;case`kernelhealth`:i(`kernelHealth`,e.payload);break;case`audiohealth`:i(`audioHealth`,e.payload);break;case`recovery`:break;default:break}}let u=!1;return(0,e.onMounted)(async()=>{o.value=!0;let e=n.value;if(!e)return;let s=await(0,t.createPlayerFrame)({container:e,source:r.source,config:c(),pageFullscreen:r.pageFullscreen,...r.origin===void 0?{}:{origin:r.origin},...r.iframeVersion===void 0?{}:{iframeVersion:r.iframeVersion},onEvent:l,onDeliveredEvent:e=>{try{i(`deliveredPlayerEvent`,e)}catch{}},debug:r.debug??!1});if(u){s.destroy();return}a.value=s}),(0,e.watch)(()=>JSON.stringify(r.source),async()=>{s.value=!0;try{await a.value?.load(r.source)}catch(e){l({event:`error`,payload:(0,t.toPlayerError)(e)})}}),(0,e.watch)(()=>r.muted,async e=>{if(e!==void 0)try{await a.value?.setMuted(e)}catch(e){l({event:`error`,payload:(0,t.toPlayerError)(e)})}}),(0,e.watch)(()=>r.locale,async e=>{if(e!==void 0)try{await a.value?.setLocale(e)}catch(e){l({event:`error`,payload:(0,t.toPlayerError)(e)})}},{deep:!0}),(0,e.onBeforeUnmount)(async()=>{u=!0,await a.value?.destroy(),a.value=null}),{handle:a,isMounted:o,hostPosterVisible:s}}var r=(0,e.createElementVNode)(`div`,{class:`sentinel-video-frame__placeholder`,style:{width:`100%`,height:`100%`,background:`#000`}},null,-1),i=[`src`,`loading`],a=(0,e.defineComponent)({__name:`VideoPlayerFrame`,props:{pageFullscreen:{},source:{},autoplay:{type:Boolean,default:void 0},muted:{type:Boolean,default:void 0},loop:{type:Boolean,default:void 0},controls:{type:Boolean,default:void 0},showErrorOverlay:{type:Boolean,default:void 0},showLoadingOverlay:{type:Boolean,default:void 0},controlVisibility:{},interactive:{type:Boolean,default:void 0},playsinline:{type:Boolean,default:void 0},playbackRate:{},volume:{},startTime:{},preload:{},poster:{},pauseImage:{},preset:{},origin:{},iframeVersion:{},locale:{},danmaku:{},debug:{type:Boolean,default:void 0}},emits:`playerEvent.deliveredPlayerEvent.ready.play.pause.ended.timeUpdate.volumeChange.seeking.seeked.waiting.playing.qualityChange.subtitleChange.error.autoplayBlocked.compatWarning.stalled.playableChange.kernelHealth.audioHealth.bufferHealth.contextChange.sourceRoute.firstFrame.frameFreeze.pageFullscreenChange.userAction`.split(`.`),setup(t,{expose:a,emit:o}){let s=t,c=o,l=(0,e.shallowRef)(null),{handle:u,isMounted:d,hostPosterVisible:f}=n(l,s,c),p=(0,e.computed)(()=>typeof s.poster==`string`?s.poster:s.poster?.url??``),m=(0,e.computed)(()=>typeof s.poster==`string`?`cover`:s.poster?.fit??`cover`),h=(0,e.computed)(()=>typeof s.poster!=`string`&&s.poster?.loading===`eager`?`eager`:`lazy`);return a({play:()=>u.value?.play()??Promise.resolve(),pause:()=>u.value?.pause()??Promise.resolve(),seek:e=>u.value?.seek(e)??Promise.resolve(),setMuted:e=>u.value?.setMuted(e)??Promise.resolve(),setVolume:e=>u.value?.setVolume(e)??Promise.resolve(),setPlaybackRate:e=>u.value?.setPlaybackRate(e)??Promise.resolve(),setPageFullscreen:e=>u.value?.setPageFullscreen(e)??Promise.reject(Error(`播放器未就绪`)),enterFullscreen:()=>u.value?.enterFullscreen()??Promise.resolve(),exitFullscreen:()=>u.value?.exitFullscreen()??Promise.resolve(),setQuality:e=>u.value?.setQuality(e)??Promise.resolve(),setSubtitle:e=>u.value?.setSubtitle(e)??Promise.resolve(),setLocale:e=>u.value?.setLocale(e)??Promise.resolve(),pushDanmaku:e=>u.value?.pushDanmaku(e)??Promise.resolve(),setDanmakuEnabled:e=>u.value?.setDanmakuEnabled(e)??Promise.resolve(),clearDanmaku:()=>u.value?.clearDanmaku()??Promise.resolve(),retry:()=>u.value?.retry()??Promise.resolve(),destroy:()=>u.value?.destroy()??Promise.resolve(),getCurrentTime:()=>u.value?.getCurrentTime()??0,getPlaybackContext:()=>u.value?.getPlaybackContext()??null,getDuration:()=>u.value?.getDuration()??0,getPlayerHandle:()=>u.value}),(t,n)=>((0,e.openBlock)(),(0,e.createElementBlock)(`div`,{ref_key:`containerRef`,ref:l,class:`sentinel-video-frame`,style:(0,e.normalizeStyle)({position:`relative`,width:`100%`,height:`100%`,pointerEvents:s.interactive===!1?`none`:void 0})},[(0,e.unref)(d)?(0,e.createCommentVNode)(``,!0):(0,e.renderSlot)(t.$slots,`ssr-placeholder`,{key:0},()=>[r]),(0,e.unref)(f)&&p.value?((0,e.openBlock)(),(0,e.createElementBlock)(`img`,{key:1,class:`sentinel-video-frame__poster`,src:p.value,alt:``,loading:h.value,style:(0,e.normalizeStyle)({position:`absolute`,inset:0,width:`100%`,height:`100%`,display:`block`,objectFit:m.value,zIndex:10})},null,12,i)):(0,e.createCommentVNode)(``,!0)],4))}});exports.VideoPlayerFrame=a;
package/dist/index.js CHANGED
@@ -106,7 +106,7 @@ function g(e, t, n) {
106
106
  config: c(),
107
107
  pageFullscreen: t.pageFullscreen,
108
108
  ...t.origin === void 0 ? {} : { origin: t.origin },
109
- ...t.version === void 0 ? {} : { version: t.version },
109
+ ...t.iframeVersion === void 0 ? {} : { iframeVersion: t.iframeVersion },
110
110
  onEvent: u,
111
111
  onDeliveredEvent: (e) => {
112
112
  try {
@@ -211,7 +211,7 @@ var _ = /*#__PURE__*/ r("div", {
211
211
  pauseImage: {},
212
212
  preset: {},
213
213
  origin: {},
214
- version: {},
214
+ iframeVersion: {},
215
215
  locale: {},
216
216
  danmaku: {},
217
217
  debug: {
package/dist/types.d.ts CHANGED
@@ -12,7 +12,7 @@ export type { DanmakuConfig, DanmakuItem, MediaSource, PlayerError, QualityLevel
12
12
  * `<VideoPlayerFrame />` 的 props。
13
13
  *
14
14
  * 对齐 vue-frame/CLAUDE.md § API。播放相关的字段最终拼进 frame-core 的
15
- * `config` 下发给 iframe;origin / version 走 ADR-023 的 URL 覆盖。
15
+ * `config` 下发给 iframe;origin 走 ADR-101 的 URL 覆盖。
16
16
  */
17
17
  export interface VideoPlayerFrameProps {
18
18
  /** 挂载期间保持稳定的宿主网页全屏布局适配器。 */
@@ -62,10 +62,10 @@ export interface VideoPlayerFrameProps {
62
62
  */
63
63
  pauseImage?: string | PauseImageConfig;
64
64
  preset?: PresetName;
65
- /** iframe 部署基础 URL,可包含自定义目录;SDK 只追加版本目录,不追加 embed。 */
65
+ /** iframe 部署基础 URL,可包含自定义目录。 */
66
66
  origin?: string;
67
- /** iframe 版本目录;默认使用 DEFAULT_VERSION 指定的 iframe 应用精确版本。 */
68
- version?: string;
67
+ /** iframe 应用的精确版本目录;缺省时访问部署根目录。 */
68
+ iframeVersion?: string;
69
69
  /** 传给 iframe 内 xgplayer 的 i18n 配置 */
70
70
  locale?: LocaleConfig;
71
71
  /** 弹幕配置(ADR-028)。enabled 时 iframe 内注册渲染引擎;数据经 pushDanmaku 推入 */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@video-lab/vue-frame",
3
- "version": "3.0.1",
3
+ "version": "3.1.0",
4
4
  "license": "MIT",
5
5
  "type": "module",
6
6
  "main": "./dist/index.cjs",
@@ -28,8 +28,8 @@
28
28
  "vue": "^3.4.0"
29
29
  },
30
30
  "dependencies": {
31
- "@video-lab/protocol": "3.0.1",
32
- "@video-lab/frame-core": "3.0.1"
31
+ "@video-lab/protocol": "3.1.0",
32
+ "@video-lab/frame-core": "3.1.0"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@vitejs/plugin-vue": "^6.0.8",