type InsertAtCursor = (textArea: HTMLTextAreaElement, text: string) => void; // toolbar handler export const handleMetadataClick = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { const metadata = `--- title: Post Title description: Your Post Description date: ${new Date().toISOString().split("T")[0]} image: example-img.png ---\n\n`; insertAtCursor(textArea, metadata); } }; export const handleParagraphClick = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor(textArea, "this is regular text, **bold text**, *italic text*\n"); } }; export const handleHeading2Click = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor(textArea, "## Heading 2\n"); } }; export const handleHeading3Click = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor(textArea, "### Heading 3\n"); } }; export const handleBulletListClick = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor(textArea, "- List One\n- List Two\n- Other List\n"); } }; export const handleNumberedListClick = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor(textArea, "1. Number One\n2. Number Two\n3. Number Three\n"); } }; export const handleLinkClick = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor(textArea, "[Visit OpenAI](https://www.openai.com)\n"); } }; export const handleImageClick = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor(textArea, "![Alt text for the image](https://via.placeholder.com/150)\n"); } }; export const handleBlockquoteClick = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor(textArea, "> The overriding design goal for Markdown's formatting syntax is to make it as readable as possible.\n"); } }; export const handleCodeBlockClick = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor( textArea, "```javascript:main.js showLineNumbers {3-4}\nfunction isRocketAboutToCrash() {\n // Check if the rocket is stable\n if (!isStable()) {\n NoCrash(); // Prevent the crash\n }\n}\n```\n" ); } }; export const handleTableClick = (insertAtCursor: InsertAtCursor) => { const textArea = document.querySelector("textarea"); if (textArea) { insertAtCursor( textArea, `| **Feature** | **Description** | | ------------------------------- | ----------------------------------------------------- | | MDX Support | Write interactive documentation with MDX. | | Nested Pages | Organize content in a nested, hierarchical structure. | | Blog Section | Include a dedicated blog section. | | Pagination | Split content across multiple pages. | ` ); } }; export const handleNoteClick = (insertAtCursor: InsertAtCursor, type: string) => { return () => { const textArea = document.querySelector("textarea"); if (textArea) { const noteTemplate = `\n This is a ${type} message.\n\n`; insertAtCursor(textArea, noteTemplate); } }; }; export const handleComponentClick = (insertAtCursor: InsertAtCursor, component: string) => { return () => { const textArea = document.querySelector("textarea"); if (!textArea) return; const templates: { [key: string]: string } = { stepper: ` Content for step 1 Content for step 2 \n`, card: ` This is how you use a card with an icon and a link. Clicking on this card brings you to the Card Group page. \n`, button: `