GrapesJS / grapesjs

Free and Open source Web Builder Framework. Next generation tool for building templates without coding
https://grapesjs.com
BSD 3-Clause "New" or "Revised" License
22.4k stars 4.06k forks source link

BUG: index.d.ts says that run commands should return void but docs say their return value may be used #4385

Closed froodian closed 2 years ago

froodian commented 2 years ago

GrapesJS version

What browser are you using?

Any

Reproducible demo link

https://grapesjs.com/docs/modules/Commands.html#stateful-commands

Describe the bug

How to reproduce the bug?

in a typescript setup,

import grapesjs from "grapesjs";

export const ExportPlugin = (editor: grapesjs.Editor) => {
  editor.Commands.add("render html", (editor) => {
    return "<html><body>example</body></html>";
  }););
};

What is the expected behavior?

it is allowed, as in the "Let's return something" example at https://grapesjs.com/docs/modules/Commands.html#stateful-commands

What is the current behavior?

Argument of type '(editor: grapesjs.Editor) => string' is not assignable to parameter of type '(editor: Editor) => void | { run: (editor: Editor, sender?: any) => void; stop: (editor: Editor, sender?: any) => void; }'.
  Type 'string' is not assignable to type 'void | { run: (editor: Editor, sender?: any) => void; stop: (editor: Editor, sender?: any) => void; }'.

I'm having difficulty making the example work with the

{
  run: (editor: Editor, sender?: any) => void;
  stop: (editor: Editor, sender?: any) => void;
}

definitions as well - (in addition to the (editor: Editor) => void definition, as described above)

Should all 3 of these void declarations in fact be any?

Code of Conduct

artf commented 2 years ago

Thanks @froodian I'll update them