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 - Démarrage rapide en 3 étapes
- Installation
 - Exemples simples
 - Premiers tests
 
 
📖 Documentation complète
- Guide complet - Documentation détaillée
- Architecture
 - API Reference
 - Exemples avancés
 - Optimisations
 - Dépannage
 
 
📝 Mise à jour
- README Markdown Update - 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 | Exemple 1 | 
| Afficher un fichier Excalidraw | Quick Start | Exemple 2 | 
| Détection automatique du type | Quick Start | Exemple 3 | 
| Comprendre l'architecture | Guide complet | Architecture | 
| API des composants | Guide complet | Utilisation | 
| Résoudre un problème | Guide complet | Dépannage | 
Par composant
| Composant | Documentation | Tests | 
|---|---|---|
MarkdownViewerComponent | 
Guide | Spec | 
SmartFileViewerComponent | 
Guide | Spec | 
FileTypeDetectorService | 
Guide | Spec | 
🌟 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
import { MarkdownViewerComponent } from './components/markdown-viewer/markdown-viewer.component';
2. Utiliser
<app-markdown-viewer [content]="'# Hello World'"></app-markdown-viewer>
3. Tester
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
npm test
Tests spécifiques
# 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
@Component({
  template: `<app-markdown-viewer [content]="content"></app-markdown-viewer>`
})
export class MyComponent {
  content = '# Hello World\n\nCeci est un **test**.';
}
Exemple 2 : Avec Excalidraw
@Component({
  template: `
    <app-markdown-viewer
      [content]="content"
      [filePath]="'drawing.excalidraw.md'">
    </app-markdown-viewer>
  `
})
export class ExcalidrawComponent {
  content = ''; // Chargé depuis le fichier
}
Exemple 3 : Smart Viewer
@Component({
  imports: [SmartFileViewerComponent],
  template: `
    <app-smart-file-viewer
      [filePath]="file.path"
      [content]="file.content">
    </app-smart-file-viewer>
  `
})
export class AutoComponent {
  file = { path: 'document.md', content: '# Auto' };
}
🔗 Liens utiles
Documentation interne
Documentation externe
💡 Conseils
Pour les développeurs
- Toujours tester avec le playground avant d'intégrer
 - Utiliser SmartFileViewer pour la détection automatique
 - Lazy load les images pour de meilleures performances
 - Consulter les tests pour des exemples d'utilisation
 
Pour les utilisateurs
- Markdown Playground accessible via 
/markdown-playground - Raccourcis clavier : Ctrl+S (save), F11 (fullscreen)
 - 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 | 
| Excalidraw ne charge pas | Vérifier extension .excalidraw.md | 
Dépannage | 
| Images ne chargent pas | Vérifier chemins et CORS | Dépannage | 
| Erreurs TypeScript | Nettoyer et rebuilder | Dépannage | 
Obtenir de l'aide
📊 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 :
- Lire l'architecture
 - Ajouter des tests pour toute nouvelle fonctionnalité
 - Suivre les conventions de code existantes
 - Mettre à jour cette documentation
 
Dernière mise à jour : 2025-01-15
Version : 2.0.0
Statut : ✅ Production Ready