import { Command, Mark } from '@tiptap/core'

export type UnderlineCommand = () => Command

declare module '@tiptap/core/src/Editor' {
  interface Commands {
    underline: UnderlineCommand,
  }
}

export default new Mark()
  .name('underline')
  .schema(() => ({
    parseDOM: [
      {
        tag: 'u',
      },
      {
        style: 'text-decoration',
        getAttrs: node => (node === 'underline' ? {} : false),
      },
    ],
    toDOM: () => ['u', 0],
  }))
  .commands(({ name }) => ({
    underline: () => ({ commands }) => {
      return commands.toggleMark(name)
    },
  }))
  .keys(({ editor }) => ({
    'Mod-u': () => editor.underline(),
  }))
  .create()
