mirror of
https://github.com/zhw2590582/ArtPlayer.git
synced 2026-10-25 16:11:20 -08:00
fix(dash): [PKG-DASH-MENU-01] preserve settings navigation during SDK refresh
This commit is contained in:
1 parent
30f646be97
commit
88ce836f85
21 files changed
+769
-23
No files matched your search
@@ -1,4 +1,4 @@
|
||||
import type { DisplayConfig, Label, MenuHost, MenuModel, SelectorItem, Valid } from './types'
|
||||
import type { Cleanup, DisplayConfig, Label, MenuHost, MenuModel, SelectorItem, Valid } from './types'
|
||||
|
||||
export function createMenu<Item extends SelectorItem>(art: MenuHost, name: string, icon: string) {
|
||||
let current: object | undefined
|
||||
@@ -70,5 +70,21 @@ export function createMenu<Item extends SelectorItem>(art: MenuHost, name: strin
|
||||
}
|
||||
}
|
||||
|
||||
return { update, clear }
|
||||
function captureNavigation(active: Valid): Cleanup | undefined {
|
||||
const setting = art.setting
|
||||
const item = setting.find?.(name)
|
||||
const callback = owned.get('setting')
|
||||
if (!active() || !callback || setting.show !== true || item?.onSelect !== callback || !item.selector || setting.active !== item.selector || typeof setting.render !== 'function')
|
||||
return
|
||||
return () => {
|
||||
if (!active() || art.setting !== setting || setting.show !== true || !setting.option || setting.active !== setting.option)
|
||||
return
|
||||
const replacement = setting.find?.(name)
|
||||
const callback = owned.get('setting')
|
||||
if (active() && callback && replacement?.onSelect === callback && replacement.selector)
|
||||
setting.render?.(replacement.selector)
|
||||
}
|
||||
}
|
||||
|
||||
return { update, clear, captureNavigation }
|
||||
}
|
||||
Reference in new issue
Block a user