markdown-text-editor 0.3.0 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"markdown-text-editor.js","mappings":"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","sources":["webpack://MarkdownEditor/webpack/universalModuleDefinition","webpack://MarkdownEditor/./src/markdown/Toolbar/MakeTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/BoldTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/ItalicTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/StrikethroughTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/ULTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/OLTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/PreviewTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/CheckListTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/BlockQuoteTool.js","webpack://MarkdownEditor/./src/markdown/components/modal.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/LinkTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/HeadingTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/tools/ImageTool.js","webpack://MarkdownEditor/./src/markdown/Toolbar/index.js","webpack://MarkdownEditor/./src/markdown/preview.js","webpack://MarkdownEditor/webpack/bootstrap","webpack://MarkdownEditor/webpack/runtime/define property getters","webpack://MarkdownEditor/webpack/runtime/hasOwnProperty shorthand","webpack://MarkdownEditor/./node_modules/marked/lib/marked.esm.js","webpack://MarkdownEditor/./src/markdown/editor.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MarkdownEditor\"] = factory();\n\telse\n\t\troot[\"MarkdownEditor\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, () => {\nreturn ","class MakeTool {\n constructor(editor, title) {\n this.editor = editor;\n this.defaultText = `${title} text`; // Default text if nothing is selected\n this.button = this.createButton();\n this.title = title\n }\n\n // Create a button element (can be overridden in child classes)\n createButton(iconHtml) {\n const btn = document.createElement('button');\n const btnClass = this.title ? `${this.title.replace(/ /g, '-')}-btn`.toLowerCase() : '';\n btn.innerHTML = iconHtml; // Pass icon HTML from child classes\n btn.type = 'button';\n btn.title = this.title;\n btn.className = `markdown-btn ${btnClass} btn btn-sm btn-square btn-ghost`;\n btn.addEventListener('click', (event) => this.applySyntax(event)); // Default to 'both', can change in child\n\n if(btnClass == 'preview-btn') {\n const btnWrapper = document.createElement('div');\n btnWrapper.className = 'bg-stone-100 dark:bg-stone-800 sticky -right-2 border-l border-stone-200 dark:border-stone-700 px-1.5';\n btnWrapper.appendChild(btn);\n return btnWrapper;\n }\n \n return btn;\n }\n}\n\nexport default MakeTool;\n","import MakeTool from '../MakeTool.js';\n\nclass BoldTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Bold');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M8 11H12.5C13.8807 11 15 9.88071 15 8.5C15 7.11929 13.8807 6 12.5 6H8V11ZM18 15.5C18 17.9853 15.9853 20 13.5 20H6V4H12.5C14.9853 4 17 6.01472 17 8.5C17 9.70431 16.5269 10.7981 15.7564 11.6058C17.0979 12.3847 18 13.837 18 15.5ZM8 13V18H13.5C14.8807 18 16 16.8807 16 15.5C16 14.1193 14.8807 13 13.5 13H8Z\"></path>\n </svg> \n `)\n }\n\n // Apply bold syntax (**bold**)\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '**';\n let newText = '';\n if (selectedText.startsWith(syntax) && selectedText.endsWith(syntax)) {\n // Remove the bold syntax if it's already wrapped\n newText = selectedText.slice(syntax.length, -syntax.length);\n } else {\n // Apply bold syntax\n newText = `${syntax}${selectedText || 'Bold text'}${syntax}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\nexport default BoldTool;\n","import MakeTool from '../MakeTool.js';\n\nclass ItalicTool extends MakeTool {\n constructor(editor) {\n // Call the parent constructor with the markdown syntax for italic (*)\n super(editor, 'Italic');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M15 20H7V18H9.92661L12.0425 6H9V4H17V6H14.0734L11.9575 18H15V20Z\"></path></svg>\n `);\n }\n\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '*';\n let newText = '';\n if (selectedText.startsWith(syntax) && selectedText.endsWith(syntax)) {\n // Remove the italic syntax if it's already wrapped\n newText = selectedText.slice(syntax.length, -syntax.length);\n } else {\n // Apply italic syntax\n newText = `${syntax}${selectedText || 'Italic text'}${syntax}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\nexport default ItalicTool;","import MakeTool from '../MakeTool.js';\n\nclass StrikethroughTool extends MakeTool {\n constructor(editor) {\n // Call the parent constructor with the markdown syntax for strikethrough (~~)\n super(editor, 'Strikethrough');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M17.1538 14C17.3846 14.5161 17.5 15.0893 17.5 15.7196C17.5 17.0625 16.9762 18.1116 15.9286 18.867C14.8809 19.6223 13.4335 20 11.5862 20C9.94674 20 8.32335 19.6185 6.71592 18.8555V16.6009C8.23538 17.4783 9.7908 17.917 11.3822 17.917C13.9333 17.917 15.2128 17.1846 15.2208 15.7196C15.2208 15.0939 15.0049 14.5598 14.5731 14.1173C14.5339 14.0772 14.4939 14.0381 14.4531 14H3V12H21V14H17.1538ZM13.076 11H7.62908C7.4566 10.8433 7.29616 10.6692 7.14776 10.4778C6.71592 9.92084 6.5 9.24559 6.5 8.45207C6.5 7.21602 6.96583 6.165 7.89749 5.299C8.82916 4.43299 10.2706 4 12.2219 4C13.6934 4 15.1009 4.32808 16.4444 4.98426V7.13591C15.2448 6.44921 13.9293 6.10587 12.4978 6.10587C10.0187 6.10587 8.77917 6.88793 8.77917 8.45207C8.77917 8.87172 8.99709 9.23796 9.43293 9.55079C9.86878 9.86362 10.4066 10.1135 11.0463 10.3004C11.6665 10.4816 12.3431 10.7148 13.076 11H13.076Z\"></path></svg>\n `);\n }\n\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '~';\n let newText = '';\n if (selectedText.startsWith(syntax) && selectedText.endsWith(syntax)) {\n // Remove the strikethrough syntax if it's already wrapped\n newText = selectedText.slice(syntax.length, -syntax.length);\n } else {\n // Apply strikethrough syntax\n newText = `${syntax}${selectedText || 'Strikethrough text'}${syntax}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\nexport default StrikethroughTool;","import MakeTool from '../MakeTool.js';\n\nclass ULTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Unordered list');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M8 4H21V6H8V4ZM4.5 6.5C3.67157 6.5 3 5.82843 3 5C3 4.17157 3.67157 3.5 4.5 3.5C5.32843 3.5 6 4.17157 6 5C6 5.82843 5.32843 6.5 4.5 6.5ZM4.5 13.5C3.67157 13.5 3 12.8284 3 12C3 11.1716 3.67157 10.5 4.5 10.5C5.32843 10.5 6 11.1716 6 12C6 12.8284 5.32843 13.5 4.5 13.5ZM4.5 20.4C3.67157 20.4 3 19.7284 3 18.9C3 18.0716 3.67157 17.4 4.5 17.4C5.32843 17.4 6 18.0716 6 18.9C6 19.7284 5.32843 20.4 4.5 20.4ZM8 11H21V13H8V11ZM8 18H21V20H8V18Z\"></path></svg>\n `);\n }\n \n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '- ';\n let newText = '';\n if (selectedText.startsWith(syntax)) {\n // Remove the Unordered syntax if it's already wrapped\n newText = selectedText.slice(syntax.length);\n } else {\n // Apply Unordered list syntax\n newText = `${syntax}${selectedText || 'Unordered list'}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\n\nexport default ULTool;","import MakeTool from '../MakeTool.js';\n\nclass OLTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Ordered list');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M8 4H21V6H8V4ZM5 3V6H6V7H3V6H4V4H3V3H5ZM3 14V11.5H5V11H3V10H6V12.5H4V13H6V14H3ZM5 19.5H3V18.5H5V18H3V17H6V21H3V20H5V19.5ZM8 11H21V13H8V11ZM8 18H21V20H8V18Z\"></path></svg>\n `);\n }\n \n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '1. ';\n let newText = '';\n if (selectedText.startsWith(syntax)) {\n // Remove the ordered syntax if it's already wrapped\n newText = selectedText.slice(syntax.length);\n } else {\n // Apply ordered list syntax\n newText = `${syntax}${selectedText || 'Ordered list'}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\n\nexport default OLTool;","// #components/Toolbar/tools/PreviewToggleTool.js\nimport MakeTool from '../MakeTool.js';\n\nclass PreviewTool extends MakeTool {\n constructor(editor) {\n // No markdown syntax for preview toggle, so we call the parent constructor with empty values\n super(editor, 'Preview');\n this.preview = true;\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M11 5H5V19H11V5ZM13 5V19H19V5H13ZM4 3H20C20.5523 3 21 3.44772 21 4V20C21 20.5523 20.5523 21 20 21H4C3.44772 21 3 20.5523 3 20V4C3 3.44772 3.44772 3 4 3Z\"></path></svg>\n `);\n }\n\n // Override applySyntax to handle preview toggling\n applySyntax() {\n const previewWrapper = this.editor.previewContent?.parentNode;\n const editorDiv = this.editor.markdownEditorDiv;\n\n if (!previewWrapper || !editorDiv) return;\n\n // Toggle the preview's visibility by switching between 'block' and 'hidden' classes\n if (this.editor.preview && this.preview) {\n this.enablePreview(previewWrapper, editorDiv);\n } else {\n this.disablePreview(previewWrapper, editorDiv);\n }\n }\n\n // Method to hide the preview (disable it)\n disablePreview(previewWrapper, editorDiv) {\n\n this.preview = true;\n\n editorDiv.parentNode.classList.toggle('fixed');\n editorDiv.parentNode.classList.toggle('top-0');\n editorDiv.parentNode.classList.toggle('inset-x-0');\n editorDiv.parentNode.classList.toggle('rounded-md');\n editorDiv.parentNode.classList.toggle('z-999');\n \n previewWrapper.classList.toggle('hidden');\n\n // Add grid layout and divide classes to the editor div\n editorDiv.classList.remove(\n 'md:grid',\n 'md:grid-cols-2',\n 'md:divide-x',\n 'md:rtl:divide-x-reverse',\n 'md:divide-stone-300',\n 'dark:md:divide-stone-700'\n );\n\n editorDiv.querySelector(\".textarea-wrapper\").classList.remove(\n 'h-[90lvh]',\n 'hidden',\n 'md:block'\n );\n this.editor.render(); // Re-render content in the preview\n\n editorDiv.querySelector(\".textarea-wrapper\").querySelector(\"textarea\").classList.remove(\"h-[90lvh]!\");\n \n document.querySelector(\"body\").classList.remove('overflow-hidden');\n\n document.querySelectorAll('.markdown-btn').forEach(button => {\n if (!button.classList.contains('preview-btn')) {\n button.classList.remove('pointer-events-none', 'md:pointer-events-auto', 'opacity-25', 'md:opacity-100');\n }else{\n button.classList.remove('btn-active');\n }\n });\n }\n\n // Method to show the preview (enable it)\n enablePreview(previewWrapper, editorDiv) {\n\n this.preview = false;\n\n editorDiv.parentNode.classList.toggle('fixed');\n editorDiv.parentNode.classList.toggle('top-0');\n editorDiv.parentNode.classList.toggle('inset-x-0');\n editorDiv.parentNode.classList.toggle('rounded-md');\n editorDiv.parentNode.classList.toggle('z-999');\n\n previewWrapper.classList.toggle('hidden');\n // Remove grid layout and divide classes from the editor div\n editorDiv.classList.add(\n 'md:grid',\n 'md:grid-cols-2',\n 'md:divide-x',\n 'md:rtl:divide-x-reverse',\n 'md:divide-stone-300',\n 'dark:md:divide-stone-700'\n );\n\n editorDiv.querySelector(\".textarea-wrapper\").classList.add(\n 'h-[90lvh]',\n 'hidden',\n 'md:block'\n );\n editorDiv.querySelector(\".textarea-wrapper\").querySelector(\"textarea\").classList.add(\"h-[90lvh]!\");\n\n document.querySelector(\"body\").classList.add('overflow-hidden');\n\n document.querySelectorAll('.markdown-btn').forEach(button => {\n if (!button.classList.contains('preview-btn')) {\n button.classList.add('pointer-events-none', 'md:pointer-events-auto', 'opacity-25', 'md:opacity-100');\n }else{\n button.classList.add('btn-active');\n }\n });\n }\n}\n\nexport default PreviewTool;\n","import MakeTool from '../MakeTool.js';\n\nclass CheckListTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Check list');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M8.00008 6V9H5.00008V6H8.00008ZM3.00008 4V11H10.0001V4H3.00008ZM13.0001 4H21.0001V6H13.0001V4ZM13.0001 11H21.0001V13H13.0001V11ZM13.0001 18H21.0001V20H13.0001V18ZM10.7072 16.2071L9.29297 14.7929L6.00008 18.0858L4.20718 16.2929L2.79297 17.7071L6.00008 20.9142L10.7072 16.2071Z\"></path></svg>\n `);\n }\n \n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '- [x] ';\n let newText = '';\n if (selectedText.startsWith(syntax)) {\n // Remove the checklist syntax if it's already wrapped\n newText = selectedText.slice(syntax.length);\n } else {\n // Apply check list syntax\n newText = `${syntax}${selectedText || 'Check list'}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\n\nexport default CheckListTool;","import MakeTool from '../MakeTool.js';\n\nclass BlockQuoteTool extends MakeTool {\n constructor(editor) {\n // Call the parent constructor with the markdown syntax for italic (*)\n super(editor, 'Blockquote');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M4.58341 17.3211C3.55316 16.2274 3 15 3 13.0103C3 9.51086 5.45651 6.37366 9.03059 4.82318L9.92328 6.20079C6.58804 8.00539 5.93618 10.346 5.67564 11.822C6.21263 11.5443 6.91558 11.4466 7.60471 11.5105C9.40908 11.6778 10.8312 13.159 10.8312 15C10.8312 16.933 9.26416 18.5 7.33116 18.5C6.2581 18.5 5.23196 18.0095 4.58341 17.3211ZM14.5834 17.3211C13.5532 16.2274 13 15 13 13.0103C13 9.51086 15.4565 6.37366 19.0306 4.82318L19.9233 6.20079C16.588 8.00539 15.9362 10.346 15.6756 11.822C16.2126 11.5443 16.9156 11.4466 17.6047 11.5105C19.4091 11.6778 20.8312 13.159 20.8312 15C20.8312 16.933 19.2642 18.5 17.3312 18.5C16.2581 18.5 15.232 18.0095 14.5834 17.3211Z\"></path></svg>\n `);\n }\n\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '>';\n let newText = '';\n if (selectedText.startsWith(syntax)) {\n // Remove the blockquote syntax if it's already wrapped\n newText = selectedText.slice(syntax.length);\n } else {\n // Apply blockquote syntax\n newText = `${syntax}${selectedText || 'Blockquote text'}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\nexport default BlockQuoteTool;","export function modal(event, size, bodyHTML) {\n const self = event.target;\n const mde = self.closest(\".markdown-editor-wrapper\");\n if(mde.querySelector(\".markdown-modal\")){\n mde.querySelector(\".markdown-modal\").remove(); \n }\n\n const modalHTML = `\n <dialog class=\"modal modal-y-top lg:modal-y-center modal-x-center markdown-modal\" id=\"nezanuha_toggleModal\">\n <div class=\"modal-body ${size}\">\n ${bodyHTML}\n </div>\n </dialog>\n `;\n\n if(!mde.querySelector(\".markdown-modal\")){\n mde.insertAdjacentHTML(\"beforeend\", modalHTML);\n }\n \n const modal = mde.querySelector(\".markdown-modal\");\n modal.showModal();\n return modal;\n}","import MakeTool from '../MakeTool.js';\nimport { modal } from '../../components/modal.js';\n\nclass LinkTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Link');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M18.3638 15.5355L16.9496 14.1213L18.3638 12.7071C20.3164 10.7545 20.3164 7.58866 18.3638 5.63604C16.4112 3.68341 13.2453 3.68341 11.2927 5.63604L9.87849 7.05025L8.46428 5.63604L9.87849 4.22182C12.6122 1.48815 17.0443 1.48815 19.778 4.22182C22.5117 6.95549 22.5117 11.3876 19.778 14.1213L18.3638 15.5355ZM15.5353 18.364L14.1211 19.7782C11.3875 22.5118 6.95531 22.5118 4.22164 19.7782C1.48797 17.0445 1.48797 12.6123 4.22164 9.87868L5.63585 8.46446L7.05007 9.87868L5.63585 11.2929C3.68323 13.2455 3.68323 16.4113 5.63585 18.364C7.58847 20.3166 10.7543 20.3166 12.7069 18.364L14.1211 16.9497L15.5353 18.364ZM14.8282 7.75736L16.2425 9.17157L9.17139 16.2426L7.75717 14.8284L14.8282 7.75736Z\"></path>\n </svg>\n `);\n }\n\n // Apply link syntax [text](url)\n applySyntax(event) {\n let editor = this.editor;\n let textarea = editor.usertextarea;\n let { selectionStart, selectionEnd } = textarea;\n let selectedText = textarea.value.substring(selectionStart, selectionEnd);\n \n // Check if the selected text contains a link syntax [text](url)\n const linkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/;\n \n if (selectedText && linkRegex.test(selectedText)) {\n // If the selected text is already a link, extract the text inside the brackets\n const match = selectedText.match(linkRegex);\n const linkText = match[1]; // Text inside the square brackets\n \n // Replace the selected text with just the text\n textarea.setRangeText(linkText, selectionStart, selectionEnd, 'select');\n } else {\n // If no link syntax, prompt for the URL and apply the syntax\n \n const bodyHTML =`\n <div class=\"flex justify-between items-center gap-3\">\n <div class=\"font-medium\">Link</div>\n <button type=\"button\" class=\"btn btn-ghost btn-xs btn-circle\" onclick=\"nezanuha_toggleModal.remove()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>\n </button>\n </div>\n <form method=\"post\">\n <div class=\"flex flex-col justify-center gap-y-4.5 mt-4\">\n <input type=\"url\" placeholder=\"URL\" class=\"input w-full link-input\" required>\n <input type=\"text\" placeholder=\"Link text\" class=\"input w-full link-text-input\" value=\"${selectedText}\" required>\n <button type=\"submit\" class=\"btn btn-sm submit-link self-end\">Apply</button>\n </div>\n </form>`;\n\n const modalElement = modal(event, 'max-w-sm', bodyHTML);\n\n modalElement.querySelector(\".submit-link\").addEventListener(\"click\", function(e){\n e.preventDefault();\n let linkInput = modalElement.querySelector(\".link-input\");\n let linkTextInput = modalElement.querySelector(\".link-text-input\");\n\n if (!linkInput.validity.valid) {\n linkInput.reportValidity();\n } else if (!linkTextInput.validity.valid) {\n linkTextInput.reportValidity();\n } else {\n const link = linkInput.value;\n let linkText = linkTextInput.value;\n\n if(linkText == ''){\n linkText = 'Link Text';\n }\n\n let newText = '';\n if (selectedText) {\n newText = `[${selectedText}](${link})`; // Insert the link with selected text\n } else {\n newText = `[${linkText}](${link})`; // Insert a placeholder text if nothing is selected\n }\n editor.insertText(newText); // Insert the constructed link markdown\n \n linkInput.value = '';\n linkTextInput.value = '';\n modalElement.close();\n }\n });\n }\n }\n \n}\n\nexport default LinkTool;","import MakeTool from '../MakeTool.js';\n\nclass HeadingTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Heading');\n this.currentHeading = 1; // Start with Heading 1\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M17 11V4H19V21H17V13H7V21H5V4H7V11H17Z\"></path></svg>\n `);\n }\n\n // Apply heading syntax (e.g., # sample text for h1, ## sample text for h2, etc.)\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n // Strip any existing heading symbols (i.e., # or ##) from the selected text\n const headingRegex = /^#+\\s*/; // Regex to match any # followed by space\n let cleanText = selectedText.replace(headingRegex, ''); // Remove existing heading\n\n let newText = '';\n\n // If there is a heading, continue from the current level\n if (selectedText) {\n const currentLevel = selectedText.match(/^#+/); // Match the number of # symbols at the start\n if (currentLevel) {\n let headingCount = currentLevel[0].length;\n if (headingCount === 6) {\n newText = cleanText; // Just plain text\n } else {\n newText = `${'#'.repeat(headingCount + 1)} ${cleanText}`;\n }\n } else {\n // If no # symbol, start from # (Heading 1)\n newText = `# ${cleanText}`;\n }\n } else {\n // If no text is selected, use default \"Heading\"\n newText = `${'#'.repeat(this.currentHeading)} Heading`;\n }\n\n // Insert the new heading text and replace any selected text\n this.editor.insertText(newText, true);\n\n // Cycle heading levels after applying the heading\n if (this.currentHeading === 6) {\n this.currentHeading = 1; // Reset to # for Heading 1 after reaching Heading 6\n } else {\n this.currentHeading++; // Increment the heading level\n }\n }\n}\n\nexport default HeadingTool;\n","import MakeTool from '../MakeTool.js';\nimport { modal } from '../../components/modal.js';\n\nclass ImageTool extends MakeTool {\n constructor(editor, config = {}) {\n super(editor, 'Image link');\n this.config = config;\n this.fileInputConfig = config.fileInput || false;\n this.altInputConfig = config.altInput || true;\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M16 5h6\"/><path d=\"M19 2v6\"/><path d=\"M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5\"/>\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/>\n </svg>\n `);\n }\n\n // Apply link syntax [text](url)\n applySyntax(event) {\n let editor = this.editor;\n let textarea = editor.usertextarea;\n let { selectionStart, selectionEnd } = textarea;\n let selectedText = textarea.value.substring(selectionStart, selectionEnd);\n \n const acceptFormats = this.fileInputConfig.accept\n ? this.fileInputConfig.accept.map(type => `image/${type}`).join(',')\n : 'image/*'; // Handle file formats\n\n const altRequired = this.altInputConfig.required === undefined ? true : this.altInputConfig.required;\n\n const uploadUrl = this.fileInputConfig.uploadUrl || null;\n\n let fileInputTag = '';\n if(this.fileInputConfig){\n fileInputTag = `\n <input type=\"file\" accept=\"${acceptFormats}\" class=\"input w-full img-file-input\">\n <div class=\"divider my-1\">OR</div>\n `;\n }\n // Check if the selected text contains an image markdown syntax ![alt text](url)\n const imageRegex = /!\\[([^\\]]*)\\]\\(([^)]+)\\)/;\n\n if (selectedText && imageRegex.test(selectedText)) {\n // If the selected text is already an image markdown, extract the alt text and URL\n const match = selectedText.match(imageRegex);\n const altText = match[1]; // Alt text inside the square brackets\n // const imageUrl = match[2]; // URL inside the parentheses\n\n // Replace the selected text with just the text\n textarea.setRangeText(altText, selectionStart, selectionEnd, 'select');\n } else {\n const bodyHTML =`\n <div class=\"flex justify-between items-center gap-3\">\n <div class=\"font-medium\">Image</div>\n <button type=\"button\" class=\"btn btn-ghost btn-xs btn-circle\" onclick=\"nezanuha_toggleModal.remove()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>\n </button>\n </div>\n <form method=\"post\">\n <div class=\"flex flex-col justify-center gap-y-4.5 mt-4\">\n ${fileInputTag}\n <input type=\"url\" placeholder=\"URL\" class=\"input w-full img-link-input\" required>\n <input type=\"text\" placeholder=\"Alt text\" class=\"input w-full img-link-alt-input\" value=\"${selectedText}\" ${(altRequired) && 'required'}>\n <button type=\"submit\" class=\"btn btn-sm submit-img-link self-end\">Apply</button>\n </div>\n </form>`;\n\n const modalElement = modal(event, 'max-w-sm', bodyHTML);\n\n if(this.fileInputConfig){\n const fileInputSelector = modalElement.querySelector(\".img-file-input\");\n const urlInputSelector = modalElement.querySelector(\".img-link-input\");\n const submitBtnSelector = modalElement.querySelector(\".submit-img-link\");\n\n fileInputSelector.addEventListener(\"change\", async () => {\n const file = fileInputSelector.files[0];\n if (!file || !uploadUrl) return;\n \n submitBtnSelector.disabled = true;\n submitBtnSelector.textContent = 'Uploading...';\n \n const formData = new FormData();\n formData.append('image', file);\n \n try {\n const res = await fetch(uploadUrl, {\n method: 'POST',\n body: formData\n });\n const result = await res.json();\n \n if (result.success && result.path) {\n urlInputSelector.value = result.path;\n submitBtnSelector.disabled = false;\n submitBtnSelector.textContent = 'Apply';\n } else {\n alert('Image upload failed.');\n fileInputSelector.value = ''; // ✅ Reset file input\n submitBtnSelector.disabled = false;\n submitBtnSelector.textContent = 'Apply';\n }\n } catch (err) {\n console.error(err);\n alert('Upload error.');\n fileInputSelector.value = ''; // ✅ Reset file input\n submitBtnSelector.disabled = false;\n submitBtnSelector.textContent = 'Apply';\n }\n });\n }\n \n\n modalElement.querySelector(\".submit-img-link\").addEventListener(\"click\", function(e){\n e.preventDefault();\n let imgLinkInput = modalElement.querySelector(\".img-link-input\");\n let imgLinkAltInput = modalElement.querySelector(\".img-link-alt-input\");\n\n if (!imgLinkInput.validity.valid) {\n imgLinkInput.reportValidity();\n } else if (!imgLinkAltInput.validity.valid) {\n imgLinkAltInput.reportValidity();\n } else {\n const imgLink = imgLinkInput.value;\n let imgLinkAlt = imgLinkAltInput.value;\n\n if(imgLinkAlt == ''){\n imgLinkAlt = '';\n }\n\n let newText = '';\n if (selectedText) {\n newText = `![${selectedText}](${imgLink})`; // Insert the link with selected text\n } else {\n newText = `![${imgLinkAlt}](${imgLink})`; // Insert a placeholder text if nothing is selected\n }\n editor.insertText(newText); // Insert the constructed link markdown\n \n imgLinkInput.value = '';\n imgLinkAltInput.value = '';\n modalElement.close();\n }\n });\n }\n }\n \n}\nexport default ImageTool;","// #markdown\\Toolbar\\index.js\nimport BoldTool from './tools/BoldTool.js';\nimport ItalicTool from './tools/ItalicTool.js';\nimport StrikethroughTool from './tools/StrikethroughTool.js';\nimport ULTool from './tools/ULTool.js';\nimport OLTool from './tools/OLTool.js';\nimport PreviewTool from './tools/PreviewTool.js'\nimport CheckListTool from './tools/CheckListTool.js';\nimport BlockQuoteTool from './tools/BlockQuoteTool.js';\nimport LinkTool from './tools/LinkTool.js'\nimport HeadingTool from './tools/HeadingTool.js';\nimport ImageTool from './tools/ImageTool.js';\n\nclass Toolbar {\n constructor(editor, options) {\n this.editor = editor;\n this.options = options;\n this.toolbar = document.createElement('div');\n this.toolbar.className = 'toolbar flex space-x-1.5 p-1.5 bg-stone-100 dark:bg-stone-800 dark:text-stone-200 border-b border-stone-200 dark:border-stone-700 overflow-x-auto';\n this.init();\n }\n\n init() {\n const toolMapping = {\n heading: HeadingTool,\n ul: ULTool,\n ol: OLTool,\n checklist: CheckListTool,\n bold: BoldTool,\n italic: ItalicTool,\n strikethrough: StrikethroughTool,\n blockquote: BlockQuoteTool,\n link: LinkTool,\n image: ImageTool\n };\n\n // Append all tools except preview\n // this.options.forEach(tool => {\n // if (tool !== 'preview') {\n // const ToolClass = toolMapping[tool];\n // if (ToolClass) {\n // const toolInstance = new ToolClass(this.editor);\n // this.toolbar.appendChild(toolInstance.button); // Directly append to toolbar\n // }\n // }\n // });\n\n this.options.forEach(tool => {\n let ToolClass, config;\n \n if (typeof tool === 'string') {\n ToolClass = toolMapping[tool];\n } else if (typeof tool === 'object') {\n const toolName = Object.keys(tool)[0];\n config = tool[toolName];\n ToolClass = toolMapping[toolName];\n }\n \n if (ToolClass) {\n const toolInstance = new ToolClass(this.editor, config);\n this.toolbar.appendChild(toolInstance.button);\n }\n });\n\n // Append preview button at the end\n if (this.options.includes('preview')) {\n const previewToolInstance = new PreviewTool(this.editor);\n this.toolbar.appendChild(previewToolInstance.button); // Directly append to toolbar at the end\n }\n\n this.editor.editorContainer.insertBefore(this.toolbar, this.editor.markdownEditorDiv);\n }\n}\n\nexport default Toolbar;\n","// markdown\\preview.js\nclass Preview {\n constructor(container) {\n this.previewContainer = document.createElement('div');\n this.previewContainer.className = 'preview-wrapper bg-white dark:bg-stone-900 p-2 hidden';\n this.previewContent = document.createElement('div');\n this.previewContent.className = 'preview-content dark:[scrollbar-color:var(--color-stone-600)_transparent] prose prose-sm md:prose-base dark:prose-invert p-1.5 overflow-y-auto h-[90lvh] max-w-full';\n this.previewContainer.appendChild(this.previewContent);\n container.appendChild(this.previewContainer);\n }\n\n getPreviewContent() {\n return this.previewContent;\n }\n}\n\nexport default Preview;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * marked v15.0.11 - a markdown parser\n * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\n/**\n * Gets the original marked default options.\n */\nfunction _getDefaults() {\n return {\n async: false,\n breaks: false,\n extensions: null,\n gfm: true,\n hooks: null,\n pedantic: false,\n renderer: null,\n silent: false,\n tokenizer: null,\n walkTokens: null,\n };\n}\nlet _defaults = _getDefaults();\nfunction changeDefaults(newDefaults) {\n _defaults = newDefaults;\n}\n\nconst noopTest = { exec: () => null };\nfunction edit(regex, opt = '') {\n let source = typeof regex === 'string' ? regex : regex.source;\n const obj = {\n replace: (name, val) => {\n let valSource = typeof val === 'string' ? val : val.source;\n valSource = valSource.replace(other.caret, '$1');\n source = source.replace(name, valSource);\n return obj;\n },\n getRegex: () => {\n return new RegExp(source, opt);\n },\n };\n return obj;\n}\nconst other = {\n codeRemoveIndent: /^(?: {1,4}| {0,3}\\t)/gm,\n outputLinkReplace: /\\\\([\\[\\]])/g,\n indentCodeCompensation: /^(\\s+)(?:```)/,\n beginningSpace: /^\\s+/,\n endingHash: /#$/,\n startingSpaceChar: /^ /,\n endingSpaceChar: / $/,\n nonSpaceChar: /[^ ]/,\n newLineCharGlobal: /\\n/g,\n tabCharGlobal: /\\t/g,\n multipleSpaceGlobal: /\\s+/g,\n blankLine: /^[ \\t]*$/,\n doubleBlankLine: /\\n[ \\t]*\\n[ \\t]*$/,\n blockquoteStart: /^ {0,3}>/,\n blockquoteSetextReplace: /\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,\n blockquoteSetextReplace2: /^ {0,3}>[ \\t]?/gm,\n listReplaceTabs: /^\\t+/,\n listReplaceNesting: /^ {1,4}(?=( {4})*[^ ])/g,\n listIsTask: /^\\[[ xX]\\] /,\n listReplaceTask: /^\\[[ xX]\\] +/,\n anyLine: /\\n.*\\n/,\n hrefBrackets: /^<(.*)>$/,\n tableDelimiter: /[:|]/,\n tableAlignChars: /^\\||\\| *$/g,\n tableRowBlankLine: /\\n[ \\t]*$/,\n tableAlignRight: /^ *-+: *$/,\n tableAlignCenter: /^ *:-+: *$/,\n tableAlignLeft: /^ *:-+ *$/,\n startATag: /^<a /i,\n endATag: /^<\\/a>/i,\n startPreScriptTag: /^<(pre|code|kbd|script)(\\s|>)/i,\n endPreScriptTag: /^<\\/(pre|code|kbd|script)(\\s|>)/i,\n startAngleBracket: /^</,\n endAngleBracket: />$/,\n pedanticHrefTitle: /^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,\n unicodeAlphaNumeric: /[\\p{L}\\p{N}]/u,\n escapeTest: /[&<>\"']/,\n escapeReplace: /[&<>\"']/g,\n escapeTestNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,\n escapeReplaceNoEncode: /[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,\n unescapeTest: /&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,\n caret: /(^|[^\\[])\\^/g,\n percentDecode: /%25/g,\n findPipe: /\\|/g,\n splitPipe: / \\|/,\n slashPipe: /\\\\\\|/g,\n carriageReturn: /\\r\\n|\\r/g,\n spaceLine: /^ +$/gm,\n notSpaceStart: /^\\S*/,\n endingNewline: /\\n$/,\n listItemRegex: (bull) => new RegExp(`^( {0,3}${bull})((?:[\\t ][^\\\\n]*)?(?:\\\\n|$))`),\n nextBulletRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \\t][^\\\\n]*)?(?:\\\\n|$))`),\n hrRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),\n fencesBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}(?:\\`\\`\\`|~~~)`),\n headingBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}#`),\n htmlBeginRegex: (indent) => new RegExp(`^ {0,${Math.min(3, indent - 1)}}<(?:[a-z].*>|!--)`, 'i'),\n};\n/**\n * Block-Level Grammar\n */\nconst newline = /^(?:[ \\t]*(?:\\n|$))+/;\nconst blockCode = /^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/;\nconst fences = /^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/;\nconst hr = /^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/;\nconst heading = /^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/;\nconst bullet = /(?:[*+-]|\\d{1,9}[.)])/;\nconst lheadingCore = /^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/;\nconst lheading = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/\\|table/g, '') // table not in commonmark\n .getRegex();\nconst lheadingGfm = edit(lheadingCore)\n .replace(/bull/g, bullet) // lists can interrupt\n .replace(/blockCode/g, /(?: {4}| {0,3}\\t)/) // indented code blocks can interrupt\n .replace(/fences/g, / {0,3}(?:`{3,}|~{3,})/) // fenced code blocks can interrupt\n .replace(/blockquote/g, / {0,3}>/) // blockquote can interrupt\n .replace(/heading/g, / {0,3}#{1,6}/) // ATX heading can interrupt\n .replace(/html/g, / {0,3}<[^\\n>]+>\\n/) // block html can interrupt\n .replace(/table/g, / {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/) // table can interrupt\n .getRegex();\nconst _paragraph = /^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/;\nconst blockText = /^[^\\n]+/;\nconst _blockLabel = /(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/;\nconst def = edit(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/)\n .replace('label', _blockLabel)\n .replace('title', /(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/)\n .getRegex();\nconst list = edit(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/)\n .replace(/bull/g, bullet)\n .getRegex();\nconst _tag = 'address|article|aside|base|basefont|blockquote|body|caption'\n + '|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption'\n + '|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe'\n + '|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option'\n + '|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title'\n + '|tr|track|ul';\nconst _comment = /<!--(?:-?>|[\\s\\S]*?(?:-->|$))/;\nconst html = edit('^ {0,3}(?:' // optional indentation\n + '<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)' // (1)\n + '|comment[^\\\\n]*(\\\\n+|$)' // (2)\n + '|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)' // (3)\n + '|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)' // (4)\n + '|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)' // (5)\n + '|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (6)\n + '|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) open tag\n + '|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \\t]*)+\\\\n|$)' // (7) closing tag\n + ')', 'i')\n .replace('comment', _comment)\n .replace('tag', _tag)\n .replace('attribute', / +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst paragraph = edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex();\nconst blockquote = edit(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/)\n .replace('paragraph', paragraph)\n .getRegex();\n/**\n * Normal Block Grammar\n */\nconst blockNormal = {\n blockquote,\n code: blockCode,\n def,\n fences,\n heading,\n hr,\n html,\n lheading,\n list,\n newline,\n paragraph,\n table: noopTest,\n text: blockText,\n};\n/**\n * GFM Block Grammar\n */\nconst gfmTable = edit('^ *([^\\\\n ].*)\\\\n' // Header\n + ' {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)' // Align\n + '(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)') // Cells\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('blockquote', ' {0,3}>')\n .replace('code', '(?: {4}| {0,3}\\t)[^\\\\n]')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // tables can be interrupted by type (6) html blocks\n .getRegex();\nconst blockGfm = {\n ...blockNormal,\n lheading: lheadingGfm,\n table: gfmTable,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' {0,3}#{1,6}(?:\\\\s|$)')\n .replace('|lheading', '') // setext headings don't interrupt commonmark paragraphs\n .replace('table', gfmTable) // interrupt paragraphs with table\n .replace('blockquote', ' {0,3}>')\n .replace('fences', ' {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n')\n .replace('list', ' {0,3}(?:[*+-]|1[.)]) ') // only lists starting from 1 can interrupt\n .replace('html', '</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)')\n .replace('tag', _tag) // pars can be interrupted by type (6) html blocks\n .getRegex(),\n};\n/**\n * Pedantic grammar (original John Gruber's loose markdown specification)\n */\nconst blockPedantic = {\n ...blockNormal,\n html: edit('^ *(?:comment *(?:\\\\n|\\\\s*$)'\n + '|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)' // closed tag\n + '|<tag(?:\"[^\"]*\"|\\'[^\\']*\\'|\\\\s[^\\'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))')\n .replace('comment', _comment)\n .replace(/tag/g, '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub'\n + '|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)'\n + '\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b')\n .getRegex(),\n def: /^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,\n heading: /^(#{1,6})(.*)(?:\\n+|$)/,\n fences: noopTest, // fences not supported\n lheading: /^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,\n paragraph: edit(_paragraph)\n .replace('hr', hr)\n .replace('heading', ' *#{1,6} *[^\\n]')\n .replace('lheading', lheading)\n .replace('|table', '')\n .replace('blockquote', ' {0,3}>')\n .replace('|fences', '')\n .replace('|list', '')\n .replace('|html', '')\n .replace('|tag', '')\n .getRegex(),\n};\n/**\n * Inline-Level Grammar\n */\nconst escape$1 = /^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/;\nconst inlineCode = /^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/;\nconst br = /^( {2,}|\\\\)\\n(?!\\s*$)/;\nconst inlineText = /^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/;\n// list of unicode punctuation marks, plus any missing characters from CommonMark spec\nconst _punctuation = /[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpace = /[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpace = /[^\\s\\p{P}\\p{S}]/u;\nconst punctuation = edit(/^((?![*_])punctSpace)/, 'u')\n .replace(/punctSpace/g, _punctuationOrSpace).getRegex();\n// GFM allows ~ inside strong and em for strikethrough\nconst _punctuationGfmStrongEm = /(?!~)[\\p{P}\\p{S}]/u;\nconst _punctuationOrSpaceGfmStrongEm = /(?!~)[\\s\\p{P}\\p{S}]/u;\nconst _notPunctuationOrSpaceGfmStrongEm = /(?:[^\\s\\p{P}\\p{S}]|~)/u;\n// sequences em should skip over [title](link), `code`, <html>\nconst blockSkip = /\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<[^<>]*?>/g;\nconst emStrongLDelimCore = /^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/;\nconst emStrongLDelim = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongLDelimGfm = edit(emStrongLDelimCore, 'u')\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\nconst emStrongRDelimAstCore = '^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)' // Skip orphan inside strong\n + '|[^*]+(?=[^*])' // Consume to delim\n + '|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)' // (1) #*** can only be a Right Delimiter\n + '|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)' // (2) a***#, a*** can only be a Right Delimiter\n + '|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)' // (3) #***a, ***a can only be Left Delimiter\n + '|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)' // (4) ***# can only be Left Delimiter\n + '|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)' // (5) #***# can be either Left or Right Delimiter\n + '|notPunctSpace(\\\\*+)(?=notPunctSpace)'; // (6) a***a can be either Left or Right Delimiter\nconst emStrongRDelimAst = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst emStrongRDelimAstGfm = edit(emStrongRDelimAstCore, 'gu')\n .replace(/notPunctSpace/g, _notPunctuationOrSpaceGfmStrongEm)\n .replace(/punctSpace/g, _punctuationOrSpaceGfmStrongEm)\n .replace(/punct/g, _punctuationGfmStrongEm)\n .getRegex();\n// (6) Not allowed for _\nconst emStrongRDelimUnd = edit('^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)' // Skip orphan inside strong\n + '|[^_]+(?=[^_])' // Consume to delim\n + '|(?!_)punct(_+)(?=[\\\\s]|$)' // (1) #___ can only be a Right Delimiter\n + '|notPunctSpace(_+)(?!_)(?=punctSpace|$)' // (2) a___#, a___ can only be a Right Delimiter\n + '|(?!_)punctSpace(_+)(?=notPunctSpace)' // (3) #___a, ___a can only be Left Delimiter\n + '|[\\\\s](_+)(?!_)(?=punct)' // (4) ___# can only be Left Delimiter\n + '|(?!_)punct(_+)(?!_)(?=punct)', 'gu') // (5) #___# can be either Left or Right Delimiter\n .replace(/notPunctSpace/g, _notPunctuationOrSpace)\n .replace(/punctSpace/g, _punctuationOrSpace)\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst anyPunctuation = edit(/\\\\(punct)/, 'gu')\n .replace(/punct/g, _punctuation)\n .getRegex();\nconst autolink = edit(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/)\n .replace('scheme', /[a-zA-Z][a-zA-Z0-9+.-]{1,31}/)\n .replace('email', /[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/)\n .getRegex();\nconst _inlineComment = edit(_comment).replace('(?:-->|$)', '-->').getRegex();\nconst tag = edit('^comment'\n + '|^</[a-zA-Z][\\\\w:-]*\\\\s*>' // self-closing tag\n + '|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>' // open tag\n + '|^<\\\\?[\\\\s\\\\S]*?\\\\?>' // processing instruction, e.g. <?php ?>\n + '|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>' // declaration, e.g. <!DOCTYPE html>\n + '|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>') // CDATA section\n .replace('comment', _inlineComment)\n .replace('attribute', /\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/)\n .getRegex();\nconst _inlineLabel = /(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/;\nconst link = edit(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/)\n .replace('label', _inlineLabel)\n .replace('href', /<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/)\n .replace('title', /\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/)\n .getRegex();\nconst reflink = edit(/^!?\\[(label)\\]\\[(ref)\\]/)\n .replace('label', _inlineLabel)\n .replace('ref', _blockLabel)\n .getRegex();\nconst nolink = edit(/^!?\\[(ref)\\](?:\\[\\])?/)\n .replace('ref', _blockLabel)\n .getRegex();\nconst reflinkSearch = edit('reflink|nolink(?!\\\\()', 'g')\n .replace('reflink', reflink)\n .replace('nolink', nolink)\n .getRegex();\n/**\n * Normal Inline Grammar\n */\nconst inlineNormal = {\n _backpedal: noopTest, // only used for GFM url\n anyPunctuation,\n autolink,\n blockSkip,\n br,\n code: inlineCode,\n del: noopTest,\n emStrongLDelim,\n emStrongRDelimAst,\n emStrongRDelimUnd,\n escape: escape$1,\n link,\n nolink,\n punctuation,\n reflink,\n reflinkSearch,\n tag,\n text: inlineText,\n url: noopTest,\n};\n/**\n * Pedantic Inline Grammar\n */\nconst inlinePedantic = {\n ...inlineNormal,\n link: edit(/^!?\\[(label)\\]\\((.*?)\\)/)\n .replace('label', _inlineLabel)\n .getRegex(),\n reflink: edit(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/)\n .replace('label', _inlineLabel)\n .getRegex(),\n};\n/**\n * GFM Inline Grammar\n */\nconst inlineGfm = {\n ...inlineNormal,\n emStrongRDelimAst: emStrongRDelimAstGfm,\n emStrongLDelim: emStrongLDelimGfm,\n url: edit(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/, 'i')\n .replace('email', /[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/)\n .getRegex(),\n _backpedal: /(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,\n del: /^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,\n text: /^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/,\n};\n/**\n * GFM + Line Breaks Inline Grammar\n */\nconst inlineBreaks = {\n ...inlineGfm,\n br: edit(br).replace('{2,}', '*').getRegex(),\n text: edit(inlineGfm.text)\n .replace('\\\\b_', '\\\\b_| {2,}\\\\n')\n .replace(/\\{2,\\}/g, '*')\n .getRegex(),\n};\n/**\n * exports\n */\nconst block = {\n normal: blockNormal,\n gfm: blockGfm,\n pedantic: blockPedantic,\n};\nconst inline = {\n normal: inlineNormal,\n gfm: inlineGfm,\n breaks: inlineBreaks,\n pedantic: inlinePedantic,\n};\n\n/**\n * Helpers\n */\nconst escapeReplacements = {\n '&': '&amp;',\n '<': '&lt;',\n '>': '&gt;',\n '\"': '&quot;',\n \"'\": '&#39;',\n};\nconst getEscapeReplacement = (ch) => escapeReplacements[ch];\nfunction escape(html, encode) {\n if (encode) {\n if (other.escapeTest.test(html)) {\n return html.replace(other.escapeReplace, getEscapeReplacement);\n }\n }\n else {\n if (other.escapeTestNoEncode.test(html)) {\n return html.replace(other.escapeReplaceNoEncode, getEscapeReplacement);\n }\n }\n return html;\n}\nfunction cleanUrl(href) {\n try {\n href = encodeURI(href).replace(other.percentDecode, '%');\n }\n catch {\n return null;\n }\n return href;\n}\nfunction splitCells(tableRow, count) {\n // ensure that every cell-delimiting pipe has a space\n // before it to distinguish it from an escaped pipe\n const row = tableRow.replace(other.findPipe, (match, offset, str) => {\n let escaped = false;\n let curr = offset;\n while (--curr >= 0 && str[curr] === '\\\\')\n escaped = !escaped;\n if (escaped) {\n // odd number of slashes means | is escaped\n // so we leave it alone\n return '|';\n }\n else {\n // add space before unescaped |\n return ' |';\n }\n }), cells = row.split(other.splitPipe);\n let i = 0;\n // First/last cell in a row cannot be empty if it has no leading/trailing pipe\n if (!cells[0].trim()) {\n cells.shift();\n }\n if (cells.length > 0 && !cells.at(-1)?.trim()) {\n cells.pop();\n }\n if (count) {\n if (cells.length > count) {\n cells.splice(count);\n }\n else {\n while (cells.length < count)\n cells.push('');\n }\n }\n for (; i < cells.length; i++) {\n // leading or trailing whitespace is ignored per the gfm spec\n cells[i] = cells[i].trim().replace(other.slashPipe, '|');\n }\n return cells;\n}\n/**\n * Remove trailing 'c's. Equivalent to str.replace(/c*$/, '').\n * /c*$/ is vulnerable to REDOS.\n *\n * @param str\n * @param c\n * @param invert Remove suffix of non-c chars instead. Default falsey.\n */\nfunction rtrim(str, c, invert) {\n const l = str.length;\n if (l === 0) {\n return '';\n }\n // Length of suffix matching the invert condition.\n let suffLen = 0;\n // Step left until we fail to match the invert condition.\n while (suffLen < l) {\n const currChar = str.charAt(l - suffLen - 1);\n if (currChar === c && true) {\n suffLen++;\n }\n else {\n break;\n }\n }\n return str.slice(0, l - suffLen);\n}\nfunction findClosingBracket(str, b) {\n if (str.indexOf(b[1]) === -1) {\n return -1;\n }\n let level = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] === '\\\\') {\n i++;\n }\n else if (str[i] === b[0]) {\n level++;\n }\n else if (str[i] === b[1]) {\n level--;\n if (level < 0) {\n return i;\n }\n }\n }\n if (level > 0) {\n return -2;\n }\n return -1;\n}\n\nfunction outputLink(cap, link, raw, lexer, rules) {\n const href = link.href;\n const title = link.title || null;\n const text = cap[1].replace(rules.other.outputLinkReplace, '$1');\n lexer.state.inLink = true;\n const token = {\n type: cap[0].charAt(0) === '!' ? 'image' : 'link',\n raw,\n href,\n title,\n text,\n tokens: lexer.inlineTokens(text),\n };\n lexer.state.inLink = false;\n return token;\n}\nfunction indentCodeCompensation(raw, text, rules) {\n const matchIndentToCode = raw.match(rules.other.indentCodeCompensation);\n if (matchIndentToCode === null) {\n return text;\n }\n const indentToCode = matchIndentToCode[1];\n return text\n .split('\\n')\n .map(node => {\n const matchIndentInNode = node.match(rules.other.beginningSpace);\n if (matchIndentInNode === null) {\n return node;\n }\n const [indentInNode] = matchIndentInNode;\n if (indentInNode.length >= indentToCode.length) {\n return node.slice(indentToCode.length);\n }\n return node;\n })\n .join('\\n');\n}\n/**\n * Tokenizer\n */\nclass _Tokenizer {\n options;\n rules; // set by the lexer\n lexer; // set by the lexer\n constructor(options) {\n this.options = options || _defaults;\n }\n space(src) {\n const cap = this.rules.block.newline.exec(src);\n if (cap && cap[0].length > 0) {\n return {\n type: 'space',\n raw: cap[0],\n };\n }\n }\n code(src) {\n const cap = this.rules.block.code.exec(src);\n if (cap) {\n const text = cap[0].replace(this.rules.other.codeRemoveIndent, '');\n return {\n type: 'code',\n raw: cap[0],\n codeBlockStyle: 'indented',\n text: !this.options.pedantic\n ? rtrim(text, '\\n')\n : text,\n };\n }\n }\n fences(src) {\n const cap = this.rules.block.fences.exec(src);\n if (cap) {\n const raw = cap[0];\n const text = indentCodeCompensation(raw, cap[3] || '', this.rules);\n return {\n type: 'code',\n raw,\n lang: cap[2] ? cap[2].trim().replace(this.rules.inline.anyPunctuation, '$1') : cap[2],\n text,\n };\n }\n }\n heading(src) {\n const cap = this.rules.block.heading.exec(src);\n if (cap) {\n let text = cap[2].trim();\n // remove trailing #s\n if (this.rules.other.endingHash.test(text)) {\n const trimmed = rtrim(text, '#');\n if (this.options.pedantic) {\n text = trimmed.trim();\n }\n else if (!trimmed || this.rules.other.endingSpaceChar.test(trimmed)) {\n // CommonMark requires space before trailing #s\n text = trimmed.trim();\n }\n }\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[1].length,\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n hr(src) {\n const cap = this.rules.block.hr.exec(src);\n if (cap) {\n return {\n type: 'hr',\n raw: rtrim(cap[0], '\\n'),\n };\n }\n }\n blockquote(src) {\n const cap = this.rules.block.blockquote.exec(src);\n if (cap) {\n let lines = rtrim(cap[0], '\\n').split('\\n');\n let raw = '';\n let text = '';\n const tokens = [];\n while (lines.length > 0) {\n let inBlockquote = false;\n const currentLines = [];\n let i;\n for (i = 0; i < lines.length; i++) {\n // get lines up to a continuation\n if (this.rules.other.blockquoteStart.test(lines[i])) {\n currentLines.push(lines[i]);\n inBlockquote = true;\n }\n else if (!inBlockquote) {\n currentLines.push(lines[i]);\n }\n else {\n break;\n }\n }\n lines = lines.slice(i);\n const currentRaw = currentLines.join('\\n');\n const currentText = currentRaw\n // precede setext continuation with 4 spaces so it isn't a setext\n .replace(this.rules.other.blockquoteSetextReplace, '\\n $1')\n .replace(this.rules.other.blockquoteSetextReplace2, '');\n raw = raw ? `${raw}\\n${currentRaw}` : currentRaw;\n text = text ? `${text}\\n${currentText}` : currentText;\n // parse blockquote lines as top level tokens\n // merge paragraphs if this is a continuation\n const top = this.lexer.state.top;\n this.lexer.state.top = true;\n this.lexer.blockTokens(currentText, tokens, true);\n this.lexer.state.top = top;\n // if there is no continuation then we are done\n if (lines.length === 0) {\n break;\n }\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'code') {\n // blockquote continuation cannot be preceded by a code block\n break;\n }\n else if (lastToken?.type === 'blockquote') {\n // include continuation in nested blockquote\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.blockquote(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - oldToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.text.length) + newToken.text;\n break;\n }\n else if (lastToken?.type === 'list') {\n // include continuation in nested list\n const oldToken = lastToken;\n const newText = oldToken.raw + '\\n' + lines.join('\\n');\n const newToken = this.list(newText);\n tokens[tokens.length - 1] = newToken;\n raw = raw.substring(0, raw.length - lastToken.raw.length) + newToken.raw;\n text = text.substring(0, text.length - oldToken.raw.length) + newToken.raw;\n lines = newText.substring(tokens.at(-1).raw.length).split('\\n');\n continue;\n }\n }\n return {\n type: 'blockquote',\n raw,\n tokens,\n text,\n };\n }\n }\n list(src) {\n let cap = this.rules.block.list.exec(src);\n if (cap) {\n let bull = cap[1].trim();\n const isordered = bull.length > 1;\n const list = {\n type: 'list',\n raw: '',\n ordered: isordered,\n start: isordered ? +bull.slice(0, -1) : '',\n loose: false,\n items: [],\n };\n bull = isordered ? `\\\\d{1,9}\\\\${bull.slice(-1)}` : `\\\\${bull}`;\n if (this.options.pedantic) {\n bull = isordered ? bull : '[*+-]';\n }\n // Get next list item\n const itemRegex = this.rules.other.listItemRegex(bull);\n let endsWithBlankLine = false;\n // Check if current bullet point can start a new List Item\n while (src) {\n let endEarly = false;\n let raw = '';\n let itemContents = '';\n if (!(cap = itemRegex.exec(src))) {\n break;\n }\n if (this.rules.block.hr.test(src)) { // End list if bullet was actually HR (possibly move into itemRegex?)\n break;\n }\n raw = cap[0];\n src = src.substring(raw.length);\n let line = cap[2].split('\\n', 1)[0].replace(this.rules.other.listReplaceTabs, (t) => ' '.repeat(3 * t.length));\n let nextLine = src.split('\\n', 1)[0];\n let blankLine = !line.trim();\n let indent = 0;\n if (this.options.pedantic) {\n indent = 2;\n itemContents = line.trimStart();\n }\n else if (blankLine) {\n indent = cap[1].length + 1;\n }\n else {\n indent = cap[2].search(this.rules.other.nonSpaceChar); // Find first non-space char\n indent = indent > 4 ? 1 : indent; // Treat indented code blocks (> 4 spaces) as having only 1 indent\n itemContents = line.slice(indent);\n indent += cap[1].length;\n }\n if (blankLine && this.rules.other.blankLine.test(nextLine)) { // Items begin with at most one blank line\n raw += nextLine + '\\n';\n src = src.substring(nextLine.length + 1);\n endEarly = true;\n }\n if (!endEarly) {\n const nextBulletRegex = this.rules.other.nextBulletRegex(indent);\n const hrRegex = this.rules.other.hrRegex(indent);\n const fencesBeginRegex = this.rules.other.fencesBeginRegex(indent);\n const headingBeginRegex = this.rules.other.headingBeginRegex(indent);\n const htmlBeginRegex = this.rules.other.htmlBeginRegex(indent);\n // Check if following lines should be included in List Item\n while (src) {\n const rawLine = src.split('\\n', 1)[0];\n let nextLineWithoutTabs;\n nextLine = rawLine;\n // Re-align to follow commonmark nesting rules\n if (this.options.pedantic) {\n nextLine = nextLine.replace(this.rules.other.listReplaceNesting, ' ');\n nextLineWithoutTabs = nextLine;\n }\n else {\n nextLineWithoutTabs = nextLine.replace(this.rules.other.tabCharGlobal, ' ');\n }\n // End list item if found code fences\n if (fencesBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new heading\n if (headingBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of html block\n if (htmlBeginRegex.test(nextLine)) {\n break;\n }\n // End list item if found start of new bullet\n if (nextBulletRegex.test(nextLine)) {\n break;\n }\n // Horizontal rule found\n if (hrRegex.test(nextLine)) {\n break;\n }\n if (nextLineWithoutTabs.search(this.rules.other.nonSpaceChar) >= indent || !nextLine.trim()) { // Dedent if possible\n itemContents += '\\n' + nextLineWithoutTabs.slice(indent);\n }\n else {\n // not enough indentation\n if (blankLine) {\n break;\n }\n // paragraph continuation unless last line was a different block level element\n if (line.replace(this.rules.other.tabCharGlobal, ' ').search(this.rules.other.nonSpaceChar) >= 4) { // indented code block\n break;\n }\n if (fencesBeginRegex.test(line)) {\n break;\n }\n if (headingBeginRegex.test(line)) {\n break;\n }\n if (hrRegex.test(line)) {\n break;\n }\n itemContents += '\\n' + nextLine;\n }\n if (!blankLine && !nextLine.trim()) { // Check if current line is blank\n blankLine = true;\n }\n raw += rawLine + '\\n';\n src = src.substring(rawLine.length + 1);\n line = nextLineWithoutTabs.slice(indent);\n }\n }\n if (!list.loose) {\n // If the previous item ended with a blank line, the list is loose\n if (endsWithBlankLine) {\n list.loose = true;\n }\n else if (this.rules.other.doubleBlankLine.test(raw)) {\n endsWithBlankLine = true;\n }\n }\n let istask = null;\n let ischecked;\n // Check for task list items\n if (this.options.gfm) {\n istask = this.rules.other.listIsTask.exec(itemContents);\n if (istask) {\n ischecked = istask[0] !== '[ ] ';\n itemContents = itemContents.replace(this.rules.other.listReplaceTask, '');\n }\n }\n list.items.push({\n type: 'list_item',\n raw,\n task: !!istask,\n checked: ischecked,\n loose: false,\n text: itemContents,\n tokens: [],\n });\n list.raw += raw;\n }\n // Do not consume newlines at end of final item. Alternatively, make itemRegex *start* with any newlines to simplify/speed up endsWithBlankLine logic\n const lastItem = list.items.at(-1);\n if (lastItem) {\n lastItem.raw = lastItem.raw.trimEnd();\n lastItem.text = lastItem.text.trimEnd();\n }\n else {\n // not a list since there were no items\n return;\n }\n list.raw = list.raw.trimEnd();\n // Item child tokens handled here at end because we needed to have the final item to trim it first\n for (let i = 0; i < list.items.length; i++) {\n this.lexer.state.top = false;\n list.items[i].tokens = this.lexer.blockTokens(list.items[i].text, []);\n if (!list.loose) {\n // Check if list should be loose\n const spacers = list.items[i].tokens.filter(t => t.type === 'space');\n const hasMultipleLineBreaks = spacers.length > 0 && spacers.some(t => this.rules.other.anyLine.test(t.raw));\n list.loose = hasMultipleLineBreaks;\n }\n }\n // Set all items to loose if list is loose\n if (list.loose) {\n for (let i = 0; i < list.items.length; i++) {\n list.items[i].loose = true;\n }\n }\n return list;\n }\n }\n html(src) {\n const cap = this.rules.block.html.exec(src);\n if (cap) {\n const token = {\n type: 'html',\n block: true,\n raw: cap[0],\n pre: cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style',\n text: cap[0],\n };\n return token;\n }\n }\n def(src) {\n const cap = this.rules.block.def.exec(src);\n if (cap) {\n const tag = cap[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal, ' ');\n const href = cap[2] ? cap[2].replace(this.rules.other.hrefBrackets, '$1').replace(this.rules.inline.anyPunctuation, '$1') : '';\n const title = cap[3] ? cap[3].substring(1, cap[3].length - 1).replace(this.rules.inline.anyPunctuation, '$1') : cap[3];\n return {\n type: 'def',\n tag,\n raw: cap[0],\n href,\n title,\n };\n }\n }\n table(src) {\n const cap = this.rules.block.table.exec(src);\n if (!cap) {\n return;\n }\n if (!this.rules.other.tableDelimiter.test(cap[2])) {\n // delimiter row must have a pipe (|) or colon (:) otherwise it is a setext heading\n return;\n }\n const headers = splitCells(cap[1]);\n const aligns = cap[2].replace(this.rules.other.tableAlignChars, '').split('|');\n const rows = cap[3]?.trim() ? cap[3].replace(this.rules.other.tableRowBlankLine, '').split('\\n') : [];\n const item = {\n type: 'table',\n raw: cap[0],\n header: [],\n align: [],\n rows: [],\n };\n if (headers.length !== aligns.length) {\n // header and align columns must be equal, rows can be different.\n return;\n }\n for (const align of aligns) {\n if (this.rules.other.tableAlignRight.test(align)) {\n item.align.push('right');\n }\n else if (this.rules.other.tableAlignCenter.test(align)) {\n item.align.push('center');\n }\n else if (this.rules.other.tableAlignLeft.test(align)) {\n item.align.push('left');\n }\n else {\n item.align.push(null);\n }\n }\n for (let i = 0; i < headers.length; i++) {\n item.header.push({\n text: headers[i],\n tokens: this.lexer.inline(headers[i]),\n header: true,\n align: item.align[i],\n });\n }\n for (const row of rows) {\n item.rows.push(splitCells(row, item.header.length).map((cell, i) => {\n return {\n text: cell,\n tokens: this.lexer.inline(cell),\n header: false,\n align: item.align[i],\n };\n }));\n }\n return item;\n }\n lheading(src) {\n const cap = this.rules.block.lheading.exec(src);\n if (cap) {\n return {\n type: 'heading',\n raw: cap[0],\n depth: cap[2].charAt(0) === '=' ? 1 : 2,\n text: cap[1],\n tokens: this.lexer.inline(cap[1]),\n };\n }\n }\n paragraph(src) {\n const cap = this.rules.block.paragraph.exec(src);\n if (cap) {\n const text = cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1];\n return {\n type: 'paragraph',\n raw: cap[0],\n text,\n tokens: this.lexer.inline(text),\n };\n }\n }\n text(src) {\n const cap = this.rules.block.text.exec(src);\n if (cap) {\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n tokens: this.lexer.inline(cap[0]),\n };\n }\n }\n escape(src) {\n const cap = this.rules.inline.escape.exec(src);\n if (cap) {\n return {\n type: 'escape',\n raw: cap[0],\n text: cap[1],\n };\n }\n }\n tag(src) {\n const cap = this.rules.inline.tag.exec(src);\n if (cap) {\n if (!this.lexer.state.inLink && this.rules.other.startATag.test(cap[0])) {\n this.lexer.state.inLink = true;\n }\n else if (this.lexer.state.inLink && this.rules.other.endATag.test(cap[0])) {\n this.lexer.state.inLink = false;\n }\n if (!this.lexer.state.inRawBlock && this.rules.other.startPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = true;\n }\n else if (this.lexer.state.inRawBlock && this.rules.other.endPreScriptTag.test(cap[0])) {\n this.lexer.state.inRawBlock = false;\n }\n return {\n type: 'html',\n raw: cap[0],\n inLink: this.lexer.state.inLink,\n inRawBlock: this.lexer.state.inRawBlock,\n block: false,\n text: cap[0],\n };\n }\n }\n link(src) {\n const cap = this.rules.inline.link.exec(src);\n if (cap) {\n const trimmedUrl = cap[2].trim();\n if (!this.options.pedantic && this.rules.other.startAngleBracket.test(trimmedUrl)) {\n // commonmark requires matching angle brackets\n if (!(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n return;\n }\n // ending angle bracket cannot be escaped\n const rtrimSlash = rtrim(trimmedUrl.slice(0, -1), '\\\\');\n if ((trimmedUrl.length - rtrimSlash.length) % 2 === 0) {\n return;\n }\n }\n else {\n // find closing parenthesis\n const lastParenIndex = findClosingBracket(cap[2], '()');\n if (lastParenIndex === -2) {\n // more open parens than closed\n return;\n }\n if (lastParenIndex > -1) {\n const start = cap[0].indexOf('!') === 0 ? 5 : 4;\n const linkLen = start + cap[1].length + lastParenIndex;\n cap[2] = cap[2].substring(0, lastParenIndex);\n cap[0] = cap[0].substring(0, linkLen).trim();\n cap[3] = '';\n }\n }\n let href = cap[2];\n let title = '';\n if (this.options.pedantic) {\n // split pedantic href and title\n const link = this.rules.other.pedanticHrefTitle.exec(href);\n if (link) {\n href = link[1];\n title = link[3];\n }\n }\n else {\n title = cap[3] ? cap[3].slice(1, -1) : '';\n }\n href = href.trim();\n if (this.rules.other.startAngleBracket.test(href)) {\n if (this.options.pedantic && !(this.rules.other.endAngleBracket.test(trimmedUrl))) {\n // pedantic allows starting angle bracket without ending angle bracket\n href = href.slice(1);\n }\n else {\n href = href.slice(1, -1);\n }\n }\n return outputLink(cap, {\n href: href ? href.replace(this.rules.inline.anyPunctuation, '$1') : href,\n title: title ? title.replace(this.rules.inline.anyPunctuation, '$1') : title,\n }, cap[0], this.lexer, this.rules);\n }\n }\n reflink(src, links) {\n let cap;\n if ((cap = this.rules.inline.reflink.exec(src))\n || (cap = this.rules.inline.nolink.exec(src))) {\n const linkString = (cap[2] || cap[1]).replace(this.rules.other.multipleSpaceGlobal, ' ');\n const link = links[linkString.toLowerCase()];\n if (!link) {\n const text = cap[0].charAt(0);\n return {\n type: 'text',\n raw: text,\n text,\n };\n }\n return outputLink(cap, link, cap[0], this.lexer, this.rules);\n }\n }\n emStrong(src, maskedSrc, prevChar = '') {\n let match = this.rules.inline.emStrongLDelim.exec(src);\n if (!match)\n return;\n // _ can't be between two alphanumerics. \\p{L}\\p{N} includes non-english alphabet/numbers as well\n if (match[3] && prevChar.match(this.rules.other.unicodeAlphaNumeric))\n return;\n const nextChar = match[1] || match[2] || '';\n if (!nextChar || !prevChar || this.rules.inline.punctuation.exec(prevChar)) {\n // unicode Regex counts emoji as 1 char; spread into array for proper count (used multiple times below)\n const lLength = [...match[0]].length - 1;\n let rDelim, rLength, delimTotal = lLength, midDelimTotal = 0;\n const endReg = match[0][0] === '*' ? this.rules.inline.emStrongRDelimAst : this.rules.inline.emStrongRDelimUnd;\n endReg.lastIndex = 0;\n // Clip maskedSrc to same section of string as src (move to lexer?)\n maskedSrc = maskedSrc.slice(-1 * src.length + lLength);\n while ((match = endReg.exec(maskedSrc)) != null) {\n rDelim = match[1] || match[2] || match[3] || match[4] || match[5] || match[6];\n if (!rDelim)\n continue; // skip single * in __abc*abc__\n rLength = [...rDelim].length;\n if (match[3] || match[4]) { // found another Left Delim\n delimTotal += rLength;\n continue;\n }\n else if (match[5] || match[6]) { // either Left or Right Delim\n if (lLength % 3 && !((lLength + rLength) % 3)) {\n midDelimTotal += rLength;\n continue; // CommonMark Emphasis Rules 9-10\n }\n }\n delimTotal -= rLength;\n if (delimTotal > 0)\n continue; // Haven't found enough closing delimiters\n // Remove extra characters. *a*** -> *a*\n rLength = Math.min(rLength, rLength + delimTotal + midDelimTotal);\n // char length can be >1 for unicode characters;\n const lastCharLength = [...match[0]][0].length;\n const raw = src.slice(0, lLength + match.index + lastCharLength + rLength);\n // Create `em` if smallest delimiter has odd char count. *a***\n if (Math.min(lLength, rLength) % 2) {\n const text = raw.slice(1, -1);\n return {\n type: 'em',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n // Create 'strong' if smallest delimiter has even char count. **a***\n const text = raw.slice(2, -2);\n return {\n type: 'strong',\n raw,\n text,\n tokens: this.lexer.inlineTokens(text),\n };\n }\n }\n }\n codespan(src) {\n const cap = this.rules.inline.code.exec(src);\n if (cap) {\n let text = cap[2].replace(this.rules.other.newLineCharGlobal, ' ');\n const hasNonSpaceChars = this.rules.other.nonSpaceChar.test(text);\n const hasSpaceCharsOnBothEnds = this.rules.other.startingSpaceChar.test(text) && this.rules.other.endingSpaceChar.test(text);\n if (hasNonSpaceChars && hasSpaceCharsOnBothEnds) {\n text = text.substring(1, text.length - 1);\n }\n return {\n type: 'codespan',\n raw: cap[0],\n text,\n };\n }\n }\n br(src) {\n const cap = this.rules.inline.br.exec(src);\n if (cap) {\n return {\n type: 'br',\n raw: cap[0],\n };\n }\n }\n del(src) {\n const cap = this.rules.inline.del.exec(src);\n if (cap) {\n return {\n type: 'del',\n raw: cap[0],\n text: cap[2],\n tokens: this.lexer.inlineTokens(cap[2]),\n };\n }\n }\n autolink(src) {\n const cap = this.rules.inline.autolink.exec(src);\n if (cap) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[1];\n href = 'mailto:' + text;\n }\n else {\n text = cap[1];\n href = text;\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n url(src) {\n let cap;\n if (cap = this.rules.inline.url.exec(src)) {\n let text, href;\n if (cap[2] === '@') {\n text = cap[0];\n href = 'mailto:' + text;\n }\n else {\n // do extended autolink path validation\n let prevCapZero;\n do {\n prevCapZero = cap[0];\n cap[0] = this.rules.inline._backpedal.exec(cap[0])?.[0] ?? '';\n } while (prevCapZero !== cap[0]);\n text = cap[0];\n if (cap[1] === 'www.') {\n href = 'http://' + cap[0];\n }\n else {\n href = cap[0];\n }\n }\n return {\n type: 'link',\n raw: cap[0],\n text,\n href,\n tokens: [\n {\n type: 'text',\n raw: text,\n text,\n },\n ],\n };\n }\n }\n inlineText(src) {\n const cap = this.rules.inline.text.exec(src);\n if (cap) {\n const escaped = this.lexer.state.inRawBlock;\n return {\n type: 'text',\n raw: cap[0],\n text: cap[0],\n escaped,\n };\n }\n }\n}\n\n/**\n * Block Lexer\n */\nclass _Lexer {\n tokens;\n options;\n state;\n tokenizer;\n inlineQueue;\n constructor(options) {\n // TokenList cannot be created in one go\n this.tokens = [];\n this.tokens.links = Object.create(null);\n this.options = options || _defaults;\n this.options.tokenizer = this.options.tokenizer || new _Tokenizer();\n this.tokenizer = this.options.tokenizer;\n this.tokenizer.options = this.options;\n this.tokenizer.lexer = this;\n this.inlineQueue = [];\n this.state = {\n inLink: false,\n inRawBlock: false,\n top: true,\n };\n const rules = {\n other,\n block: block.normal,\n inline: inline.normal,\n };\n if (this.options.pedantic) {\n rules.block = block.pedantic;\n rules.inline = inline.pedantic;\n }\n else if (this.options.gfm) {\n rules.block = block.gfm;\n if (this.options.breaks) {\n rules.inline = inline.breaks;\n }\n else {\n rules.inline = inline.gfm;\n }\n }\n this.tokenizer.rules = rules;\n }\n /**\n * Expose Rules\n */\n static get rules() {\n return {\n block,\n inline,\n };\n }\n /**\n * Static Lex Method\n */\n static lex(src, options) {\n const lexer = new _Lexer(options);\n return lexer.lex(src);\n }\n /**\n * Static Lex Inline Method\n */\n static lexInline(src, options) {\n const lexer = new _Lexer(options);\n return lexer.inlineTokens(src);\n }\n /**\n * Preprocessing\n */\n lex(src) {\n src = src.replace(other.carriageReturn, '\\n');\n this.blockTokens(src, this.tokens);\n for (let i = 0; i < this.inlineQueue.length; i++) {\n const next = this.inlineQueue[i];\n this.inlineTokens(next.src, next.tokens);\n }\n this.inlineQueue = [];\n return this.tokens;\n }\n blockTokens(src, tokens = [], lastParagraphClipped = false) {\n if (this.options.pedantic) {\n src = src.replace(other.tabCharGlobal, ' ').replace(other.spaceLine, '');\n }\n while (src) {\n let token;\n if (this.options.extensions?.block?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // newline\n if (token = this.tokenizer.space(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.raw.length === 1 && lastToken !== undefined) {\n // if there's a single \\n as a spacer, it's terminating the last line,\n // so move it there so that we don't get unnecessary paragraph tags\n lastToken.raw += '\\n';\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // code\n if (token = this.tokenizer.code(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n // An indented code block cannot interrupt a paragraph.\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.at(-1).src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // fences\n if (token = this.tokenizer.fences(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // heading\n if (token = this.tokenizer.heading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // hr\n if (token = this.tokenizer.hr(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // blockquote\n if (token = this.tokenizer.blockquote(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // list\n if (token = this.tokenizer.list(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // html\n if (token = this.tokenizer.html(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // def\n if (token = this.tokenizer.def(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'paragraph' || lastToken?.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.raw;\n this.inlineQueue.at(-1).src = lastToken.text;\n }\n else if (!this.tokens.links[token.tag]) {\n this.tokens.links[token.tag] = {\n href: token.href,\n title: token.title,\n };\n }\n continue;\n }\n // table (gfm)\n if (token = this.tokenizer.table(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // lheading\n if (token = this.tokenizer.lheading(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // top-level paragraph\n // prevent paragraph consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startBlock) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startBlock.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (this.state.top && (token = this.tokenizer.paragraph(cutSrc))) {\n const lastToken = tokens.at(-1);\n if (lastParagraphClipped && lastToken?.type === 'paragraph') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n lastParagraphClipped = cutSrc.length !== src.length;\n src = src.substring(token.raw.length);\n continue;\n }\n // text\n if (token = this.tokenizer.text(src)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += '\\n' + token.raw;\n lastToken.text += '\\n' + token.text;\n this.inlineQueue.pop();\n this.inlineQueue.at(-1).src = lastToken.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n this.state.top = true;\n return tokens;\n }\n inline(src, tokens = []) {\n this.inlineQueue.push({ src, tokens });\n return tokens;\n }\n /**\n * Lexing/Compiling\n */\n inlineTokens(src, tokens = []) {\n // String with links masked to avoid interference with em and strong\n let maskedSrc = src;\n let match = null;\n // Mask out reflinks\n if (this.tokens.links) {\n const links = Object.keys(this.tokens.links);\n if (links.length > 0) {\n while ((match = this.tokenizer.rules.inline.reflinkSearch.exec(maskedSrc)) != null) {\n if (links.includes(match[0].slice(match[0].lastIndexOf('[') + 1, -1))) {\n maskedSrc = maskedSrc.slice(0, match.index)\n + '[' + 'a'.repeat(match[0].length - 2) + ']'\n + maskedSrc.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex);\n }\n }\n }\n }\n // Mask out escaped characters\n while ((match = this.tokenizer.rules.inline.anyPunctuation.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '++' + maskedSrc.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);\n }\n // Mask out other blocks\n while ((match = this.tokenizer.rules.inline.blockSkip.exec(maskedSrc)) != null) {\n maskedSrc = maskedSrc.slice(0, match.index) + '[' + 'a'.repeat(match[0].length - 2) + ']' + maskedSrc.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);\n }\n let keepPrevChar = false;\n let prevChar = '';\n while (src) {\n if (!keepPrevChar) {\n prevChar = '';\n }\n keepPrevChar = false;\n let token;\n // extensions\n if (this.options.extensions?.inline?.some((extTokenizer) => {\n if (token = extTokenizer.call({ lexer: this }, src, tokens)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n return true;\n }\n return false;\n })) {\n continue;\n }\n // escape\n if (token = this.tokenizer.escape(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // tag\n if (token = this.tokenizer.tag(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // link\n if (token = this.tokenizer.link(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // reflink, nolink\n if (token = this.tokenizer.reflink(src, this.tokens.links)) {\n src = src.substring(token.raw.length);\n const lastToken = tokens.at(-1);\n if (token.type === 'text' && lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n // em & strong\n if (token = this.tokenizer.emStrong(src, maskedSrc, prevChar)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // code\n if (token = this.tokenizer.codespan(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // br\n if (token = this.tokenizer.br(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // del (gfm)\n if (token = this.tokenizer.del(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // autolink\n if (token = this.tokenizer.autolink(src)) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // url (gfm)\n if (!this.state.inLink && (token = this.tokenizer.url(src))) {\n src = src.substring(token.raw.length);\n tokens.push(token);\n continue;\n }\n // text\n // prevent inlineText consuming extensions by clipping 'src' to extension start\n let cutSrc = src;\n if (this.options.extensions?.startInline) {\n let startIndex = Infinity;\n const tempSrc = src.slice(1);\n let tempStart;\n this.options.extensions.startInline.forEach((getStartIndex) => {\n tempStart = getStartIndex.call({ lexer: this }, tempSrc);\n if (typeof tempStart === 'number' && tempStart >= 0) {\n startIndex = Math.min(startIndex, tempStart);\n }\n });\n if (startIndex < Infinity && startIndex >= 0) {\n cutSrc = src.substring(0, startIndex + 1);\n }\n }\n if (token = this.tokenizer.inlineText(cutSrc)) {\n src = src.substring(token.raw.length);\n if (token.raw.slice(-1) !== '_') { // Track prevChar before string of ____ started\n prevChar = token.raw.slice(-1);\n }\n keepPrevChar = true;\n const lastToken = tokens.at(-1);\n if (lastToken?.type === 'text') {\n lastToken.raw += token.raw;\n lastToken.text += token.text;\n }\n else {\n tokens.push(token);\n }\n continue;\n }\n if (src) {\n const errMsg = 'Infinite loop on byte: ' + src.charCodeAt(0);\n if (this.options.silent) {\n console.error(errMsg);\n break;\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n return tokens;\n }\n}\n\n/**\n * Renderer\n */\nclass _Renderer {\n options;\n parser; // set by the parser\n constructor(options) {\n this.options = options || _defaults;\n }\n space(token) {\n return '';\n }\n code({ text, lang, escaped }) {\n const langString = (lang || '').match(other.notSpaceStart)?.[0];\n const code = text.replace(other.endingNewline, '') + '\\n';\n if (!langString) {\n return '<pre><code>'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n return '<pre><code class=\"language-'\n + escape(langString)\n + '\">'\n + (escaped ? code : escape(code, true))\n + '</code></pre>\\n';\n }\n blockquote({ tokens }) {\n const body = this.parser.parse(tokens);\n return `<blockquote>\\n${body}</blockquote>\\n`;\n }\n html({ text }) {\n return text;\n }\n heading({ tokens, depth }) {\n return `<h${depth}>${this.parser.parseInline(tokens)}</h${depth}>\\n`;\n }\n hr(token) {\n return '<hr>\\n';\n }\n list(token) {\n const ordered = token.ordered;\n const start = token.start;\n let body = '';\n for (let j = 0; j < token.items.length; j++) {\n const item = token.items[j];\n body += this.listitem(item);\n }\n const type = ordered ? 'ol' : 'ul';\n const startAttr = (ordered && start !== 1) ? (' start=\"' + start + '\"') : '';\n return '<' + type + startAttr + '>\\n' + body + '</' + type + '>\\n';\n }\n listitem(item) {\n let itemBody = '';\n if (item.task) {\n const checkbox = this.checkbox({ checked: !!item.checked });\n if (item.loose) {\n if (item.tokens[0]?.type === 'paragraph') {\n item.tokens[0].text = checkbox + ' ' + item.tokens[0].text;\n if (item.tokens[0].tokens && item.tokens[0].tokens.length > 0 && item.tokens[0].tokens[0].type === 'text') {\n item.tokens[0].tokens[0].text = checkbox + ' ' + escape(item.tokens[0].tokens[0].text);\n item.tokens[0].tokens[0].escaped = true;\n }\n }\n else {\n item.tokens.unshift({\n type: 'text',\n raw: checkbox + ' ',\n text: checkbox + ' ',\n escaped: true,\n });\n }\n }\n else {\n itemBody += checkbox + ' ';\n }\n }\n itemBody += this.parser.parse(item.tokens, !!item.loose);\n return `<li>${itemBody}</li>\\n`;\n }\n checkbox({ checked }) {\n return '<input '\n + (checked ? 'checked=\"\" ' : '')\n + 'disabled=\"\" type=\"checkbox\">';\n }\n paragraph({ tokens }) {\n return `<p>${this.parser.parseInline(tokens)}</p>\\n`;\n }\n table(token) {\n let header = '';\n // header\n let cell = '';\n for (let j = 0; j < token.header.length; j++) {\n cell += this.tablecell(token.header[j]);\n }\n header += this.tablerow({ text: cell });\n let body = '';\n for (let j = 0; j < token.rows.length; j++) {\n const row = token.rows[j];\n cell = '';\n for (let k = 0; k < row.length; k++) {\n cell += this.tablecell(row[k]);\n }\n body += this.tablerow({ text: cell });\n }\n if (body)\n body = `<tbody>${body}</tbody>`;\n return '<table>\\n'\n + '<thead>\\n'\n + header\n + '</thead>\\n'\n + body\n + '</table>\\n';\n }\n tablerow({ text }) {\n return `<tr>\\n${text}</tr>\\n`;\n }\n tablecell(token) {\n const content = this.parser.parseInline(token.tokens);\n const type = token.header ? 'th' : 'td';\n const tag = token.align\n ? `<${type} align=\"${token.align}\">`\n : `<${type}>`;\n return tag + content + `</${type}>\\n`;\n }\n /**\n * span level renderer\n */\n strong({ tokens }) {\n return `<strong>${this.parser.parseInline(tokens)}</strong>`;\n }\n em({ tokens }) {\n return `<em>${this.parser.parseInline(tokens)}</em>`;\n }\n codespan({ text }) {\n return `<code>${escape(text, true)}</code>`;\n }\n br(token) {\n return '<br>';\n }\n del({ tokens }) {\n return `<del>${this.parser.parseInline(tokens)}</del>`;\n }\n link({ href, title, tokens }) {\n const text = this.parser.parseInline(tokens);\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return text;\n }\n href = cleanHref;\n let out = '<a href=\"' + href + '\"';\n if (title) {\n out += ' title=\"' + (escape(title)) + '\"';\n }\n out += '>' + text + '</a>';\n return out;\n }\n image({ href, title, text, tokens }) {\n if (tokens) {\n text = this.parser.parseInline(tokens, this.parser.textRenderer);\n }\n const cleanHref = cleanUrl(href);\n if (cleanHref === null) {\n return escape(text);\n }\n href = cleanHref;\n let out = `<img src=\"${href}\" alt=\"${text}\"`;\n if (title) {\n out += ` title=\"${escape(title)}\"`;\n }\n out += '>';\n return out;\n }\n text(token) {\n return 'tokens' in token && token.tokens\n ? this.parser.parseInline(token.tokens)\n : ('escaped' in token && token.escaped ? token.text : escape(token.text));\n }\n}\n\n/**\n * TextRenderer\n * returns only the textual part of the token\n */\nclass _TextRenderer {\n // no need for block level renderers\n strong({ text }) {\n return text;\n }\n em({ text }) {\n return text;\n }\n codespan({ text }) {\n return text;\n }\n del({ text }) {\n return text;\n }\n html({ text }) {\n return text;\n }\n text({ text }) {\n return text;\n }\n link({ text }) {\n return '' + text;\n }\n image({ text }) {\n return '' + text;\n }\n br() {\n return '';\n }\n}\n\n/**\n * Parsing & Compiling\n */\nclass _Parser {\n options;\n renderer;\n textRenderer;\n constructor(options) {\n this.options = options || _defaults;\n this.options.renderer = this.options.renderer || new _Renderer();\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n this.renderer.parser = this;\n this.textRenderer = new _TextRenderer();\n }\n /**\n * Static Parse Method\n */\n static parse(tokens, options) {\n const parser = new _Parser(options);\n return parser.parse(tokens);\n }\n /**\n * Static Parse Inline Method\n */\n static parseInline(tokens, options) {\n const parser = new _Parser(options);\n return parser.parseInline(tokens);\n }\n /**\n * Parse Loop\n */\n parse(tokens, top = true) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const genericToken = anyToken;\n const ret = this.options.extensions.renderers[genericToken.type].call({ parser: this }, genericToken);\n if (ret !== false || !['space', 'hr', 'heading', 'code', 'table', 'blockquote', 'list', 'html', 'paragraph', 'text'].includes(genericToken.type)) {\n out += ret || '';\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case 'space': {\n out += this.renderer.space(token);\n continue;\n }\n case 'hr': {\n out += this.renderer.hr(token);\n continue;\n }\n case 'heading': {\n out += this.renderer.heading(token);\n continue;\n }\n case 'code': {\n out += this.renderer.code(token);\n continue;\n }\n case 'table': {\n out += this.renderer.table(token);\n continue;\n }\n case 'blockquote': {\n out += this.renderer.blockquote(token);\n continue;\n }\n case 'list': {\n out += this.renderer.list(token);\n continue;\n }\n case 'html': {\n out += this.renderer.html(token);\n continue;\n }\n case 'paragraph': {\n out += this.renderer.paragraph(token);\n continue;\n }\n case 'text': {\n let textToken = token;\n let body = this.renderer.text(textToken);\n while (i + 1 < tokens.length && tokens[i + 1].type === 'text') {\n textToken = tokens[++i];\n body += '\\n' + this.renderer.text(textToken);\n }\n if (top) {\n out += this.renderer.paragraph({\n type: 'paragraph',\n raw: body,\n text: body,\n tokens: [{ type: 'text', raw: body, text: body, escaped: true }],\n });\n }\n else {\n out += body;\n }\n continue;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n /**\n * Parse Inline Tokens\n */\n parseInline(tokens, renderer = this.renderer) {\n let out = '';\n for (let i = 0; i < tokens.length; i++) {\n const anyToken = tokens[i];\n // Run any renderer extensions\n if (this.options.extensions?.renderers?.[anyToken.type]) {\n const ret = this.options.extensions.renderers[anyToken.type].call({ parser: this }, anyToken);\n if (ret !== false || !['escape', 'html', 'link', 'image', 'strong', 'em', 'codespan', 'br', 'del', 'text'].includes(anyToken.type)) {\n out += ret || '';\n continue;\n }\n }\n const token = anyToken;\n switch (token.type) {\n case 'escape': {\n out += renderer.text(token);\n break;\n }\n case 'html': {\n out += renderer.html(token);\n break;\n }\n case 'link': {\n out += renderer.link(token);\n break;\n }\n case 'image': {\n out += renderer.image(token);\n break;\n }\n case 'strong': {\n out += renderer.strong(token);\n break;\n }\n case 'em': {\n out += renderer.em(token);\n break;\n }\n case 'codespan': {\n out += renderer.codespan(token);\n break;\n }\n case 'br': {\n out += renderer.br(token);\n break;\n }\n case 'del': {\n out += renderer.del(token);\n break;\n }\n case 'text': {\n out += renderer.text(token);\n break;\n }\n default: {\n const errMsg = 'Token with \"' + token.type + '\" type was not found.';\n if (this.options.silent) {\n console.error(errMsg);\n return '';\n }\n else {\n throw new Error(errMsg);\n }\n }\n }\n }\n return out;\n }\n}\n\nclass _Hooks {\n options;\n block;\n constructor(options) {\n this.options = options || _defaults;\n }\n static passThroughHooks = new Set([\n 'preprocess',\n 'postprocess',\n 'processAllTokens',\n ]);\n /**\n * Process markdown before marked\n */\n preprocess(markdown) {\n return markdown;\n }\n /**\n * Process HTML after marked is finished\n */\n postprocess(html) {\n return html;\n }\n /**\n * Process all tokens before walk tokens\n */\n processAllTokens(tokens) {\n return tokens;\n }\n /**\n * Provide function to tokenize markdown\n */\n provideLexer() {\n return this.block ? _Lexer.lex : _Lexer.lexInline;\n }\n /**\n * Provide function to parse tokens\n */\n provideParser() {\n return this.block ? _Parser.parse : _Parser.parseInline;\n }\n}\n\nclass Marked {\n defaults = _getDefaults();\n options = this.setOptions;\n parse = this.parseMarkdown(true);\n parseInline = this.parseMarkdown(false);\n Parser = _Parser;\n Renderer = _Renderer;\n TextRenderer = _TextRenderer;\n Lexer = _Lexer;\n Tokenizer = _Tokenizer;\n Hooks = _Hooks;\n constructor(...args) {\n this.use(...args);\n }\n /**\n * Run callback for every token\n */\n walkTokens(tokens, callback) {\n let values = [];\n for (const token of tokens) {\n values = values.concat(callback.call(this, token));\n switch (token.type) {\n case 'table': {\n const tableToken = token;\n for (const cell of tableToken.header) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n for (const row of tableToken.rows) {\n for (const cell of row) {\n values = values.concat(this.walkTokens(cell.tokens, callback));\n }\n }\n break;\n }\n case 'list': {\n const listToken = token;\n values = values.concat(this.walkTokens(listToken.items, callback));\n break;\n }\n default: {\n const genericToken = token;\n if (this.defaults.extensions?.childTokens?.[genericToken.type]) {\n this.defaults.extensions.childTokens[genericToken.type].forEach((childTokens) => {\n const tokens = genericToken[childTokens].flat(Infinity);\n values = values.concat(this.walkTokens(tokens, callback));\n });\n }\n else if (genericToken.tokens) {\n values = values.concat(this.walkTokens(genericToken.tokens, callback));\n }\n }\n }\n }\n return values;\n }\n use(...args) {\n const extensions = this.defaults.extensions || { renderers: {}, childTokens: {} };\n args.forEach((pack) => {\n // copy options to new object\n const opts = { ...pack };\n // set async to true if it was set to true before\n opts.async = this.defaults.async || opts.async || false;\n // ==-- Parse \"addon\" extensions --== //\n if (pack.extensions) {\n pack.extensions.forEach((ext) => {\n if (!ext.name) {\n throw new Error('extension name required');\n }\n if ('renderer' in ext) { // Renderer extensions\n const prevRenderer = extensions.renderers[ext.name];\n if (prevRenderer) {\n // Replace extension with func to run new extension but fall back if false\n extensions.renderers[ext.name] = function (...args) {\n let ret = ext.renderer.apply(this, args);\n if (ret === false) {\n ret = prevRenderer.apply(this, args);\n }\n return ret;\n };\n }\n else {\n extensions.renderers[ext.name] = ext.renderer;\n }\n }\n if ('tokenizer' in ext) { // Tokenizer Extensions\n if (!ext.level || (ext.level !== 'block' && ext.level !== 'inline')) {\n throw new Error(\"extension level must be 'block' or 'inline'\");\n }\n const extLevel = extensions[ext.level];\n if (extLevel) {\n extLevel.unshift(ext.tokenizer);\n }\n else {\n extensions[ext.level] = [ext.tokenizer];\n }\n if (ext.start) { // Function to check for start of token\n if (ext.level === 'block') {\n if (extensions.startBlock) {\n extensions.startBlock.push(ext.start);\n }\n else {\n extensions.startBlock = [ext.start];\n }\n }\n else if (ext.level === 'inline') {\n if (extensions.startInline) {\n extensions.startInline.push(ext.start);\n }\n else {\n extensions.startInline = [ext.start];\n }\n }\n }\n }\n if ('childTokens' in ext && ext.childTokens) { // Child tokens to be visited by walkTokens\n extensions.childTokens[ext.name] = ext.childTokens;\n }\n });\n opts.extensions = extensions;\n }\n // ==-- Parse \"overwrite\" extensions --== //\n if (pack.renderer) {\n const renderer = this.defaults.renderer || new _Renderer(this.defaults);\n for (const prop in pack.renderer) {\n if (!(prop in renderer)) {\n throw new Error(`renderer '${prop}' does not exist`);\n }\n if (['options', 'parser'].includes(prop)) {\n // ignore options property\n continue;\n }\n const rendererProp = prop;\n const rendererFunc = pack.renderer[rendererProp];\n const prevRenderer = renderer[rendererProp];\n // Replace renderer with func to run extension, but fall back if false\n renderer[rendererProp] = (...args) => {\n let ret = rendererFunc.apply(renderer, args);\n if (ret === false) {\n ret = prevRenderer.apply(renderer, args);\n }\n return ret || '';\n };\n }\n opts.renderer = renderer;\n }\n if (pack.tokenizer) {\n const tokenizer = this.defaults.tokenizer || new _Tokenizer(this.defaults);\n for (const prop in pack.tokenizer) {\n if (!(prop in tokenizer)) {\n throw new Error(`tokenizer '${prop}' does not exist`);\n }\n if (['options', 'rules', 'lexer'].includes(prop)) {\n // ignore options, rules, and lexer properties\n continue;\n }\n const tokenizerProp = prop;\n const tokenizerFunc = pack.tokenizer[tokenizerProp];\n const prevTokenizer = tokenizer[tokenizerProp];\n // Replace tokenizer with func to run extension, but fall back if false\n // @ts-expect-error cannot type tokenizer function dynamically\n tokenizer[tokenizerProp] = (...args) => {\n let ret = tokenizerFunc.apply(tokenizer, args);\n if (ret === false) {\n ret = prevTokenizer.apply(tokenizer, args);\n }\n return ret;\n };\n }\n opts.tokenizer = tokenizer;\n }\n // ==-- Parse Hooks extensions --== //\n if (pack.hooks) {\n const hooks = this.defaults.hooks || new _Hooks();\n for (const prop in pack.hooks) {\n if (!(prop in hooks)) {\n throw new Error(`hook '${prop}' does not exist`);\n }\n if (['options', 'block'].includes(prop)) {\n // ignore options and block properties\n continue;\n }\n const hooksProp = prop;\n const hooksFunc = pack.hooks[hooksProp];\n const prevHook = hooks[hooksProp];\n if (_Hooks.passThroughHooks.has(prop)) {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (arg) => {\n if (this.defaults.async) {\n return Promise.resolve(hooksFunc.call(hooks, arg)).then(ret => {\n return prevHook.call(hooks, ret);\n });\n }\n const ret = hooksFunc.call(hooks, arg);\n return prevHook.call(hooks, ret);\n };\n }\n else {\n // @ts-expect-error cannot type hook function dynamically\n hooks[hooksProp] = (...args) => {\n let ret = hooksFunc.apply(hooks, args);\n if (ret === false) {\n ret = prevHook.apply(hooks, args);\n }\n return ret;\n };\n }\n }\n opts.hooks = hooks;\n }\n // ==-- Parse WalkTokens extensions --== //\n if (pack.walkTokens) {\n const walkTokens = this.defaults.walkTokens;\n const packWalktokens = pack.walkTokens;\n opts.walkTokens = function (token) {\n let values = [];\n values.push(packWalktokens.call(this, token));\n if (walkTokens) {\n values = values.concat(walkTokens.call(this, token));\n }\n return values;\n };\n }\n this.defaults = { ...this.defaults, ...opts };\n });\n return this;\n }\n setOptions(opt) {\n this.defaults = { ...this.defaults, ...opt };\n return this;\n }\n lexer(src, options) {\n return _Lexer.lex(src, options ?? this.defaults);\n }\n parser(tokens, options) {\n return _Parser.parse(tokens, options ?? this.defaults);\n }\n parseMarkdown(blockType) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const parse = (src, options) => {\n const origOpt = { ...options };\n const opt = { ...this.defaults, ...origOpt };\n const throwError = this.onError(!!opt.silent, !!opt.async);\n // throw error if an extension set async to true but parse was called with async: false\n if (this.defaults.async === true && origOpt.async === false) {\n return throwError(new Error('marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.'));\n }\n // throw error in case of non string input\n if (typeof src === 'undefined' || src === null) {\n return throwError(new Error('marked(): input parameter is undefined or null'));\n }\n if (typeof src !== 'string') {\n return throwError(new Error('marked(): input parameter is of type '\n + Object.prototype.toString.call(src) + ', string expected'));\n }\n if (opt.hooks) {\n opt.hooks.options = opt;\n opt.hooks.block = blockType;\n }\n const lexer = opt.hooks ? opt.hooks.provideLexer() : (blockType ? _Lexer.lex : _Lexer.lexInline);\n const parser = opt.hooks ? opt.hooks.provideParser() : (blockType ? _Parser.parse : _Parser.parseInline);\n if (opt.async) {\n return Promise.resolve(opt.hooks ? opt.hooks.preprocess(src) : src)\n .then(src => lexer(src, opt))\n .then(tokens => opt.hooks ? opt.hooks.processAllTokens(tokens) : tokens)\n .then(tokens => opt.walkTokens ? Promise.all(this.walkTokens(tokens, opt.walkTokens)).then(() => tokens) : tokens)\n .then(tokens => parser(tokens, opt))\n .then(html => opt.hooks ? opt.hooks.postprocess(html) : html)\n .catch(throwError);\n }\n try {\n if (opt.hooks) {\n src = opt.hooks.preprocess(src);\n }\n let tokens = lexer(src, opt);\n if (opt.hooks) {\n tokens = opt.hooks.processAllTokens(tokens);\n }\n if (opt.walkTokens) {\n this.walkTokens(tokens, opt.walkTokens);\n }\n let html = parser(tokens, opt);\n if (opt.hooks) {\n html = opt.hooks.postprocess(html);\n }\n return html;\n }\n catch (e) {\n return throwError(e);\n }\n };\n return parse;\n }\n onError(silent, async) {\n return (e) => {\n e.message += '\\nPlease report this to https://github.com/markedjs/marked.';\n if (silent) {\n const msg = '<p>An error occurred:</p><pre>'\n + escape(e.message + '', true)\n + '</pre>';\n if (async) {\n return Promise.resolve(msg);\n }\n return msg;\n }\n if (async) {\n return Promise.reject(e);\n }\n throw e;\n };\n }\n}\n\nconst markedInstance = new Marked();\nfunction marked(src, opt) {\n return markedInstance.parse(src, opt);\n}\n/**\n * Sets the default options.\n *\n * @param options Hash of options\n */\nmarked.options =\n marked.setOptions = function (options) {\n markedInstance.setOptions(options);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n };\n/**\n * Gets the original marked default options.\n */\nmarked.getDefaults = _getDefaults;\nmarked.defaults = _defaults;\n/**\n * Use Extension\n */\nmarked.use = function (...args) {\n markedInstance.use(...args);\n marked.defaults = markedInstance.defaults;\n changeDefaults(marked.defaults);\n return marked;\n};\n/**\n * Run callback for every token\n */\nmarked.walkTokens = function (tokens, callback) {\n return markedInstance.walkTokens(tokens, callback);\n};\n/**\n * Compiles markdown to HTML without enclosing `p` tag.\n *\n * @param src String of markdown source to be compiled\n * @param options Hash of options\n * @return String of compiled HTML\n */\nmarked.parseInline = markedInstance.parseInline;\n/**\n * Expose\n */\nmarked.Parser = _Parser;\nmarked.parser = _Parser.parse;\nmarked.Renderer = _Renderer;\nmarked.TextRenderer = _TextRenderer;\nmarked.Lexer = _Lexer;\nmarked.lexer = _Lexer.lex;\nmarked.Tokenizer = _Tokenizer;\nmarked.Hooks = _Hooks;\nmarked.parse = marked;\nconst options = marked.options;\nconst setOptions = marked.setOptions;\nconst use = marked.use;\nconst walkTokens = marked.walkTokens;\nconst parseInline = marked.parseInline;\nconst parse = marked;\nconst parser = _Parser.parse;\nconst lexer = _Lexer.lex;\n\nexport { _Hooks as Hooks, _Lexer as Lexer, Marked, _Parser as Parser, _Renderer as Renderer, _TextRenderer as TextRenderer, _Tokenizer as Tokenizer, _defaults as defaults, _getDefaults as getDefaults, lexer, marked, options, parse, parseInline, parser, setOptions, use, walkTokens };\n//# sourceMappingURL=marked.esm.js.map\n","// #markdown\\editor.js\nimport './styles/main.css';\nimport { marked } from 'marked';\nimport Toolbar from './Toolbar/index.js';\nimport Preview from './preview.js';\n\nmarked.setOptions({\n breaks: true\n});\n\nclass MarkdownEditor {\n constructor(selector, options = {}) {\n this.usertextarea = typeof selector === 'string' ? document.querySelector(selector) : selector;\n this.options = options;\n this.preview = this.options.toolbar.includes('preview');\n this.init();\n }\n\n init() {\n this.createEditor();\n if (this.options.toolbar) this.addToolbar();\n }\n\n createEditor() {\n if (!this.isTextareaValid()) return;\n\n this.applyDefaultAttributes();\n this.buildEditorLayout();\n this.addInputListener();\n this.render();\n }\n\n isTextareaValid() {\n return this.usertextarea.tagName === 'TEXTAREA';\n }\n\n applyDefaultAttributes() {\n this.usertextarea.classList.add(\n \"dark:[scrollbar-color:var(--color-stone-600)_transparent]\",\n \"focus:ring-0\",\n \"focus:outline-0\",\n \"border-0\",\n \"p-1.5\",\n \"max-w-full\",\n \"size-full\",\n \"bg-transparent\",\n \"outline-0\",\n \"appearance-none\",\n \"prose\",\n \"prose-sm\",\n \"md:prose-base\",\n \"dark:prose-invert\",\n \"text-stone-700\",\n \"dark:text-stone-200\",\n \"overflow-y-auto\",\n \"placeholder:text-stone-300\",\n \"dark:placeholder:text-stone-600\"\n );\n if (!this.usertextarea.hasAttribute('placeholder')) {\n this.usertextarea.placeholder = this.options.placeholder || 'Write your markdown...';\n }\n }\n\n buildEditorLayout() {\n this.editorContainer = document.createElement('div');\n this.editorContainer.className = `\n markdown-editor-wrapper\n border border-stone-200\n dark:border-stone-700\n rounded-md\n overflow-hidden\n `;\n this.usertextarea.parentNode.insertBefore(this.editorContainer, this.usertextarea);\n\n this.markdownEditorDiv = document.createElement('div');\n this.markdownEditorDiv.className = `editor-layout relative`;\n this.editorContainer.appendChild(this.markdownEditorDiv);\n\n this.addTextareaWrapper();\n if (this.preview) this.addPreviewWrapper();\n }\n\n addTextareaWrapper() {\n const textareaContainer = document.createElement('div');\n textareaContainer.className = `\n textarea-wrapper\n h-full\n p-2\n bg-white\n dark:bg-stone-900\n grid\n after:px-3.5\n after:py-2.5\n after:text-inherit\n [&>textarea]:resize-none\n [&>textarea]:[grid-area:1/1/2/2]\n after:[grid-area:1/1/2/2]\n after:whitespace-pre-wrap\n after:invisible\n after:content-[attr(data-cloned-val)_'_']\n after:border\n `;\n textareaContainer.appendChild(this.usertextarea);\n this.markdownEditorDiv.appendChild(textareaContainer);\n }\n\n \n\n addPreviewWrapper() {\n const previewInstance = new Preview(this.markdownEditorDiv);\n this.previewContent = previewInstance.getPreviewContent();\n }\n\n addInputListener() {\n this.usertextarea.addEventListener('input', () => this.render());\n this.usertextarea.addEventListener('scroll', () => {\n const textarea = this.usertextarea;\n const previewPane = this.previewContent;\n \n // Calculate the proportion of the textarea that has been scrolled\n const textareaScrollRatio = textarea.scrollTop / (textarea.scrollHeight - textarea.clientHeight);\n \n // Apply the same scroll ratio to the preview pane\n previewPane.scrollTop = textareaScrollRatio * (previewPane.scrollHeight - previewPane.clientHeight);\n });\n }\n\n addToolbar() {\n new Toolbar(this, this.options.toolbar || ['bold', 'italic', 'strikethrough']);\n }\n\n insertText(text) {\n const { selectionStart, selectionEnd } = this.usertextarea;\n const value = this.usertextarea.value;\n this.usertextarea.value = `${value.substring(0, selectionStart)}${text}${value.substring(selectionEnd)}`;\n this.usertextarea.focus();\n this.usertextarea.setSelectionRange(selectionStart, selectionStart + text.length);\n\n // Scroll the textarea to the inserted text\n this.scrollToView();\n\n this.render();\n }\n\n scrollToView() {\n const textarea = this.usertextarea;\n \n // Calculate the position of the inserted text\n const selectionStart = textarea.selectionStart;\n \n // Get the line height (height of each row of text)\n const lineHeight = parseInt(window.getComputedStyle(textarea).lineHeight);\n \n // Get how many rows fit into the visible area of the textarea\n const rowsInView = Math.floor(textarea.clientHeight / lineHeight);\n \n // Calculate the current line number of the selectionStart\n const currentLine = Math.floor(selectionStart / textarea.cols);\n \n // Scroll to the line number that places the inserted text in the center\n const targetScrollTop = (currentLine - Math.floor(rowsInView / 2)) * lineHeight;\n \n // Adjust scrollTop to center the cursor's line in the view\n textarea.scrollTop = targetScrollTop;\n }\n \n\n render() {\n const html = marked(this.usertextarea.value);\n if (this.preview) this.previewContent.innerHTML = html;\n }\n}\n\nexport default MarkdownEditor;"],"names":["root","factory","exports","module","define","amd","self","this","MakeTool","editor","title","_classCallCheck","defaultText","concat","button","createButton","key","value","iconHtml","_this","btn","document","createElement","btnClass","replace","toLowerCase","innerHTML","type","className","addEventListener","event","applySyntax","btnWrapper","appendChild","BoldTool","_MakeTool","_callSuper","_inherits","textarea","usertextarea","selectionStart","selectionEnd","selectedText","substring","syntax","newText","startsWith","endsWith","slice","insertText","ItalicTool","StrikethroughTool","ULTool","OLTool","PreviewTool","preview","_this$editor$previewC","previewWrapper","previewContent","parentNode","editorDiv","markdownEditorDiv","enablePreview","disablePreview","classList","toggle","remove","querySelector","render","querySelectorAll","forEach","contains","add","CheckListTool","BlockQuoteTool","modal","size","bodyHTML","mde","target","closest","modalHTML","insertAdjacentHTML","showModal","LinkTool","linkRegex","test","linkText","match","setRangeText","modalElement","e","preventDefault","linkInput","linkTextInput","validity","valid","link","close","reportValidity","HeadingTool","currentHeading","cleanText","currentLevel","headingCount","length","repeat","_regeneratorRuntime","r","t","Object","prototype","n","hasOwnProperty","o","Symbol","i","iterator","a","asyncIterator","u","toStringTag","c","defineProperty","enumerable","configurable","writable","h","Generator","create","Error","done","method","arg","delegate","d","f","sent","_sent","dispatchException","abrupt","s","Context","call","wrap","GeneratorFunction","GeneratorFunctionPrototype","l","p","getPrototypeOf","y","x","v","g","_invoke","AsyncIterator","_typeof","resolve","__await","then","TypeError","next","w","tryEntries","push","m","reset","isNaN","displayName","isGeneratorFunction","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","keys","unshift","pop","values","prev","charAt","stop","rval","complete","finish","delegateYield","asyncGeneratorStep","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","toPrimitive","String","Number","_toPrimitive","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","Boolean","valueOf","bind","_setPrototypeOf","ImageTool","config","undefined","fileInputConfig","fileInput","altInputConfig","altInput","acceptFormats","accept","map","join","altRequired","required","uploadUrl","fileInputTag","imageRegex","altText","fileInputSelector","urlInputSelector","submitBtnSelector","_callee","file","formData","res","result","_context","files","disabled","textContent","FormData","append","fetch","body","json","success","path","alert","t0","console","error","imgLinkInput","imgLinkAltInput","imgLink","imgLinkAlt","Toolbar","options","toolbar","init","toolMapping","heading","ul","ol","checklist","bold","italic","strikethrough","blockquote","image","tool","ToolClass","toolName","toolInstance","includes","previewToolInstance","editorContainer","insertBefore","Preview","container","previewContainer","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","get","obj","prop","_getDefaults","breaks","extensions","gfm","hooks","pedantic","renderer","silent","tokenizer","walkTokens","_defaults","changeDefaults","newDefaults","noopTest","exec","edit","regex","opt","source","val","valSource","other","caret","getRegex","RegExp","codeRemoveIndent","outputLinkReplace","indentCodeCompensation","beginningSpace","endingHash","startingSpaceChar","endingSpaceChar","nonSpaceChar","newLineCharGlobal","tabCharGlobal","multipleSpaceGlobal","blankLine","doubleBlankLine","blockquoteStart","blockquoteSetextReplace","blockquoteSetextReplace2","listReplaceTabs","listReplaceNesting","listIsTask","listReplaceTask","anyLine","hrefBrackets","tableDelimiter","tableAlignChars","tableRowBlankLine","tableAlignRight","tableAlignCenter","tableAlignLeft","startATag","endATag","startPreScriptTag","endPreScriptTag","startAngleBracket","endAngleBracket","pedanticHrefTitle","unicodeAlphaNumeric","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","unescapeTest","percentDecode","findPipe","splitPipe","slashPipe","carriageReturn","spaceLine","notSpaceStart","endingNewline","listItemRegex","bull","nextBulletRegex","indent","Math","min","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","hr","bullet","lheadingCore","lheading","lheadingGfm","_paragraph","_blockLabel","def","list","_tag","_comment","html","paragraph","blockNormal","code","fences","newline","table","text","gfmTable","blockGfm","blockPedantic","br","_punctuation","_punctuationOrSpace","_notPunctuationOrSpace","punctuation","_punctuationGfmStrongEm","emStrongLDelimCore","emStrongLDelim","emStrongLDelimGfm","emStrongRDelimAstCore","emStrongRDelimAst","emStrongRDelimAstGfm","emStrongRDelimUnd","anyPunctuation","autolink","_inlineComment","tag","_inlineLabel","reflink","nolink","inlineNormal","_backpedal","blockSkip","del","escape","reflinkSearch","url","inlinePedantic","inlineGfm","inlineBreaks","block","normal","inline","escapeReplacements","getEscapeReplacement","ch","encode","cleanUrl","href","encodeURI","splitCells","tableRow","count","cells","offset","str","escaped","curr","split","trim","shift","at","splice","rtrim","invert","suffLen","outputLink","cap","raw","lexer","rules","state","inLink","token","tokens","inlineTokens","_Tokenizer","space","src","codeBlockStyle","matchIndentToCode","indentToCode","node","matchIndentInNode","indentInNode","lang","trimmed","depth","lines","inBlockquote","currentLines","currentRaw","currentText","top","blockTokens","lastToken","oldToken","newToken","isordered","ordered","start","loose","items","itemRegex","endsWithBlankLine","endEarly","itemContents","line","nextLine","trimStart","search","rawLine","nextLineWithoutTabs","ischecked","istask","task","checked","lastItem","trimEnd","spacers","filter","hasMultipleLineBreaks","some","pre","headers","aligns","rows","item","header","align","row","cell","inRawBlock","trimmedUrl","rtrimSlash","lastParenIndex","b","indexOf","level","findClosingBracket","linkLen","links","emStrong","maskedSrc","prevChar","lLength","rDelim","rLength","delimTotal","midDelimTotal","endReg","lastIndex","lastCharLength","index","codespan","hasNonSpaceChars","hasSpaceCharsOnBothEnds","prevCapZero","inlineText","_Lexer","inlineQueue","lex","lexInline","lastParagraphClipped","extTokenizer","cutSrc","startBlock","startIndex","Infinity","tempSrc","tempStart","getStartIndex","errMsg","charCodeAt","lastIndexOf","keepPrevChar","startInline","_Renderer","parser","langString","parse","parseInline","j","listitem","itemBody","checkbox","tablecell","tablerow","k","content","strong","em","cleanHref","out","textRenderer","_TextRenderer","_Parser","anyToken","renderers","genericToken","ret","textToken","_Hooks","static","Set","preprocess","markdown","postprocess","processAllTokens","provideLexer","provideParser","markedInstance","defaults","setOptions","parseMarkdown","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Hooks","args","use","callback","tableToken","listToken","childTokens","flat","pack","opts","ext","prevRenderer","extLevel","rendererProp","rendererFunc","tokenizerProp","tokenizerFunc","prevTokenizer","hooksProp","hooksFunc","prevHook","passThroughHooks","has","packWalktokens","blockType","origOpt","throwError","onError","toString","all","catch","message","msg","reject","marked","getDefaults","MarkdownEditor","selector","createEditor","addToolbar","isTextareaValid","applyDefaultAttributes","buildEditorLayout","addInputListener","tagName","hasAttribute","placeholder","addTextareaWrapper","addPreviewWrapper","textareaContainer","previewInstance","getPreviewContent","previewPane","textareaScrollRatio","scrollTop","scrollHeight","clientHeight","_this$usertextarea","focus","setSelectionRange","scrollToView","lineHeight","parseInt","window","getComputedStyle","rowsInView","floor","targetScrollTop","cols"],"sourceRoot":""}
1
+ {"version":3,"file":"markdown-text-editor.js","mappings":"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","sources":["webpack://MarkdownEditor/webpack/universalModuleDefinition","webpack://MarkdownEditor/./src/components/Preview.js","webpack://MarkdownEditor/./src/components/toolbar/MakeTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/BoldTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/ItalicTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/StrikethroughTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/ULTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/OLTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/PreviewTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/CheckListTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/BlockQuoteTool.js","webpack://MarkdownEditor/./src/components/modal.js","webpack://MarkdownEditor/./src/components/toolbar/tools/LinkTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/HeadingTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/ImageTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/UndoTool.js","webpack://MarkdownEditor/./src/components/toolbar/tools/RedoTool.js","webpack://MarkdownEditor/./src/components/toolbar/Toolbar.js","webpack://MarkdownEditor/./node_modules/diff/libesm/diff/base.js","webpack://MarkdownEditor/./node_modules/diff/libesm/diff/character.js","webpack://MarkdownEditor/./src/utils/UndoRedoManager.js","webpack://MarkdownEditor/webpack/bootstrap","webpack://MarkdownEditor/webpack/runtime/define property getters","webpack://MarkdownEditor/webpack/runtime/hasOwnProperty shorthand","webpack://MarkdownEditor/./node_modules/marked/lib/marked.esm.js","webpack://MarkdownEditor/./src/components/Editor.js"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MarkdownEditor\"] = factory();\n\telse\n\t\troot[\"MarkdownEditor\"] = factory();\n})(typeof self !== \"undefined\" ? self : this, () => {\nreturn ","class Preview {\n constructor(container) {\n this.previewContainer = document.createElement('div');\n this.previewContainer.className = 'preview-wrapper fj:p-2 fj:hidden fj:surface fj:surface-1 fj:surface-outline fj:border-0 fj:border-l';\n this.previewContent = document.createElement('div');\n this.previewContent.className = 'preview-content fj:prose fj:prose-sm fj:md:prose-base fj:dark:prose-invert fj:p-1.5 fj:overflow-y-auto fj:h-[90lvh] fj:max-w-full';\n this.previewContainer.appendChild(this.previewContent);\n container.appendChild(this.previewContainer);\n }\n\n getPreviewContent() {\n return this.previewContent;\n }\n}\n\nexport default Preview;","class MakeTool {\n constructor(editor, title) {\n this.editor = editor;\n this.defaultText = `${title} text`; // Default text if nothing is selected\n this.button = this.createButton();\n this.title = title\n }\n\n // Create a button element (can be overridden in child classes)\n createButton(iconHtml) {\n const btn = document.createElement('button');\n const btnClass = this.title ? `${this.title.replace(/ /g, '-')}-btn`.toLowerCase() : '';\n btn.innerHTML = iconHtml; // Pass icon HTML from child classes\n btn.type = 'button';\n btn.title = this.title;\n btn.className = `markdown-btn ${btnClass} fj:btn fj:btn-sm fj:btn-square fj:btn-ghost`;\n btn.addEventListener('click', (event) => this.applySyntax(event)); // Default to 'both', can change in child\n\n if(btnClass == 'preview-btn') {\n const btnWrapper = document.createElement('div');\n btnWrapper.className = 'fj:surface fj:surface-1 fj:surface-outline fj:border-0 fj:border-l fj:sticky fj:-right-2 fj:px-1.5';\n btnWrapper.appendChild(btn);\n return btnWrapper;\n }\n \n return btn;\n }\n}\n\nexport default MakeTool;\n","import MakeTool from '../MakeTool.js';\n\nclass BoldTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Bold');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M8 11H12.5C13.8807 11 15 9.88071 15 8.5C15 7.11929 13.8807 6 12.5 6H8V11ZM18 15.5C18 17.9853 15.9853 20 13.5 20H6V4H12.5C14.9853 4 17 6.01472 17 8.5C17 9.70431 16.5269 10.7981 15.7564 11.6058C17.0979 12.3847 18 13.837 18 15.5ZM8 13V18H13.5C14.8807 18 16 16.8807 16 15.5C16 14.1193 14.8807 13 13.5 13H8Z\"></path>\n </svg> \n `)\n }\n\n // Apply bold syntax (**bold**)\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '**';\n let newText = '';\n if (selectedText.startsWith(syntax) && selectedText.endsWith(syntax)) {\n // Remove the bold syntax if it's already wrapped\n newText = selectedText.slice(syntax.length, -syntax.length);\n } else {\n // Apply bold syntax\n newText = `${syntax}${selectedText || 'Bold text'}${syntax}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\nexport default BoldTool;\n","import MakeTool from '../MakeTool.js';\n\nclass ItalicTool extends MakeTool {\n constructor(editor) {\n // Call the parent constructor with the markdown syntax for italic (*)\n super(editor, 'Italic');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M15 20H7V18H9.92661L12.0425 6H9V4H17V6H14.0734L11.9575 18H15V20Z\"></path></svg>\n `);\n }\n\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '*';\n let newText = '';\n if (selectedText.startsWith(syntax) && selectedText.endsWith(syntax)) {\n // Remove the italic syntax if it's already wrapped\n newText = selectedText.slice(syntax.length, -syntax.length);\n } else {\n // Apply italic syntax\n newText = `${syntax}${selectedText || 'Italic text'}${syntax}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\nexport default ItalicTool;","import MakeTool from '../MakeTool.js';\n\nclass StrikethroughTool extends MakeTool {\n constructor(editor) {\n // Call the parent constructor with the markdown syntax for strikethrough (~~)\n super(editor, 'Strikethrough');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M17.1538 14C17.3846 14.5161 17.5 15.0893 17.5 15.7196C17.5 17.0625 16.9762 18.1116 15.9286 18.867C14.8809 19.6223 13.4335 20 11.5862 20C9.94674 20 8.32335 19.6185 6.71592 18.8555V16.6009C8.23538 17.4783 9.7908 17.917 11.3822 17.917C13.9333 17.917 15.2128 17.1846 15.2208 15.7196C15.2208 15.0939 15.0049 14.5598 14.5731 14.1173C14.5339 14.0772 14.4939 14.0381 14.4531 14H3V12H21V14H17.1538ZM13.076 11H7.62908C7.4566 10.8433 7.29616 10.6692 7.14776 10.4778C6.71592 9.92084 6.5 9.24559 6.5 8.45207C6.5 7.21602 6.96583 6.165 7.89749 5.299C8.82916 4.43299 10.2706 4 12.2219 4C13.6934 4 15.1009 4.32808 16.4444 4.98426V7.13591C15.2448 6.44921 13.9293 6.10587 12.4978 6.10587C10.0187 6.10587 8.77917 6.88793 8.77917 8.45207C8.77917 8.87172 8.99709 9.23796 9.43293 9.55079C9.86878 9.86362 10.4066 10.1135 11.0463 10.3004C11.6665 10.4816 12.3431 10.7148 13.076 11H13.076Z\"></path></svg>\n `);\n }\n\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '~';\n let newText = '';\n if (selectedText.startsWith(syntax) && selectedText.endsWith(syntax)) {\n // Remove the strikethrough syntax if it's already wrapped\n newText = selectedText.slice(syntax.length, -syntax.length);\n } else {\n // Apply strikethrough syntax\n newText = `${syntax}${selectedText || 'Strikethrough text'}${syntax}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\nexport default StrikethroughTool;","import MakeTool from '../MakeTool.js';\n\nclass ULTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Unordered list');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M8 4H21V6H8V4ZM4.5 6.5C3.67157 6.5 3 5.82843 3 5C3 4.17157 3.67157 3.5 4.5 3.5C5.32843 3.5 6 4.17157 6 5C6 5.82843 5.32843 6.5 4.5 6.5ZM4.5 13.5C3.67157 13.5 3 12.8284 3 12C3 11.1716 3.67157 10.5 4.5 10.5C5.32843 10.5 6 11.1716 6 12C6 12.8284 5.32843 13.5 4.5 13.5ZM4.5 20.4C3.67157 20.4 3 19.7284 3 18.9C3 18.0716 3.67157 17.4 4.5 17.4C5.32843 17.4 6 18.0716 6 18.9C6 19.7284 5.32843 20.4 4.5 20.4ZM8 11H21V13H8V11ZM8 18H21V20H8V18Z\"></path></svg>\n `);\n }\n \n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '- ';\n let newText = '';\n if (selectedText.startsWith(syntax)) {\n // Remove the Unordered syntax if it's already wrapped\n newText = selectedText.slice(syntax.length);\n } else {\n // Apply Unordered list syntax\n newText = `${syntax}${selectedText || 'Unordered list'}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\n\nexport default ULTool;","import MakeTool from '../MakeTool.js';\n\nclass OLTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Ordered list');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M8 4H21V6H8V4ZM5 3V6H6V7H3V6H4V4H3V3H5ZM3 14V11.5H5V11H3V10H6V12.5H4V13H6V14H3ZM5 19.5H3V18.5H5V18H3V17H6V21H3V20H5V19.5ZM8 11H21V13H8V11ZM8 18H21V20H8V18Z\"></path></svg>\n `);\n }\n \n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '1. ';\n let newText = '';\n if (selectedText.startsWith(syntax)) {\n // Remove the ordered syntax if it's already wrapped\n newText = selectedText.slice(syntax.length);\n } else {\n // Apply ordered list syntax\n newText = `${syntax}${selectedText || 'Ordered list'}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\n\nexport default OLTool;","// #components/Toolbar/tools/PreviewToggleTool.js\nimport MakeTool from '../MakeTool.js';\n\nclass PreviewTool extends MakeTool {\n constructor(editor) {\n // No markdown syntax for preview toggle, so we call the parent constructor with empty values\n super(editor, 'Preview');\n this.preview = true;\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M11 5H5V19H11V5ZM13 5V19H19V5H13ZM4 3H20C20.5523 3 21 3.44772 21 4V20C21 20.5523 20.5523 21 20 21H4C3.44772 21 3 20.5523 3 20V4C3 3.44772 3.44772 3 4 3Z\"></path></svg>\n `);\n }\n\n // Override applySyntax to handle preview toggling\n applySyntax() {\n const previewWrapper = this.editor.previewContent?.parentNode;\n const editorDiv = this.editor.markdownEditorDiv;\n\n if (!previewWrapper || !editorDiv) return;\n\n // Toggle the preview's visibility by switching between 'block' and 'hidden' classes\n if (this.editor.preview && this.preview) {\n this.enablePreview(previewWrapper, editorDiv);\n } else {\n this.disablePreview(previewWrapper, editorDiv);\n }\n }\n\n // Method to hide the preview (disable it)\n disablePreview(previewWrapper, editorDiv) {\n\n this.preview = true;\n\n editorDiv.parentNode.classList.toggle('fj:fixed');\n editorDiv.parentNode.classList.toggle('fj:top-0');\n editorDiv.parentNode.classList.toggle('fj:inset-x-0');\n editorDiv.parentNode.classList.toggle('fj:rounded-md');\n editorDiv.parentNode.classList.toggle('fj:z-999');\n \n previewWrapper.classList.toggle('fj:hidden');\n\n // Add grid layout and divide classes to the editor div\n editorDiv.classList.remove(\n 'fj:md:grid',\n 'fj:md:grid-cols-2'\n );\n\n editorDiv.querySelector(\".textarea-wrapper\").classList.remove(\n 'fj:h-[90lvh]',\n 'fj:hidden',\n 'fj:md:block'\n );\n this.editor.render(); // Re-render content in the preview\n\n editorDiv.querySelector(\".textarea-wrapper\").querySelector(\"textarea\").classList.remove(\"fj:h-[90lvh]!\");\n \n document.querySelector(\"body\").classList.remove('fj:overflow-hidden');\n\n document.querySelectorAll('.markdown-btn').forEach(button => {\n if (!button.classList.contains('preview-btn')) {\n button.classList.remove('fj:pointer-events-none', 'fj:md:pointer-events-auto', 'fj:opacity-25', 'fj:md:opacity-100');\n }else{\n button.classList.remove('fj:btn-active');\n }\n });\n }\n\n // Method to show the preview (enable it)\n enablePreview(previewWrapper, editorDiv) {\n\n this.preview = false;\n\n editorDiv.parentNode.classList.toggle('fj:fixed');\n editorDiv.parentNode.classList.toggle('fj:top-0');\n editorDiv.parentNode.classList.toggle('fj:inset-x-0');\n editorDiv.parentNode.classList.toggle('fj:rounded-md');\n editorDiv.parentNode.classList.toggle('fj:z-999');\n \n previewWrapper.classList.toggle('fj:hidden');\n // Remove grid layout and divide classes from the editor div\n editorDiv.classList.add(\n 'fj:md:grid',\n 'fj:md:grid-cols-2'\n );\n\n editorDiv.querySelector(\".textarea-wrapper\").classList.add(\n 'fj:h-[90lvh]',\n 'fj:hidden',\n 'fj:md:block'\n );\n editorDiv.querySelector(\".textarea-wrapper\").querySelector(\"textarea\").classList.add(\"fj:h-[90lvh]!\");\n\n document.querySelector(\"body\").classList.add('fj:overflow-hidden');\n\n document.querySelectorAll('.markdown-btn').forEach(button => {\n if (!button.classList.contains('preview-btn')) {\n button.classList.add('fj:pointer-events-none', 'fj:md:pointer-events-auto', 'fj:opacity-25', 'fj:md:opacity-100');\n }else{\n button.classList.add('fj:btn-active');\n }\n });\n }\n}\n\nexport default PreviewTool;\n","import MakeTool from '../MakeTool.js';\n\nclass CheckListTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Check list');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M8.00008 6V9H5.00008V6H8.00008ZM3.00008 4V11H10.0001V4H3.00008ZM13.0001 4H21.0001V6H13.0001V4ZM13.0001 11H21.0001V13H13.0001V11ZM13.0001 18H21.0001V20H13.0001V18ZM10.7072 16.2071L9.29297 14.7929L6.00008 18.0858L4.20718 16.2929L2.79297 17.7071L6.00008 20.9142L10.7072 16.2071Z\"></path></svg>\n `);\n }\n \n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '- [x] ';\n let newText = '';\n if (selectedText.startsWith(syntax)) {\n // Remove the checklist syntax if it's already wrapped\n newText = selectedText.slice(syntax.length);\n } else {\n // Apply check list syntax\n newText = `${syntax}${selectedText || 'Check list'}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\n\nexport default CheckListTool;","import MakeTool from '../MakeTool.js';\n\nclass BlockQuoteTool extends MakeTool {\n constructor(editor) {\n // Call the parent constructor with the markdown syntax for italic (*)\n super(editor, 'Blockquote');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M4.58341 17.3211C3.55316 16.2274 3 15 3 13.0103C3 9.51086 5.45651 6.37366 9.03059 4.82318L9.92328 6.20079C6.58804 8.00539 5.93618 10.346 5.67564 11.822C6.21263 11.5443 6.91558 11.4466 7.60471 11.5105C9.40908 11.6778 10.8312 13.159 10.8312 15C10.8312 16.933 9.26416 18.5 7.33116 18.5C6.2581 18.5 5.23196 18.0095 4.58341 17.3211ZM14.5834 17.3211C13.5532 16.2274 13 15 13 13.0103C13 9.51086 15.4565 6.37366 19.0306 4.82318L19.9233 6.20079C16.588 8.00539 15.9362 10.346 15.6756 11.822C16.2126 11.5443 16.9156 11.4466 17.6047 11.5105C19.4091 11.6778 20.8312 13.159 20.8312 15C20.8312 16.933 19.2642 18.5 17.3312 18.5C16.2581 18.5 15.232 18.0095 14.5834 17.3211Z\"></path></svg>\n `);\n }\n\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n const syntax = '>';\n let newText = '';\n if (selectedText.startsWith(syntax)) {\n // Remove the blockquote syntax if it's already wrapped\n newText = selectedText.slice(syntax.length);\n } else {\n // Apply blockquote syntax\n newText = `${syntax}${selectedText || 'Blockquote text'}`;\n }\n\n this.editor.insertText(newText);\n }\n}\n\nexport default BlockQuoteTool;","export function modal(event, size, bodyHTML) {\n const self = event.target;\n const mde = self.closest(\".markdown-editor-wrapper\");\n if(mde.querySelector(\".markdown-modal\")){\n mde.querySelector(\".markdown-modal\").remove(); \n }\n\n const modalHTML = `\n <dialog class=\"markdown-modal fj:modal fj:modal-y-top fj:lg:modal-y-center fj:modal-x-center\" id=\"nezanuha_toggleModal\">\n <div class=\"fj:modal-body ${size}\">\n ${bodyHTML}\n </div>\n </dialog>\n `;\n\n if(!mde.querySelector(\".markdown-modal\")){\n mde.insertAdjacentHTML(\"beforeend\", modalHTML);\n }\n \n const modal = mde.querySelector(\".markdown-modal\");\n modal.showModal();\n return modal;\n}","import MakeTool from '../MakeTool.js';\nimport { modal } from '../../modal.js';\n\nclass LinkTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Link');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\">\n <path d=\"M18.3638 15.5355L16.9496 14.1213L18.3638 12.7071C20.3164 10.7545 20.3164 7.58866 18.3638 5.63604C16.4112 3.68341 13.2453 3.68341 11.2927 5.63604L9.87849 7.05025L8.46428 5.63604L9.87849 4.22182C12.6122 1.48815 17.0443 1.48815 19.778 4.22182C22.5117 6.95549 22.5117 11.3876 19.778 14.1213L18.3638 15.5355ZM15.5353 18.364L14.1211 19.7782C11.3875 22.5118 6.95531 22.5118 4.22164 19.7782C1.48797 17.0445 1.48797 12.6123 4.22164 9.87868L5.63585 8.46446L7.05007 9.87868L5.63585 11.2929C3.68323 13.2455 3.68323 16.4113 5.63585 18.364C7.58847 20.3166 10.7543 20.3166 12.7069 18.364L14.1211 16.9497L15.5353 18.364ZM14.8282 7.75736L16.2425 9.17157L9.17139 16.2426L7.75717 14.8284L14.8282 7.75736Z\"></path>\n </svg>\n `);\n }\n\n // Apply link syntax [text](url)\n applySyntax(event) {\n let editor = this.editor;\n let textarea = editor.usertextarea;\n let { selectionStart, selectionEnd } = textarea;\n let selectedText = textarea.value.substring(selectionStart, selectionEnd);\n \n // Check if the selected text contains a link syntax [text](url)\n const linkRegex = /\\[([^\\]]+)\\]\\(([^)]+)\\)/;\n \n if (selectedText && linkRegex.test(selectedText)) {\n // If the selected text is already a link, extract the text inside the brackets\n const match = selectedText.match(linkRegex);\n const linkText = match[1]; // Text inside the square brackets\n \n // Replace the selected text with just the text\n textarea.setRangeText(linkText, selectionStart, selectionEnd, 'select');\n } else {\n // If no link syntax, prompt for the URL and apply the syntax\n \n const bodyHTML =`\n <div class=\"fj:flex fj:justify-between fj:items-center fj:gap-3\">\n <div class=\"fj:font-medium\">Link</div>\n <button type=\"button\" class=\"fj:btn fj:btn-ghost fj:btn-xs fj:btn-circle\" onclick=\"nezanuha_toggleModal.remove()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>\n </button>\n </div>\n <form method=\"post\">\n <div class=\"fj:flex fj:flex-col fj:justify-center fj:gap-y-4.5 fj:mt-4\">\n <input type=\"url\" placeholder=\"URL\" class=\"link-input fj:input fj:w-full\" required>\n <input type=\"text\" placeholder=\"Link text\" class=\"link-text-input fj:input fj:w-full\" value=\"${selectedText}\" required>\n <button type=\"submit\" class=\"submit-link fj:btn fj:btn-sm fj:self-end\">Apply</button>\n </div>\n </form>`;\n\n const modalElement = modal(event, 'fj:max-w-sm', bodyHTML);\n\n modalElement.querySelector(\".submit-link\").addEventListener(\"click\", function(e){\n e.preventDefault();\n let linkInput = modalElement.querySelector(\".link-input\");\n let linkTextInput = modalElement.querySelector(\".link-text-input\");\n\n if (!linkInput.validity.valid) {\n linkInput.reportValidity();\n } else if (!linkTextInput.validity.valid) {\n linkTextInput.reportValidity();\n } else {\n const link = linkInput.value;\n let linkText = linkTextInput.value;\n\n if(linkText == ''){\n linkText = 'Link Text';\n }\n\n let newText = '';\n if (selectedText) {\n newText = `[${selectedText}](${link})`; // Insert the link with selected text\n } else {\n newText = `[${linkText}](${link})`; // Insert a placeholder text if nothing is selected\n }\n editor.insertText(newText); // Insert the constructed link markdown\n \n linkInput.value = '';\n linkTextInput.value = '';\n modalElement.close();\n }\n });\n }\n }\n \n}\n\nexport default LinkTool;","import MakeTool from '../MakeTool.js';\n\nclass HeadingTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Heading');\n this.currentHeading = 1; // Start with Heading 1\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 24 24\" fill=\"currentColor\" width=\"20\" height=\"20\"><path d=\"M17 11V4H19V21H17V13H7V21H5V4H7V11H17Z\"></path></svg>\n `);\n }\n\n // Apply heading syntax (e.g., # sample text for h1, ## sample text for h2, etc.)\n applySyntax() {\n const textarea = this.editor.usertextarea;\n const { selectionStart, selectionEnd } = textarea;\n const selectedText = textarea.value.substring(selectionStart, selectionEnd);\n\n // Strip any existing heading symbols (i.e., # or ##) from the selected text\n const headingRegex = /^#+\\s*/; // Regex to match any # followed by space\n let cleanText = selectedText.replace(headingRegex, ''); // Remove existing heading\n\n let newText = '';\n\n // If there is a heading, continue from the current level\n if (selectedText) {\n const currentLevel = selectedText.match(/^#+/); // Match the number of # symbols at the start\n if (currentLevel) {\n let headingCount = currentLevel[0].length;\n if (headingCount === 6) {\n newText = cleanText; // Just plain text\n } else {\n newText = `${'#'.repeat(headingCount + 1)} ${cleanText}`;\n }\n } else {\n // If no # symbol, start from # (Heading 1)\n newText = `# ${cleanText}`;\n }\n } else {\n // If no text is selected, use default \"Heading\"\n newText = `${'#'.repeat(this.currentHeading)} Heading`;\n }\n\n // Insert the new heading text and replace any selected text\n this.editor.insertText(newText, true);\n\n // Cycle heading levels after applying the heading\n if (this.currentHeading === 6) {\n this.currentHeading = 1; // Reset to # for Heading 1 after reaching Heading 6\n } else {\n this.currentHeading++; // Increment the heading level\n }\n }\n}\n\nexport default HeadingTool;\n","import MakeTool from '../MakeTool.js';\nimport { modal } from '../../modal.js';\n\nclass ImageTool extends MakeTool {\n constructor(editor, config = {}) {\n super(editor, 'Image link');\n this.config = config;\n this.fileInputConfig = config.fileInput || false;\n this.altInputConfig = config.altInput || true;\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M16 5h6\"/><path d=\"M19 2v6\"/><path d=\"M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5\"/>\n <path d=\"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\"/><circle cx=\"9\" cy=\"9\" r=\"2\"/>\n </svg>\n `);\n }\n\n // Apply link syntax [text](url)\n applySyntax(event) {\n let editor = this.editor;\n let textarea = editor.usertextarea;\n let { selectionStart, selectionEnd } = textarea;\n let selectedText = textarea.value.substring(selectionStart, selectionEnd);\n \n const acceptFormats = this.fileInputConfig.accept\n ? this.fileInputConfig.accept.map(type => `image/${type}`).join(',')\n : 'image/*'; // Handle file formats\n\n const altRequired = this.altInputConfig.required === undefined ? true : this.altInputConfig.required;\n\n const uploadUrl = this.fileInputConfig.uploadUrl || null;\n\n let fileInputTag = '';\n if(this.fileInputConfig){\n fileInputTag = `\n <input type=\"file\" accept=\"${acceptFormats}\" class=\"img-file-input fj:input fj:w-full\">\n <div class=\"fj:divider fj:my-1\">OR</div>\n `;\n }\n // Check if the selected text contains an image markdown syntax ![alt text](url)\n const imageRegex = /!\\[([^\\]]*)\\]\\(([^)]+)\\)/;\n\n if (selectedText && imageRegex.test(selectedText)) {\n // If the selected text is already an image markdown, extract the alt text and URL\n const match = selectedText.match(imageRegex);\n const altText = match[1]; // Alt text inside the square brackets\n // const imageUrl = match[2]; // URL inside the parentheses\n\n // Replace the selected text with just the text\n textarea.setRangeText(altText, selectionStart, selectionEnd, 'select');\n } else {\n const bodyHTML =`\n <div class=\"fj:flex fj:justify-between fj:items-center fj:gap-3\">\n <div class=\"fj:font-medium\">Image</div>\n <button type=\"button\" class=\"fj:btn fj:btn-ghost fj:btn-xs fj:btn-circle\" onclick=\"nezanuha_toggleModal.remove()\">\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M18 6 6 18\"/><path d=\"m6 6 12 12\"/></svg>\n </button>\n </div>\n <form method=\"post\">\n <div class=\"fj:flex fj:flex-col fj:justify-center fj:gap-y-4.5 fj:mt-4\">\n ${fileInputTag}\n <input type=\"url\" placeholder=\"URL\" class=\"img-link-input fj:input fj:w-full\" required>\n <input type=\"text\" placeholder=\"Alt text\" class=\"img-link-alt-input fj:input fj:w-full\" value=\"${selectedText}\" ${(altRequired) && 'required'}>\n <button type=\"submit\" class=\"submit-img-link fj:btn fj:btn-sm fj:self-end\">Apply</button>\n </div>\n </form>`;\n\n const modalElement = modal(event, 'fj:max-w-sm', bodyHTML);\n\n if(this.fileInputConfig){\n const fileInputSelector = modalElement.querySelector(\".img-file-input\");\n const urlInputSelector = modalElement.querySelector(\".img-link-input\");\n const submitBtnSelector = modalElement.querySelector(\".submit-img-link\");\n\n fileInputSelector.addEventListener(\"change\", async () => {\n const file = fileInputSelector.files[0];\n if (!file || !uploadUrl) return;\n \n submitBtnSelector.disabled = true;\n submitBtnSelector.textContent = 'Uploading...';\n \n const formData = new FormData();\n formData.append('image', file);\n \n try {\n const res = await fetch(uploadUrl, {\n method: 'POST',\n body: formData\n });\n const result = await res.json();\n \n if (result.success && result.path) {\n urlInputSelector.value = result.path;\n submitBtnSelector.disabled = false;\n submitBtnSelector.textContent = 'Apply';\n } else {\n alert('Image upload failed.');\n fileInputSelector.value = ''; // ✅ Reset file input\n submitBtnSelector.disabled = false;\n submitBtnSelector.textContent = 'Apply';\n }\n } catch (err) {\n console.error(err);\n alert('Upload error.');\n fileInputSelector.value = ''; // ✅ Reset file input\n submitBtnSelector.disabled = false;\n submitBtnSelector.textContent = 'Apply';\n }\n });\n }\n \n\n modalElement.querySelector(\".submit-img-link\").addEventListener(\"click\", function(e){\n e.preventDefault();\n let imgLinkInput = modalElement.querySelector(\".img-link-input\");\n let imgLinkAltInput = modalElement.querySelector(\".img-link-alt-input\");\n\n if (!imgLinkInput.validity.valid) {\n imgLinkInput.reportValidity();\n } else if (!imgLinkAltInput.validity.valid) {\n imgLinkAltInput.reportValidity();\n } else {\n const imgLink = imgLinkInput.value;\n let imgLinkAlt = imgLinkAltInput.value;\n\n if(imgLinkAlt == ''){\n imgLinkAlt = '';\n }\n\n let newText = '';\n if (selectedText) {\n newText = `![${selectedText}](${imgLink})`; // Insert the link with selected text\n } else {\n newText = `![${imgLinkAlt}](${imgLink})`; // Insert a placeholder text if nothing is selected\n }\n editor.insertText(newText); // Insert the constructed link markdown\n \n imgLinkInput.value = '';\n imgLinkAltInput.value = '';\n modalElement.close();\n }\n });\n }\n }\n \n}\nexport default ImageTool;","import MakeTool from '../MakeTool.js';\n\nclass UndoTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Undo');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M3 7v6h6\"/><path d=\"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\"/>\n </svg>\n `);\n }\n\n applySyntax() {\n // Check if Undo is available and perform the undo action\n const undoRedoManager = this.editor.undoRedoManager;\n if (undoRedoManager) {\n undoRedoManager.undo();\n }\n }\n}\n\nexport default UndoTool;","import MakeTool from '../MakeTool.js';\n\nclass RedoTool extends MakeTool {\n constructor(editor) {\n super(editor, 'Redo');\n this.button = this.createButton(`\n <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\">\n <path d=\"M21 7v6h-6\"/><path d=\"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\"/>\n </svg>\n `);\n }\n\n applySyntax() {\n // Check if Redo is available and perform the redo action\n const undoRedoManager = this.editor.undoRedoManager;\n if (undoRedoManager) {\n undoRedoManager.redo();\n }\n }\n}\n\nexport default RedoTool;\n","import BoldTool from './tools/BoldTool.js';\nimport ItalicTool from './tools/ItalicTool.js';\nimport StrikethroughTool from './tools/StrikethroughTool.js';\nimport ULTool from './tools/ULTool.js';\nimport OLTool from './tools/OLTool.js';\nimport PreviewTool from './tools/PreviewTool.js'\nimport CheckListTool from './tools/CheckListTool.js';\nimport BlockQuoteTool from './tools/BlockQuoteTool.js';\nimport LinkTool from './tools/LinkTool.js'\nimport HeadingTool from './tools/HeadingTool.js';\nimport ImageTool from './tools/ImageTool.js';\nimport UndoTool from './tools/UndoTool.js';\nimport RedoTool from './tools/RedoTool.js';\n\nclass Toolbar {\n constructor(editor, options) {\n this.editor = editor;\n this.options = options;\n this.toolbar = document.createElement('div');\n this.toolbar.className = 'toolbar fj:surface fj:surface-1 fj:surface-outline fj:border-0 fj:border-b fj:flex fj:gap-x-1.5 fj:p-1.5 fj:overflow-x-auto';\n this.init();\n }\n\n init() {\n const toolMapping = {\n heading: HeadingTool,\n ul: ULTool,\n ol: OLTool,\n checklist: CheckListTool,\n bold: BoldTool,\n italic: ItalicTool,\n strikethrough: StrikethroughTool,\n blockquote: BlockQuoteTool,\n link: LinkTool,\n image: ImageTool,\n undo: UndoTool,\n redo: RedoTool\n };\n\n // Append all tools except preview\n // this.options.forEach(tool => {\n // if (tool !== 'preview') {\n // const ToolClass = toolMapping[tool];\n // if (ToolClass) {\n // const toolInstance = new ToolClass(this.editor);\n // this.toolbar.appendChild(toolInstance.button); // Directly append to toolbar\n // }\n // }\n // });\n\n this.options.forEach(tool => {\n let ToolClass, config;\n \n if (typeof tool === 'string') {\n ToolClass = toolMapping[tool];\n } else if (typeof tool === 'object') {\n const toolName = Object.keys(tool)[0];\n config = tool[toolName];\n ToolClass = toolMapping[toolName];\n }\n \n if (ToolClass) {\n const toolInstance = new ToolClass(this.editor, config);\n this.toolbar.appendChild(toolInstance.button);\n }\n });\n\n // Append preview button at the end\n if (this.options.includes('preview')) {\n const previewToolInstance = new PreviewTool(this.editor);\n this.toolbar.appendChild(previewToolInstance.button); // Directly append to toolbar at the end\n }\n\n this.editor.editorContainer.insertBefore(this.toolbar, this.editor.markdownEditorDiv);\n }\n}\n\nexport default Toolbar;\n","export default class Diff {\n diff(oldStr, newStr, \n // Type below is not accurate/complete - see above for full possibilities - but it compiles\n options = {}) {\n let callback;\n if (typeof options === 'function') {\n callback = options;\n options = {};\n }\n else if ('callback' in options) {\n callback = options.callback;\n }\n // Allow subclasses to massage the input prior to running\n const oldString = this.castInput(oldStr, options);\n const newString = this.castInput(newStr, options);\n const oldTokens = this.removeEmpty(this.tokenize(oldString, options));\n const newTokens = this.removeEmpty(this.tokenize(newString, options));\n return this.diffWithOptionsObj(oldTokens, newTokens, options, callback);\n }\n diffWithOptionsObj(oldTokens, newTokens, options, callback) {\n var _a;\n const done = (value) => {\n value = this.postProcess(value, options);\n if (callback) {\n setTimeout(function () { callback(value); }, 0);\n return undefined;\n }\n else {\n return value;\n }\n };\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let editLength = 1;\n let maxEditLength = newLen + oldLen;\n if (options.maxEditLength != null) {\n maxEditLength = Math.min(maxEditLength, options.maxEditLength);\n }\n const maxExecutionTime = (_a = options.timeout) !== null && _a !== void 0 ? _a : Infinity;\n const abortAfterTimestamp = Date.now() + maxExecutionTime;\n const bestPath = [{ oldPos: -1, lastComponent: undefined }];\n // Seed editLength = 0, i.e. the content starts with the same values\n let newPos = this.extractCommon(bestPath[0], newTokens, oldTokens, 0, options);\n if (bestPath[0].oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // Identity per the equality and tokenizer\n return done(this.buildValues(bestPath[0].lastComponent, newTokens, oldTokens));\n }\n // Once we hit the right edge of the edit graph on some diagonal k, we can\n // definitely reach the end of the edit graph in no more than k edits, so\n // there's no point in considering any moves to diagonal k+1 any more (from\n // which we're guaranteed to need at least k+1 more edits).\n // Similarly, once we've reached the bottom of the edit graph, there's no\n // point considering moves to lower diagonals.\n // We record this fact by setting minDiagonalToConsider and\n // maxDiagonalToConsider to some finite value once we've hit the edge of\n // the edit graph.\n // This optimization is not faithful to the original algorithm presented in\n // Myers's paper, which instead pointlessly extends D-paths off the end of\n // the edit graph - see page 7 of Myers's paper which notes this point\n // explicitly and illustrates it with a diagram. This has major performance\n // implications for some common scenarios. For instance, to compute a diff\n // where the new text simply appends d characters on the end of the\n // original text of length n, the true Myers algorithm will take O(n+d^2)\n // time while this optimization needs only O(n+d) time.\n let minDiagonalToConsider = -Infinity, maxDiagonalToConsider = Infinity;\n // Main worker method. checks all permutations of a given edit length for acceptance.\n const execEditLength = () => {\n for (let diagonalPath = Math.max(minDiagonalToConsider, -editLength); diagonalPath <= Math.min(maxDiagonalToConsider, editLength); diagonalPath += 2) {\n let basePath;\n const removePath = bestPath[diagonalPath - 1], addPath = bestPath[diagonalPath + 1];\n if (removePath) {\n // No one else is going to attempt to use this value, clear it\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath - 1] = undefined;\n }\n let canAdd = false;\n if (addPath) {\n // what newPos will be after we do an insertion:\n const addPathNewPos = addPath.oldPos - diagonalPath;\n canAdd = addPath && 0 <= addPathNewPos && addPathNewPos < newLen;\n }\n const canRemove = removePath && removePath.oldPos + 1 < oldLen;\n if (!canAdd && !canRemove) {\n // If this path is a terminal then prune\n // @ts-expect-error - perf optimisation. This type-violating value will never be read.\n bestPath[diagonalPath] = undefined;\n continue;\n }\n // Select the diagonal that we want to branch from. We select the prior\n // path whose position in the old string is the farthest from the origin\n // and does not pass the bounds of the diff graph\n if (!canRemove || (canAdd && removePath.oldPos < addPath.oldPos)) {\n basePath = this.addToPath(addPath, true, false, 0, options);\n }\n else {\n basePath = this.addToPath(removePath, false, true, 1, options);\n }\n newPos = this.extractCommon(basePath, newTokens, oldTokens, diagonalPath, options);\n if (basePath.oldPos + 1 >= oldLen && newPos + 1 >= newLen) {\n // If we have hit the end of both strings, then we are done\n return done(this.buildValues(basePath.lastComponent, newTokens, oldTokens)) || true;\n }\n else {\n bestPath[diagonalPath] = basePath;\n if (basePath.oldPos + 1 >= oldLen) {\n maxDiagonalToConsider = Math.min(maxDiagonalToConsider, diagonalPath - 1);\n }\n if (newPos + 1 >= newLen) {\n minDiagonalToConsider = Math.max(minDiagonalToConsider, diagonalPath + 1);\n }\n }\n }\n editLength++;\n };\n // Performs the length of edit iteration. Is a bit fugly as this has to support the\n // sync and async mode which is never fun. Loops over execEditLength until a value\n // is produced, or until the edit length exceeds options.maxEditLength (if given),\n // in which case it will return undefined.\n if (callback) {\n (function exec() {\n setTimeout(function () {\n if (editLength > maxEditLength || Date.now() > abortAfterTimestamp) {\n return callback(undefined);\n }\n if (!execEditLength()) {\n exec();\n }\n }, 0);\n }());\n }\n else {\n while (editLength <= maxEditLength && Date.now() <= abortAfterTimestamp) {\n const ret = execEditLength();\n if (ret) {\n return ret;\n }\n }\n }\n }\n addToPath(path, added, removed, oldPosInc, options) {\n const last = path.lastComponent;\n if (last && !options.oneChangePerToken && last.added === added && last.removed === removed) {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: last.count + 1, added: added, removed: removed, previousComponent: last.previousComponent }\n };\n }\n else {\n return {\n oldPos: path.oldPos + oldPosInc,\n lastComponent: { count: 1, added: added, removed: removed, previousComponent: last }\n };\n }\n }\n extractCommon(basePath, newTokens, oldTokens, diagonalPath, options) {\n const newLen = newTokens.length, oldLen = oldTokens.length;\n let oldPos = basePath.oldPos, newPos = oldPos - diagonalPath, commonCount = 0;\n while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(oldTokens[oldPos + 1], newTokens[newPos + 1], options)) {\n newPos++;\n oldPos++;\n commonCount++;\n if (options.oneChangePerToken) {\n basePath.lastComponent = { count: 1, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n }\n if (commonCount && !options.oneChangePerToken) {\n basePath.lastComponent = { count: commonCount, previousComponent: basePath.lastComponent, added: false, removed: false };\n }\n basePath.oldPos = oldPos;\n return newPos;\n }\n equals(left, right, options) {\n if (options.comparator) {\n return options.comparator(left, right);\n }\n else {\n return left === right\n || (!!options.ignoreCase && left.toLowerCase() === right.toLowerCase());\n }\n }\n removeEmpty(array) {\n const ret = [];\n for (let i = 0; i < array.length; i++) {\n if (array[i]) {\n ret.push(array[i]);\n }\n }\n return ret;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n castInput(value, options) {\n return value;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n tokenize(value, options) {\n return Array.from(value);\n }\n join(chars) {\n // Assumes ValueT is string, which is the case for most subclasses.\n // When it's false, e.g. in diffArrays, this method needs to be overridden (e.g. with a no-op)\n // Yes, the casts are verbose and ugly, because this pattern - of having the base class SORT OF\n // assume tokens and values are strings, but not completely - is weird and janky.\n return chars.join('');\n }\n postProcess(changeObjects, \n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n options) {\n return changeObjects;\n }\n get useLongestToken() {\n return false;\n }\n buildValues(lastComponent, newTokens, oldTokens) {\n // First we convert our linked list of components in reverse order to an\n // array in the right order:\n const components = [];\n let nextComponent;\n while (lastComponent) {\n components.push(lastComponent);\n nextComponent = lastComponent.previousComponent;\n delete lastComponent.previousComponent;\n lastComponent = nextComponent;\n }\n components.reverse();\n const componentLen = components.length;\n let componentPos = 0, newPos = 0, oldPos = 0;\n for (; componentPos < componentLen; componentPos++) {\n const component = components[componentPos];\n if (!component.removed) {\n if (!component.added && this.useLongestToken) {\n let value = newTokens.slice(newPos, newPos + component.count);\n value = value.map(function (value, i) {\n const oldValue = oldTokens[oldPos + i];\n return oldValue.length > value.length ? oldValue : value;\n });\n component.value = this.join(value);\n }\n else {\n component.value = this.join(newTokens.slice(newPos, newPos + component.count));\n }\n newPos += component.count;\n // Common case\n if (!component.added) {\n oldPos += component.count;\n }\n }\n else {\n component.value = this.join(oldTokens.slice(oldPos, oldPos + component.count));\n oldPos += component.count;\n }\n }\n return components;\n }\n}\n","import Diff from './base.js';\nclass CharacterDiff extends Diff {\n}\nexport const characterDiff = new CharacterDiff();\nexport function diffChars(oldStr, newStr, options) {\n return characterDiff.diff(oldStr, newStr, options);\n}\n","import { diffChars } from 'diff';\n\nexport default class UndoRedoManager {\n constructor(editor) {\n this.editor = editor;\n this.textarea = editor.usertextarea;\n this.undoStack = [];\n this.redoStack = [];\n this.lastValue = this.textarea.value;\n this.lastSelection = {\n selectionStart: this.textarea.selectionStart,\n selectionEnd: this.textarea.selectionEnd\n };\n this.debounceDelay = 1000;\n\n this._bindEvents();\n // No need to push initial state, just track lastValue\n }\n\n _bindEvents() {\n this.textarea.addEventListener('keydown', (e) => this._onKeyDown(e));\n this.textarea.addEventListener('input', (e) => this._onInput(e));\n this.textarea.addEventListener('paste', () => this._saveState());\n this.textarea.addEventListener('blur', () => this._saveState());\n this.textarea.addEventListener('keydown', (e) => {\n if (e.key === 'Enter' || e.key === 'Backspace' || e.key === 'Delete') {\n this._saveState();\n }\n });\n }\n\n _onKeyDown(e) {\n // Undo: Cmd+Z (Mac) or Ctrl+Z (others)\n if ((e.metaKey || e.ctrlKey) && e.key.toLowerCase() === 'z' && !e.shiftKey) {\n e.preventDefault();\n this.undo();\n return;\n }\n // Redo: Cmd+Shift+Z (Mac), Ctrl+Y or Ctrl+Shift+Z (others)\n if (\n (e.metaKey && e.key.toLowerCase() === 'z' && e.shiftKey) || // Cmd+Shift+Z (Mac)\n (e.ctrlKey && (e.key.toLowerCase() === 'y' || (e.key.toLowerCase() === 'z' && e.shiftKey))) // Ctrl+Y or Ctrl+Shift+Z (Win/Linux)\n ) {\n e.preventDefault();\n this.redo();\n return;\n }\n }\n\n _onInput(e) {\n clearTimeout(this._debounceTimer);\n\n // Save point if the last character is a word boundary\n const value = this.textarea.value;\n const lastChar = value[this.textarea.selectionStart - 1];\n if (lastChar && /[\\s.,;:!?()\\[\\]{}'\"`~]/.test(lastChar)) {\n this._saveState();\n } else {\n // Otherwise, debounce save point\n this._debounceTimer = setTimeout(() => {\n this._saveState();\n }, this.debounceDelay);\n }\n }\n\n _saveState() {\n const newValue = this.textarea.value || '';\n if (newValue !== this.lastValue) {\n // Store the diff array, not a patch\n const diff = diffChars(this.lastValue, newValue);\n this.undoStack.push({\n diff,\n selection: { ...this.lastSelection }\n });\n this.lastValue = newValue;\n this.lastSelection = {\n selectionStart: this.textarea.selectionStart,\n selectionEnd: this.textarea.selectionEnd\n };\n this.redoStack = [];\n }\n }\n\n undo() {\n if (this.undoStack.length === 0) return;\n const lastStep = this.undoStack.pop();\n\n // Revert the diff\n const prevValue = this._revertDiff(this.lastValue, lastStep.diff);\n this.redoStack.push({\n diff: lastStep.diff,\n selection: { ...this.lastSelection }\n });\n\n this._restoreState(prevValue, lastStep.selection);\n }\n\n redo() {\n if (this.redoStack.length === 0) return;\n const redoStep = this.redoStack.pop();\n\n // Re-apply the diff\n const newValue = this._applyDiff(this.lastValue, redoStep.diff);\n this.undoStack.push({\n diff: redoStep.diff,\n selection: { ...redoStep.selection }\n });\n\n this._restoreState(newValue, redoStep.selection);\n }\n\n _applyDiff(oldValue, diff) {\n // Reconstruct newValue from diff\n let newValue = '';\n diff.forEach(part => {\n if (!part.removed) {\n newValue += part.value;\n }\n });\n return newValue;\n }\n\n _revertDiff(newValue, diff) {\n // Reconstruct oldValue from diff\n let oldValue = '';\n diff.forEach(part => {\n if (!part.added) {\n oldValue += part.value;\n }\n });\n return oldValue;\n }\n\n _restoreState(value, selection) {\n this.textarea.value = value;\n this.textarea.setSelectionRange(\n selection.selectionStart,\n selection.selectionEnd\n );\n this.lastValue = value;\n this.lastSelection = { ...selection };\n this.editor.render();\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * marked v16.1.2 - a markdown parser\n * Copyright (c) 2011-2025, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/markedjs/marked\n */\n\n/**\n * DO NOT EDIT THIS FILE\n * The code in this file is generated from files in ./src/\n */\n\nfunction L(){return{async:!1,breaks:!1,extensions:null,gfm:!0,hooks:null,pedantic:!1,renderer:null,silent:!1,tokenizer:null,walkTokens:null}}var O=L();function H(l){O=l}var E={exec:()=>null};function h(l,e=\"\"){let t=typeof l==\"string\"?l:l.source,n={replace:(r,i)=>{let s=typeof i==\"string\"?i:i.source;return s=s.replace(m.caret,\"$1\"),t=t.replace(r,s),n},getRegex:()=>new RegExp(t,e)};return n}var m={codeRemoveIndent:/^(?: {1,4}| {0,3}\\t)/gm,outputLinkReplace:/\\\\([\\[\\]])/g,indentCodeCompensation:/^(\\s+)(?:```)/,beginningSpace:/^\\s+/,endingHash:/#$/,startingSpaceChar:/^ /,endingSpaceChar:/ $/,nonSpaceChar:/[^ ]/,newLineCharGlobal:/\\n/g,tabCharGlobal:/\\t/g,multipleSpaceGlobal:/\\s+/g,blankLine:/^[ \\t]*$/,doubleBlankLine:/\\n[ \\t]*\\n[ \\t]*$/,blockquoteStart:/^ {0,3}>/,blockquoteSetextReplace:/\\n {0,3}((?:=+|-+) *)(?=\\n|$)/g,blockquoteSetextReplace2:/^ {0,3}>[ \\t]?/gm,listReplaceTabs:/^\\t+/,listReplaceNesting:/^ {1,4}(?=( {4})*[^ ])/g,listIsTask:/^\\[[ xX]\\] /,listReplaceTask:/^\\[[ xX]\\] +/,anyLine:/\\n.*\\n/,hrefBrackets:/^<(.*)>$/,tableDelimiter:/[:|]/,tableAlignChars:/^\\||\\| *$/g,tableRowBlankLine:/\\n[ \\t]*$/,tableAlignRight:/^ *-+: *$/,tableAlignCenter:/^ *:-+: *$/,tableAlignLeft:/^ *:-+ *$/,startATag:/^<a /i,endATag:/^<\\/a>/i,startPreScriptTag:/^<(pre|code|kbd|script)(\\s|>)/i,endPreScriptTag:/^<\\/(pre|code|kbd|script)(\\s|>)/i,startAngleBracket:/^</,endAngleBracket:/>$/,pedanticHrefTitle:/^([^'\"]*[^\\s])\\s+(['\"])(.*)\\2/,unicodeAlphaNumeric:/[\\p{L}\\p{N}]/u,escapeTest:/[&<>\"']/,escapeReplace:/[&<>\"']/g,escapeTestNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/,escapeReplaceNoEncode:/[<>\"']|&(?!(#\\d{1,7}|#[Xx][a-fA-F0-9]{1,6}|\\w+);)/g,unescapeTest:/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/ig,caret:/(^|[^\\[])\\^/g,percentDecode:/%25/g,findPipe:/\\|/g,splitPipe:/ \\|/,slashPipe:/\\\\\\|/g,carriageReturn:/\\r\\n|\\r/g,spaceLine:/^ +$/gm,notSpaceStart:/^\\S*/,endingNewline:/\\n$/,listItemRegex:l=>new RegExp(`^( {0,3}${l})((?:[\t ][^\\\\n]*)?(?:\\\\n|$))`),nextBulletRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:[*+-]|\\\\d{1,9}[.)])((?:[ \t][^\\\\n]*)?(?:\\\\n|$))`),hrRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}((?:- *){3,}|(?:_ *){3,}|(?:\\\\* *){3,})(?:\\\\n+|$)`),fencesBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}(?:\\`\\`\\`|~~~)`),headingBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}#`),htmlBeginRegex:l=>new RegExp(`^ {0,${Math.min(3,l-1)}}<(?:[a-z].*>|!--)`,\"i\")},xe=/^(?:[ \\t]*(?:\\n|$))+/,be=/^((?: {4}| {0,3}\\t)[^\\n]+(?:\\n(?:[ \\t]*(?:\\n|$))*)?)+/,Re=/^ {0,3}(`{3,}(?=[^`\\n]*(?:\\n|$))|~{3,})([^\\n]*)(?:\\n|$)(?:|([\\s\\S]*?)(?:\\n|$))(?: {0,3}\\1[~`]* *(?=\\n|$)|$)/,C=/^ {0,3}((?:-[\\t ]*){3,}|(?:_[ \\t]*){3,}|(?:\\*[ \\t]*){3,})(?:\\n+|$)/,Oe=/^ {0,3}(#{1,6})(?=\\s|$)(.*)(?:\\n+|$)/,j=/(?:[*+-]|\\d{1,9}[.)])/,se=/^(?!bull |blockCode|fences|blockquote|heading|html|table)((?:.|\\n(?!\\s*?\\n|bull |blockCode|fences|blockquote|heading|html|table))+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,ie=h(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/\\|table/g,\"\").getRegex(),Te=h(se).replace(/bull/g,j).replace(/blockCode/g,/(?: {4}| {0,3}\\t)/).replace(/fences/g,/ {0,3}(?:`{3,}|~{3,})/).replace(/blockquote/g,/ {0,3}>/).replace(/heading/g,/ {0,3}#{1,6}/).replace(/html/g,/ {0,3}<[^\\n>]+>\\n/).replace(/table/g,/ {0,3}\\|?(?:[:\\- ]*\\|)+[\\:\\- ]*\\n/).getRegex(),F=/^([^\\n]+(?:\\n(?!hr|heading|lheading|blockquote|fences|list|html|table| +\\n)[^\\n]+)*)/,we=/^[^\\n]+/,Q=/(?!\\s*\\])(?:\\\\.|[^\\[\\]\\\\])+/,ye=h(/^ {0,3}\\[(label)\\]: *(?:\\n[ \\t]*)?([^<\\s][^\\s]*|<.*?>)(?:(?: +(?:\\n[ \\t]*)?| *\\n[ \\t]*)(title))? *(?:\\n+|$)/).replace(\"label\",Q).replace(\"title\",/(?:\"(?:\\\\\"?|[^\"\\\\])*\"|'[^'\\n]*(?:\\n[^'\\n]+)*\\n?'|\\([^()]*\\))/).getRegex(),Pe=h(/^( {0,3}bull)([ \\t][^\\n]+?)?(?:\\n|$)/).replace(/bull/g,j).getRegex(),v=\"address|article|aside|base|basefont|blockquote|body|caption|center|col|colgroup|dd|details|dialog|dir|div|dl|dt|fieldset|figcaption|figure|footer|form|frame|frameset|h[1-6]|head|header|hr|html|iframe|legend|li|link|main|menu|menuitem|meta|nav|noframes|ol|optgroup|option|p|param|search|section|summary|table|tbody|td|tfoot|th|thead|title|tr|track|ul\",U=/<!--(?:-?>|[\\s\\S]*?(?:-->|$))/,Se=h(\"^ {0,3}(?:<(script|pre|style|textarea)[\\\\s>][\\\\s\\\\S]*?(?:</\\\\1>[^\\\\n]*\\\\n+|$)|comment[^\\\\n]*(\\\\n+|$)|<\\\\?[\\\\s\\\\S]*?(?:\\\\?>\\\\n*|$)|<![A-Z][\\\\s\\\\S]*?(?:>\\\\n*|$)|<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?(?:\\\\]\\\\]>\\\\n*|$)|</?(tag)(?: +|\\\\n|/?>)[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|<(?!script|pre|style|textarea)([a-z][\\\\w-]*)(?:attribute)*? */?>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$)|</(?!script|pre|style|textarea)[a-z][\\\\w-]*\\\\s*>(?=[ \\\\t]*(?:\\\\n|$))[\\\\s\\\\S]*?(?:(?:\\\\n[ \t]*)+\\\\n|$))\",\"i\").replace(\"comment\",U).replace(\"tag\",v).replace(\"attribute\",/ +[a-zA-Z:_][\\w.:-]*(?: *= *\"[^\"\\n]*\"| *= *'[^'\\n]*'| *= *[^\\s\"'=<>`]+)?/).getRegex(),oe=h(F).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),$e=h(/^( {0,3}> ?(paragraph|[^\\n]*)(?:\\n|$))+/).replace(\"paragraph\",oe).getRegex(),K={blockquote:$e,code:be,def:ye,fences:Re,heading:Oe,hr:C,html:Se,lheading:ie,list:Pe,newline:xe,paragraph:oe,table:E,text:we},re=h(\"^ *([^\\\\n ].*)\\\\n {0,3}((?:\\\\| *)?:?-+:? *(?:\\\\| *:?-+:? *)*(?:\\\\| *)?)(?:\\\\n((?:(?! *\\\\n|hr|heading|blockquote|code|fences|list|html).*(?:\\\\n|$))*)\\\\n*|$)\").replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"blockquote\",\" {0,3}>\").replace(\"code\",\"(?: {4}| {0,3}\t)[^\\\\n]\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex(),_e={...K,lheading:Te,table:re,paragraph:h(F).replace(\"hr\",C).replace(\"heading\",\" {0,3}#{1,6}(?:\\\\s|$)\").replace(\"|lheading\",\"\").replace(\"table\",re).replace(\"blockquote\",\" {0,3}>\").replace(\"fences\",\" {0,3}(?:`{3,}(?=[^`\\\\n]*\\\\n)|~{3,})[^\\\\n]*\\\\n\").replace(\"list\",\" {0,3}(?:[*+-]|1[.)]) \").replace(\"html\",\"</?(?:tag)(?: +|\\\\n|/?>)|<(?:script|pre|style|textarea|!--)\").replace(\"tag\",v).getRegex()},Le={...K,html:h(`^ *(?:comment *(?:\\\\n|\\\\s*$)|<(tag)[\\\\s\\\\S]+?</\\\\1> *(?:\\\\n{2,}|\\\\s*$)|<tag(?:\"[^\"]*\"|'[^']*'|\\\\s[^'\"/>\\\\s]*)*?/?> *(?:\\\\n{2,}|\\\\s*$))`).replace(\"comment\",U).replace(/tag/g,\"(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:|[^\\\\w\\\\s@]*@)\\\\b\").getRegex(),def:/^ *\\[([^\\]]+)\\]: *<?([^\\s>]+)>?(?: +([\"(][^\\n]+[\")]))? *(?:\\n+|$)/,heading:/^(#{1,6})(.*)(?:\\n+|$)/,fences:E,lheading:/^(.+?)\\n {0,3}(=+|-+) *(?:\\n+|$)/,paragraph:h(F).replace(\"hr\",C).replace(\"heading\",` *#{1,6} *[^\n]`).replace(\"lheading\",ie).replace(\"|table\",\"\").replace(\"blockquote\",\" {0,3}>\").replace(\"|fences\",\"\").replace(\"|list\",\"\").replace(\"|html\",\"\").replace(\"|tag\",\"\").getRegex()},Me=/^\\\\([!\"#$%&'()*+,\\-./:;<=>?@\\[\\]\\\\^_`{|}~])/,ze=/^(`+)([^`]|[^`][\\s\\S]*?[^`])\\1(?!`)/,ae=/^( {2,}|\\\\)\\n(?!\\s*$)/,Ae=/^(`+|[^`])(?:(?= {2,}\\n)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*_]|\\b_|$)|[^ ](?= {2,}\\n)))/,D=/[\\p{P}\\p{S}]/u,W=/[\\s\\p{P}\\p{S}]/u,le=/[^\\s\\p{P}\\p{S}]/u,Ee=h(/^((?![*_])punctSpace)/,\"u\").replace(/punctSpace/g,W).getRegex(),ue=/(?!~)[\\p{P}\\p{S}]/u,Ce=/(?!~)[\\s\\p{P}\\p{S}]/u,Ie=/(?:[^\\s\\p{P}\\p{S}]|~)/u,Be=/\\[[^[\\]]*?\\]\\((?:\\\\.|[^\\\\\\(\\)]|\\((?:\\\\.|[^\\\\\\(\\)])*\\))*\\)|`[^`]*?`|<(?! )[^<>]*?>/g,pe=/^(?:\\*+(?:((?!\\*)punct)|[^\\s*]))|^_+(?:((?!_)punct)|([^\\s_]))/,qe=h(pe,\"u\").replace(/punct/g,D).getRegex(),ve=h(pe,\"u\").replace(/punct/g,ue).getRegex(),ce=\"^[^_*]*?__[^_*]*?\\\\*[^_*]*?(?=__)|[^*]+(?=[^*])|(?!\\\\*)punct(\\\\*+)(?=[\\\\s]|$)|notPunctSpace(\\\\*+)(?!\\\\*)(?=punctSpace|$)|(?!\\\\*)punctSpace(\\\\*+)(?=notPunctSpace)|[\\\\s](\\\\*+)(?!\\\\*)(?=punct)|(?!\\\\*)punct(\\\\*+)(?!\\\\*)(?=punct)|notPunctSpace(\\\\*+)(?=notPunctSpace)\",De=h(ce,\"gu\").replace(/notPunctSpace/g,le).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),Ze=h(ce,\"gu\").replace(/notPunctSpace/g,Ie).replace(/punctSpace/g,Ce).replace(/punct/g,ue).getRegex(),Ge=h(\"^[^_*]*?\\\\*\\\\*[^_*]*?_[^_*]*?(?=\\\\*\\\\*)|[^_]+(?=[^_])|(?!_)punct(_+)(?=[\\\\s]|$)|notPunctSpace(_+)(?!_)(?=punctSpace|$)|(?!_)punctSpace(_+)(?=notPunctSpace)|[\\\\s](_+)(?!_)(?=punct)|(?!_)punct(_+)(?!_)(?=punct)\",\"gu\").replace(/notPunctSpace/g,le).replace(/punctSpace/g,W).replace(/punct/g,D).getRegex(),He=h(/\\\\(punct)/,\"gu\").replace(/punct/g,D).getRegex(),Ne=h(/^<(scheme:[^\\s\\x00-\\x1f<>]*|email)>/).replace(\"scheme\",/[a-zA-Z][a-zA-Z0-9+.-]{1,31}/).replace(\"email\",/[a-zA-Z0-9.!#$%&'*+/=?^_`{|}~-]+(@)[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+(?![-_])/).getRegex(),je=h(U).replace(\"(?:-->|$)\",\"-->\").getRegex(),Fe=h(\"^comment|^</[a-zA-Z][\\\\w:-]*\\\\s*>|^<[a-zA-Z][\\\\w-]*(?:attribute)*?\\\\s*/?>|^<\\\\?[\\\\s\\\\S]*?\\\\?>|^<![a-zA-Z]+\\\\s[\\\\s\\\\S]*?>|^<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>\").replace(\"comment\",je).replace(\"attribute\",/\\s+[a-zA-Z:_][\\w.:-]*(?:\\s*=\\s*\"[^\"]*\"|\\s*=\\s*'[^']*'|\\s*=\\s*[^\\s\"'=<>`]+)?/).getRegex(),q=/(?:\\[(?:\\\\.|[^\\[\\]\\\\])*\\]|\\\\.|`[^`]*`|[^\\[\\]\\\\`])*?/,Qe=h(/^!?\\[(label)\\]\\(\\s*(href)(?:(?:[ \\t]*(?:\\n[ \\t]*)?)(title))?\\s*\\)/).replace(\"label\",q).replace(\"href\",/<(?:\\\\.|[^\\n<>\\\\])+>|[^ \\t\\n\\x00-\\x1f]*/).replace(\"title\",/\"(?:\\\\\"?|[^\"\\\\])*\"|'(?:\\\\'?|[^'\\\\])*'|\\((?:\\\\\\)?|[^)\\\\])*\\)/).getRegex(),he=h(/^!?\\[(label)\\]\\[(ref)\\]/).replace(\"label\",q).replace(\"ref\",Q).getRegex(),de=h(/^!?\\[(ref)\\](?:\\[\\])?/).replace(\"ref\",Q).getRegex(),Ue=h(\"reflink|nolink(?!\\\\()\",\"g\").replace(\"reflink\",he).replace(\"nolink\",de).getRegex(),X={_backpedal:E,anyPunctuation:He,autolink:Ne,blockSkip:Be,br:ae,code:ze,del:E,emStrongLDelim:qe,emStrongRDelimAst:De,emStrongRDelimUnd:Ge,escape:Me,link:Qe,nolink:de,punctuation:Ee,reflink:he,reflinkSearch:Ue,tag:Fe,text:Ae,url:E},Ke={...X,link:h(/^!?\\[(label)\\]\\((.*?)\\)/).replace(\"label\",q).getRegex(),reflink:h(/^!?\\[(label)\\]\\s*\\[([^\\]]*)\\]/).replace(\"label\",q).getRegex()},N={...X,emStrongRDelimAst:Ze,emStrongLDelim:ve,url:h(/^((?:ftp|https?):\\/\\/|www\\.)(?:[a-zA-Z0-9\\-]+\\.?)+[^\\s<]*|^email/,\"i\").replace(\"email\",/[A-Za-z0-9._+-]+(@)[a-zA-Z0-9-_]+(?:\\.[a-zA-Z0-9-_]*[a-zA-Z0-9])+(?![-_])/).getRegex(),_backpedal:/(?:[^?!.,:;*_'\"~()&]+|\\([^)]*\\)|&(?![a-zA-Z0-9]+;$)|[?!.,:;*_'\"~)]+(?!$))+/,del:/^(~~?)(?=[^\\s~])((?:\\\\.|[^\\\\])*?(?:\\\\.|[^\\s~\\\\]))\\1(?=[^~]|$)/,text:/^([`~]+|[^`~])(?:(?= {2,}\\n)|(?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)|[\\s\\S]*?(?:(?=[\\\\<!\\[`*~_]|\\b_|https?:\\/\\/|ftp:\\/\\/|www\\.|$)|[^ ](?= {2,}\\n)|[^a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-](?=[a-zA-Z0-9.!#$%&'*+\\/=?_`{\\|}~-]+@)))/},We={...N,br:h(ae).replace(\"{2,}\",\"*\").getRegex(),text:h(N.text).replace(\"\\\\b_\",\"\\\\b_| {2,}\\\\n\").replace(/\\{2,\\}/g,\"*\").getRegex()},I={normal:K,gfm:_e,pedantic:Le},M={normal:X,gfm:N,breaks:We,pedantic:Ke};var Xe={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\",\"'\":\"&#39;\"},ke=l=>Xe[l];function w(l,e){if(e){if(m.escapeTest.test(l))return l.replace(m.escapeReplace,ke)}else if(m.escapeTestNoEncode.test(l))return l.replace(m.escapeReplaceNoEncode,ke);return l}function J(l){try{l=encodeURI(l).replace(m.percentDecode,\"%\")}catch{return null}return l}function V(l,e){let t=l.replace(m.findPipe,(i,s,o)=>{let a=!1,u=s;for(;--u>=0&&o[u]===\"\\\\\";)a=!a;return a?\"|\":\" |\"}),n=t.split(m.splitPipe),r=0;if(n[0].trim()||n.shift(),n.length>0&&!n.at(-1)?.trim()&&n.pop(),e)if(n.length>e)n.splice(e);else for(;n.length<e;)n.push(\"\");for(;r<n.length;r++)n[r]=n[r].trim().replace(m.slashPipe,\"|\");return n}function z(l,e,t){let n=l.length;if(n===0)return\"\";let r=0;for(;r<n;){let i=l.charAt(n-r-1);if(i===e&&!t)r++;else if(i!==e&&t)r++;else break}return l.slice(0,n-r)}function ge(l,e){if(l.indexOf(e[1])===-1)return-1;let t=0;for(let n=0;n<l.length;n++)if(l[n]===\"\\\\\")n++;else if(l[n]===e[0])t++;else if(l[n]===e[1]&&(t--,t<0))return n;return t>0?-2:-1}function fe(l,e,t,n,r){let i=e.href,s=e.title||null,o=l[1].replace(r.other.outputLinkReplace,\"$1\");n.state.inLink=!0;let a={type:l[0].charAt(0)===\"!\"?\"image\":\"link\",raw:t,href:i,title:s,text:o,tokens:n.inlineTokens(o)};return n.state.inLink=!1,a}function Je(l,e,t){let n=l.match(t.other.indentCodeCompensation);if(n===null)return e;let r=n[1];return e.split(`\n`).map(i=>{let s=i.match(t.other.beginningSpace);if(s===null)return i;let[o]=s;return o.length>=r.length?i.slice(r.length):i}).join(`\n`)}var y=class{options;rules;lexer;constructor(e){this.options=e||O}space(e){let t=this.rules.block.newline.exec(e);if(t&&t[0].length>0)return{type:\"space\",raw:t[0]}}code(e){let t=this.rules.block.code.exec(e);if(t){let n=t[0].replace(this.rules.other.codeRemoveIndent,\"\");return{type:\"code\",raw:t[0],codeBlockStyle:\"indented\",text:this.options.pedantic?n:z(n,`\n`)}}}fences(e){let t=this.rules.block.fences.exec(e);if(t){let n=t[0],r=Je(n,t[3]||\"\",this.rules);return{type:\"code\",raw:n,lang:t[2]?t[2].trim().replace(this.rules.inline.anyPunctuation,\"$1\"):t[2],text:r}}}heading(e){let t=this.rules.block.heading.exec(e);if(t){let n=t[2].trim();if(this.rules.other.endingHash.test(n)){let r=z(n,\"#\");(this.options.pedantic||!r||this.rules.other.endingSpaceChar.test(r))&&(n=r.trim())}return{type:\"heading\",raw:t[0],depth:t[1].length,text:n,tokens:this.lexer.inline(n)}}}hr(e){let t=this.rules.block.hr.exec(e);if(t)return{type:\"hr\",raw:z(t[0],`\n`)}}blockquote(e){let t=this.rules.block.blockquote.exec(e);if(t){let n=z(t[0],`\n`).split(`\n`),r=\"\",i=\"\",s=[];for(;n.length>0;){let o=!1,a=[],u;for(u=0;u<n.length;u++)if(this.rules.other.blockquoteStart.test(n[u]))a.push(n[u]),o=!0;else if(!o)a.push(n[u]);else break;n=n.slice(u);let p=a.join(`\n`),c=p.replace(this.rules.other.blockquoteSetextReplace,`\n $1`).replace(this.rules.other.blockquoteSetextReplace2,\"\");r=r?`${r}\n${p}`:p,i=i?`${i}\n${c}`:c;let f=this.lexer.state.top;if(this.lexer.state.top=!0,this.lexer.blockTokens(c,s,!0),this.lexer.state.top=f,n.length===0)break;let k=s.at(-1);if(k?.type===\"code\")break;if(k?.type===\"blockquote\"){let x=k,g=x.raw+`\n`+n.join(`\n`),T=this.blockquote(g);s[s.length-1]=T,r=r.substring(0,r.length-x.raw.length)+T.raw,i=i.substring(0,i.length-x.text.length)+T.text;break}else if(k?.type===\"list\"){let x=k,g=x.raw+`\n`+n.join(`\n`),T=this.list(g);s[s.length-1]=T,r=r.substring(0,r.length-k.raw.length)+T.raw,i=i.substring(0,i.length-x.raw.length)+T.raw,n=g.substring(s.at(-1).raw.length).split(`\n`);continue}}return{type:\"blockquote\",raw:r,tokens:s,text:i}}}list(e){let t=this.rules.block.list.exec(e);if(t){let n=t[1].trim(),r=n.length>1,i={type:\"list\",raw:\"\",ordered:r,start:r?+n.slice(0,-1):\"\",loose:!1,items:[]};n=r?`\\\\d{1,9}\\\\${n.slice(-1)}`:`\\\\${n}`,this.options.pedantic&&(n=r?n:\"[*+-]\");let s=this.rules.other.listItemRegex(n),o=!1;for(;e;){let u=!1,p=\"\",c=\"\";if(!(t=s.exec(e))||this.rules.block.hr.test(e))break;p=t[0],e=e.substring(p.length);let f=t[2].split(`\n`,1)[0].replace(this.rules.other.listReplaceTabs,Z=>\" \".repeat(3*Z.length)),k=e.split(`\n`,1)[0],x=!f.trim(),g=0;if(this.options.pedantic?(g=2,c=f.trimStart()):x?g=t[1].length+1:(g=t[2].search(this.rules.other.nonSpaceChar),g=g>4?1:g,c=f.slice(g),g+=t[1].length),x&&this.rules.other.blankLine.test(k)&&(p+=k+`\n`,e=e.substring(k.length+1),u=!0),!u){let Z=this.rules.other.nextBulletRegex(g),ee=this.rules.other.hrRegex(g),te=this.rules.other.fencesBeginRegex(g),ne=this.rules.other.headingBeginRegex(g),me=this.rules.other.htmlBeginRegex(g);for(;e;){let G=e.split(`\n`,1)[0],A;if(k=G,this.options.pedantic?(k=k.replace(this.rules.other.listReplaceNesting,\" \"),A=k):A=k.replace(this.rules.other.tabCharGlobal,\" \"),te.test(k)||ne.test(k)||me.test(k)||Z.test(k)||ee.test(k))break;if(A.search(this.rules.other.nonSpaceChar)>=g||!k.trim())c+=`\n`+A.slice(g);else{if(x||f.replace(this.rules.other.tabCharGlobal,\" \").search(this.rules.other.nonSpaceChar)>=4||te.test(f)||ne.test(f)||ee.test(f))break;c+=`\n`+k}!x&&!k.trim()&&(x=!0),p+=G+`\n`,e=e.substring(G.length+1),f=A.slice(g)}}i.loose||(o?i.loose=!0:this.rules.other.doubleBlankLine.test(p)&&(o=!0));let T=null,Y;this.options.gfm&&(T=this.rules.other.listIsTask.exec(c),T&&(Y=T[0]!==\"[ ] \",c=c.replace(this.rules.other.listReplaceTask,\"\"))),i.items.push({type:\"list_item\",raw:p,task:!!T,checked:Y,loose:!1,text:c,tokens:[]}),i.raw+=p}let a=i.items.at(-1);if(a)a.raw=a.raw.trimEnd(),a.text=a.text.trimEnd();else return;i.raw=i.raw.trimEnd();for(let u=0;u<i.items.length;u++)if(this.lexer.state.top=!1,i.items[u].tokens=this.lexer.blockTokens(i.items[u].text,[]),!i.loose){let p=i.items[u].tokens.filter(f=>f.type===\"space\"),c=p.length>0&&p.some(f=>this.rules.other.anyLine.test(f.raw));i.loose=c}if(i.loose)for(let u=0;u<i.items.length;u++)i.items[u].loose=!0;return i}}html(e){let t=this.rules.block.html.exec(e);if(t)return{type:\"html\",block:!0,raw:t[0],pre:t[1]===\"pre\"||t[1]===\"script\"||t[1]===\"style\",text:t[0]}}def(e){let t=this.rules.block.def.exec(e);if(t){let n=t[1].toLowerCase().replace(this.rules.other.multipleSpaceGlobal,\" \"),r=t[2]?t[2].replace(this.rules.other.hrefBrackets,\"$1\").replace(this.rules.inline.anyPunctuation,\"$1\"):\"\",i=t[3]?t[3].substring(1,t[3].length-1).replace(this.rules.inline.anyPunctuation,\"$1\"):t[3];return{type:\"def\",tag:n,raw:t[0],href:r,title:i}}}table(e){let t=this.rules.block.table.exec(e);if(!t||!this.rules.other.tableDelimiter.test(t[2]))return;let n=V(t[1]),r=t[2].replace(this.rules.other.tableAlignChars,\"\").split(\"|\"),i=t[3]?.trim()?t[3].replace(this.rules.other.tableRowBlankLine,\"\").split(`\n`):[],s={type:\"table\",raw:t[0],header:[],align:[],rows:[]};if(n.length===r.length){for(let o of r)this.rules.other.tableAlignRight.test(o)?s.align.push(\"right\"):this.rules.other.tableAlignCenter.test(o)?s.align.push(\"center\"):this.rules.other.tableAlignLeft.test(o)?s.align.push(\"left\"):s.align.push(null);for(let o=0;o<n.length;o++)s.header.push({text:n[o],tokens:this.lexer.inline(n[o]),header:!0,align:s.align[o]});for(let o of i)s.rows.push(V(o,s.header.length).map((a,u)=>({text:a,tokens:this.lexer.inline(a),header:!1,align:s.align[u]})));return s}}lheading(e){let t=this.rules.block.lheading.exec(e);if(t)return{type:\"heading\",raw:t[0],depth:t[2].charAt(0)===\"=\"?1:2,text:t[1],tokens:this.lexer.inline(t[1])}}paragraph(e){let t=this.rules.block.paragraph.exec(e);if(t){let n=t[1].charAt(t[1].length-1)===`\n`?t[1].slice(0,-1):t[1];return{type:\"paragraph\",raw:t[0],text:n,tokens:this.lexer.inline(n)}}}text(e){let t=this.rules.block.text.exec(e);if(t)return{type:\"text\",raw:t[0],text:t[0],tokens:this.lexer.inline(t[0])}}escape(e){let t=this.rules.inline.escape.exec(e);if(t)return{type:\"escape\",raw:t[0],text:t[1]}}tag(e){let t=this.rules.inline.tag.exec(e);if(t)return!this.lexer.state.inLink&&this.rules.other.startATag.test(t[0])?this.lexer.state.inLink=!0:this.lexer.state.inLink&&this.rules.other.endATag.test(t[0])&&(this.lexer.state.inLink=!1),!this.lexer.state.inRawBlock&&this.rules.other.startPreScriptTag.test(t[0])?this.lexer.state.inRawBlock=!0:this.lexer.state.inRawBlock&&this.rules.other.endPreScriptTag.test(t[0])&&(this.lexer.state.inRawBlock=!1),{type:\"html\",raw:t[0],inLink:this.lexer.state.inLink,inRawBlock:this.lexer.state.inRawBlock,block:!1,text:t[0]}}link(e){let t=this.rules.inline.link.exec(e);if(t){let n=t[2].trim();if(!this.options.pedantic&&this.rules.other.startAngleBracket.test(n)){if(!this.rules.other.endAngleBracket.test(n))return;let s=z(n.slice(0,-1),\"\\\\\");if((n.length-s.length)%2===0)return}else{let s=ge(t[2],\"()\");if(s===-2)return;if(s>-1){let a=(t[0].indexOf(\"!\")===0?5:4)+t[1].length+s;t[2]=t[2].substring(0,s),t[0]=t[0].substring(0,a).trim(),t[3]=\"\"}}let r=t[2],i=\"\";if(this.options.pedantic){let s=this.rules.other.pedanticHrefTitle.exec(r);s&&(r=s[1],i=s[3])}else i=t[3]?t[3].slice(1,-1):\"\";return r=r.trim(),this.rules.other.startAngleBracket.test(r)&&(this.options.pedantic&&!this.rules.other.endAngleBracket.test(n)?r=r.slice(1):r=r.slice(1,-1)),fe(t,{href:r&&r.replace(this.rules.inline.anyPunctuation,\"$1\"),title:i&&i.replace(this.rules.inline.anyPunctuation,\"$1\")},t[0],this.lexer,this.rules)}}reflink(e,t){let n;if((n=this.rules.inline.reflink.exec(e))||(n=this.rules.inline.nolink.exec(e))){let r=(n[2]||n[1]).replace(this.rules.other.multipleSpaceGlobal,\" \"),i=t[r.toLowerCase()];if(!i){let s=n[0].charAt(0);return{type:\"text\",raw:s,text:s}}return fe(n,i,n[0],this.lexer,this.rules)}}emStrong(e,t,n=\"\"){let r=this.rules.inline.emStrongLDelim.exec(e);if(!r||r[3]&&n.match(this.rules.other.unicodeAlphaNumeric))return;if(!(r[1]||r[2]||\"\")||!n||this.rules.inline.punctuation.exec(n)){let s=[...r[0]].length-1,o,a,u=s,p=0,c=r[0][0]===\"*\"?this.rules.inline.emStrongRDelimAst:this.rules.inline.emStrongRDelimUnd;for(c.lastIndex=0,t=t.slice(-1*e.length+s);(r=c.exec(t))!=null;){if(o=r[1]||r[2]||r[3]||r[4]||r[5]||r[6],!o)continue;if(a=[...o].length,r[3]||r[4]){u+=a;continue}else if((r[5]||r[6])&&s%3&&!((s+a)%3)){p+=a;continue}if(u-=a,u>0)continue;a=Math.min(a,a+u+p);let f=[...r[0]][0].length,k=e.slice(0,s+r.index+f+a);if(Math.min(s,a)%2){let g=k.slice(1,-1);return{type:\"em\",raw:k,text:g,tokens:this.lexer.inlineTokens(g)}}let x=k.slice(2,-2);return{type:\"strong\",raw:k,text:x,tokens:this.lexer.inlineTokens(x)}}}}codespan(e){let t=this.rules.inline.code.exec(e);if(t){let n=t[2].replace(this.rules.other.newLineCharGlobal,\" \"),r=this.rules.other.nonSpaceChar.test(n),i=this.rules.other.startingSpaceChar.test(n)&&this.rules.other.endingSpaceChar.test(n);return r&&i&&(n=n.substring(1,n.length-1)),{type:\"codespan\",raw:t[0],text:n}}}br(e){let t=this.rules.inline.br.exec(e);if(t)return{type:\"br\",raw:t[0]}}del(e){let t=this.rules.inline.del.exec(e);if(t)return{type:\"del\",raw:t[0],text:t[2],tokens:this.lexer.inlineTokens(t[2])}}autolink(e){let t=this.rules.inline.autolink.exec(e);if(t){let n,r;return t[2]===\"@\"?(n=t[1],r=\"mailto:\"+n):(n=t[1],r=n),{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}url(e){let t;if(t=this.rules.inline.url.exec(e)){let n,r;if(t[2]===\"@\")n=t[0],r=\"mailto:\"+n;else{let i;do i=t[0],t[0]=this.rules.inline._backpedal.exec(t[0])?.[0]??\"\";while(i!==t[0]);n=t[0],t[1]===\"www.\"?r=\"http://\"+t[0]:r=t[0]}return{type:\"link\",raw:t[0],text:n,href:r,tokens:[{type:\"text\",raw:n,text:n}]}}}inlineText(e){let t=this.rules.inline.text.exec(e);if(t){let n=this.lexer.state.inRawBlock;return{type:\"text\",raw:t[0],text:t[0],escaped:n}}}};var b=class l{tokens;options;state;tokenizer;inlineQueue;constructor(e){this.tokens=[],this.tokens.links=Object.create(null),this.options=e||O,this.options.tokenizer=this.options.tokenizer||new y,this.tokenizer=this.options.tokenizer,this.tokenizer.options=this.options,this.tokenizer.lexer=this,this.inlineQueue=[],this.state={inLink:!1,inRawBlock:!1,top:!0};let t={other:m,block:I.normal,inline:M.normal};this.options.pedantic?(t.block=I.pedantic,t.inline=M.pedantic):this.options.gfm&&(t.block=I.gfm,this.options.breaks?t.inline=M.breaks:t.inline=M.gfm),this.tokenizer.rules=t}static get rules(){return{block:I,inline:M}}static lex(e,t){return new l(t).lex(e)}static lexInline(e,t){return new l(t).inlineTokens(e)}lex(e){e=e.replace(m.carriageReturn,`\n`),this.blockTokens(e,this.tokens);for(let t=0;t<this.inlineQueue.length;t++){let n=this.inlineQueue[t];this.inlineTokens(n.src,n.tokens)}return this.inlineQueue=[],this.tokens}blockTokens(e,t=[],n=!1){for(this.options.pedantic&&(e=e.replace(m.tabCharGlobal,\" \").replace(m.spaceLine,\"\"));e;){let r;if(this.options.extensions?.block?.some(s=>(r=s.call({lexer:this},e,t))?(e=e.substring(r.raw.length),t.push(r),!0):!1))continue;if(r=this.tokenizer.space(e)){e=e.substring(r.raw.length);let s=t.at(-1);r.raw.length===1&&s!==void 0?s.raw+=`\n`:t.push(r);continue}if(r=this.tokenizer.code(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(r=this.tokenizer.fences(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.heading(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.hr(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.blockquote(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.list(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.html(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.def(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"paragraph\"||s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.raw,this.inlineQueue.at(-1).src=s.text):this.tokens.links[r.tag]||(this.tokens.links[r.tag]={href:r.href,title:r.title});continue}if(r=this.tokenizer.table(e)){e=e.substring(r.raw.length),t.push(r);continue}if(r=this.tokenizer.lheading(e)){e=e.substring(r.raw.length),t.push(r);continue}let i=e;if(this.options.extensions?.startBlock){let s=1/0,o=e.slice(1),a;this.options.extensions.startBlock.forEach(u=>{a=u.call({lexer:this},o),typeof a==\"number\"&&a>=0&&(s=Math.min(s,a))}),s<1/0&&s>=0&&(i=e.substring(0,s+1))}if(this.state.top&&(r=this.tokenizer.paragraph(i))){let s=t.at(-1);n&&s?.type===\"paragraph\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r),n=i.length!==e.length,e=e.substring(r.raw.length);continue}if(r=this.tokenizer.text(e)){e=e.substring(r.raw.length);let s=t.at(-1);s?.type===\"text\"?(s.raw+=(s.raw.endsWith(`\n`)?\"\":`\n`)+r.raw,s.text+=`\n`+r.text,this.inlineQueue.pop(),this.inlineQueue.at(-1).src=s.text):t.push(r);continue}if(e){let s=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(s);break}else throw new Error(s)}}return this.state.top=!0,t}inline(e,t=[]){return this.inlineQueue.push({src:e,tokens:t}),t}inlineTokens(e,t=[]){let n=e,r=null;if(this.tokens.links){let o=Object.keys(this.tokens.links);if(o.length>0)for(;(r=this.tokenizer.rules.inline.reflinkSearch.exec(n))!=null;)o.includes(r[0].slice(r[0].lastIndexOf(\"[\")+1,-1))&&(n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.reflinkSearch.lastIndex))}for(;(r=this.tokenizer.rules.inline.anyPunctuation.exec(n))!=null;)n=n.slice(0,r.index)+\"++\"+n.slice(this.tokenizer.rules.inline.anyPunctuation.lastIndex);for(;(r=this.tokenizer.rules.inline.blockSkip.exec(n))!=null;)n=n.slice(0,r.index)+\"[\"+\"a\".repeat(r[0].length-2)+\"]\"+n.slice(this.tokenizer.rules.inline.blockSkip.lastIndex);let i=!1,s=\"\";for(;e;){i||(s=\"\"),i=!1;let o;if(this.options.extensions?.inline?.some(u=>(o=u.call({lexer:this},e,t))?(e=e.substring(o.raw.length),t.push(o),!0):!1))continue;if(o=this.tokenizer.escape(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.tag(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.link(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.reflink(e,this.tokens.links)){e=e.substring(o.raw.length);let u=t.at(-1);o.type===\"text\"&&u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(o=this.tokenizer.emStrong(e,n,s)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.codespan(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.br(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.del(e)){e=e.substring(o.raw.length),t.push(o);continue}if(o=this.tokenizer.autolink(e)){e=e.substring(o.raw.length),t.push(o);continue}if(!this.state.inLink&&(o=this.tokenizer.url(e))){e=e.substring(o.raw.length),t.push(o);continue}let a=e;if(this.options.extensions?.startInline){let u=1/0,p=e.slice(1),c;this.options.extensions.startInline.forEach(f=>{c=f.call({lexer:this},p),typeof c==\"number\"&&c>=0&&(u=Math.min(u,c))}),u<1/0&&u>=0&&(a=e.substring(0,u+1))}if(o=this.tokenizer.inlineText(a)){e=e.substring(o.raw.length),o.raw.slice(-1)!==\"_\"&&(s=o.raw.slice(-1)),i=!0;let u=t.at(-1);u?.type===\"text\"?(u.raw+=o.raw,u.text+=o.text):t.push(o);continue}if(e){let u=\"Infinite loop on byte: \"+e.charCodeAt(0);if(this.options.silent){console.error(u);break}else throw new Error(u)}}return t}};var P=class{options;parser;constructor(e){this.options=e||O}space(e){return\"\"}code({text:e,lang:t,escaped:n}){let r=(t||\"\").match(m.notSpaceStart)?.[0],i=e.replace(m.endingNewline,\"\")+`\n`;return r?'<pre><code class=\"language-'+w(r)+'\">'+(n?i:w(i,!0))+`</code></pre>\n`:\"<pre><code>\"+(n?i:w(i,!0))+`</code></pre>\n`}blockquote({tokens:e}){return`<blockquote>\n${this.parser.parse(e)}</blockquote>\n`}html({text:e}){return e}heading({tokens:e,depth:t}){return`<h${t}>${this.parser.parseInline(e)}</h${t}>\n`}hr(e){return`<hr>\n`}list(e){let t=e.ordered,n=e.start,r=\"\";for(let o=0;o<e.items.length;o++){let a=e.items[o];r+=this.listitem(a)}let i=t?\"ol\":\"ul\",s=t&&n!==1?' start=\"'+n+'\"':\"\";return\"<\"+i+s+`>\n`+r+\"</\"+i+`>\n`}listitem(e){let t=\"\";if(e.task){let n=this.checkbox({checked:!!e.checked});e.loose?e.tokens[0]?.type===\"paragraph\"?(e.tokens[0].text=n+\" \"+e.tokens[0].text,e.tokens[0].tokens&&e.tokens[0].tokens.length>0&&e.tokens[0].tokens[0].type===\"text\"&&(e.tokens[0].tokens[0].text=n+\" \"+w(e.tokens[0].tokens[0].text),e.tokens[0].tokens[0].escaped=!0)):e.tokens.unshift({type:\"text\",raw:n+\" \",text:n+\" \",escaped:!0}):t+=n+\" \"}return t+=this.parser.parse(e.tokens,!!e.loose),`<li>${t}</li>\n`}checkbox({checked:e}){return\"<input \"+(e?'checked=\"\" ':\"\")+'disabled=\"\" type=\"checkbox\">'}paragraph({tokens:e}){return`<p>${this.parser.parseInline(e)}</p>\n`}table(e){let t=\"\",n=\"\";for(let i=0;i<e.header.length;i++)n+=this.tablecell(e.header[i]);t+=this.tablerow({text:n});let r=\"\";for(let i=0;i<e.rows.length;i++){let s=e.rows[i];n=\"\";for(let o=0;o<s.length;o++)n+=this.tablecell(s[o]);r+=this.tablerow({text:n})}return r&&(r=`<tbody>${r}</tbody>`),`<table>\n<thead>\n`+t+`</thead>\n`+r+`</table>\n`}tablerow({text:e}){return`<tr>\n${e}</tr>\n`}tablecell(e){let t=this.parser.parseInline(e.tokens),n=e.header?\"th\":\"td\";return(e.align?`<${n} align=\"${e.align}\">`:`<${n}>`)+t+`</${n}>\n`}strong({tokens:e}){return`<strong>${this.parser.parseInline(e)}</strong>`}em({tokens:e}){return`<em>${this.parser.parseInline(e)}</em>`}codespan({text:e}){return`<code>${w(e,!0)}</code>`}br(e){return\"<br>\"}del({tokens:e}){return`<del>${this.parser.parseInline(e)}</del>`}link({href:e,title:t,tokens:n}){let r=this.parser.parseInline(n),i=J(e);if(i===null)return r;e=i;let s='<a href=\"'+e+'\"';return t&&(s+=' title=\"'+w(t)+'\"'),s+=\">\"+r+\"</a>\",s}image({href:e,title:t,text:n,tokens:r}){r&&(n=this.parser.parseInline(r,this.parser.textRenderer));let i=J(e);if(i===null)return w(n);e=i;let s=`<img src=\"${e}\" alt=\"${n}\"`;return t&&(s+=` title=\"${w(t)}\"`),s+=\">\",s}text(e){return\"tokens\"in e&&e.tokens?this.parser.parseInline(e.tokens):\"escaped\"in e&&e.escaped?e.text:w(e.text)}};var S=class{strong({text:e}){return e}em({text:e}){return e}codespan({text:e}){return e}del({text:e}){return e}html({text:e}){return e}text({text:e}){return e}link({text:e}){return\"\"+e}image({text:e}){return\"\"+e}br(){return\"\"}};var R=class l{options;renderer;textRenderer;constructor(e){this.options=e||O,this.options.renderer=this.options.renderer||new P,this.renderer=this.options.renderer,this.renderer.options=this.options,this.renderer.parser=this,this.textRenderer=new S}static parse(e,t){return new l(t).parse(e)}static parseInline(e,t){return new l(t).parseInline(e)}parse(e,t=!0){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let o=i,a=this.options.extensions.renderers[o.type].call({parser:this},o);if(a!==!1||![\"space\",\"hr\",\"heading\",\"code\",\"table\",\"blockquote\",\"list\",\"html\",\"paragraph\",\"text\"].includes(o.type)){n+=a||\"\";continue}}let s=i;switch(s.type){case\"space\":{n+=this.renderer.space(s);continue}case\"hr\":{n+=this.renderer.hr(s);continue}case\"heading\":{n+=this.renderer.heading(s);continue}case\"code\":{n+=this.renderer.code(s);continue}case\"table\":{n+=this.renderer.table(s);continue}case\"blockquote\":{n+=this.renderer.blockquote(s);continue}case\"list\":{n+=this.renderer.list(s);continue}case\"html\":{n+=this.renderer.html(s);continue}case\"paragraph\":{n+=this.renderer.paragraph(s);continue}case\"text\":{let o=s,a=this.renderer.text(o);for(;r+1<e.length&&e[r+1].type===\"text\";)o=e[++r],a+=`\n`+this.renderer.text(o);t?n+=this.renderer.paragraph({type:\"paragraph\",raw:a,text:a,tokens:[{type:\"text\",raw:a,text:a,escaped:!0}]}):n+=a;continue}default:{let o='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return n}parseInline(e,t=this.renderer){let n=\"\";for(let r=0;r<e.length;r++){let i=e[r];if(this.options.extensions?.renderers?.[i.type]){let o=this.options.extensions.renderers[i.type].call({parser:this},i);if(o!==!1||![\"escape\",\"html\",\"link\",\"image\",\"strong\",\"em\",\"codespan\",\"br\",\"del\",\"text\"].includes(i.type)){n+=o||\"\";continue}}let s=i;switch(s.type){case\"escape\":{n+=t.text(s);break}case\"html\":{n+=t.html(s);break}case\"link\":{n+=t.link(s);break}case\"image\":{n+=t.image(s);break}case\"strong\":{n+=t.strong(s);break}case\"em\":{n+=t.em(s);break}case\"codespan\":{n+=t.codespan(s);break}case\"br\":{n+=t.br(s);break}case\"del\":{n+=t.del(s);break}case\"text\":{n+=t.text(s);break}default:{let o='Token with \"'+s.type+'\" type was not found.';if(this.options.silent)return console.error(o),\"\";throw new Error(o)}}}return n}};var $=class{options;block;constructor(e){this.options=e||O}static passThroughHooks=new Set([\"preprocess\",\"postprocess\",\"processAllTokens\"]);preprocess(e){return e}postprocess(e){return e}processAllTokens(e){return e}provideLexer(){return this.block?b.lex:b.lexInline}provideParser(){return this.block?R.parse:R.parseInline}};var B=class{defaults=L();options=this.setOptions;parse=this.parseMarkdown(!0);parseInline=this.parseMarkdown(!1);Parser=R;Renderer=P;TextRenderer=S;Lexer=b;Tokenizer=y;Hooks=$;constructor(...e){this.use(...e)}walkTokens(e,t){let n=[];for(let r of e)switch(n=n.concat(t.call(this,r)),r.type){case\"table\":{let i=r;for(let s of i.header)n=n.concat(this.walkTokens(s.tokens,t));for(let s of i.rows)for(let o of s)n=n.concat(this.walkTokens(o.tokens,t));break}case\"list\":{let i=r;n=n.concat(this.walkTokens(i.items,t));break}default:{let i=r;this.defaults.extensions?.childTokens?.[i.type]?this.defaults.extensions.childTokens[i.type].forEach(s=>{let o=i[s].flat(1/0);n=n.concat(this.walkTokens(o,t))}):i.tokens&&(n=n.concat(this.walkTokens(i.tokens,t)))}}return n}use(...e){let t=this.defaults.extensions||{renderers:{},childTokens:{}};return e.forEach(n=>{let r={...n};if(r.async=this.defaults.async||r.async||!1,n.extensions&&(n.extensions.forEach(i=>{if(!i.name)throw new Error(\"extension name required\");if(\"renderer\"in i){let s=t.renderers[i.name];s?t.renderers[i.name]=function(...o){let a=i.renderer.apply(this,o);return a===!1&&(a=s.apply(this,o)),a}:t.renderers[i.name]=i.renderer}if(\"tokenizer\"in i){if(!i.level||i.level!==\"block\"&&i.level!==\"inline\")throw new Error(\"extension level must be 'block' or 'inline'\");let s=t[i.level];s?s.unshift(i.tokenizer):t[i.level]=[i.tokenizer],i.start&&(i.level===\"block\"?t.startBlock?t.startBlock.push(i.start):t.startBlock=[i.start]:i.level===\"inline\"&&(t.startInline?t.startInline.push(i.start):t.startInline=[i.start]))}\"childTokens\"in i&&i.childTokens&&(t.childTokens[i.name]=i.childTokens)}),r.extensions=t),n.renderer){let i=this.defaults.renderer||new P(this.defaults);for(let s in n.renderer){if(!(s in i))throw new Error(`renderer '${s}' does not exist`);if([\"options\",\"parser\"].includes(s))continue;let o=s,a=n.renderer[o],u=i[o];i[o]=(...p)=>{let c=a.apply(i,p);return c===!1&&(c=u.apply(i,p)),c||\"\"}}r.renderer=i}if(n.tokenizer){let i=this.defaults.tokenizer||new y(this.defaults);for(let s in n.tokenizer){if(!(s in i))throw new Error(`tokenizer '${s}' does not exist`);if([\"options\",\"rules\",\"lexer\"].includes(s))continue;let o=s,a=n.tokenizer[o],u=i[o];i[o]=(...p)=>{let c=a.apply(i,p);return c===!1&&(c=u.apply(i,p)),c}}r.tokenizer=i}if(n.hooks){let i=this.defaults.hooks||new $;for(let s in n.hooks){if(!(s in i))throw new Error(`hook '${s}' does not exist`);if([\"options\",\"block\"].includes(s))continue;let o=s,a=n.hooks[o],u=i[o];$.passThroughHooks.has(s)?i[o]=p=>{if(this.defaults.async)return Promise.resolve(a.call(i,p)).then(f=>u.call(i,f));let c=a.call(i,p);return u.call(i,c)}:i[o]=(...p)=>{let c=a.apply(i,p);return c===!1&&(c=u.apply(i,p)),c}}r.hooks=i}if(n.walkTokens){let i=this.defaults.walkTokens,s=n.walkTokens;r.walkTokens=function(o){let a=[];return a.push(s.call(this,o)),i&&(a=a.concat(i.call(this,o))),a}}this.defaults={...this.defaults,...r}}),this}setOptions(e){return this.defaults={...this.defaults,...e},this}lexer(e,t){return b.lex(e,t??this.defaults)}parser(e,t){return R.parse(e,t??this.defaults)}parseMarkdown(e){return(n,r)=>{let i={...r},s={...this.defaults,...i},o=this.onError(!!s.silent,!!s.async);if(this.defaults.async===!0&&i.async===!1)return o(new Error(\"marked(): The async option was set to true by an extension. Remove async: false from the parse options object to return a Promise.\"));if(typeof n>\"u\"||n===null)return o(new Error(\"marked(): input parameter is undefined or null\"));if(typeof n!=\"string\")return o(new Error(\"marked(): input parameter is of type \"+Object.prototype.toString.call(n)+\", string expected\"));s.hooks&&(s.hooks.options=s,s.hooks.block=e);let a=s.hooks?s.hooks.provideLexer():e?b.lex:b.lexInline,u=s.hooks?s.hooks.provideParser():e?R.parse:R.parseInline;if(s.async)return Promise.resolve(s.hooks?s.hooks.preprocess(n):n).then(p=>a(p,s)).then(p=>s.hooks?s.hooks.processAllTokens(p):p).then(p=>s.walkTokens?Promise.all(this.walkTokens(p,s.walkTokens)).then(()=>p):p).then(p=>u(p,s)).then(p=>s.hooks?s.hooks.postprocess(p):p).catch(o);try{s.hooks&&(n=s.hooks.preprocess(n));let p=a(n,s);s.hooks&&(p=s.hooks.processAllTokens(p)),s.walkTokens&&this.walkTokens(p,s.walkTokens);let c=u(p,s);return s.hooks&&(c=s.hooks.postprocess(c)),c}catch(p){return o(p)}}}onError(e,t){return n=>{if(n.message+=`\nPlease report this to https://github.com/markedjs/marked.`,e){let r=\"<p>An error occurred:</p><pre>\"+w(n.message+\"\",!0)+\"</pre>\";return t?Promise.resolve(r):r}if(t)return Promise.reject(n);throw n}}};var _=new B;function d(l,e){return _.parse(l,e)}d.options=d.setOptions=function(l){return _.setOptions(l),d.defaults=_.defaults,H(d.defaults),d};d.getDefaults=L;d.defaults=O;d.use=function(...l){return _.use(...l),d.defaults=_.defaults,H(d.defaults),d};d.walkTokens=function(l,e){return _.walkTokens(l,e)};d.parseInline=_.parseInline;d.Parser=R;d.parser=R.parse;d.Renderer=P;d.TextRenderer=S;d.Lexer=b;d.lexer=b.lex;d.Tokenizer=y;d.Hooks=$;d.parse=d;var Dt=d.options,Zt=d.setOptions,Gt=d.use,Ht=d.walkTokens,Nt=d.parseInline,jt=d,Ft=R.parse,Qt=b.lex;export{$ as Hooks,b as Lexer,B as Marked,R as Parser,P as Renderer,S as TextRenderer,y as Tokenizer,O as defaults,L as getDefaults,Qt as lexer,d as marked,Dt as options,jt as parse,Nt as parseInline,Ft as parser,Zt as setOptions,Gt as use,Ht as walkTokens};\n//# sourceMappingURL=marked.esm.js.map\n","import '../styles/main.css';\nimport { marked } from 'marked';\nimport Toolbar from './toolbar/Toolbar.js';\nimport Preview from './Preview.js';\nimport UndoRedoManager from '../utils/UndoRedoManager.js';\n\nmarked.setOptions({\n breaks: true\n});\n\nclass MarkdownEditor {\n constructor(selector, options = {}) {\n this.usertextarea = typeof selector === 'string' ? document.querySelector(selector) : selector;\n this.options = options;\n this.preview = this.options.toolbar.includes('preview');\n this.init();\n\n // Initialize UndoRedoManager if 'undo' or 'redo' is in the toolbar\n if (this.options.toolbar.includes('undo') || this.options.toolbar.includes('redo')) {\n this.undoRedoManager = new UndoRedoManager(this);\n }\n }\n\n init() {\n this.createEditor();\n if (this.options.toolbar) this.addToolbar();\n }\n\n createEditor() {\n if (!this.isTextareaValid()) return;\n\n this.applyDefaultAttributes();\n this.buildEditorLayout();\n this.addInputListener();\n this.render();\n }\n\n isTextareaValid() {\n return this.usertextarea.tagName === 'TEXTAREA';\n }\n\n applyDefaultAttributes() {\n this.usertextarea.classList.add(\n \"fj:textarea\",\n \"fj:focus:ring-0\",\n \"fj:focus:outline-0\",\n \"fj:border-0\",\n \"fj:p-1.5\",\n \"fj:max-w-full\",\n \"fj:size-full\",\n \"fj:bg-transparent\",\n \"fj:outline-0\",\n \"fj:appearance-none\",\n \"fj:prose\",\n \"fj:prose-sm\",\n \"fj:md:prose-base\",\n \"fj:dark:prose-invert\",\n \"fj:overflow-y-auto\",\n );\n if (!this.usertextarea.hasAttribute('placeholder')) {\n this.usertextarea.placeholder = this.options.placeholder || 'Write your markdown...';\n }\n }\n\n buildEditorLayout() {\n this.editorContainer = document.createElement('div');\n this.editorContainer.className = `\n markdown-editor-wrapper\n fj:surface\n fj:surface-1\n fj:surface-outline\n fj:surface-rounded\n fj:overflow-hidden\n `;\n this.usertextarea.parentNode.insertBefore(this.editorContainer, this.usertextarea);\n\n this.markdownEditorDiv = document.createElement('div');\n this.markdownEditorDiv.className = `editor-layout fj:relative`;\n this.editorContainer.appendChild(this.markdownEditorDiv);\n\n this.addTextareaWrapper();\n if (this.preview) this.addPreviewWrapper();\n }\n\n addTextareaWrapper() {\n const textareaContainer = document.createElement('div');\n textareaContainer.className = `\n textarea-wrapper\n fj:surface\n fj:h-full\n fj:p-2\n fj:grid\n fj:after:px-3.5\n fj:after:py-2.5\n fj:after:text-inherit\n fj:[&>textarea]:resize-none\n fj:[&>textarea]:[grid-area:1/1/2/2]\n fj:after:[grid-area:1/1/2/2]\n fj:after:whitespace-pre-wrap\n fj:after:invisible\n fj:after:content-[attr(data-cloned-val)_'_']\n fj:after:border\n `;\n textareaContainer.appendChild(this.usertextarea);\n this.markdownEditorDiv.appendChild(textareaContainer);\n }\n\n \n\n addPreviewWrapper() {\n const previewInstance = new Preview(this.markdownEditorDiv);\n this.previewContent = previewInstance.getPreviewContent();\n }\n\n addInputListener() {\n this.usertextarea.addEventListener('input', () => this.render());\n this.usertextarea.addEventListener('scroll', () => {\n const textarea = this.usertextarea;\n const previewPane = this.previewContent;\n \n // Calculate the proportion of the textarea that has been scrolled\n const textareaScrollRatio = textarea.scrollTop / (textarea.scrollHeight - textarea.clientHeight);\n \n // Apply the same scroll ratio to the preview pane\n previewPane.scrollTop = textareaScrollRatio * (previewPane.scrollHeight - previewPane.clientHeight);\n });\n }\n\n addToolbar() {\n new Toolbar(this, this.options.toolbar || ['bold', 'italic', 'strikethrough']);\n }\n\n insertText(text) {\n const { selectionStart, selectionEnd } = this.usertextarea;\n const value = this.usertextarea.value;\n this.usertextarea.value = `${value.substring(0, selectionStart)}${text}${value.substring(selectionEnd)}`;\n this.usertextarea.focus();\n this.usertextarea.setSelectionRange(selectionStart, selectionStart + text.length);\n\n // Scroll the textarea to the inserted text\n this.scrollToView();\n\n this.render();\n }\n\n scrollToView() {\n const textarea = this.usertextarea;\n \n // Calculate the position of the inserted text\n const selectionStart = textarea.selectionStart;\n \n // Get the line height (height of each row of text)\n const lineHeight = parseInt(window.getComputedStyle(textarea).lineHeight);\n \n // Get how many rows fit into the visible area of the textarea\n const rowsInView = Math.floor(textarea.clientHeight / lineHeight);\n \n // Calculate the current line number of the selectionStart\n const currentLine = Math.floor(selectionStart / textarea.cols);\n \n // Scroll to the line number that places the inserted text in the center\n const targetScrollTop = (currentLine - Math.floor(rowsInView / 2)) * lineHeight;\n \n // Adjust scrollTop to center the cursor's line in the view\n textarea.scrollTop = targetScrollTop;\n }\n \n\n render() {\n const html = marked(this.usertextarea.value);\n if (this.preview) this.previewContent.innerHTML = html;\n }\n}\n\nexport default MarkdownEditor;"],"names":["root","factory","exports","module","define","amd","self","this","Preview","container","_classCallCheck","previewContainer","document","createElement","className","previewContent","appendChild","key","value","MakeTool","editor","title","defaultText","concat","button","createButton","iconHtml","_this","btn","btnClass","replace","toLowerCase","innerHTML","type","addEventListener","event","applySyntax","btnWrapper","_MakeTool","BoldTool","_callSuper","_inherits","textarea","usertextarea","selectionStart","selectionEnd","selectedText","substring","syntax","newText","startsWith","endsWith","slice","insertText","ItalicTool","StrikethroughTool","ULTool","OLTool","PreviewTool","preview","_this$editor$previewC","previewWrapper","parentNode","editorDiv","markdownEditorDiv","enablePreview","disablePreview","classList","toggle","remove","querySelector","render","querySelectorAll","forEach","contains","add","CheckListTool","BlockQuoteTool","modal","size","bodyHTML","mde","target","closest","modalHTML","insertAdjacentHTML","showModal","LinkTool","linkRegex","test","linkText","match","setRangeText","modalElement","e","preventDefault","linkInput","linkTextInput","validity","valid","link","close","reportValidity","HeadingTool","currentHeading","cleanText","currentLevel","headingCount","length","repeat","t","r","Symbol","n","iterator","o","toStringTag","i","c","prototype","Generator","u","Object","create","_regeneratorDefine2","f","p","y","G","v","a","d","bind","l","TypeError","call","done","GeneratorFunction","GeneratorFunctionPrototype","getPrototypeOf","setPrototypeOf","__proto__","displayName","_regenerator","w","m","defineProperty","_invoke","enumerable","configurable","writable","asyncGeneratorStep","Promise","resolve","then","_asyncToGenerator","arguments","apply","_next","_throw","_defineProperties","_toPropertyKey","_typeof","toPrimitive","String","Number","_toPrimitive","_getPrototypeOf","ReferenceError","_assertThisInitialized","_possibleConstructorReturn","_isNativeReflectConstruct","Reflect","construct","constructor","Boolean","valueOf","_setPrototypeOf","ImageTool","config","undefined","fileInputConfig","fileInput","altInputConfig","altInput","acceptFormats","accept","map","join","altRequired","required","uploadUrl","fileInputTag","imageRegex","altText","fileInputSelector","urlInputSelector","submitBtnSelector","_callee","file","formData","res","result","_t","_context","files","disabled","textContent","FormData","append","fetch","method","body","json","success","path","alert","console","error","imgLinkInput","imgLinkAltInput","imgLink","imgLinkAlt","UndoTool","undoRedoManager","undo","RedoTool","redo","Toolbar","options","toolbar","init","toolMapping","heading","ul","ol","checklist","bold","italic","strikethrough","blockquote","image","tool","ToolClass","toolName","keys","toolInstance","includes","previewToolInstance","editorContainer","insertBefore","Diff","diff","oldStr","newStr","callback","oldString","castInput","newString","oldTokens","removeEmpty","tokenize","newTokens","diffWithOptionsObj","_a","postProcess","setTimeout","newLen","oldLen","editLength","maxEditLength","Math","min","maxExecutionTime","timeout","Infinity","abortAfterTimestamp","Date","now","bestPath","oldPos","lastComponent","newPos","extractCommon","buildValues","minDiagonalToConsider","maxDiagonalToConsider","execEditLength","diagonalPath","max","basePath","removePath","addPath","canAdd","addPathNewPos","canRemove","addToPath","exec","ret","added","removed","oldPosInc","last","oneChangePerToken","count","previousComponent","commonCount","equals","left","right","comparator","ignoreCase","array","push","Array","from","chars","changeObjects","useLongestToken","components","nextComponent","reverse","componentLen","componentPos","component","oldValue","characterDiff","UndoRedoManager","undoStack","redoStack","lastValue","lastSelection","debounceDelay","_bindEvents","_onKeyDown","_onInput","_saveState","metaKey","ctrlKey","shiftKey","_this2","clearTimeout","_debounceTimer","lastChar","newValue","selection","_objectSpread","lastStep","pop","prevValue","_revertDiff","_restoreState","redoStep","_applyDiff","part","setSelectionRange","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","definition","get","obj","prop","hasOwnProperty","L","async","breaks","extensions","gfm","hooks","pedantic","renderer","silent","tokenizer","walkTokens","O","H","E","h","source","s","caret","getRegex","RegExp","codeRemoveIndent","outputLinkReplace","indentCodeCompensation","beginningSpace","endingHash","startingSpaceChar","endingSpaceChar","nonSpaceChar","newLineCharGlobal","tabCharGlobal","multipleSpaceGlobal","blankLine","doubleBlankLine","blockquoteStart","blockquoteSetextReplace","blockquoteSetextReplace2","listReplaceTabs","listReplaceNesting","listIsTask","listReplaceTask","anyLine","hrefBrackets","tableDelimiter","tableAlignChars","tableRowBlankLine","tableAlignRight","tableAlignCenter","tableAlignLeft","startATag","endATag","startPreScriptTag","endPreScriptTag","startAngleBracket","endAngleBracket","pedanticHrefTitle","unicodeAlphaNumeric","escapeTest","escapeReplace","escapeTestNoEncode","escapeReplaceNoEncode","unescapeTest","percentDecode","findPipe","splitPipe","slashPipe","carriageReturn","spaceLine","notSpaceStart","endingNewline","listItemRegex","nextBulletRegex","hrRegex","fencesBeginRegex","headingBeginRegex","htmlBeginRegex","C","j","se","ie","Te","F","Q","ye","Pe","U","Se","oe","K","code","def","fences","hr","html","lheading","list","newline","paragraph","table","text","re","_e","Le","ae","D","W","le","Ee","ue","pe","qe","ve","ce","De","Ze","Ge","He","Ne","je","Fe","q","Qe","he","de","X","_backpedal","anyPunctuation","autolink","blockSkip","br","del","emStrongLDelim","emStrongRDelimAst","emStrongRDelimUnd","escape","nolink","punctuation","reflink","reflinkSearch","tag","url","Ke","N","We","I","normal","M","Xe","ke","J","encodeURI","V","split","trim","shift","at","splice","z","charAt","fe","href","other","state","inLink","raw","tokens","inlineTokens","rules","lexer","space","block","codeBlockStyle","Je","lang","inline","depth","top","blockTokens","k","x","g","T","ordered","start","loose","items","Z","trimStart","search","ee","te","ne","me","A","Y","task","checked","trimEnd","filter","some","pre","header","align","rows","inRawBlock","indexOf","ge","emStrong","lastIndex","index","codespan","inlineText","escaped","b","inlineQueue","links","lex","lexInline","src","startBlock","charCodeAt","Error","lastIndexOf","startInline","P","parser","parse","parseInline","listitem","checkbox","unshift","tablecell","tablerow","strong","em","textRenderer","S","R","renderers","$","static","Set","preprocess","postprocess","processAllTokens","provideLexer","provideParser","_","defaults","setOptions","parseMarkdown","Parser","Renderer","TextRenderer","Lexer","Tokenizer","Hooks","use","childTokens","flat","name","level","passThroughHooks","has","onError","toString","all","catch","message","reject","getDefaults","marked","MarkdownEditor","selector","createEditor","addToolbar","isTextareaValid","applyDefaultAttributes","buildEditorLayout","addInputListener","tagName","hasAttribute","placeholder","addTextareaWrapper","addPreviewWrapper","textareaContainer","previewInstance","getPreviewContent","previewPane","textareaScrollRatio","scrollTop","scrollHeight","clientHeight","_this$usertextarea","focus","scrollToView","lineHeight","parseInt","window","getComputedStyle","rowsInView","floor","targetScrollTop","cols"],"sourceRoot":""}