web-player: extract menu, paged list and play-all components from pages
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
import { contextMenuPosition, type MenuPosition } from '$lib/utils/menuPosition';
|
||||
|
||||
export type MenuState<T> = { target: T } & MenuPosition;
|
||||
|
||||
export function createMenu<T>() {
|
||||
let state = $state<MenuState<T> | null>(null);
|
||||
|
||||
return {
|
||||
get state() {
|
||||
return state;
|
||||
},
|
||||
open(event: MouseEvent, target: T) {
|
||||
event.preventDefault();
|
||||
state = { target, ...contextMenuPosition(event) };
|
||||
},
|
||||
close() {
|
||||
state = null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
export type Menu<T> = ReturnType<typeof createMenu<T>>;
|
||||
Reference in New Issue
Block a user