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 contentet 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