# MarkdownViewer - Quick Reference ## Component Props ```vue ``` | Prop | Type | Default | Description | |------|------|---------|-------------| | `modelValue` | String | `''` | Markdown content to render | | `theme` | String | `'light'` | Component theme (`'light'` or `'dark'`) | | `previewTheme` | String | `'github'` | Preview style theme | ## Table Features ### Copy to Clipboard Click the **"Copy Table"** button above any table to copy its contents as tab-separated values. ### Export to CSV Click the **"Export CSV"** button to download the table as a CSV file. ## Mermaid Diagram Examples ### Flowchart ```mermaid graph LR A[Start] --> B[Process] B --> C{Decision} C -->|Yes| D[End] C -->|No| B ``` ### Sequence Diagram ```mermaid sequenceDiagram Alice->>Bob: Hello Bob! Bob-->>Alice: Hi Alice! ``` ### Pie Chart ```mermaid pie title Programming Languages "JavaScript" : 35 "Python" : 30 "Java" : 20 "Other" : 15 ``` ### State Diagram ```mermaid stateDiagram-v2 [*] --> Idle Idle --> Processing: Start Processing --> Success: Complete Processing --> Error: Fail Success --> [*] Error --> Idle: Retry ``` ## Supported Code Languages The component supports syntax highlighting for 100+ languages including: - JavaScript/TypeScript - Python - Java - C/C++/C# - Ruby - Go - Rust - PHP - SQL - HTML/CSS - XML - JSON - YAML - Markdown - Bash/Shell - And many more... ## Advanced Markdown Features ### Attributes You can add attributes to elements using the `markdown-it-attrs` plugin: ```markdown # Heading {#custom-id} Paragraph with custom class {.custom-class} ``` ### Extended Tables Tables support alignment: ```markdown | Left Aligned | Center Aligned | Right Aligned | |:-------------|:--------------:|--------------:| | Left | Center | Right | ``` ## API - Programmatic Usage While the component is primarily used declaratively, you can access internal methods if needed: ```vue ``` ## Browser Compatibility - Chrome/Edge: ✅ Full support - Firefox: ✅ Full support - Safari: ✅ Full support - Opera: ✅ Full support ## Performance Tips 1. **Large Documents**: The component handles large documents efficiently, but consider pagination for very large content 2. **Multiple Instances**: Each instance is independent and can render different content 3. **Dynamic Updates**: Content updates are reactive and re-render automatically 4. **Mermaid Caching**: Diagrams are cached after first render ## Common Patterns ### Dynamic Content Loading ```vue ``` ### Conditional Rendering ```vue ``` ### With Loading State ```vue ``` ## Troubleshooting ### Issue: Mermaid diagrams show as text **Solution**: Ensure the code block uses `mermaid` as the language identifier: ````markdown ```mermaid graph TD A-->B ``` ```` ### Issue: Table buttons not appearing **Solution**: Verify the table syntax is correct and has headers: ```markdown | Header 1 | Header 2 | |----------|----------| | Cell 1 | Cell 2 | ``` ### Issue: Code not highlighted **Solution**: Check that the language identifier is correct and supported by highlight.js ### Issue: Content not updating **Solution**: Ensure you're using `v-model` or watching the `modelValue` prop correctly ## Security The component uses `v-html` to render markdown. Only use with trusted content or sanitize user input before passing to the component. For user-generated content, consider adding a sanitization layer: ```javascript import DOMPurify from 'dompurify'; const sanitizedContent = DOMPurify.sanitize(userContent); ``` ## Further Reading - [Markdown Guide](https://www.markdownguide.org/) - [Mermaid Documentation](https://mermaid-js.github.io/) - [markdown-it Documentation](https://github.com/markdown-it/markdown-it) - [highlight.js Languages](https://github.com/highlightjs/highlight.js/blob/main/SUPPORTED_LANGUAGES.md)