Skip to content

Commit a3f8c0f

Browse files
committed
Fixed build and MenuItem vs CommandMenuItem class names collision
1 parent cc1a688 commit a3f8c0f

File tree

7 files changed

+39
-38
lines changed

7 files changed

+39
-38
lines changed

src/components/MixerCanvas.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { FlexCanvas } from "./FlexCanvas";
33
import { Appl } from "../App";
44
import { ConnectionDocument, InstrumentDocument } from "../audio/SongDocument";
55
import { PinsPanel } from "./PinsPanel";
6-
import { MenuItem } from "../menu/menu";
6+
import { CommandMenuItem } from "../menu/menu";
77
import { getNoteForKey } from "./PatternEditorHelper";
88
import { noteKeyDown, noteKeyStopAll, noteKeyUp } from "../KeyboardNoteHelper";
99

@@ -21,7 +21,7 @@ const connectionGainHeight = 150;
2121
const connectionGainWidth = 32;
2222
const connectionGainHandleHeight = 24;
2323

24-
const instrumentMenu: MenuItem[] = [
24+
const instrumentMenu: CommandMenuItem[] = [
2525
{
2626
label: "Toggle Mute",
2727
action: "mute",
@@ -286,7 +286,7 @@ export class MixerCanvas implements IComponent {
286286

287287
// click mixer bg -> create insturment
288288
// create menu with instrument factory parameter
289-
const mixerMenu: MenuItem[] = [ {
289+
const mixerMenu: CommandMenuItem[] = [ {
290290
label: "Create Instrument...",
291291
items: []
292292
},
@@ -309,8 +309,11 @@ export class MixerCanvas implements IComponent {
309309
e.preventDefault();
310310

311311
const action = await this.app.contextMenuContainer.showPopup(rc.left + e.offsetX, rc.top + e.offsetY, mixerMenu);
312-
await this.app.createInstrument(action, this.clickPt[0], this.clickPt[1]);
312+
if (!action || typeof action === "function") {
313+
return;
314+
}
313315

316+
await this.app.createInstrument(action, this.clickPt[0], this.clickPt[1]);
314317
return;
315318
}
316319

src/components/PresetDropdown.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
import { Appl } from "../App";
22
import { Preset } from "../audio/SongDocument";
3-
import { MenuItem } from "../menu/menu";
4-
import { Button, ICommandHost, IComponent } from "../nutz";
3+
import { Button, IComponent } from "../nutz";
54

65
export class PresetDropdown implements IComponent {
76
app: Appl;

src/components/WavePanel.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { ButtonToolbar, ICommandHost, StatusBar } from "../nutz";
55
import { InstrumentDocument, WaveDocument } from "../audio/SongDocument";
66
import { ViewFrame } from "../nutz/ViewFrame";
77
import { formatNote } from "./PatternEditorHelper";
8-
import { MenuItem as NutzMenuItem } from "../nutz";
8+
import { MenuItem } from "../nutz";
99
import { showCreateNewWaveDialog } from "../dialogs/CreateNewWaveDialog";
1010

1111
export class WavePanel extends ViewFrame {
@@ -115,10 +115,10 @@ export class WavePanel extends ViewFrame {
115115

116116
onStatusBarInstrumentContextMenu = async (ev: MouseEvent) => {
117117
const instruments = this.getWaveTableInstruments();
118-
const menuItems: NutzMenuItem[] = [];
118+
const menuItems: MenuItem[] = [];
119119
for (let instrument of instruments) {
120120

121-
const waveItems: NutzMenuItem[] = [
121+
const waveItems: MenuItem[] = [
122122
{
123123
label: "Create new...",
124124
action: () => this.statusCreateNewAndGotoWave(instrument),
@@ -142,7 +142,7 @@ export class WavePanel extends ViewFrame {
142142

143143
const rc = (ev.target as HTMLElement).getBoundingClientRect();
144144
const action = await this.app.contextMenuContainer.showPopup(rc.left + ev.offsetX, rc.top + ev.offsetY, menuItems);
145-
if (!action) {
145+
if (!action || typeof action !== "function") {
146146
return false;
147147
}
148148

src/menu/menu.ts

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@
77
copy: "hgi-copy-01",
88
paste: "hgi-column-insert",
99
*/
10-
export interface MenuItem {
10+
export interface CommandMenuItem {
1111
label: string;
1212
action?: string;
1313
checked?: boolean;
14-
items?: MenuItem[];
14+
items?: CommandMenuItem[];
1515
}
1616

17-
export const fileMenu: MenuItem[] = [
17+
export const fileMenu: CommandMenuItem[] = [
1818
{
1919
label: "New...",
2020
action: "clear-song"
@@ -29,10 +29,10 @@ export const fileMenu: MenuItem[] = [
2929
},
3030
];
3131

32-
export const waveMenu: MenuItem[] = [
32+
export const waveMenu: CommandMenuItem[] = [
3333
];
3434

35-
export const editMenu: MenuItem[] = [
35+
export const editMenu: CommandMenuItem[] = [
3636
{
3737
label: "Undo",
3838
action: "YYY"
@@ -96,7 +96,7 @@ export const editMenu: MenuItem[] = [
9696
// TODO; dfin action lobally, wit labls (translatabl)
9797
// build mnus wit action rfs only
9898

99-
const sidebarMenu: MenuItem[] = [
99+
const sidebarMenu: CommandMenuItem[] = [
100100
{
101101
label: "Waves",
102102
action: "show-waves"
@@ -111,7 +111,7 @@ const sidebarMenu: MenuItem[] = [
111111
},
112112
];
113113

114-
export const viewMenu: MenuItem[] = [
114+
export const viewMenu: CommandMenuItem[] = [
115115
{
116116
label: "Sequence",
117117
action: "show-sequence-editor"
@@ -144,7 +144,7 @@ export const viewMenu: MenuItem[] = [
144144

145145
];
146146

147-
export const mainMenu: MenuItem[] = [
147+
export const mainMenu: CommandMenuItem[] = [
148148
{
149149
label: "File",
150150
action: "",
@@ -162,7 +162,7 @@ export const mainMenu: MenuItem[] = [
162162
},
163163
];
164164

165-
export const sequencerMenu: MenuItem[] = [
165+
export const sequencerMenu: CommandMenuItem[] = [
166166
{
167167
label: "Add Column",
168168
action: "sequence-add-track",
@@ -177,7 +177,7 @@ export const sequencerMenu: MenuItem[] = [
177177
}
178178
];
179179

180-
export const patternMenu: MenuItem[] = [
180+
export const patternMenu: CommandMenuItem[] = [
181181
{
182182
label: "Add Column...",
183183
action: "add-column"
@@ -192,7 +192,7 @@ export const patternMenu: MenuItem[] = [
192192
},
193193
];
194194

195-
export const patternListMenu: MenuItem[] = [
195+
export const patternListMenu: CommandMenuItem[] = [
196196
{
197197
label: "Edit",
198198
action: "goto-pattern-editor"
@@ -220,7 +220,7 @@ export const patternListMenu: MenuItem[] = [
220220
},
221221
];
222222

223-
export const waveListMenu: MenuItem[] = [
223+
export const waveListMenu: CommandMenuItem[] = [
224224
{
225225
label: "Edit",
226226
action: "goto-wave-editor"
@@ -252,7 +252,7 @@ export const waveListMenu: MenuItem[] = [
252252
},
253253
];
254254

255-
export const presetMenu: MenuItem[] = [
255+
export const presetMenu: CommandMenuItem[] = [
256256
{
257257
label: "Load local bank...",
258258
action: "import-local-bank",
@@ -267,7 +267,7 @@ export const presetMenu: MenuItem[] = [
267267
},
268268
];
269269

270-
export const waveInstrumentMenu: MenuItem[]= [
270+
export const waveInstrumentMenu: CommandMenuItem[]= [
271271
{
272272
label: "New Wave...",
273273
action: "create-wave",

src/nutz/ContextMenuContainer.ts

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
1-
import { MenuItem } from "../menu/menu";
1+
import { CommandMenuItem } from "../menu/menu";
22
import { ICommandHost } from "./CommandHost";
3-
import { IComponent } from "./IComponent";
4-
import { Menu, MenuItem as NutzMenuItem } from "./Menu";
3+
import { Menu, MenuItem } from "./Menu";
54
import { convertNutzMenu } from "./Menubar";
65

76
export class ContextMenuContainer {
@@ -17,21 +16,21 @@ export class ContextMenuContainer {
1716
this.menu.addEventListener("keydown", this.onMenuKeyDown);
1817
}
1918

20-
async show(app: ICommandHost, x: number, y: number, menu: MenuItem[]) {
19+
async show(app: ICommandHost, x: number, y: number, menu: CommandMenuItem[]) {
2120
const nutzMenu = convertNutzMenu(app, menu)
2221

2322
this.commandHost = app;
2423

2524
const action = await this.showPopup(x, y, nutzMenu);
26-
if (!action) {
25+
if (!action || typeof action === "function") {
2726
return null;
2827
}
2928

3029
return await app.executeCommand(action);
3130
}
3231

3332
// Returns the action property of the selected menu item, or null if canceled
34-
async showPopup(x: number, y: number, menu: NutzMenuItem[]): Promise<string | null> {
33+
async showPopup(x: number, y: number, menu: MenuItem[]): Promise<string | (() => void) | null> {
3534

3635
if (this.resolve) {
3736
this.resolve(null);

src/nutz/Menu.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
export interface MenuItem {
22
label: string;
3-
action?: any;
3+
action?: string | (() => void);
44
icon?: string;
55
shortcut?: string; //
66
checked?: boolean;

src/nutz/Menubar.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
1-
import { MenuItem } from "../menu/menu";
2-
import { MenuItem as NutzMenuItem } from "./Menu";
1+
import { CommandMenuItem } from "../menu/menu";
2+
import { MenuItem } from "./Menu";
33
import { ICommandHost } from "./CommandHost";
44
import { IComponent } from "./IComponent";
55
import { Menu } from "./Menu";
66

7-
export function convertNutzMenu(app: ICommandHost, menu: MenuItem[]): NutzMenuItem[] {
8-
const nutzMenu: NutzMenuItem[] = menu.map(m => ({
7+
export function convertNutzMenu(app: ICommandHost, menu: CommandMenuItem[]): MenuItem[] {
8+
const nutzMenu: MenuItem[] = menu.map(m => ({
99
label: m.label,
1010
action: m.action,
1111
icon: app.getCommand(m.action)?.icon,
@@ -24,7 +24,7 @@ export class MenuBar implements IComponent {
2424
selectedIndex: number = -1;
2525
open: boolean = false;
2626
hovering: boolean = false;
27-
menuItems: MenuItem[] = null;
27+
menuItems: CommandMenuItem[] = null;
2828

2929
constructor(app: ICommandHost) {
3030
this.app = app;
@@ -99,7 +99,7 @@ export class MenuBar implements IComponent {
9999
itemNode.className = "px-1 rounded " + (hover ? "bg-neutral-700 text-neutral-100" : "bg-neutral-800 text-neutral-300"); // hover:bg-neutral-700 hover:text-neutral-100";
100100
}
101101

102-
bindMenubarMenu(menu: MenuItem[]) {
102+
bindMenubarMenu(menu: CommandMenuItem[]) {
103103

104104
this.menuItems = menu;
105105
while (this.menuContainer.childNodes.length > 0) this.menuContainer.removeChild(this.menuContainer.lastChild);
@@ -168,7 +168,7 @@ export class MenuBar implements IComponent {
168168
}
169169
}
170170

171-
showMenu(x: number, y: number, menu: MenuItem[]) {
171+
showMenu(x: number, y: number, menu: CommandMenuItem[]) {
172172
// translate to menu component's menuitem with shortcut, icon etc from the command
173173
const nutzMenu = convertNutzMenu(this.app, menu)
174174
this.menu.bindMenu(nutzMenu);

0 commit comments

Comments
 (0)