{"version":3,"file":"index.js","names":[],"sources":["../src/italic.ts","../src/index.ts"],"sourcesContent":["import { Mark, markInputRule, markPasteRule, mergeAttributes } from '@tiptap/core'\n\nexport interface ItalicOptions {\n /**\n * HTML attributes to add to the italic element.\n * @default {}\n * @example { class: 'foo' }\n */\n HTMLAttributes: Record\n}\n\ndeclare module '@tiptap/core' {\n interface Commands {\n italic: {\n /**\n * Set an italic mark\n * @example editor.commands.setItalic()\n */\n setItalic: () => ReturnType\n /**\n * Toggle an italic mark\n * @example editor.commands.toggleItalic()\n */\n toggleItalic: () => ReturnType\n /**\n * Unset an italic mark\n * @example editor.commands.unsetItalic()\n */\n unsetItalic: () => ReturnType\n }\n }\n}\n\n/**\n * Matches an italic to a *italic* on input.\n */\nexport const starInputRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))$/\n\n/**\n * Matches an italic to a *italic* on paste.\n */\nexport const starPasteRegex = /(?:^|\\s)(\\*(?!\\s+\\*)((?:[^*]+))\\*(?!\\s+\\*))/g\n\n/**\n * Matches an italic to a _italic_ on input.\n */\nexport const underscoreInputRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))$/\n\n/**\n * Matches an italic to a _italic_ on paste.\n */\nexport const underscorePasteRegex = /(?:^|\\s)(_(?!\\s+_)((?:[^_]+))_(?!\\s+_))/g\n\n/**\n * This extension allows you to create italic text.\n * @see https://www.tiptap.dev/api/marks/italic\n */\nexport const Italic = Mark.create({\n name: 'italic',\n\n addOptions() {\n return {\n HTMLAttributes: {},\n }\n },\n\n parseHTML() {\n return [\n {\n tag: 'em',\n },\n {\n tag: 'i',\n getAttrs: node => (node as HTMLElement).style.fontStyle !== 'normal' && null,\n },\n {\n style: 'font-style=normal',\n clearMark: mark => mark.type.name === this.name,\n },\n {\n style: 'font-style=italic',\n },\n ]\n },\n\n renderHTML({ HTMLAttributes }) {\n return ['em', mergeAttributes(this.options.HTMLAttributes, HTMLAttributes), 0]\n },\n\n addCommands() {\n return {\n setItalic:\n () =>\n ({ commands }) => {\n return commands.setMark(this.name)\n },\n toggleItalic:\n () =>\n ({ commands }) => {\n return commands.toggleMark(this.name)\n },\n unsetItalic:\n () =>\n ({ commands }) => {\n return commands.unsetMark(this.name)\n },\n }\n },\n\n markdownTokenName: 'em',\n\n parseMarkdown: (token, helpers) => {\n // Convert 'em' token to italic mark\n return helpers.applyMark('italic', helpers.parseInline(token.tokens || []))\n },\n\n markdownOptions: {\n htmlReopen: {\n open: '',\n close: '',\n },\n },\n\n renderMarkdown: (node, h) => {\n return `*${h.renderChildren(node)}*`\n },\n\n addKeyboardShortcuts() {\n return {\n 'Mod-i': () => this.editor.commands.toggleItalic(),\n 'Mod-I': () => this.editor.commands.toggleItalic(),\n }\n },\n\n addInputRules() {\n return [\n markInputRule({\n find: starInputRegex,\n type: this.type,\n }),\n markInputRule({\n find: underscoreInputRegex,\n type: this.type,\n }),\n ]\n },\n\n addPasteRules() {\n return [\n markPasteRule({\n find: starPasteRegex,\n type: this.type,\n }),\n markPasteRule({\n find: underscorePasteRegex,\n type: this.type,\n }),\n ]\n },\n})\n","import { Italic } from './italic.js'\n\nexport * from './italic.js'\n\nexport default Italic\n"],"mappings":";;;;;AAoCA,MAAa,iBAAiB;;;;AAK9B,MAAa,iBAAiB;;;;AAK9B,MAAa,uBAAuB;;;;AAKpC,MAAa,uBAAuB;;;;;AAMpC,MAAa,SAAS,KAAK,OAAsB;CAC/C,MAAM;CAEN,aAAa;EACX,OAAO,EACL,gBAAgB,CAAC,EACnB;CACF;CAEA,YAAY;EACV,OAAO;GACL,EACE,KAAK,KACP;GACA;IACE,KAAK;IACL,WAAU,SAAS,KAAqB,MAAM,cAAc,YAAY;GAC1E;GACA;IACE,OAAO;IACP,YAAW,SAAQ,KAAK,KAAK,SAAS,KAAK;GAC7C;GACA,EACE,OAAO,oBACT;EACF;CACF;CAEA,WAAW,EAAE,kBAAkB;EAC7B,OAAO;GAAC;GAAM,gBAAgB,KAAK,QAAQ,gBAAgB,cAAc;GAAG;EAAC;CAC/E;CAEA,cAAc;EACZ,OAAO;GACL,kBAEG,EAAE,eAAe;IAChB,OAAO,SAAS,QAAQ,KAAK,IAAI;GACnC;GACF,qBAEG,EAAE,eAAe;IAChB,OAAO,SAAS,WAAW,KAAK,IAAI;GACtC;GACF,oBAEG,EAAE,eAAe;IAChB,OAAO,SAAS,UAAU,KAAK,IAAI;GACrC;EACJ;CACF;CAEA,mBAAmB;CAEnB,gBAAgB,OAAO,YAAY;EAEjC,OAAO,QAAQ,UAAU,UAAU,QAAQ,YAAY,MAAM,UAAU,CAAC,CAAC,CAAC;CAC5E;CAEA,iBAAiB,EACf,YAAY;EACV,MAAM;EACN,OAAO;CACT,EACF;CAEA,iBAAiB,MAAM,MAAM;EAC3B,OAAO,IAAI,EAAE,eAAe,IAAI,EAAE;CACpC;CAEA,uBAAuB;EACrB,OAAO;GACL,eAAe,KAAK,OAAO,SAAS,aAAa;GACjD,eAAe,KAAK,OAAO,SAAS,aAAa;EACnD;CACF;CAEA,gBAAgB;EACd,OAAO,CACL,cAAc;GACZ,MAAM;GACN,MAAM,KAAK;EACb,CAAC,GACD,cAAc;GACZ,MAAM;GACN,MAAM,KAAK;EACb,CAAC,CACH;CACF;CAEA,gBAAgB;EACd,OAAO,CACL,cAAc;GACZ,MAAM;GACN,MAAM,KAAK;EACb,CAAC,GACD,cAAc;GACZ,MAAM;GACN,MAAM,KAAK;EACb,CAAC,CACH;CACF;AACF,CAAC;;;AC3JD,IAAA,cAAe"}