CommandHandler
Base class for command handlers.
Unlike the Obsidian Command interface, handlers are never mutated by Obsidian. The buildCommand method produces a plain Command object for registration.
Import:
import { CommandHandler } from 'obsidian-dev-utils/obsidian/command-handlers/command-handler';Signature:
export class CommandHandlerConstructor
new CommandHandler(params: CommandHandlerConstructorParams)Creates a new command handler.
Properties
| Property | Type | Description |
|---|---|---|
| icon | IconName | The icon for the command. |
| id | string | The ID of the command. |
| name | string | The display name of the command. |
Methods
| Method | Returns | Description |
|---|---|---|
| buildCommand() | Command | Builds a plain Obsidian Command object for registration. |
| onRegistered(context) | Promise<void> | Called after the command has been registered with Obsidian. Subclasses use the provided context to register menu event handlers. Throws when the same instance is registered twice. A handler stores per-registration state — the plugin name here, the active-file provider and the submenu override in AbstractFileCommandHandler, plus whatever a subclass records — and the menu closures registered here read that state lazily, at menu-render time. So a second registration silently rewrites what the first registration's closures will see. CommandHandlerComponent registers a handler set once per menu surface, which is why CommandHandlerFactory must build FRESH instances on every call; this guard turns a factory that hands out shared instances into a loud failure instead of a wrong context menu. |
Links to this page: