# đ§ Ăditeur Nimbus - Documentation ComplĂšte ## Vue d'ensemble L'**Ăditeur Nimbus** est un Ă©diteur de texte avancĂ© Ă blocs, inspirĂ© de Fusebase/Nimbus, intĂ©grĂ© dans ObsiViewer. Il offre une expĂ©rience d'Ă©dition moderne et puissante avec support de 15+ types de blocs diffĂ©rents. ## đ AccĂšs - **URL**: `/tests/nimbus-editor` - **Section**: Tests - **Menu**: Section Tests â Ăditeur Nimbus ## đŻ FonctionnalitĂ©s Principales ### Types de Blocs SupportĂ©s #### BASIC - **Paragraph** - Texte simple - **Heading 1/2/3** - Titres de section - **Bullet List** - Liste Ă puces - **Numbered List** - Liste numĂ©rotĂ©e - **Checkbox List** - Liste de tĂąches - **Toggle** - Contenu repliable - **Table** - Tableau de donnĂ©es - **Code** - Code avec coloration syntaxique - **Quote** - Citation - **Line** - SĂ©parateur horizontal - **File** - PiĂšce jointe #### ADVANCED - **Steps** - Ătapes numĂ©rotĂ©es - **Kanban Board** - Tableau Kanban - **Hint** - BoĂźte de conseil (info/warning/success/note) - **Progress** - Barre de progression - **Dropdown** - Liste dĂ©roulante - **Button** - Bouton interactif - **Outline** - Table des matiĂšres automatique #### MEDIA - **Image** - Insertion d'images - **Embed** - IntĂ©gration de contenu externe (YouTube, Google Drive, Maps) ## âšïž Raccourcis Clavier ### Commandes GĂ©nĂ©rales - `/` - Ouvrir la palette de commandes - `Ctrl+/` - Ouvrir la palette de commandes - `Escape` - Fermer un menu/overlay - `Ctrl+S` - Sauvegarder (automatique) ### Titres - `Ctrl+Alt+1` - InsĂ©rer Heading 1 - `Ctrl+Alt+2` - InsĂ©rer Heading 2 - `Ctrl+Alt+3` - InsĂ©rer Heading 3 ### Listes - `Ctrl+Shift+8` - Liste Ă puces - `Ctrl+Shift+7` - Liste numĂ©rotĂ©e - `Ctrl+Shift+C` - Liste de tĂąches ### Blocs - `Ctrl+Alt+6` - Toggle block - `Ctrl+Alt+C` - Code block - `Ctrl+Alt+Y` - Quote - `Ctrl+Alt+U` - Hint - `Ctrl+Alt+5` - Button ### Formatage Texte - `Ctrl+B` - Gras - `Ctrl+I` - Italique - `Ctrl+U` - SoulignĂ© - `Ctrl+K` - InsĂ©rer lien ### OpĂ©rations sur Blocs - `Ctrl+Backspace` - Supprimer bloc - `Alt+â` - DĂ©placer bloc vers le haut - `Alt+â` - DĂ©placer bloc vers le bas - `Ctrl+D` - Dupliquer bloc - `Tab` - Indenter (dans une liste) - `Shift+Tab` - DĂ©s-indenter (dans une liste) ## đš Interface Utilisateur ### Topbar (Barre SupĂ©rieure) - **Titre**: Ăditeur Nimbus avec icĂŽne đ§ - **Bouton Export**: Dropdown avec 3 formats - đ Markdown (.md) - đ HTML (.html) - đŠ JSON (.json) - **Bouton Clear**: Effacer le document ### Zone d'Ădition - **Titre du document**: Ăditable, taille XL - **Compteur de blocs**: Affichage du nombre de blocs - **Indicateur de sauvegarde**: â Saved / ⯠Saving / â Error - **Liste de blocs**: Affichage vertical des blocs - **Bouton "Add block"**: Ouvrir la palette ### Footer - Informations de navigation - Raccourcis clavier principaux ### Palette "/" (Slash Menu) - **Position**: CentrĂ©e Ă 30% du haut - **Taille**: 560px de largeur - **Recherche**: Temps rĂ©el avec filtrage - **Navigation**: FlĂšches â/â, Enter pour sĂ©lectionner - **CatĂ©gories**: BASIC, ADVANCED, MEDIA, INTEGRATIONS - **Aperçu**: Description + raccourci pour chaque item ## đŸ Persistance ### Auto-Save - **Debounce**: 750ms - **Stockage**: localStorage - **ClĂ©**: `nimbus-editor-doc` - **Format**: JSON complet du document ### Chargement - Au dĂ©marrage, l'Ă©diteur tente de charger depuis localStorage - Si aucune donnĂ©e, crĂ©e un nouveau document vide - Bouton "Clear" pour effacer et recommencer ## đ€ Exportation ### Markdown (.md) - Titres: `# ## ###` - Listes: `- ` ou `1. ` ou `- [ ]` - Code: triple backticks avec langage - Quote: `> ` - Line: `---` ### HTML (.html) - Document complet avec `
` - Styles CSS intégrés - Balises sémantiques (,
)
- Encodage HTML automatique
### JSON (.json)
- Sérialisation exacte du DocumentModel
- Structure complÚte avec métadonnées
- Indentation: 2 espaces
- Rechargeable dans l'éditeur
## đïž Architecture Technique
### Structure de Dossiers
```
src/app/editor/
âââ core/
â âââ models/ # Block, Document models
â âââ utils/ # ID generator
â âââ constants/ # Palette items, keyboard shortcuts
âââ services/
â âââ document.service.ts
â âââ selection.service.ts
â âââ palette.service.ts
â âââ shortcuts.service.ts
â âââ export/
â âââ export.service.ts
âââ components/
â âââ editor-shell/
â âââ block/
â â âââ block-host.component.ts
â â âââ blocks/ # 18 block components
â âââ palette/
â âââ slash-palette.component.ts
âââ features/tests/nimbus-editor/
âââ nimbus-editor-page.component.ts
```
### Services Principaux
#### DocumentService
- Gestion de l'état du document (Angular Signals)
- CRUD sur les blocs (insert, update, delete, move, duplicate)
- Conversion entre types de blocs
- Génération automatique de l'outline
- Auto-save avec debounce
#### SelectionService
- Gestion du bloc actif
- Signal readonly pour éviter mutations externes
#### PaletteService
- Ătat de la palette (ouvert/fermĂ©)
- Recherche et filtrage des items
- Navigation clavier (â/â)
- Position dynamique
#### ShortcutsService
- Détection et exécution des raccourcis clavier
- Intégration avec DocumentService et PaletteService
- Prévention des conflits
#### ExportService
- Export vers Markdown, HTML, JSON
- Téléchargement automatique des fichiers
- Sanitization HTML
### Composants
#### EditorShellComponent
- Conteneur principal de l'éditeur
- Header avec titre éditable
- Zone de blocs avec BlockHost
- Gestion des événements clavier globaux
#### BlockHostComponent
- Router vers le composant de bloc approprié
- Gestion de la sélection
- Drag handle pour déplacement (visuel)
- Menu contextuel (clic droit)
#### SlashPaletteComponent
- Overlay modal avec recherche
- Liste filtrée des blocs disponibles
- Navigation clavier complĂšte
- Fermeture sur clic extérieur ou ESC
#### Block Components (18 composants)
- Un composant par type de bloc
- Input: Block
- Output: Update événement
- Contenteditable pour édition inline
- Styles Tailwind intégrés
## đ§Ș Tests & Validation
### Tests Manuels Recommandés
1. **Création de blocs**
- Tester tous les types via palette "/"
- Vérifier l'insertion correcte
2. **Ădition**
- Modifier texte dans paragraph/heading
- Ajouter items dans listes
- Ăditer code avec sĂ©lection de langage
3. **Conversion**
- Paragraph â Heading
- Bullet list â Checkbox list
- Quote â Paragraph
4. **Raccourcis**
- Ctrl+Alt+1/2/3 pour headings
- Ctrl+Shift+8/7/C pour listes
- Alt+â/â pour dĂ©placer blocs
5. **Exportation**
- Exporter en Markdown, vérifier formatage
- Exporter en HTML, ouvrir dans navigateur
- Exporter en JSON, réimporter
6. **Persistance**
- Créer document, recharger page
- Vérifier que le contenu est restauré
- Clear et vérifier nouveau document vide
### Points d'Attention
- **Performance**: Avec 100+ blocs, vérifier pas de lag
- **Mémoire**: Auto-save ne doit pas accumuler
- **Sécurité**: HTML sanitizé lors export
- **A11y**: Focus management, aria-labels
## đ DĂ©ploiement
### Prérequis
- Angular 20+
- Tailwind CSS 3.4+
- Angular CDK (pour Drag & Drop Kanban)
### Installation
Toutes les dépendances sont déjà incluses dans le projet ObsiViewer.
### AccĂšs en Production
Une fois déployé, accessible via:
```
https://votre-domaine.com/tests/nimbus-editor
```
## đź Roadmap & AmĂ©liorations Futures
### MVP Actuel â
- 15+ types de blocs
- Palette "/"
- Raccourcis clavier
- Auto-save localStorage
- Export MD/HTML/JSON
### Améliorations Potentielles
- [ ] Menu "@" pour mentions (dates, people, folders)
- [ ] Context menu (clic droit) sur blocs
- [ ] PDF export cÎté serveur (Puppeteer)
- [ ] DOCX export (lib docx)
- [ ] Collaboration temps réel (WebSocket)
- [ ] Historique undo/redo (stack)
- [ ] Templates de documents
- [ ] ThÚmes d'éditeur personnalisables
- [ ] Upload d'images drag & drop
- [ ] Embed enrichi (Unsplash, etc.)
## đ Ressources
### Documentation Technique
- Spécification complÚte dans le prompt initial
- Code commenté dans chaque fichier
### Références
- Fusebase: https://fusebase.com
- Nimbus Note: https://nimbusweb.me
- Notion API: https://developers.notion.com
## đ Troubleshooting
### Document ne se sauvegarde pas
- Vérifier console pour erreurs localStorage
- Quota localStorage peut ĂȘtre atteint (5-10MB)
- Clear localStorage et recommencer
### Palette "/" ne s'ouvre pas
- Vérifier que le focus est dans l'éditeur
- Essayer Ctrl+/ au lieu de /
- Recharger la page
### Export ne fonctionne pas
- Vérifier que le document n'est pas vide
- Vérifier console pour erreurs
- Essayer un format différent (JSON toujours fonctionne)
### Blocs ne s'affichent pas correctement
- Vérifier classes Tailwind chargées
- Recharger page
- Clear cache navigateur
## đ Support
Pour tout problÚme ou suggestion d'amélioration:
1. Ouvrir une issue sur GitHub
2. Contacter l'équipe ObsiViewer
3. Consulter la documentation technique dans `/docs`
---
**Version**: 1.0.0
**Date**: 2025-01-04
**Auteurs**: ObsiViewer Team
**License**: Selon projet ObsiViewer