From b1f142c4f75808eb747a964be8c5e700c07ea65d Mon Sep 17 00:00:00 2001 From: Bruno Charest Date: Tue, 28 Oct 2025 22:25:40 -0400 Subject: [PATCH] feat: enhance Excalidraw editor UI and autosave functionality - Redesigned editor toolbar with improved layout and accessibility attributes - Added automatic save after 7 seconds of inactivity for better data protection - Replaced emoji icons with SVG icons for consistent styling and accessibility - Added success toasts for PNG/SVG exports with destination path - Updated button styles and layout for better visual hierarchy - Added aria-labels and improved keyboard navigation support - Made action buttons optionally hideable via --- .../drawings/drawings-editor.component.html | 72 ++++--- .../drawings/drawings-editor.component.ts | 119 ++++++++---- .../sidebar/app-sidebar-drawer.component.ts | 22 +++ .../tests/test-excalidraw-page.component.ts | 182 ++++++++++-------- .../app-shell-nimbus.component.ts | 10 + vault/.obsidian/workspace.json | 31 +-- vault/Dessin_001.excalidraw.md | 49 ----- vault/Drawing-20251028-1452.excalidraw.md | 15 ++ vault/Drawing-20251028-1452.png | Bin 0 -> 2249 bytes vault/dessin-002.excalidraw.md | 21 -- vault/dessin.excalidraw.md | 15 ++ vault/dessin.png | Bin 0 -> 7575 bytes vault/dessin.svg | 21 ++ vault/dessin_03.excalidraw.md | 21 -- vault/dessin_04.excalidraw.md | 21 -- vault/dessin_05.excalidraw.md | 15 -- vault/folder-4/Nouvelle note 10.md | 5 - 17 files changed, 335 insertions(+), 284 deletions(-) delete mode 100644 vault/Dessin_001.excalidraw.md create mode 100644 vault/Drawing-20251028-1452.excalidraw.md create mode 100644 vault/Drawing-20251028-1452.png delete mode 100644 vault/dessin-002.excalidraw.md create mode 100644 vault/dessin.excalidraw.md create mode 100644 vault/dessin.png create mode 100644 vault/dessin.svg delete mode 100644 vault/dessin_03.excalidraw.md delete mode 100644 vault/dessin_04.excalidraw.md delete mode 100644 vault/dessin_05.excalidraw.md diff --git a/src/app/features/drawings/drawings-editor.component.html b/src/app/features/drawings/drawings-editor.component.html index f7f9c26..a63b574 100644 --- a/src/app/features/drawings/drawings-editor.component.html +++ b/src/app/features/drawings/drawings-editor.component.html @@ -3,25 +3,27 @@
- - - - -
diff --git a/src/app/features/drawings/drawings-editor.component.ts b/src/app/features/drawings/drawings-editor.component.ts index 999d845..64e4e4d 100644 --- a/src/app/features/drawings/drawings-editor.component.ts +++ b/src/app/features/drawings/drawings-editor.component.ts @@ -16,7 +16,7 @@ import { signal } from '@angular/core'; import { firstValueFrom, fromEvent, of, Subscription, interval } from 'rxjs'; -import { debounceTime, distinctUntilChanged, map, switchMap, tap, catchError, filter } from 'rxjs/operators'; +import { debounceTime, distinctUntilChanged, map, switchMap, tap, catchError, filter, mergeWith } from 'rxjs/operators'; import { DrawingsFileService, ExcalidrawScene } from './drawings-file.service'; import { ExcalidrawIoService } from './excalidraw-io.service'; import { DrawingsPreviewService } from './drawings-preview.service'; @@ -32,6 +32,7 @@ import { ThemeService } from '../../core/services/theme.service'; }) export class DrawingsEditorComponent implements OnInit, AfterViewInit, OnDestroy { @Input() path: string = ''; + @Input() showInlineActions: boolean = true; @ViewChild('editorEl', { static: false }) editorEl?: ElementRef void; @@ -628,42 +629,76 @@ export class DrawingsEditorComponent implements OnInit, AfterViewInit, OnDestroy } }); - // Subscription 2: Handle auto-saving (disabled temporarily) - // this.saveSub = sceneChange$.pipe( - // distinctUntilChanged((prev, curr) => prev.hash === curr.hash), - // debounceTime(2000), - // filter(({ hash }) => this.lastSavedHash !== hash), - // filter(() => !this.isSaving()), - // tap(({ hash }) => { - // console.log('💾 Autosaving... hash:', hash.substring(0, 10)); - // this.isSaving.set(true); - // this.error.set(null); - // }), - // switchMap(({ scene, hash }) => - // this.files.put(this.path, scene).pipe( - // tap(async () => { - // console.log('✅ Autosave successful', { newHash: hash.substring(0, 10) }); - // this.lastSavedHash = hash; - // this.dirty.set(false); - // this.isSaving.set(false); - // this.hasConflict.set(false); - // try { await this.savePreviewPNG(); } catch (e) { console.warn('PNG preview update failed', e); } - // }), - // catchError((e) => { - // console.error('❌ Save error:', e); - // const status = e?.status ?? e?.statusCode; - // if (status === 409) { - // this.error.set('Conflit: le fichier a été modifié sur le disque.'); - // this.hasConflict.set(true); - // } else { - // this.error.set('Erreur de sauvegarde. Veuillez réessayer.'); - // } - // this.isSaving.set(false); - // return of({ rev: '' } as any); - // }) - // ) - // ) - // ).subscribe(); + // Subscription 2: Natural autosave after inactivity (idle-based) + const triggers$ = fromEvent(host, 'pointermove').pipe( + mergeWith( + fromEvent(document, 'keydown'), + fromEvent(host, 'wheel'), + sceneChange$.pipe(map(() => null)) + ), + debounceTime(7000), + filter(() => this.dirty() && !this.isSaving()) + ); + + this.saveSub = triggers$.pipe( + switchMap(() => { + const scene = this.scene(); + if (!scene) return of(null); + const hash = this.hashScene(scene); + if (this.lastSavedHash === hash) return of(null); + this.isSaving.set(true); + this.error.set(null); + const isExMd = /\.excalidraw\.md$/i.test(this.path || ''); + + const save$ = isExMd + ? this.files.getText(this.path).pipe( + catchError(() => of('')), + switchMap((existing) => { + let fm = this.excalIo.extractFrontMatter(existing) || null; + if (fm) { + if (!/excalidraw-plugin\s*:/i.test(fm)) { + fm = fm.replace(/^---\s*\n/, `---\nexcalidraw-plugin: parsed\n`); + } else { + fm = fm.replace(/excalidraw-plugin\s*:\s*.*?(\r?\n)/i, `excalidraw-plugin: parsed$1`); + } + const stamp = new Date().toISOString(); + if (/^updated\s*:/mi.test(fm)) { + fm = fm.replace(/updated\s*:\s*.*?(\r?\n)/i, `updated: "${stamp}"$1`); + } else { + fm = fm.replace(/^---\s*\n/, `---\nupdated: "${stamp}"\n`); + } + } else { + fm = `---\nexcalidraw-plugin: parsed\nupdated: "${new Date().toISOString()}"\n---`; + } + const md = this.excalIo.toObsidianMd(scene as any, fm); + return this.files.putText(this.path, md); + }) + ) + : this.files.put(this.path, scene); + + return save$.pipe( + tap(async () => { + this.lastSavedHash = hash; + this.dirty.set(false); + this.isSaving.set(false); + this.hasConflict.set(false); + try { await this.savePreviewPNG(); } catch (e) { console.warn('PNG preview update failed', e); } + }), + catchError((e) => { + console.error('❌ Autosave error:', e); + const status = (e as any)?.status ?? (e as any)?.statusCode; + if (status === 409) { + this.error.set('Conflit: le fichier a été modifié sur le disque.'); + this.hasConflict.set(true); + } else { + this.error.set('Erreur de sauvegarde automatique.'); + } + this.isSaving.set(false); + return of(null); + }) + ); + }) + ).subscribe(); console.log('✓ Dirty check and Autosave subscriptions active'); @@ -725,6 +760,11 @@ export class DrawingsEditorComponent implements OnInit, AfterViewInit, OnDestroy const target = `${base}.png`; await firstValueFrom(this.files.putBinary(target, blob, 'image/png')); this.error.set(null); + try { + const norm = target.replace(/\\/g, '/'); + const dir = norm.includes('/') ? norm.substring(0, norm.lastIndexOf('/')) : '/'; + this.showToast(`PNG exporté avec succès dans ${dir}`, 'success'); + } catch {} } catch (err) { console.error('Error exporting PNG:', err); this.error.set('Erreur lors de l\'export en PNG'); @@ -752,6 +792,11 @@ export class DrawingsEditorComponent implements OnInit, AfterViewInit, OnDestroy const target = `${base}.svg`; await firstValueFrom(this.files.putBinary(target, blob, 'image/svg+xml')); this.error.set(null); + try { + const norm = target.replace(/\\/g, '/'); + const dir = norm.includes('/') ? norm.substring(0, norm.lastIndexOf('/')) : '/'; + this.showToast(`SVG exporté avec succès dans ${dir}`, 'success'); + } catch {} } catch (err) { console.error('Error exporting SVG:', err); this.error.set('Erreur lors de l\'export en SVG'); diff --git a/src/app/features/sidebar/app-sidebar-drawer.component.ts b/src/app/features/sidebar/app-sidebar-drawer.component.ts index be85412..b2ee1e8 100644 --- a/src/app/features/sidebar/app-sidebar-drawer.component.ts +++ b/src/app/features/sidebar/app-sidebar-drawer.component.ts @@ -45,6 +45,16 @@ import { TrashExplorerComponent } from '../../layout/sidebar/trash/trash-explore class="w-full text-left block text-sm px-3 py-2 rounded-lg hover:bg-surface1 dark:hover:bg-card active:bg-surface2 dark:active:bg-gray-700 text-main dark:text-main hover:text-main dark:hover:text-gray-100 transition-all active:scale-[0.98] transform"> 🧪 Markdown Playground + +
@@ -158,6 +168,8 @@ export class AppSidebarDrawerComponent { @Output() tagSelected = new EventEmitter(); @Output() quickLinkSelected = new EventEmitter(); @Output() markdownPlaygroundSelected = new EventEmitter(); + @Output() testsPanelSelected = new EventEmitter(); + @Output() testsExcalidrawSelected = new EventEmitter(); @Output() helpPageSelected = new EventEmitter(); @Output() aboutSelected = new EventEmitter(); @@ -189,6 +201,16 @@ export class AppSidebarDrawerComponent { this.mobileNav.sidebarOpen.set(false); } + onApiTestsPanelClick(): void { + this.testsPanelSelected.emit(); + this.mobileNav.sidebarOpen.set(false); + } + + onTestsExcalidrawClick(): void { + this.testsExcalidrawSelected.emit(); + this.mobileNav.sidebarOpen.set(false); + } + onHelpPageClick(): void { this.helpPageSelected.emit(); this.mobileNav.sidebarOpen.set(false); diff --git a/src/app/features/tests/test-excalidraw-page.component.ts b/src/app/features/tests/test-excalidraw-page.component.ts index 28a1f68..a61fbc5 100644 --- a/src/app/features/tests/test-excalidraw-page.component.ts +++ b/src/app/features/tests/test-excalidraw-page.component.ts @@ -1,5 +1,5 @@ import { CommonModule } from '@angular/common'; -import { Component, OnDestroy, OnInit, ViewChild, inject, signal } from '@angular/core'; +import { AfterViewInit, Component, OnDestroy, OnInit, ViewChild, inject, signal } from '@angular/core'; import { Router } from '@angular/router'; import { DrawingsEditorComponent } from '../drawings/drawings-editor.component'; import { DrawingsFileService } from '../drawings/drawings-file.service'; @@ -13,58 +13,75 @@ import { firstValueFrom } from 'rxjs'; imports: [CommonModule, DrawingsEditorComponent], template: `
-
-
-
-

Test Excalidraw

- Legacy Integration - - {{ currentPath() }} - - - No file - - • {{ dirty() ? 'Dirty' : 'Saved' }} -
-
- -
- -
-
Sélectionner un fichier *.excalidraw.md
-
    -
  • - -
  • -
+
+
+
+
+ + + {{ currentPath() }} + + + Aucun fichier + +
+ + + + + + + {{ dirty() ? 'Non sauvegardé' : 'Sauvegardé' }} +
- -
- - -
-
-
+ +
+
+ -
+
+ +
+
Sélectionner un fichier *.excalidraw.md
+
    +
  • + +
  • +
+
+
+ + +
+
+
+ +
+
+ +
@@ -74,20 +91,13 @@ import { firstValueFrom } from 'rxjs';
-
- -
- +
- +
@@ -104,7 +114,7 @@ import { firstValueFrom } from 'rxjs';
`, }) -export class TestExcalidrawPageComponent implements OnInit, OnDestroy { +export class TestExcalidrawPageComponent implements OnInit, OnDestroy, AfterViewInit { private readonly drawings = inject(DrawingsFileService); private readonly excalIo = inject(ExcalidrawIoService); private readonly vault = inject(VaultService); @@ -120,6 +130,7 @@ export class TestExcalidrawPageComponent implements OnInit, OnDestroy { private autosaveTimer: any = null; private saveTimer: any = null; + private dirtySyncInterval: any = null; excalidrawFiles = signal>([]); @@ -141,17 +152,20 @@ export class TestExcalidrawPageComponent implements OnInit, OnDestroy { // build files list for picker this.refreshFileList(); - // poll editor dirty state via save hash comparison using existing editor polling - // here we just mirror the editor's internal dirty state by attempting a heuristic: - const syncDirty = () => { - // not accessible directly; rely on presence of '*' in title not available. Skip. - }; - void syncDirty; + this.startDirtySync(); + } + + ngAfterViewInit(): void { + this.startDirtySync(); } ngOnDestroy(): void { if (this.autosaveTimer) clearInterval(this.autosaveTimer); if (this.saveTimer) clearTimeout(this.saveTimer); + if (this.dirtySyncInterval) { + clearInterval(this.dirtySyncInterval); + this.dirtySyncInterval = null; + } } refreshFileList(): void { @@ -191,6 +205,7 @@ export class TestExcalidrawPageComponent implements OnInit, OnDestroy { this.currentPath.set(path); this.updateUrlFileParam(path); this.openPicker.set(false); + this.dirty.set(false); // focus editor next tick setTimeout(() => this.editor?.onExcalidrawReady?.(), 0); } @@ -199,6 +214,7 @@ export class TestExcalidrawPageComponent implements OnInit, OnDestroy { this.currentPath.set(path); this.updateUrlFileParam(path); this.openPicker.set(false); + this.dirty.set(false); } async saveDebounced(): Promise { @@ -208,6 +224,17 @@ export class TestExcalidrawPageComponent implements OnInit, OnDestroy { async save(): Promise { await this.editor?.saveNow(); + this.dirty.set(this.editor?.dirty?.() ?? false); + } + + async exportPNG(withBg: boolean): Promise { + await this.editor?.exportPNG(withBg); + this.openExport.set(false); + } + + async exportSVG(withBg: boolean): Promise { + await this.editor?.exportSVG(withBg); + this.openExport.set(false); } async saveAs(): Promise { @@ -228,16 +255,6 @@ export class TestExcalidrawPageComponent implements OnInit, OnDestroy { this.updateUrlFileParam(path); } - async exportPNG(withBg: boolean): Promise { - await this.editor?.exportPNG(withBg); - this.openExport.set(false); - } - - async exportSVG(withBg: boolean): Promise { - await this.editor?.exportSVG(withBg); - this.openExport.set(false); - } - private updateUrlFileParam(filePath: string | null): void { try { this.router.navigate([], { queryParams: { file: filePath || null }, queryParamsHandling: 'merge', preserveFragment: true }); @@ -247,8 +264,8 @@ export class TestExcalidrawPageComponent implements OnInit, OnDestroy { closeFile(): void { this.currentPath.set(null); this.openPicker.set(false); - this.openExport.set(false); this.updateUrlFileParam(null); + this.dirty.set(false); } async exportJSON(): Promise { @@ -275,6 +292,7 @@ export class TestExcalidrawPageComponent implements OnInit, OnDestroy { this.autosaveTimer = setInterval(() => { if (this.currentPath()) { this.editor?.saveNow(); + this.dirty.set(this.editor?.dirty?.() ?? false); } }, 10000); } @@ -284,4 +302,14 @@ export class TestExcalidrawPageComponent implements OnInit, OnDestroy { this.editor?.toggleFullscreen(); } + private startDirtySync(): void { + if (this.dirtySyncInterval) return; + this.dirtySyncInterval = setInterval(() => { + const childDirty = this.editor?.dirty?.(); + if (typeof childDirty === 'boolean' && childDirty !== this.dirty()) { + this.dirty.set(childDirty); + } + }, 800); + } + } diff --git a/src/app/layout/app-shell-nimbus/app-shell-nimbus.component.ts b/src/app/layout/app-shell-nimbus/app-shell-nimbus.component.ts index c2bddfe..b04c0b4 100644 --- a/src/app/layout/app-shell-nimbus/app-shell-nimbus.component.ts +++ b/src/app/layout/app-shell-nimbus/app-shell-nimbus.component.ts @@ -279,6 +279,7 @@ import { InPageSearchOverlayComponent } from '../../shared/search/in-page-search (quickLinkSelected)="onQuickLink($event)" (markdownPlaygroundSelected)="onMarkdownPlaygroundSelected()" (testsPanelSelected)="onTestsPanelSelected()" + (testsExcalidrawSelected)="onTestsExcalidrawSelected()" (helpPageSelected)="onHelpPageSelected()" (aboutSelected)="onAboutSelected()" > @@ -860,14 +861,23 @@ export class AppShellNimbusLayoutComponent implements AfterViewInit { } onMarkdownPlaygroundSelected(): void { + if (this.responsive.isMobile()) { + this.mobileNav.setActiveTab('page'); + } this.markdownPlaygroundSelected.emit(); } onTestsPanelSelected(): void { + if (this.responsive.isMobile()) { + this.mobileNav.setActiveTab('page'); + } this.testsPanelRequested.emit(); } onTestsExcalidrawSelected(): void { + if (this.responsive.isMobile()) { + this.mobileNav.setActiveTab('page'); + } this.testsExcalidrawRequested.emit(); } diff --git a/vault/.obsidian/workspace.json b/vault/.obsidian/workspace.json index 6207014..1522e60 100644 --- a/vault/.obsidian/workspace.json +++ b/vault/.obsidian/workspace.json @@ -4,17 +4,19 @@ "type": "split", "children": [ { - "id": "b123bf2cfbaf681c", + "id": "511c66a5c96502b2", "type": "tabs", "children": [ { - "id": "a71c9cf3bbb86552", + "id": "8309e5042a8fb85c", "type": "leaf", "state": { - "type": "empty", - "state": {}, - "icon": "lucide-file", - "title": "New tab" + "type": "excalidraw", + "state": { + "file": "Drawing-20251028-1452.excalidraw.md" + }, + "icon": "excalidraw-icon", + "title": "Drawing-20251028-1452.excalidraw" } } ] @@ -174,8 +176,17 @@ "obsidian-excalidraw-plugin:New drawing": false } }, - "active": "a71c9cf3bbb86552", + "active": "8309e5042a8fb85c", "lastOpenFiles": [ + "Drawing-20251028-1452.png", + "Drawing-20251028-1452.excalidraw.md.bak", + "Drawing-20251028-1452.excalidraw.md", + "dessin.svg", + "dessin.excalidraw.md", + "dessin.png", + "dessin.excalidraw.md.bak", + "dessin_05.svg", + "dessin_05.png", "dessin_05.excalidraw.md", "dessin_03.excalidraw.md", "dessin_05.excalidraw.md.bak", @@ -189,9 +200,7 @@ "dessin-002.excalidraw.md.bak", "Dessin_001.excalidraw.md", "Dessin_001.excalidraw.md.tmp", - "Dessin_001.excalidraw.md.bak", "Drawing 2025-10-28 11.11.59.excalidraw.md", - "Drawing 2025-10-28 11.11.59.excalidraw.md.tmp", "dessin-06.excalidraw.md", "Dessin-5.excalidraw.md", "Drawing-20251027-2203.excalidraw.md", @@ -209,8 +218,6 @@ "Drawing-20251027-1914.excalidraw.md", "Drawing-20251027-1705.excalidraw.md", "Drawing 2025-10-27 16.43.48.excalidraw.md", - "test-drawing.excalidraw.md", - "Untitled.canvas", - "test.md" + "Untitled.canvas" ] } \ No newline at end of file diff --git a/vault/Dessin_001.excalidraw.md b/vault/Dessin_001.excalidraw.md deleted file mode 100644 index aed01e1..0000000 --- a/vault/Dessin_001.excalidraw.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -excalidraw-plugin: parsed -updated: "2025-10-28T15:45:35.205Z" ---- - -==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== -You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving' - -# Excalidraw Data - -## Text Elements -%% -## Drawing -```compressed-json -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 -``` -%% \ No newline at end of file diff --git a/vault/Drawing-20251028-1452.excalidraw.md b/vault/Drawing-20251028-1452.excalidraw.md new file mode 100644 index 0000000..5345e3c --- /dev/null +++ b/vault/Drawing-20251028-1452.excalidraw.md @@ -0,0 +1,15 @@ +--- +excalidraw-plugin: parsed +updated: "2025-10-29T00:30:06.609Z" +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== + +# Excalidraw Data + +## Text Elements +%% +## Drawing +```compressed-json +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 +``` +%% \ No newline at end of file diff --git a/vault/Drawing-20251028-1452.png b/vault/Drawing-20251028-1452.png new file mode 100644 index 0000000000000000000000000000000000000000..64cb69ca31af5e69c9efe0febcd23e921a729ea7 GIT binary patch literal 2249 zcmV;)2sZbLP)azp0P)omeeha z_sY}ynC`0jtE;Me2K(7xfB*CED)al`S+o8t!UHRaA}}<~3StFOhzAN$W1SHzh(bJ2 zh#KpRSV0uxfkM<+XT%DkhX+7p#|LM~~YGqb62ms!^e%Vi; zaB2fmEr{RV{@McI@aHdHG_PL0(rm7;u9~-R-!|XBe{YX#`B5bZ5W>-$?Y8;)^;`4D z#h;_dhpJ#y2O@>=@%+5``0@Pk(3=$(7Z**9FscHPKILY>X0ts&h{p5hFPbil z8gfQ8ASC9?&!1a=gW&0J5AONVg&}9$b6ZiTssJG$sEl~-F$nG<0Yf`-hIXk^JO~iv z1rC%G9-0a6Nd*kxoHLuuD(w=bXb>rc-R^yJUru<;slWl~zRNF{V^&gz7%attNFgXu zckka1HWEM}BSe*$yo&^pLTI1pq(mJ`14w;=QDX8g4n!A1#Q32A()UG(0z)aBUYomJ z6o?dpMOjV=94&bVjM9>KF(584KQ~bwaay`!cAQJ(3pq!BB_;17K!9-e;RD~aVkU^^ z?ZF5?cDvo3ZIBX@_v|2qqZESbW=sgU3Q@K}wA*}6v7x4QrFO*9m^MHqU-zpzM-4; z)G`@}FpQx--i%|fV^v7{eoTa@C~4)3xfXkqgGduICkaRKL^_^Bx-jNg>`e+nIFcK} z*^=el5JDI03;H;oW3e|G2vtc60RYL8;iU+D4lpL(shtD_0Q>!?gTFx#k`5;dYHYTf z_8TGcg%BmDO`+cCAQ&Pfg)wthNTI_+uaPh43C2{(dvp+Ka%S9|71Bch(raMcS$Ut` zZoj1WlaHgs5D}I|~Q^V&Ntn$qlLUOKWeEZIE2aI}3>4f9xXxK$hnCu00W=2!0mNAGo& zTMw8O@o<_IeZo^O5cZQ|SOZ0SeZBR-)%Er5L62515NW?d2Tc1|VmlsC5yK2Q*2Z2S zV%kOLeWqT#XUVT=+4}P3%U-7T0)cSAK)!Ef&`YxlZ{8=HpSH{Un9vJ^j(^!~ytLA{ zGHBnl&>!iF`rUxCzBdS@(^-)!P=t?XP{IS5R+HhMKC1Kvq4W5-P@4i2(SE8D52Ka! z&@G=qAmoY^Mkw+WLHImIzGVAQ2;Msggf|LNw!gJ0@)Ti+1cVPfm_tI6_maUNyxI15 zz!0L+^3C-ni_+a}U?Tt?Ozoj^5(tCdfpN1B6;Ft3OO|v8I>$%ECxhVZ&34n684;qE z4#P}fqvV_e0v~1pA$fOUn7Rg7ngj%PosyirKb0&XbQmziOEbgweU=6zg*gfHw1lV1))PQd|7u%FjRx8LiS~XpsPEQ9faPO1jA=Av6(j( z1U?%DgpQX0Lnw+eRaKZXC-6}!qk%BUeK4G_K|qk4=?Z}LlJ;0KDhNt_QYFHXf@2B@{4fa!0|g9i6-cQt%miVHo;eq6`g=$w13?Ke zzJB|r*^~%FnHmtx1i7JAc7h+1f?y9A7Jb?!!2lr2Q~(Gar;^D*FwB;53d57={9H0e za_-tX3kXVpp*Gj{B+dyVk~3X~eDLpmr^;*~D6TfY4~A<~Nt&Fe&I_rHvx1;VY@cgS zJu}Qgxxv^Th^g~}aYJSYA$fxlPVj#V!a1Sj7_Y_vUf;$xJGJMM*+DQI49S~AY@b_W zaFlCfh`xm+eNVY)Gv3dn2oRJD7#tHYR5PyS6nz4%Ph;7#*PdI70l^Vqa0~~5;Zr{6 zbBYQ{-}vVTPpza%hrq^SK~T=>d$Ya$eR|II5s5j4F!x&FA>E4xLGj)0?w_G??ic|< zVvd}kG|szLI7W-(?DYV$f{H7JAUW%!R4E<=$ANKdz5v1Br-%|&DO@@P zHdXD~J_DAs#41jdez>APVt7A!@8MVg*r%2MST+KL7v#|Np9VuT=m500v1!K~w_( XgNU-g>pwOL00000NkvXXu0mjf+pGZt literal 0 HcmV?d00001 diff --git a/vault/dessin-002.excalidraw.md b/vault/dessin-002.excalidraw.md deleted file mode 100644 index 02e0a8f..0000000 --- a/vault/dessin-002.excalidraw.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -excalidraw-plugin: parsed -updated: "2025-10-28T15:52:34.935Z" ---- -==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== - - -# Text Elements - -# Drawing -```json -{"elements":[{"id":"FH8lzL5Mi3fE2hkUwBpjg","type":"ellipse","x":186.5,"y":194.5,"width":184,"height":143.5,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":980334059,"version":87,"versionNonce":1002008523,"isDeleted":false,"boundElements":[{"id":"RwNj5xmpJCXxtCVzpGsCc","type":"arrow"},{"id":"tVxfMX9-gzA1gIMHh04AP","type":"arrow"}],"updated":1761666749806,"link":null,"locked":false},{"id":"RwNj5xmpJCXxtCVzpGsCc","type":"arrow","x":186.5,"y":271.5,"width":183,"height":5,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1981797643,"version":68,"versionNonce":624371685,"isDeleted":false,"boundElements":null,"updated":1761666744662,"link":null,"locked":false,"points":[[0,0],[183,-5]],"lastCommittedPoint":null,"startBinding":{"elementId":"FH8lzL5Mi3fE2hkUwBpjg","focus":0.03811374375552938,"gap":1},"endBinding":null,"startArrowhead":null,"endArrowhead":"arrow"},{"id":"tVxfMX9-gzA1gIMHh04AP","type":"arrow","x":277,"y":192,"width":1,"height":145,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":132945413,"version":89,"versionNonce":1141263659,"isDeleted":false,"boundElements":null,"updated":1761666749806,"link":null,"locked":false,"points":[[0,0],[1,145]],"lastCommittedPoint":null,"startBinding":{"elementId":"FH8lzL5Mi3fE2hkUwBpjg","focus":0.01073822548811009,"gap":2.5093386662695423},"endBinding":null,"startArrowhead":null,"endArrowhead":"arrow"}],"appState":{"showWelcomeScreen":true,"theme":"dark","collaborators":{},"currentChartType":"bar","currentItemBackgroundColor":"transparent","currentItemEndArrowhead":"arrow","currentItemFillStyle":"solid","currentItemFontFamily":1,"currentItemFontSize":20,"currentItemOpacity":100,"currentItemRoughness":1,"currentItemStartArrowhead":null,"currentItemStrokeColor":"#1e1e1e","currentItemRoundness":"round","currentItemStrokeStyle":"solid","currentItemStrokeWidth":2,"currentItemTextAlign":"left","cursorButton":"up","activeEmbeddable":null,"draggingElement":null,"editingElement":null,"editingGroupId":null,"editingLinearElement":null,"activeTool":{"type":"selection","customType":null,"locked":false,"lastActiveTool":null},"penMode":false,"penDetected":false,"errorMessage":null,"exportBackground":true,"exportScale":2,"exportEmbedScene":false,"exportWithDarkMode":false,"fileHandle":null,"gridSize":null,"isBindingEnabled":true,"defaultSidebarDockedPreference":false,"isLoading":false,"isResizing":false,"isRotating":false,"lastPointerDownWith":"mouse","multiElement":null,"name":"Untitled-2025-10-28-1152","contextMenu":null,"openMenu":null,"openPopup":null,"openSidebar":null,"openDialog":null,"pasteDialog":{"shown":false,"data":null},"previousSelectedElementIds":{"tVxfMX9-gzA1gIMHh04AP":true},"resizingElement":null,"scrolledOutside":false,"scrollX":0,"scrollY":0,"selectedElementIds":{},"selectedGroupIds":{},"selectedElementsAreBeingDragged":false,"selectionElement":null,"shouldCacheIgnoreZoom":false,"showStats":false,"startBoundElement":null,"suggestedBindings":[],"frameRendering":{"enabled":true,"clip":true,"name":true,"outline":true},"frameToHighlight":null,"editingFrame":null,"elementsToHighlight":null,"toast":null,"viewBackgroundColor":"#f8f9fa","zenModeEnabled":false,"zoom":{"value":1},"viewModeEnabled":false,"pendingImageElementId":null,"showHyperlinkPopup":false,"selectedLinearElement":null,"snapLines":[],"originSnapOffset":null,"objectsSnapModeEnabled":false,"offsetLeft":723,"offsetTop":155,"width":665,"height":546},"files":{}} -``` - -# Embedded Files - -%% -```compressed-json -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 -``` -%% \ No newline at end of file diff --git a/vault/dessin.excalidraw.md b/vault/dessin.excalidraw.md new file mode 100644 index 0000000..3582966 --- /dev/null +++ b/vault/dessin.excalidraw.md @@ -0,0 +1,15 @@ +--- +excalidraw-plugin: parsed +updated: "2025-10-28T18:48:43.751Z" +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== + +# Excalidraw Data + +## Text Elements +%% +## Drawing +```compressed-json +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 +``` +%% \ No newline at end of file diff --git a/vault/dessin.png b/vault/dessin.png new file mode 100644 index 0000000000000000000000000000000000000000..ab41a3b83df8e3ba2cf5ecf5d097dc4e17ec5e68 GIT binary patch literal 7575 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 X?Y@>cX)J9@{{k@7y{=QOg^l_jL15JW literal 0 HcmV?d00001 diff --git a/vault/dessin.svg b/vault/dessin.svg new file mode 100644 index 0000000..4fd5ce5 --- /dev/null +++ b/vault/dessin.svg @@ -0,0 +1,21 @@ + + + + + + + + \ No newline at end of file diff --git a/vault/dessin_03.excalidraw.md b/vault/dessin_03.excalidraw.md deleted file mode 100644 index ffda655..0000000 --- a/vault/dessin_03.excalidraw.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -excalidraw-plugin: parsed -updated: "2025-10-28T16:00:51.235Z" ---- -==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== - - -# Text Elements - -# Drawing -```json -{"elements":[{"id":"k815FAbmfYF5PnwUH8C-Y","type":"diamond","x":145,"y":168,"width":184,"height":162,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1003701346,"version":78,"versionNonce":177304866,"isDeleted":false,"boundElements":null,"updated":1761667243295,"link":null,"locked":false},{"id":"-5PKdSwNmlYANRFbrw08a","type":"arrow","x":236.5,"y":170.5,"width":1,"height":154,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1957331170,"version":45,"versionNonce":596418814,"isDeleted":false,"boundElements":null,"updated":1761667248128,"link":null,"locked":false,"points":[[0,0],[1,154]],"lastCommittedPoint":null,"startBinding":null,"endBinding":null,"startArrowhead":null,"endArrowhead":"arrow"}],"appState":{"showWelcomeScreen":true,"theme":"dark","collaborators":{},"currentChartType":"bar","currentItemBackgroundColor":"transparent","currentItemEndArrowhead":"arrow","currentItemFillStyle":"solid","currentItemFontFamily":1,"currentItemFontSize":20,"currentItemOpacity":100,"currentItemRoughness":1,"currentItemStartArrowhead":null,"currentItemStrokeColor":"#1e1e1e","currentItemRoundness":"round","currentItemStrokeStyle":"solid","currentItemStrokeWidth":2,"currentItemTextAlign":"left","cursorButton":"up","activeEmbeddable":null,"draggingElement":null,"editingElement":null,"editingGroupId":null,"editingLinearElement":null,"activeTool":{"type":"selection","customType":null,"locked":false,"lastActiveTool":null},"penMode":false,"penDetected":false,"errorMessage":null,"exportBackground":true,"exportScale":2,"exportEmbedScene":false,"exportWithDarkMode":false,"fileHandle":null,"gridSize":null,"isBindingEnabled":true,"defaultSidebarDockedPreference":false,"isLoading":false,"isResizing":false,"isRotating":false,"lastPointerDownWith":"mouse","multiElement":null,"name":"Untitled-2025-10-28-1200","contextMenu":null,"openMenu":null,"openPopup":null,"openSidebar":null,"openDialog":null,"pasteDialog":{"shown":false,"data":null},"previousSelectedElementIds":{"-5PKdSwNmlYANRFbrw08a":true},"resizingElement":null,"scrolledOutside":false,"scrollX":0,"scrollY":0,"selectedElementIds":{},"selectedGroupIds":{},"selectedElementsAreBeingDragged":false,"selectionElement":null,"shouldCacheIgnoreZoom":false,"showStats":false,"startBoundElement":null,"suggestedBindings":[],"frameRendering":{"enabled":true,"clip":true,"name":true,"outline":true},"frameToHighlight":null,"editingFrame":null,"elementsToHighlight":null,"toast":null,"viewBackgroundColor":"#f8f9fa","zenModeEnabled":false,"zoom":{"value":1},"viewModeEnabled":false,"pendingImageElementId":null,"showHyperlinkPopup":false,"selectedLinearElement":null,"snapLines":[],"originSnapOffset":null,"objectsSnapModeEnabled":false,"offsetLeft":723,"offsetTop":155,"width":665,"height":546},"files":{}} -``` - -# Embedded Files - -%% -```compressed-json -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= -``` -%% \ No newline at end of file diff --git a/vault/dessin_04.excalidraw.md b/vault/dessin_04.excalidraw.md deleted file mode 100644 index ec12027..0000000 --- a/vault/dessin_04.excalidraw.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -excalidraw-plugin: parsed -updated: "2025-10-28T16:26:01.524Z" ---- -==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== - - -# Text Elements - -# Drawing -```json -{"elements":[{"id":"GeEImoYg9respBPK3wmrF","type":"diamond","x":284.5,"y":175,"width":151,"height":168,"angle":0,"strokeColor":"#1e1e1e","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":2,"strokeStyle":"solid","roughness":1,"opacity":100,"groupIds":[],"frameId":null,"roundness":{"type":2},"seed":1926584722,"version":64,"versionNonce":1088033746,"isDeleted":false,"boundElements":null,"updated":1761668759766,"link":null,"locked":false}],"appState":{"showWelcomeScreen":true,"theme":"dark","collaborators":{},"currentChartType":"bar","currentItemBackgroundColor":"transparent","currentItemEndArrowhead":"arrow","currentItemFillStyle":"solid","currentItemFontFamily":1,"currentItemFontSize":20,"currentItemOpacity":100,"currentItemRoughness":1,"currentItemStartArrowhead":null,"currentItemStrokeColor":"#1e1e1e","currentItemRoundness":"round","currentItemStrokeStyle":"solid","currentItemStrokeWidth":2,"currentItemTextAlign":"left","cursorButton":"up","activeEmbeddable":null,"draggingElement":null,"editingElement":null,"editingGroupId":null,"editingLinearElement":null,"activeTool":{"type":"selection","customType":null,"locked":false,"lastActiveTool":null},"penMode":false,"penDetected":false,"errorMessage":null,"exportBackground":true,"exportScale":2,"exportEmbedScene":false,"exportWithDarkMode":false,"fileHandle":null,"gridSize":null,"isBindingEnabled":true,"defaultSidebarDockedPreference":false,"isLoading":false,"isResizing":false,"isRotating":false,"lastPointerDownWith":"mouse","multiElement":null,"name":"Untitled-2025-10-28-1225","contextMenu":null,"openMenu":null,"openPopup":null,"openSidebar":null,"openDialog":null,"pasteDialog":{"shown":false,"data":null},"previousSelectedElementIds":{"GeEImoYg9respBPK3wmrF":true},"resizingElement":null,"scrolledOutside":false,"scrollX":0,"scrollY":0,"selectedElementIds":{},"selectedGroupIds":{},"selectedElementsAreBeingDragged":false,"selectionElement":null,"shouldCacheIgnoreZoom":false,"showStats":false,"startBoundElement":null,"suggestedBindings":[],"frameRendering":{"enabled":true,"clip":true,"name":true,"outline":true},"frameToHighlight":null,"editingFrame":null,"elementsToHighlight":null,"toast":null,"viewBackgroundColor":"#f8f9fa","zenModeEnabled":false,"zoom":{"value":1},"viewModeEnabled":false,"pendingImageElementId":null,"showHyperlinkPopup":false,"selectedLinearElement":null,"snapLines":[],"originSnapOffset":null,"objectsSnapModeEnabled":false,"offsetLeft":723,"offsetTop":155,"width":665,"height":546},"files":{}} -``` - -# Embedded Files - -%% -```compressed-json -N4IgpgNmC2YHYBcDOIBcBtUBLAJmkA4mAKICS0A9gJoDmAnAE5hIAOAQgAoDSAzAO7QGAMRAAaEAgCeLMPhxYAhpTh5xADzQAmABwAWAHQBWcZLQBGAOzGQfXAgAW5w2fH2wWGvYTmAbNvEKcDRQaAAM4kgIDBQA1mAAwhQQFAz4AMRmYJmZYiAARgoAxjE00QCuKonJqagSDIGsCkyIuQBmWBAQAMpSIbVISbi5kdFxAOp2jqiaEVGxYD2SfSADEEPi5Z5wzCioLiAULEVYUuah4SClFGUspDi76AC64q31sHdocGWdG9cq20hdqApDItABfCJgMB4PZ0TQ+Qx6CyaGYgABuYAYSCwFDgaB8unEGKxOLgADlcYVZHtQtptKEeDwLLofOIsEgACKQMAIaFoVoKCBIMDiPJ/HDEKCwRC7L4/EA3HAKXkwyw+Mw+PxWOgWTXiNZwGKfb4QfUUYp81ACoVgMHPEAKFgsHrK6mgJD2Ch8MaQQoUWBdQpMeBoKJlEUSNywORNI3iP2dBRi+oIFJAiEgQplBjNBDxexNBAAFWk1PyTVyWZz8AQpF50DYRRK5UqSRS+CiDSOucr2dzdZgxBUAEEc163AoYQ6x3xe9XEAPoEIOt1emXVutM32a4uhLiEEIlB1THt49uF/W94gulgAF7UzQXKv9+sAeSOhROJ7M5zP89r9YAErXFsOzmH+L4wC6DAIKO0R8BOMJyqaW7/ouPSjAkbY1CAGRZPhc6QdAwEVDgAK7CALaqKhREYfMizLBu1HPju9Z0eMkxaBBrEwEWYBqLBaw0HitRQK03h/gMDBsGUCCpiJCosLkRQIFgGLENAeTQkqeR9Mh4g4PUNA0FgQSSjANbGvK0InKZNDmdK3ioPp4DyKpQQEOUtxISa4g2e5NAADKmWATQOZZzm+Q6hSqRiRYUEkaDAqW+DClAMWkr2kT+iWoKRfKyQWjC1rCvqCiRMOGVxQlEBWRAGYyHAACyFA4NSJURo1XK8jFlodX5Y4ME1OwKDQ1IufxLApAgjbFFcpGhgw4Z+WoU0wYGgoPita0IBpWk4IG8DtYKpXgKt00TA4HKxi1bX8idEbtFAAASgQ4HpUWlLgN73nVbJIGwpnyGZcBJlAMJhhGbUCt8CA3m1BQMBy5pxDgHBMK0mLwFS902v9gUUJOdm46d7KAcwd7E1aD3/cBCDKlT/UgBA5UIBwFCmbySNenAl1TCAlBlMKuTQLDWDhS0+UoaD0a1AAqogJzgwAtI+miGMrP6q9omsooYlb7vxCDDV8f0HI1JtlGbhzwOzLA3NbjXw2AiOO/AHKKMkNBm0ckRgB7goUN7qDup6fAiUzSr03VDVMGiOJC103K9RKUo7vcSWECQ5DUPQTCsJwvACMIi3hhm+eU2ZaeSy5SBBkk4OvrJ2J3dTeMrPXnQABphBEncQFQvcrMnKoS7WGchxmaVgCnnnXN56aQulo/V8go5gGw7hBByRljcVNPD8vpJj2bHrXBAODxEUbikMJKRgAAWgl0AkxGZ98C6yCv7MhZsOKJ9SwiGUYyzAVSAxUHZB49pXhKDAOTFQmIqagHgGDS0kN4xrCUqgdBIAZbUhwdcBABp8FLVtC8N4YB4rPQ8PYISXgzb+TskIChDDV5ICoTQuhTkXKplZmbeOYA+CzWbOKKo7ZahpFaNoVodABS5HvM1VqJBQa6T6gfW8z9M5okFOGcwGYBF8Fuso1B+926NWBjQcgo0SCrw+IAlYYdnqlgYAaGIdsHZt1OtPFOwVthhVXqfUGLBfHMDQE8cQKQPCmS6EE18rRWjCm4VFCgeQABWM9kAxMdEYocJjv4HHiYkwKYBxJoGRDwCJhSeTxSwWYQw1hbA4AcPiBErh3CeCcoYFkGYnqhMnmCIAA=== -``` -%% \ No newline at end of file diff --git a/vault/dessin_05.excalidraw.md b/vault/dessin_05.excalidraw.md deleted file mode 100644 index c18e14e..0000000 --- a/vault/dessin_05.excalidraw.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -excalidraw-plugin: parsed -updated: "2025-10-28T16:46:06.902Z" ---- -==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== - -# Excalidraw Data - -## Text Elements -%% -## Drawing -```compressed-json -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 -``` -%% \ No newline at end of file diff --git a/vault/folder-4/Nouvelle note 10.md b/vault/folder-4/Nouvelle note 10.md index 7c10dac..9567f45 100644 --- a/vault/folder-4/Nouvelle note 10.md +++ b/vault/folder-4/Nouvelle note 10.md @@ -12,11 +12,6 @@ task: true archive: true draft: true private: true -color: "#EF4444" -tags: - - configuration - - tag4 - - test --- # TEST