{"version":3,"file":"index.cjs","sources":["../src/superscript.ts"],"sourcesContent":["import { Mark, mergeAttributes } from '@tiptap/core'\nimport type { StyleParseRule } from '@tiptap/pm/model'\n\nexport interface SuperscriptExtensionOptions {\n  /**\n   * HTML attributes to add to the superscript element.\n   * @default {}\n   * @example { class: 'foo' }\n   */\n  HTMLAttributes: Record<string, any>,\n}\n\ndeclare module '@tiptap/core' {\n  interface Commands<ReturnType> {\n    superscript: {\n      /**\n       * Set a superscript mark\n       * @example editor.commands.setSuperscript()\n       */\n      setSuperscript: () => ReturnType,\n      /**\n       * Toggle a superscript mark\n       * @example editor.commands.toggleSuperscript()\n       */\n      toggleSuperscript: () => ReturnType,\n      /**\n       * Unset a superscript mark\n       *  @example editor.commands.unsetSuperscript()\n       */\n      unsetSuperscript: () => ReturnType,\n    }\n  }\n}\n\n/**\n * This extension allows you to create superscript text.\n * @see https://www.tiptap.dev/api/marks/superscript\n */\nexport const Superscript = Mark.create<SuperscriptExtensionOptions>({\n  name: 'superscript',\n\n  addOptions() {\n    return {\n      HTMLAttributes: {},\n    }\n  },\n\n  parseHTML() {\n    return [\n      {\n        tag: 'sup',\n      },\n      {\n        style: 'vertical-align',\n        getAttrs(value) {\n          // Don’t match this rule if the vertical align isn’t super.\n          if (value !== 'super') {\n            return false\n          }\n\n          // If it falls through we’ll match, and this mark will be applied.\n          return null\n        },\n      } as StyleParseRule,\n    ]\n  },\n\n  renderHTML({ HTMLAttributes }) {\n    return ['sup', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]\n  },\n\n  addCommands() {\n    return {\n      setSuperscript: () => ({ commands }) => {\n        return commands.setMark(this.name)\n      },\n      toggleSuperscript: () => ({ commands }) => {\n        return commands.toggleMark(this.name)\n      },\n      unsetSuperscript: () => ({ commands }) => {\n        return commands.unsetMark(this.name)\n      },\n    }\n  },\n\n  addKeyboardShortcuts() {\n    return {\n      'Mod-.': () => this.editor.commands.toggleSuperscript(),\n    }\n  },\n})\n"],"names":["Mark","mergeAttributes"],"mappings":";;;;;;AAkCA;;;AAGG;AACU,MAAA,WAAW,GAAGA,SAAI,CAAC,MAAM,CAA8B;AAClE,IAAA,IAAI,EAAE,aAAa;IAEnB,UAAU,GAAA;QACR,OAAO;AACL,YAAA,cAAc,EAAE,EAAE;SACnB;KACF;IAED,SAAS,GAAA;QACP,OAAO;AACL,YAAA;AACE,gBAAA,GAAG,EAAE,KAAK;AACX,aAAA;AACD,YAAA;AACE,gBAAA,KAAK,EAAE,gBAAgB;AACvB,gBAAA,QAAQ,CAAC,KAAK,EAAA;;AAEZ,oBAAA,IAAI,KAAK,KAAK,OAAO,EAAE;AACrB,wBAAA,OAAO,KAAK;;;AAId,oBAAA,OAAO,IAAI;iBACZ;AACgB,aAAA;SACpB;KACF;IAED,UAAU,CAAC,EAAE,cAAc,EAAE,EAAA;AAC3B,QAAA,OAAO,CAAC,KAAK,EAAEC,oBAAe,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;KAChF;IAED,WAAW,GAAA;QACT,OAAO;YACL,cAAc,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAI;gBACrC,OAAO,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;aACnC;YACD,iBAAiB,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAI;gBACxC,OAAO,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC;aACtC;YACD,gBAAgB,EAAE,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAI;gBACvC,OAAO,QAAQ,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;aACrC;SACF;KACF;IAED,oBAAoB,GAAA;QAClB,OAAO;YACL,OAAO,EAAE,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,EAAE;SACxD;KACF;AACF,CAAA;;;;;"}