์ปจํ…์ŠคํŠธ ๋ฉ”๋‰ด๋ฅผ ์—ด๊ณ  ์‹ถ๋‹ค๋ฉด Menu๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”:

import { Menu, Notice, Plugin } from 'obsidian';
 
export default class ExamplePlugin extends Plugin {
  async onload() {
    this.addRibbonIcon('dice', 'Open menu', (event) => {
      const menu = new Menu();
 
      menu.addItem((item) =>
        item
          .setTitle('Copy')
          .setIcon('documents')
          .onClick(() => {
            new Notice('Copied');
          })
      );
 
      menu.addItem((item) =>
        item
          .setTitle('Paste')
          .setIcon('paste')
          .onClick(() => {
            new Notice('Pasted');
          })
      );
 
      menu.showAtMouseEvent(event);
    });
  }
}

showAtMouseEvent()๋Š” ๋งˆ์šฐ์Šค๋กœ ํด๋ฆญํ•œ ์œ„์น˜์— ๋ฉ”๋‰ด๋ฅผ ์—ฝ๋‹ˆ๋‹ค.

Tip

๋ฉ”๋‰ด๊ฐ€ ๋‚˜ํƒ€๋‚˜๋Š” ์œ„์น˜๋ฅผ ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ์ œ์–ดํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, menu.showAtPosition({ x: 20, y: 20 })์„ ์‚ฌ์šฉํ•˜์—ฌ Obsidian ์ฐฝ์˜ ์™ผ์ชฝ ์ƒ๋‹จ ๋ชจ์„œ๋ฆฌ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•œ ์œ„์น˜์— ๋ฉ”๋‰ด๋ฅผ ์—ด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•„์ด์ฝ˜์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Icons๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.

file-menu ๋ฐ editor-menu ์ž‘์—… ๊ณต๊ฐ„ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•˜์—ฌ ํŒŒ์ผ ๋ฉ”๋‰ด ๋˜๋Š” ์—๋””ํ„ฐ ๋ฉ”๋‰ด์— ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค:

import { Notice, Plugin } from 'obsidian';
 
export default class ExamplePlugin extends Plugin {
  async onload() {
    this.registerEvent(
      this.app.workspace.on('file-menu', (menu, file) => {
        menu.addItem((item) => {
          item
            .setTitle('Print file path ๐Ÿ‘ˆ')
            .setIcon('document')
            .onClick(async () => {
              new Notice(file.path);
            });
        });
      })
    );
 
    this.registerEvent(
      this.app.workspace.on("editor-menu", (menu, editor, view) => {
        menu.addItem((item) => {
          item
            .setTitle('Print file path ๐Ÿ‘ˆ')
            .setIcon('document')
            .onClick(async () => {
              new Notice(view.file.path);
            });
        });
      })
    );
  }
}

์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ Events๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.