Fix de la sauvegarde du RTE avec la possibilité de faire un localStorage

This commit is contained in:
2026-03-05 11:02:26 +01:00
parent 29469041e0
commit 585e608d8d
25 changed files with 1088 additions and 289 deletions

View File

@@ -104,6 +104,7 @@
--color-green-500: #00c758;
--color-green-700: #008138;
--color-green-800: #016630;
--color-emerald-600: #009767;
--color-blue-50: #eff6ff;
--color-blue-100: #dbeafe;
--color-blue-200: #bedbff;
@@ -126,8 +127,10 @@
--color-indigo-900: #312c85;
--color-purple-100: #f3e8ff;
--color-purple-200: #e9d5ff;
--color-purple-500: #ac4bff;
--color-purple-600: #9810fa;
--color-purple-700: #8200da;
--color-pink-500: #f6339a;
--color-rose-100: #ffe4e6;
--color-rose-200: #ffccd3;
--color-rose-800: #a30037;
@@ -243,6 +246,7 @@
--color-green-500: lab(70.5521% -66.5147 45.8072);
--color-green-700: lab(47.0329% -47.0239 31.4788);
--color-green-800: lab(37.4616% -36.7971 22.9692);
--color-emerald-600: lab(55.0481% -49.9246 15.93);
--color-blue-50: lab(96.492% -1.14647 -5.11479);
--color-blue-100: lab(92.0301% -2.24757 -11.6453);
--color-blue-200: lab(86.15% -4.04379 -21.0797);
@@ -265,8 +269,10 @@
--color-indigo-900: lab(23.3911% 24.6978 -50.4719);
--color-purple-100: lab(93.3333% 6.9744 -9.83434);
--color-purple-200: lab(87.8405% 13.4282 -18.7159);
--color-purple-500: lab(52.0183% 66.11 -78.2316);
--color-purple-600: lab(43.0295% 75.21 -86.5669);
--color-purple-700: lab(36.1758% 69.8525 -80.0381);
--color-pink-500: lab(56.9303% 76.8162 -8.07021);
--color-rose-100: lab(92.8221% 9.86832 2.60077);
--color-rose-200: lab(86.806% 19.1909 4.07754);
--color-rose-800: lab(34.6481% 60.802 20.1957);
@@ -644,6 +650,10 @@
right: calc(var(--spacing) * 4);
}
.right-6 {
right: calc(var(--spacing) * 6);
}
.right-10 {
right: calc(var(--spacing) * 10);
}
@@ -664,6 +674,10 @@
bottom: calc(var(--spacing) * 2);
}
.bottom-6 {
bottom: calc(var(--spacing) * 6);
}
.bottom-10 {
bottom: calc(var(--spacing) * 10);
}
@@ -680,6 +694,10 @@
left: calc(var(--spacing) * 0);
}
.left-2 {
left: calc(var(--spacing) * 2);
}
.left-3 {
left: calc(var(--spacing) * 3);
}
@@ -1316,10 +1334,6 @@
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-cols-4 {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
@@ -1589,6 +1603,11 @@
border-style: dashed;
}
.border-none {
--tw-border-style: none;
border-style: none;
}
.border-\[\#dfcdae\] {
border-color: #dfcdae;
}
@@ -1709,6 +1728,14 @@
border-color: var(--color-theme-border);
}
.border-theme-panel {
border-color: var(--color-theme-panel);
}
.border-theme-text {
border-color: var(--color-theme-text);
}
.border-transparent {
border-color: #0000;
}
@@ -1987,6 +2014,10 @@
background-color: var(--color-theme-panel);
}
.bg-theme-text {
background-color: var(--color-theme-text);
}
.bg-transparent {
background-color: #0000;
}
@@ -2045,6 +2076,11 @@
background-image: linear-gradient(var(--tw-gradient-stops));
}
.bg-gradient-to-tr {
--tw-gradient-position: to top right in oklab;
background-image: linear-gradient(var(--tw-gradient-stops));
}
.from-blue-500 {
--tw-gradient-from: var(--color-blue-500);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
@@ -2074,6 +2110,11 @@
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.from-pink-500 {
--tw-gradient-from: var(--color-pink-500);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.from-red-200 {
--tw-gradient-from: var(--color-red-200);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
@@ -2096,6 +2137,12 @@
--tw-gradient-stops: var(--tw-gradient-via-stops);
}
.via-purple-500 {
--tw-gradient-via: var(--color-purple-500);
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-via-stops);
}
.via-yellow-100 {
--tw-gradient-via: var(--color-yellow-100);
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
@@ -2568,6 +2615,10 @@
color: var(--color-blue-900);
}
.text-emerald-600 {
color: var(--color-emerald-600);
}
.text-gray-800 {
color: var(--color-gray-800);
}
@@ -2668,6 +2719,10 @@
color: var(--color-slate-900);
}
.text-theme-bg {
color: var(--color-theme-bg);
}
.text-theme-editor-text {
color: var(--color-theme-editor-text);
}
@@ -2826,6 +2881,16 @@
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.shadow-\[\#dfcdae\] {
--tw-shadow-color: #dfcdae;
}
@supports (color: color-mix(in lab, red, red)) {
.shadow-\[\#dfcdae\] {
--tw-shadow-color: color-mix(in oklab, #dfcdae var(--tw-shadow-alpha), transparent);
}
}
.shadow-blue-200 {
--tw-shadow-color: #bedbff;
}
@@ -2858,6 +2923,48 @@
}
}
.shadow-slate-200 {
--tw-shadow-color: #e2e8f0;
}
@supports (color: lab(0% 0 0)) {
.shadow-slate-200 {
--tw-shadow-color: lab(91.7353% -.998765 -4.76968);
}
}
@supports (color: color-mix(in lab, red, red)) {
.shadow-slate-200 {
--tw-shadow-color: color-mix(in oklab, var(--color-slate-200) var(--tw-shadow-alpha), transparent);
}
}
.shadow-slate-900 {
--tw-shadow-color: #0f172b;
}
@supports (color: lab(0% 0 0)) {
.shadow-slate-900 {
--tw-shadow-color: lab(7.78673% 1.82346 -15.0537);
}
}
@supports (color: color-mix(in lab, red, red)) {
.shadow-slate-900 {
--tw-shadow-color: color-mix(in oklab, var(--color-slate-900) var(--tw-shadow-alpha), transparent);
}
}
.shadow-theme-border {
--tw-shadow-color: var(--color-theme-border);
}
@supports (color: color-mix(in lab, red, red)) {
.shadow-theme-border {
--tw-shadow-color: color-mix(in oklab, var(--color-theme-border) var(--tw-shadow-alpha), transparent);
}
}
.ring-amber-200 {
--tw-ring-color: var(--color-amber-200);
}
@@ -3033,6 +3140,13 @@
background-color: var(--color-blue-200);
}
@media (hover: hover) {
.hover\:-translate-y-1:hover {
--tw-translate-y: calc(var(--spacing) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
}
}
@media (hover: hover) {
.hover\:scale-105:hover {
--tw-scale-x: 105%;
@@ -3087,6 +3201,12 @@
}
}
@media (hover: hover) {
.hover\:border-red-200:hover {
border-color: var(--color-red-200);
}
}
@media (hover: hover) {
.hover\:border-slate-200:hover {
border-color: var(--color-slate-200);
@@ -3105,6 +3225,18 @@
}
}
@media (hover: hover) {
.hover\:border-theme-text:hover {
border-color: var(--color-theme-text);
}
}
@media (hover: hover) {
.hover\:bg-\[\#433422\]:hover {
background-color: #433422;
}
}
@media (hover: hover) {
.hover\:bg-\[\#eaddc4\]:hover {
background-color: #eaddc4;
@@ -3141,12 +3273,6 @@
}
}
@media (hover: hover) {
.hover\:bg-blue-500:hover {
background-color: var(--color-blue-500);
}
}
@media (hover: hover) {
.hover\:bg-blue-500\/10:hover {
background-color: #3080ff1a;

View File

@@ -20,6 +20,7 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$copy$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Copy$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/copy.js [app-client] (ecmascript) <export default as Copy>");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$wand$2d$sparkles$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Wand2$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/wand-sparkles.js [app-client] (ecmascript) <export default as Wand2>");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/check.js [app-client] (ecmascript) <export default as Check>");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2d$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CheckCheck$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/check-check.js [app-client] (ecmascript) <export default as CheckCheck>");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$refresh$2d$cw$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__RefreshCw$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/refresh-cw.js [app-client] (ecmascript) <export default as RefreshCw>");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$maximize$2d$2$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Maximize2$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/maximize-2.js [app-client] (ecmascript) <export default as Maximize2>");
var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$loader$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Loader2$3e$__ = __turbopack_context__.i("[project]/Documents/00 - projet/plumeia/node_modules/lucide-react/dist/esm/icons/loader-circle.js [app-client] (ecmascript) <export default as Loader2>");
@@ -34,13 +35,13 @@ var _s = __turbopack_context__.k.signature();
'use client';
;
;
const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"])(_c = _s(({ initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref)=>{
const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"])(_c = _s(({ editorId, initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref)=>{
_s();
const contentRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null);
const scrollContainerRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null);
const [isFocused, setIsFocused] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])(false);
// Auto-Save State
const [saveStatus, setSaveStatus] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])('saved');
const [saveStatus, setSaveStatus] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"])('saved_db');
const saveTimeoutRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"])(null);
// Track sync state to avoid autosave loopbacks wiping current edits
// Start as null so the initial useEffect ALWAYS writes initialContent to the div
@@ -168,19 +169,33 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
"RichTextEditor.useEffect": ()=>{
if (!contentRef.current || initialContent === undefined) return;
// Ignore exact loopbacks from our own saves
if (initialContent === syncRef.current) return;
// Safety: never overwrite real content with an empty string from a stale/placeholder source
const hasRealContent = latestContentRef.current && latestContentRef.current.trim().length > 0;
if (!initialContent && hasRealContent) return;
// We reached here, so initialContent is genuinely NEW data we didn't know about.
// E.g. clicked another chapter, or data was modified in another tab/device.
contentRef.current.innerHTML = initialContent;
syncRef.current = initialContent;
latestContentRef.current = initialContent;
let contentToLoad = initialContent;
let hasLocalDraft = false;
// Check localStorage for a newer draft
if (editorId) {
const localDraft = localStorage.getItem(`draft_${editorId}`);
if (localDraft && localDraft !== initialContent) {
contentToLoad = localDraft;
hasLocalDraft = true;
setSaveStatus('saved_local');
}
}
// 1. Si le contenu entrant est identique à ce qu'on a déjà, on ne touche à rien
if (contentToLoad === contentRef.current.innerHTML) return;
// 2. LOGIQUE CRUCIALE : On ne met à jour le DOM que si :
// - L'éditeur est vide (premier chargement)
// - OU le document a changé (si vous gérez des IDs de documents)
// - OU si l'utilisateur n'est PAS en train de focus l'éditeur
const isUserEditing = document.activeElement === contentRef.current;
if (!isUserEditing || contentRef.current.innerHTML === "" && contentToLoad !== "") {
contentRef.current.innerHTML = contentToLoad;
syncRef.current = contentToLoad;
latestContentRef.current = contentToLoad;
}
}
}["RichTextEditor.useEffect"], [
initialContent
initialContent,
editorId
]);
// Flush pending save on unmount
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({
@@ -189,9 +204,11 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
"RichTextEditor.useEffect": ()=>{
if (saveTimeoutRef.current) {
clearTimeout(saveTimeoutRef.current);
if (latestContentRef.current !== syncRef.current && onSave) {
onSave(latestContentRef.current);
}
}
// Always save if there are unsaved changes, regardless of timer
if (latestContentRef.current !== syncRef.current && onSave) {
syncRef.current = latestContentRef.current;
onSave(latestContentRef.current);
}
}
})["RichTextEditor.useEffect"];
@@ -210,16 +227,34 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
const currentHtml = contentRef.current.innerHTML;
latestContentRef.current = currentHtml;
if (onChange) onChange(currentHtml);
// Auto-Save Debounce
if (onSave) {
// 1. Save locally immediately
if (editorId) {
localStorage.setItem(`draft_${editorId}`, currentHtml);
setSaveStatus('saved_local');
} else {
setSaveStatus('unsaved');
}
// 2. Auto-Save Debounce for DB
if (onSave) {
if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);
saveTimeoutRef.current = setTimeout(async ()=>{
setSaveStatus('saving');
const htmlToSave = latestContentRef.current;
await onSave(htmlToSave);
syncRef.current = htmlToSave; // Record that we've synced this exact string to the server
setSaveStatus('saved');
// Update syncRef BEFORE calling onSave, because onSave triggers setProjects
// which causes a re-render. The useEffect must see the updated syncRef
// to avoid re-writing innerHTML unnecessarily.
syncRef.current = htmlToSave;
try {
await onSave(htmlToSave);
setSaveStatus('saved_db');
if (editorId) {
// Once saved to DB, we can consider the local draft synced if we want,
// or just keep it there. It will be overwritten on next load.
}
} catch (err) {
console.error('Auto-save failed:', err);
setSaveStatus('saved_local'); // Revert to local save status on error
}
}, 2000); // 2 seconds
}
}
@@ -327,12 +362,12 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 18
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 340,
lineNumber: 377,
columnNumber: 7
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 327,
lineNumber: 364,
columnNumber: 5
}, ("TURBOPACK compile-time value", void 0));
const hasSelection = savedRange.current && !savedRange.current.collapsed;
@@ -350,7 +385,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
`
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 348,
lineNumber: 385,
columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -362,7 +397,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
label: "Gras"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 359,
lineNumber: 396,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -371,7 +406,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
label: "Italique"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 360,
lineNumber: 397,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -380,14 +415,14 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
label: "Souligné"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 361,
lineNumber: 398,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 362,
lineNumber: 399,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -397,7 +432,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
label: "Titre 1"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 363,
lineNumber: 400,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -407,14 +442,14 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
label: "Titre 2"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 364,
lineNumber: 401,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 365,
lineNumber: 402,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -423,7 +458,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
label: "Aligner à gauche"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 366,
lineNumber: 403,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -432,7 +467,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
label: "Centrer"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 367,
lineNumber: 404,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -441,14 +476,14 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
label: "Aligner à droite"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 368,
lineNumber: 405,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 369,
lineNumber: 406,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -457,14 +492,14 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
label: "Liste"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 370,
lineNumber: 407,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex-1"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 372,
lineNumber: 409,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -474,47 +509,84 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$loader$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Loader2$3e$__["Loader2"], {
size: 12,
className: "animate-spin"
className: "animate-spin text-blue-500"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 376,
lineNumber: 413,
columnNumber: 41
}, ("TURBOPACK compile-time value", void 0)),
" Sauvegarde..."
" ",
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-blue-500 hidden sm:inline",
children: "Sauvegarde en cours..."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 413,
columnNumber: 102
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true),
saveStatus === 'saved' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
saveStatus === 'saved_local' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], {
size: 12,
size: 14,
className: "text-green-500"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 377,
columnNumber: 40
lineNumber: 414,
columnNumber: 46
}, ("TURBOPACK compile-time value", void 0)),
" Sauvegardé"
" ",
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-green-500 hidden sm:inline",
children: "Brouillon local"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 414,
columnNumber: 93
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true),
saveStatus === 'saved_db' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$check$2d$check$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__CheckCheck$3e$__["CheckCheck"], {
size: 14,
className: "text-emerald-600"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 415,
columnNumber: 43
}, ("TURBOPACK compile-time value", void 0)),
" ",
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-emerald-600 hidden sm:inline",
children: "Sauvegardé"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 415,
columnNumber: 97
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true),
saveStatus === 'unsaved' && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-amber-500",
children: "Modifications non enregistrées..."
children: "Non sauvegardé..."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 378,
lineNumber: 416,
columnNumber: 40
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 375,
lineNumber: 412,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 381,
lineNumber: 419,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -524,13 +596,13 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
isActive: showHistoryMargin
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 382,
lineNumber: 420,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 358,
lineNumber: 395,
columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -560,7 +632,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
"data-placeholder": "Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 398,
lineNumber: 436,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)),
showHistoryMargin && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -574,7 +646,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
className: "mx-auto mb-2 opacity-20"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 422,
lineNumber: 460,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
@@ -582,13 +654,13 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
children: "L'historique des modifications IA apparaîtra ici, aligné avec votre texte."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 423,
lineNumber: 461,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 421,
lineNumber: 459,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
versionGroups.map((group)=>{
@@ -607,7 +679,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
className: "absolute inset-0 bg-white border border-indigo-100 rounded-lg transform -translate-x-1 -translate-y-1 -z-10 shadow-sm"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 443,
lineNumber: 481,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -622,7 +694,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
className: "text-indigo-500"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 453,
lineNumber: 491,
columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
@@ -630,13 +702,13 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
children: latest.type
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 455,
lineNumber: 493,
columnNumber: 27
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 451,
lineNumber: 489,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -650,7 +722,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
})
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 463,
lineNumber: 501,
columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)),
isStack && (isExpanded ? /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$up$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronUp$3e$__["ChevronUp"], {
@@ -658,26 +730,26 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
className: "text-slate-400"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 467,
lineNumber: 505,
columnNumber: 42
}, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$chevron$2d$down$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronDown$3e$__["ChevronDown"], {
size: 14,
className: "text-slate-400"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 467,
lineNumber: 505,
columnNumber: 95
}, ("TURBOPACK compile-time value", void 0)))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 462,
lineNumber: 500,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 447,
lineNumber: 485,
columnNumber: 23
}, ("TURBOPACK compile-time value", void 0)),
!isExpanded && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -692,7 +764,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 475,
lineNumber: 513,
columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -703,20 +775,20 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 10
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 482,
lineNumber: 520,
columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)),
" Restaurer"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 478,
lineNumber: 516,
columnNumber: 27
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 474,
lineNumber: 512,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)),
isExpanded && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -732,7 +804,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
children: i === 0 ? 'Dernière version' : `Version -${i}`
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 493,
lineNumber: 531,
columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
@@ -744,13 +816,13 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
})
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 496,
lineNumber: 534,
columnNumber: 33
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 492,
lineNumber: 530,
columnNumber: 31
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -762,7 +834,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 500,
lineNumber: 538,
columnNumber: 31
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -773,54 +845,54 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 10
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 507,
lineNumber: 545,
columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)),
" Restaurer cette version"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 503,
lineNumber: 541,
columnNumber: 31
}, ("TURBOPACK compile-time value", void 0))
]
}, v.id, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 491,
lineNumber: 529,
columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 489,
lineNumber: 527,
columnNumber: 25
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 439,
lineNumber: 477,
columnNumber: 21
}, ("TURBOPACK compile-time value", void 0))
}, group.id, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 434,
lineNumber: 472,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0));
})
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 418,
lineNumber: 456,
columnNumber: 13
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 395,
lineNumber: 433,
columnNumber: 9
}, ("TURBOPACK compile-time value", void 0))
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 391,
lineNumber: 429,
columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)),
contextMenu && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
@@ -834,7 +906,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
}
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 525,
lineNumber: 563,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -851,7 +923,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 24
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 536,
lineNumber: 574,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
@@ -859,13 +931,13 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
children: "L'IA travaille..."
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 537,
lineNumber: 575,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 535,
lineNumber: 573,
columnNumber: 15
}, ("TURBOPACK compile-time value", void 0)) : /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
children: [
@@ -874,7 +946,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
children: "Outils IA"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 541,
lineNumber: 579,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -886,14 +958,14 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 14
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 550,
lineNumber: 588,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)),
" Corriger l'orthographe"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 545,
lineNumber: 583,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -905,14 +977,14 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 14
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 558,
lineNumber: 596,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)),
" Reformuler"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 553,
lineNumber: 591,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -924,14 +996,14 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 14
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 566,
lineNumber: 604,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)),
" Développer"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 561,
lineNumber: 599,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -942,21 +1014,21 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 14
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 573,
lineNumber: 611,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)),
" Continuer l'écriture"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 569,
lineNumber: 607,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "h-px bg-slate-100 my-1"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 576,
lineNumber: 614,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -964,7 +1036,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
children: "Édition"
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 578,
lineNumber: 616,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -976,14 +1048,14 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 14
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 587,
lineNumber: 625,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)),
" Copier"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 582,
lineNumber: 620,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)),
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -994,21 +1066,21 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 14
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 594,
lineNumber: 632,
columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)),
" Tout sélectionner"
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 590,
lineNumber: 628,
columnNumber: 17
}, ("TURBOPACK compile-time value", void 0))
]
}, void 0, true)
}, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 530,
lineNumber: 568,
columnNumber: 11
}, ("TURBOPACK compile-time value", void 0))
]
@@ -1016,10 +1088,10 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
]
}, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 347,
lineNumber: 384,
columnNumber: 5
}, ("TURBOPACK compile-time value", void 0));
}, "1keE8cf732OZ6jTNRl46BlQ/eZo=")), "1keE8cf732OZ6jTNRl46BlQ/eZo=");
}, "cWpHoTw7wOYNa/FuW7N+8oRfoPQ=")), "cWpHoTw7wOYNa/FuW7N+8oRfoPQ=");
_c1 = RichTextEditor;
const __TURBOPACK__default__export__ = RichTextEditor;
var _c, _c1;
@@ -1056,6 +1128,7 @@ function WritePage() {
const currentChapter = project.chapters?.find((c)=>c.id === currentChapterId);
return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxDEV"])(__TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$src$2f$components$2f$RichTextEditor$2e$tsx__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
ref: editorRef,
editorId: currentChapterId,
initialContent: currentChapter?.content || '',
onSave: (html)=>updateChapter(currentChapterId, {
content: html

File diff suppressed because one or more lines are too long

View File

@@ -405,6 +405,7 @@
--color-green-500: #00c758;
--color-green-700: #008138;
--color-green-800: #016630;
--color-emerald-600: #009767;
--color-blue-50: #eff6ff;
--color-blue-100: #dbeafe;
--color-blue-200: #bedbff;
@@ -427,8 +428,10 @@
--color-indigo-900: #312c85;
--color-purple-100: #f3e8ff;
--color-purple-200: #e9d5ff;
--color-purple-500: #ac4bff;
--color-purple-600: #9810fa;
--color-purple-700: #8200da;
--color-pink-500: #f6339a;
--color-rose-100: #ffe4e6;
--color-rose-200: #ffccd3;
--color-rose-800: #a30037;
@@ -544,6 +547,7 @@
--color-green-500: lab(70.5521% -66.5147 45.8072);
--color-green-700: lab(47.0329% -47.0239 31.4788);
--color-green-800: lab(37.4616% -36.7971 22.9692);
--color-emerald-600: lab(55.0481% -49.9246 15.93);
--color-blue-50: lab(96.492% -1.14647 -5.11479);
--color-blue-100: lab(92.0301% -2.24757 -11.6453);
--color-blue-200: lab(86.15% -4.04379 -21.0797);
@@ -566,8 +570,10 @@
--color-indigo-900: lab(23.3911% 24.6978 -50.4719);
--color-purple-100: lab(93.3333% 6.9744 -9.83434);
--color-purple-200: lab(87.8405% 13.4282 -18.7159);
--color-purple-500: lab(52.0183% 66.11 -78.2316);
--color-purple-600: lab(43.0295% 75.21 -86.5669);
--color-purple-700: lab(36.1758% 69.8525 -80.0381);
--color-pink-500: lab(56.9303% 76.8162 -8.07021);
--color-rose-100: lab(92.8221% 9.86832 2.60077);
--color-rose-200: lab(86.806% 19.1909 4.07754);
--color-rose-800: lab(34.6481% 60.802 20.1957);
@@ -945,6 +951,10 @@
right: calc(var(--spacing) * 4);
}
.right-6 {
right: calc(var(--spacing) * 6);
}
.right-10 {
right: calc(var(--spacing) * 10);
}
@@ -965,6 +975,10 @@
bottom: calc(var(--spacing) * 2);
}
.bottom-6 {
bottom: calc(var(--spacing) * 6);
}
.bottom-10 {
bottom: calc(var(--spacing) * 10);
}
@@ -981,6 +995,10 @@
left: calc(var(--spacing) * 0);
}
.left-2 {
left: calc(var(--spacing) * 2);
}
.left-3 {
left: calc(var(--spacing) * 3);
}
@@ -1617,10 +1635,6 @@
grid-template-columns: repeat(2, minmax(0, 1fr));
}
.grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-cols-4 {
grid-template-columns: repeat(4, minmax(0, 1fr));
}
@@ -1890,6 +1904,11 @@
border-style: dashed;
}
.border-none {
--tw-border-style: none;
border-style: none;
}
.border-\[\#dfcdae\] {
border-color: #dfcdae;
}
@@ -2010,6 +2029,14 @@
border-color: var(--color-theme-border);
}
.border-theme-panel {
border-color: var(--color-theme-panel);
}
.border-theme-text {
border-color: var(--color-theme-text);
}
.border-transparent {
border-color: #0000;
}
@@ -2288,6 +2315,10 @@
background-color: var(--color-theme-panel);
}
.bg-theme-text {
background-color: var(--color-theme-text);
}
.bg-transparent {
background-color: #0000;
}
@@ -2346,6 +2377,11 @@
background-image: linear-gradient(var(--tw-gradient-stops));
}
.bg-gradient-to-tr {
--tw-gradient-position: to top right in oklab;
background-image: linear-gradient(var(--tw-gradient-stops));
}
.from-blue-500 {
--tw-gradient-from: var(--color-blue-500);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
@@ -2375,6 +2411,11 @@
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.from-pink-500 {
--tw-gradient-from: var(--color-pink-500);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
}
.from-red-200 {
--tw-gradient-from: var(--color-red-200);
--tw-gradient-stops: var(--tw-gradient-via-stops, var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-to) var(--tw-gradient-to-position));
@@ -2397,6 +2438,12 @@
--tw-gradient-stops: var(--tw-gradient-via-stops);
}
.via-purple-500 {
--tw-gradient-via: var(--color-purple-500);
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-via-stops);
}
.via-yellow-100 {
--tw-gradient-via: var(--color-yellow-100);
--tw-gradient-via-stops: var(--tw-gradient-position), var(--tw-gradient-from) var(--tw-gradient-from-position), var(--tw-gradient-via) var(--tw-gradient-via-position), var(--tw-gradient-to) var(--tw-gradient-to-position);
@@ -2869,6 +2916,10 @@
color: var(--color-blue-900);
}
.text-emerald-600 {
color: var(--color-emerald-600);
}
.text-gray-800 {
color: var(--color-gray-800);
}
@@ -2969,6 +3020,10 @@
color: var(--color-slate-900);
}
.text-theme-bg {
color: var(--color-theme-bg);
}
.text-theme-editor-text {
color: var(--color-theme-editor-text);
}
@@ -3127,6 +3182,16 @@
box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow);
}
.shadow-\[\#dfcdae\] {
--tw-shadow-color: #dfcdae;
}
@supports (color: color-mix(in lab, red, red)) {
.shadow-\[\#dfcdae\] {
--tw-shadow-color: color-mix(in oklab, #dfcdae var(--tw-shadow-alpha), transparent);
}
}
.shadow-blue-200 {
--tw-shadow-color: #bedbff;
}
@@ -3159,6 +3224,48 @@
}
}
.shadow-slate-200 {
--tw-shadow-color: #e2e8f0;
}
@supports (color: lab(0% 0 0)) {
.shadow-slate-200 {
--tw-shadow-color: lab(91.7353% -.998765 -4.76968);
}
}
@supports (color: color-mix(in lab, red, red)) {
.shadow-slate-200 {
--tw-shadow-color: color-mix(in oklab, var(--color-slate-200) var(--tw-shadow-alpha), transparent);
}
}
.shadow-slate-900 {
--tw-shadow-color: #0f172b;
}
@supports (color: lab(0% 0 0)) {
.shadow-slate-900 {
--tw-shadow-color: lab(7.78673% 1.82346 -15.0537);
}
}
@supports (color: color-mix(in lab, red, red)) {
.shadow-slate-900 {
--tw-shadow-color: color-mix(in oklab, var(--color-slate-900) var(--tw-shadow-alpha), transparent);
}
}
.shadow-theme-border {
--tw-shadow-color: var(--color-theme-border);
}
@supports (color: color-mix(in lab, red, red)) {
.shadow-theme-border {
--tw-shadow-color: color-mix(in oklab, var(--color-theme-border) var(--tw-shadow-alpha), transparent);
}
}
.ring-amber-200 {
--tw-ring-color: var(--color-amber-200);
}
@@ -3334,6 +3441,13 @@
background-color: var(--color-blue-200);
}
@media (hover: hover) {
.hover\:-translate-y-1:hover {
--tw-translate-y: calc(var(--spacing) * -1);
translate: var(--tw-translate-x) var(--tw-translate-y);
}
}
@media (hover: hover) {
.hover\:scale-105:hover {
--tw-scale-x: 105%;
@@ -3388,6 +3502,12 @@
}
}
@media (hover: hover) {
.hover\:border-red-200:hover {
border-color: var(--color-red-200);
}
}
@media (hover: hover) {
.hover\:border-slate-200:hover {
border-color: var(--color-slate-200);
@@ -3406,6 +3526,18 @@
}
}
@media (hover: hover) {
.hover\:border-theme-text:hover {
border-color: var(--color-theme-text);
}
}
@media (hover: hover) {
.hover\:bg-\[\#433422\]:hover {
background-color: #433422;
}
}
@media (hover: hover) {
.hover\:bg-\[\#eaddc4\]:hover {
background-color: #eaddc4;
@@ -3442,12 +3574,6 @@
}
}
@media (hover: hover) {
.hover\:bg-blue-500:hover {
background-color: var(--color-blue-500);
}
}
@media (hover: hover) {
.hover\:bg-blue-500\/10:hover {
background-color: #3080ff1a;

File diff suppressed because one or more lines are too long