mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-29 19:41:25 -08:00
refactor(danmuku): [PKG-DANMUKU-06] migrate runtime and preserve public types
This commit is contained in:
1 parent
abc8008da7
commit
24b883d862
64 files changed
+14020
-633
No files matched your search
@@ -0,0 +1,53 @@
|
||||
import type Artplayer from 'artplayer'
|
||||
import type { DanmukuArt, DanmukuOption } from './types'
|
||||
|
||||
import Danmuku from './danmuku'
|
||||
import heatmap from './heatmap'
|
||||
import Setting from './setting'
|
||||
|
||||
export default function artplayerPluginDanmuku(option: DanmukuOption) {
|
||||
return (art: Artplayer) => {
|
||||
// Old declarations type instance.constructor as Function; both supported cores expose these statics.
|
||||
const danmuku = new Danmuku(art as DanmukuArt, option)
|
||||
let setting: Setting | undefined
|
||||
try {
|
||||
setting = art.isDestroy ? undefined : new Setting(art as DanmukuArt, danmuku)
|
||||
if (!art.isDestroy && danmuku.option.heatmap) {
|
||||
heatmap(art as DanmukuArt, danmuku, danmuku.option.heatmap)
|
||||
}
|
||||
}
|
||||
catch (error) {
|
||||
try {
|
||||
setting?.destroy()
|
||||
}
|
||||
catch {}
|
||||
try {
|
||||
danmuku.destroy()
|
||||
}
|
||||
catch {}
|
||||
throw error
|
||||
}
|
||||
|
||||
return {
|
||||
name: 'artplayerPluginDanmuku' as const,
|
||||
emit: danmuku.emit.bind(danmuku),
|
||||
load: danmuku.load.bind(danmuku),
|
||||
config: danmuku.config.bind(danmuku),
|
||||
hide: danmuku.hide.bind(danmuku),
|
||||
show: danmuku.show.bind(danmuku),
|
||||
reset: danmuku.reset.bind(danmuku),
|
||||
mount: setting ? setting.mount.bind(setting) : () => {},
|
||||
get option() {
|
||||
return danmuku.option
|
||||
},
|
||||
get isHide() {
|
||||
return danmuku.isHide
|
||||
},
|
||||
get isStop() {
|
||||
return danmuku.isStop
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
artplayerPluginDanmuku.icons = Setting.icons
|
||||
Reference in new issue
Block a user