Skip to content

Commit

Permalink
fix(menus): 菜单选项函数调用时新增参数:currentModel
Browse files Browse the repository at this point in the history
  • Loading branch information
hacxy committed Mar 23, 2024
1 parent a829413 commit 5237b78
Show file tree
Hide file tree
Showing 4 changed files with 64 additions and 59 deletions.
14 changes: 9 additions & 5 deletions packages/oh-my-live2d/src/modules/menus.ts
Expand Up @@ -4,15 +4,16 @@ import { LoadOhMyLive2D } from './load-oml2d.js';
import { DEFAULT_OPTIONS, ELEMENT_ID } from '../config/index.js';
import { WindowSizeType } from '../constants/index.js';
import { Item } from '../types/common.js';
import type { CSSProperties, DefaultMenusOptions, DefaultOptions, MenusOptions } from '../types/index.js';
import type { CSSProperties, DefaultMenusOptions, DefaultOptions, MenusOptions, ModelOptions } from '../types/index.js';
import { createElement, getWindowSizeType, handleCommonStyle, setStyleForElement } from '../utils/index.js';

export class Menus {
element?: HTMLElement;
private style: CSSProperties = {};
private itemStyle: CSSProperties = {};
private menuItemList: HTMLElement[] = [];
private _menuOptions: DefaultMenusOptions = DEFAULT_OPTIONS.menus as DefaultMenusOptions;
private _menuOptions: DefaultMenusOptions = DEFAULT_OPTIONS.menus;

constructor(
private options: DefaultOptions,
private globalOml2d: LoadOhMyLive2D
Expand All @@ -22,11 +23,14 @@ export class Menus {
return this._menuOptions;
}

private set menuOptions(opt: MenusOptions | ((index?: number) => MenusOptions)) {
private set menuOptions(opt: MenusOptions | ((model: ModelOptions, index: number) => MenusOptions)) {
let finalOpt: DefaultMenusOptions;

if (isFunction(opt)) {
finalOpt = mergeDeep(DEFAULT_OPTIONS.menus, opt(this.globalOml2d.modelIndex)) as DefaultMenusOptions;
finalOpt = mergeDeep(
DEFAULT_OPTIONS.menus,
opt(this.options.models[this.globalOml2d.modelIndex || 0], this.globalOml2d.modelIndex || 0)
) as DefaultMenusOptions;
} else {
finalOpt = opt as DefaultMenusOptions;
}
Expand Down Expand Up @@ -57,7 +61,7 @@ export class Menus {
if (isArray(this.menuOptions.items)) {
this.createMenuItemElements(this.menuOptions.items);
} else if (isFunction(this.menuOptions.items)) {
const items = this.menuOptions.items((DEFAULT_OPTIONS.menus as DefaultMenusOptions).items);
const items = this.menuOptions.items(DEFAULT_OPTIONS.menus.items);

this.createMenuItemElements(items);
}
Expand Down
2 changes: 1 addition & 1 deletion packages/oh-my-live2d/src/types/index.ts
Expand Up @@ -32,7 +32,7 @@ export type DefaultOptions = Omit<DeepRequired<Options>, 'parentElement' | 'mode
parentElement: HTMLElement;
tips: DefaultTipsOptions;
statusBar: DefaultStatusBarOptions;
menus: DefaultMenusOptions | ((modelIndex?: number) => DefaultMenusOptions);
menus: DefaultMenusOptions;
models: ModelOptions[];
};

Expand Down
2 changes: 1 addition & 1 deletion packages/oh-my-live2d/src/types/options.ts
Expand Up @@ -91,7 +91,7 @@ export interface Options {
* 菜单配置, 详见: [菜单选项](/options/MenusOptions)
* @valueType object
*/
menus?: MenusOptions | ((modelIndex?: number) => MenusOptions);
menus?: MenusOptions | ((currentModel: ModelOptions, modelIndex: number) => MenusOptions);
/**
* 为组件提供一个父元素,如果未指定则默认挂载到 body 中
* @valueType HtmlElement
Expand Down
105 changes: 53 additions & 52 deletions tests/vite-app/src/main.ts
Expand Up @@ -52,60 +52,61 @@ const foo = async () => {
disable: false,
style: {}
},
// menus: (index) => {
// console.log(index);
// if (index === 0) {
// console.log('ssssssssssssssssssssssssssss');
// return {
// disable: false,
// style: {},
// items: (defaultItems) => {
// return defaultItems;
// }
// };
// } else {
// return {
// style: {
// left: 0
// },
// items: (defaultItem) => {
// return [defaultItem[1]];
// }
// };
// }
// }
menus: {
items: (defaultItems) => {
return defaultItems;
// console.log(oml2d.modelIndex);
// if (oml2d.modelIndex === 0) {
// return [
// defaultItems[1],
// {
// id: 'github',
// icon: 'github-fill',
// title: '我的github',
// onClick() {
// window.open('https://github.com/hacxy');
// }
// }
// ];
// } else {
// return defaultItems;
// }
menus: (currentModel, index) => {
console.log(currentModel);
console.log(index);
if (index === 0) {
console.log('ssssssssssssssssssssssssssss');
return {
disable: false,
style: {},
items: (defaultItems) => {
return defaultItems;
}
};
} else {
return {
style: {
left: 0
},
items: (defaultItem) => {
return [defaultItem[1]];
}
};
}
// disable: true
// items: [
// {
// id: 'github',
// icon: 'github-fill',
// title: '我的github',
// onClick() {
// window.open('https://github.com/hacxy');
// }
// }
// ]
}
// menus: {
// items: (defaultItems) => {
// return defaultItems;
// // console.log(oml2d.modelIndex);
// // if (oml2d.modelIndex === 0) {
// // return [
// // defaultItems[1],
// // {
// // id: 'github',
// // icon: 'github-fill',
// // title: '我的github',
// // onClick() {
// // window.open('https://github.com/hacxy');
// // }
// // }
// // ];
// // } else {
// // return defaultItems;
// // }
// }
// // disable: true
// // items: [
// // {
// // id: 'github',
// // icon: 'github-fill',
// // title: '我的github',
// // onClick() {
// // window.open('https://github.com/hacxy');
// // }
// // }
// // ]
// }
});

// console.log(oml2d);
Expand Down

0 comments on commit 5237b78

Please sign in to comment.