312 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			312 lines
		
	
	
		
			7.8 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # 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
 | |
| <app-markdown-viewer [content]="'# Hello World'"></app-markdown-viewer>
 | |
| ```
 | |
| 
 | |
| ### 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: `<app-markdown-viewer [content]="content"></app-markdown-viewer>`
 | |
| })
 | |
| export class MyComponent {
 | |
|   content = '# Hello World\n\nCeci est un **test**.';
 | |
| }
 | |
| ```
 | |
| 
 | |
| ### Exemple 2 : Avec Excalidraw
 | |
| 
 | |
| ```typescript
 | |
| @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
 | |
| 
 | |
| ```typescript
 | |
| @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
 | |
| - [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
 |