Custom marks with pop-up

The link mark emits the link event from the command. This event is then picked up by a global event handler in the Writer component. This event handler opens the dialog and triggers another ProseMirror command to update the mark with the result of the dialog.

Since you need a custom dialog, you cannot use the link event. Instead, you can copy the this.$panel.dialog.open() code to your mark implementation directly and adapt it to your needs.

If your marks only differ by the class name, you could alternatively also adapt your parseDOM rules so each mark only grabs the instances it should. The link mark is a good example for such custom selectors.