# Documentation Markdown Viewer - ObsiViewer Nimbus
Bienvenue dans la documentation du système de visualisation Markdown d'ObsiViewer.
---
## 📚 Table des matières
### 🚀 Pour commencer
- **[Quick Start](./QUICK_START_MARKDOWN.md)** - Démarrage rapide en 3 étapes
- Installation
- Exemples simples
- Premiers tests
### 📖 Documentation complète
- **[Guide complet](./MARKDOWN_VIEWER_GUIDE.md)** - Documentation détaillée
- Architecture
- API Reference
- Exemples avancés
- Optimisations
- Dépannage
### 📝 Mise à jour
- **[README Markdown Update](../../README_MARKDOWN_UPDATE.md)** - Résumé des changements
- Objectifs réalisés
- Nouveaux composants
- Tests et métriques
- Instructions de test
---
## 🎯 Navigation rapide
### Par cas d'usage
| Besoin | Document | Section |
|--------|----------|---------|
| Afficher du Markdown simple | [Quick Start](./QUICK_START_MARKDOWN.md) | Exemple 1 |
| Afficher un fichier Excalidraw | [Quick Start](./QUICK_START_MARKDOWN.md) | Exemple 2 |
| Détection automatique du type | [Quick Start](./QUICK_START_MARKDOWN.md) | Exemple 3 |
| Comprendre l'architecture | [Guide complet](./MARKDOWN_VIEWER_GUIDE.md) | Architecture |
| API des composants | [Guide complet](./MARKDOWN_VIEWER_GUIDE.md) | Utilisation |
| Résoudre un problème | [Guide complet](./MARKDOWN_VIEWER_GUIDE.md) | Dépannage |
### Par composant
| Composant | Documentation | Tests |
|-----------|---------------|-------|
| `MarkdownViewerComponent` | [Guide](./MARKDOWN_VIEWER_GUIDE.md#1-markdownviewercomponent) | [Spec](../../src/components/markdown-viewer/markdown-viewer.component.spec.ts) |
| `SmartFileViewerComponent` | [Guide](./MARKDOWN_VIEWER_GUIDE.md#2-smartfileviewercomponent) | [Spec](../../src/components/smart-file-viewer/smart-file-viewer.component.spec.ts) |
| `FileTypeDetectorService` | [Guide](./MARKDOWN_VIEWER_GUIDE.md#3-filetypedetectorservice) | [Spec](../../src/services/file-type-detector.service.spec.ts) |
---
## 🌟 Fonctionnalités principales
### Markdown
- ✅ GitHub Flavored Markdown (GFM)
- ✅ Callouts Obsidian
- ✅ Math LaTeX (inline et block)
- ✅ Diagrammes Mermaid
- ✅ Syntax highlighting (180+ langages)
- ✅ WikiLinks et navigation interne
- ✅ Tags inline avec coloration
- ✅ Task lists interactives
- ✅ Tables avancées
- ✅ Footnotes
### Excalidraw
- ✅ Détection automatique des `.excalidraw.md`
- ✅ Éditeur intégré complet
- ✅ Sauvegarde manuelle (Ctrl+S)
- ✅ Export PNG/SVG
- ✅ Mode plein écran (F11)
- ✅ Support thème clair/sombre
### Optimisations
- ✅ Lazy loading des images
- ✅ Cache du syntax highlighting
- ✅ Fast path pour documents simples
- ✅ Debouncing des événements
---
## 🚀 Démarrage ultra-rapide
### 1. Importer
```typescript
import { MarkdownViewerComponent } from './components/markdown-viewer/markdown-viewer.component';
```
### 2. Utiliser
```html
```
### 3. Tester
```bash
npm run dev
# Ouvrir http://localhost:4200/markdown-playground
```
---
## 📦 Structure des fichiers
```
ObsiViewer/
├── src/
│ ├── components/
│ │ ├── markdown-viewer/ # Viewer Markdown
│ │ └── smart-file-viewer/ # Viewer intelligent
│ ├── services/
│ │ ├── markdown.service.ts # Service de rendu
│ │ └── file-type-detector.service.ts # Détection de type
│ └── app/features/
│ ├── drawings/ # Éditeur Excalidraw
│ └── tests/markdown-playground/ # Page de test
└── docs/
└── MARKDOWN/
├── README.md # Ce fichier
├── QUICK_START_MARKDOWN.md # Démarrage rapide
└── MARKDOWN_VIEWER_GUIDE.md # Guide complet
```
---
## 🧪 Tests
### Exécuter tous les tests
```bash
npm test
```
### Tests spécifiques
```bash
# MarkdownViewerComponent
npm test -- --include='**/markdown-viewer.component.spec.ts'
# SmartFileViewerComponent
npm test -- --include='**/smart-file-viewer.component.spec.ts'
# FileTypeDetectorService
npm test -- --include='**/file-type-detector.service.spec.ts'
```
### Coverage
- `MarkdownViewerComponent` - 95%+
- `SmartFileViewerComponent` - 90%+
- `FileTypeDetectorService` - 100%
---
## 🎨 Exemples de code
### Exemple 1 : Viewer simple
```typescript
@Component({
template: ``
})
export class MyComponent {
content = '# Hello World\n\nCeci est un **test**.';
}
```
### Exemple 2 : Avec Excalidraw
```typescript
@Component({
template: `
`
})
export class ExcalidrawComponent {
content = ''; // Chargé depuis le fichier
}
```
### Exemple 3 : Smart Viewer
```typescript
@Component({
imports: [SmartFileViewerComponent],
template: `
`
})
export class AutoComponent {
file = { path: 'document.md', content: '# Auto' };
}
```
---
## 🔗 Liens utiles
### Documentation interne
- [Architecture générale](../ARCHITECTURE/)
- [Guide Excalidraw](../EXCALIDRAW/)
- [Guide des bookmarks](../BOOKMARKS/)
### Documentation externe
- [Markdown-it](https://github.com/markdown-it/markdown-it)
- [Highlight.js](https://highlightjs.org/)
- [Mermaid](https://mermaid.js.org/)
- [Excalidraw](https://excalidraw.com/)
---
## 💡 Conseils
### Pour les développeurs
1. **Toujours tester** avec le playground avant d'intégrer
2. **Utiliser SmartFileViewer** pour la détection automatique
3. **Lazy load** les images pour de meilleures performances
4. **Consulter les tests** pour des exemples d'utilisation
### Pour les utilisateurs
1. **Markdown Playground** accessible via `/markdown-playground`
2. **Raccourcis clavier** : Ctrl+S (save), F11 (fullscreen)
3. **Thème** s'adapte automatiquement (clair/sombre)
---
## 🐛 Support
### Problèmes courants
| Problème | Solution | Documentation |
|----------|----------|---------------|
| Markdown ne s'affiche pas | Vérifier `content` et console | [Dépannage](./MARKDOWN_VIEWER_GUIDE.md#dépannage) |
| Excalidraw ne charge pas | Vérifier extension `.excalidraw.md` | [Dépannage](./MARKDOWN_VIEWER_GUIDE.md#excalidraw-ne-saffiche-pas) |
| Images ne chargent pas | Vérifier chemins et CORS | [Dépannage](./MARKDOWN_VIEWER_GUIDE.md#les-images-ne-se-chargent-pas) |
| Erreurs TypeScript | Nettoyer et rebuilder | [Dépannage](./MARKDOWN_VIEWER_GUIDE.md#erreurs-typescript) |
### Obtenir de l'aide
- 📖 [Guide complet](./MARKDOWN_VIEWER_GUIDE.md)
- 🚀 [Quick Start](./QUICK_START_MARKDOWN.md)
- 📝 [Résumé des changements](../../README_MARKDOWN_UPDATE.md)
---
## 📊 Métriques du projet
- **Composants créés :** 2
- **Services créés :** 1
- **Tests unitaires :** 38 test cases
- **Documentation :** 3 guides complets
- **Lignes de code :** ~2000 lignes
- **Coverage :** > 90%
---
## 🎯 Roadmap
### Version actuelle (2.0.0)
- ✅ Markdown Viewer optimisé
- ✅ Support Excalidraw
- ✅ Tests complets
- ✅ Documentation complète
### Prochaines versions
- [ ] Support embeds audio/vidéo
- [ ] Éditeur WYSIWYG
- [ ] Export PDF
- [ ] Collaboration temps réel
- [ ] Plugins personnalisés
- [ ] Diagrammes PlantUML
- [ ] Mode présentation
---
## 📄 Licence
Ce projet fait partie d'ObsiViewer et suit la même licence.
---
## 👥 Contribution
Pour contribuer au système Markdown :
1. Lire l'[architecture](./MARKDOWN_VIEWER_GUIDE.md#architecture)
2. Ajouter des tests pour toute nouvelle fonctionnalité
3. Suivre les conventions de code existantes
4. Mettre à jour cette documentation
---
**Dernière mise à jour :** 2025-01-15
**Version :** 2.0.0
**Statut :** ✅ Production Ready