At the moment there is no way to pass command context which could be necessary for such a command like attachment to pass Promise to the command.
Current implementation: commandController.executeCommand('myCommandName');
1st Idea
The idea: commandController.executeCommand('myCommandName', commandContext);
To implement such functionality it is necessary
- update the command type
ICommand make it generic something like ICommand<CommandContext>
- update CommandController so the instance could understand
ICommand generic type
const commandWithoutContext: ICommand = {...};
const commandWithContext: ICommand<number> = {...};
const { ref, commandController } = useTextAreaMarkdownEditor({
commandMap: {
commandName1: commandWithoutContext,
commandName2: commandWithContext,
},
});
commandController.executeCommand('commandName1'); // No error
commandController.executeCommand('commandName1', 42); // Error: only 1 argument expected
commandController.executeCommand('commandName2'); // Error: only 2 arguments expected
commandController.executeCommand('commandName2', 42); // No error
2nd Idea
Current API can be changed this way:
class CommandWithoutContext extends BaseCommand {...};
class CommandWithContext extends BaseCommand<number> {...};
const { ref, commands {
commandName1,
commandName2,
}} = useTextAreaMarkdownEditor({
commandMap: {
commandName1: CommandWithoutContext,
commandName2: CommandWithContext,
},
});
commandName1(); // No error
commandName1(42); // Error: 0 arguments expected
commandName2(); // Error: 1 argument expected
commandName2(42); // No error
Such changes require complex types inference logic wich I didn't implement at the moment.
If anyone has code examples of such type inference logic please share them here. Any idea will be highly appreciated.
At the moment there is no way to pass command context which could be necessary for such a command like
attachmentto passPromiseto the command.Current implementation:
commandController.executeCommand('myCommandName');1st Idea
The idea:
commandController.executeCommand('myCommandName', commandContext);To implement such functionality it is necessary
ICommandmake it generic something likeICommand<CommandContext>ICommandgeneric type2nd Idea
Current API can be changed this way:
Such changes require complex types inference logic wich I didn't implement at the moment.
If anyone has code examples of such type inference logic please share them here. Any idea will be highly appreciated.