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

Binary file not shown.

View File

@@ -5834,3 +5834,279 @@ FAM | META SEQ | SST SEQ | RANGE
0 | 00013503 | 00013502 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh) 0 | 00013503 | 00013502 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013504 | 00013500 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh) 1 | 00013504 | 00013500 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
2 | 00013505 | 00013501 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh) 2 | 00013505 | 00013501 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
Time 2026-03-05T09:12:24.6778725Z
Commit 00013529 4 keys in 16ms 819µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013527 | 00013526 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013528 | 00013524 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
2 | 00013529 | 00013525 SST | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1 (0 MiB, fresh)
Time 2026-03-05T09:26:50.6243723Z
Commit 00013535 4 keys in 7ms 324µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013533 | 00013532 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00013534 | 00013531 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
1 | 00013535 | 00013530 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-03-05T09:28:50.6367929Z
Commit 00013541 4 keys in 7ms 682µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013539 | 00013538 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013540 | 00013536 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00013541 | 00013537 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-03-05T09:30:50.6331668Z
Commit 00013547 4 keys in 6ms 493µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013545 | 00013544 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013546 | 00013542 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00013547 | 00013543 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-03-05T09:32:50.6240317Z
Commit 00013553 4 keys in 16ms 750µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013551 | 00013550 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013552 | 00013548 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
2 | 00013553 | 00013549 SST | O | b294a4237ccef201-b294a4237ccef201 (0 MiB, fresh)
Time 2026-03-05T09:40:38.5061297Z
Commit 00013559 149 keys in 6ms 249µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00013557 | 00013556 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013558 | 00013554 SST | [================================================================================================] | 0667c7b664635738-fd8767054879a7cc (0 MiB, fresh)
2 | 00013559 | 00013555 SST | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc (0 MiB, fresh)
Time 2026-03-05T09:40:42.3191423Z
Commit 00013565 139 keys in 6ms 488µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013563 | 00013562 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013564 | 00013560 SST | [================================================================================================] | 0667c7b664635738-fd8767054879a7cc (0 MiB, fresh)
2 | 00013565 | 00013561 SST | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc (0 MiB, fresh)
Time 2026-03-05T09:41:53.2990348Z
Commit 00013571 139 keys in 7ms 775µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013569 | 00013568 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013570 | 00013567 SST | [================================================================================================] | 0667c7b664635738-fd8767054879a7cc (0 MiB, fresh)
2 | 00013571 | 00013566 SST | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc (0 MiB, fresh)
Time 2026-03-05T09:42:03.9130042Z
Commit 00013577 4 keys in 7ms 403µs 300ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013575 | 00013574 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013576 | 00013572 SST | O | 7c65b158fbf615ea-7c65b158fbf615ea (0 MiB, fresh)
2 | 00013577 | 00013573 SST | O | 7c65b158fbf615ea-7c65b158fbf615ea (0 MiB, fresh)
Time 2026-03-05T09:42:16.5822981Z
Commit 00013583 59 keys in 8ms 342µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013581 | 00013580 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013582 | 00013579 SST | [==============================================================================================] | 040dc7eeb774bec4-f5d5f2d6bd5d47cb (0 MiB, fresh)
2 | 00013583 | 00013578 SST | [============================================================================================] | 09b7999c944d458c-f5d5f2d6bd5d47cb (0 MiB, fresh)
Time 2026-03-05T09:42:30.0633616Z
Commit 00013589 143 keys in 6ms 652µs 200ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013587 | 00013586 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013588 | 00013584 SST | [================================================================================================] | 0667c7b664635738-fd8767054879a7cc (0 MiB, fresh)
2 | 00013589 | 00013585 SST | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc (0 MiB, fresh)
Time 2026-03-05T09:42:39.863664Z
Commit 00013595 4 keys in 16ms 629µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013593 | 00013592 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013594 | 00013590 SST | O | 7c65b158fbf615ea-7c65b158fbf615ea (0 MiB, fresh)
2 | 00013595 | 00013591 SST | O | 7c65b158fbf615ea-7c65b158fbf615ea (0 MiB, fresh)
Time 2026-03-05T09:43:46.7973842Z
Commit 00013601 536 keys in 11ms 659µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013599 | 00013598 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013600 | 00013597 SST | [==================================================================================================] | 00c875afcd53ecac-fff8031d5d519426 (0 MiB, fresh)
2 | 00013601 | 00013596 SST | [==================================================================================================] | 00c875afcd53ecac-ff1ad0c236dc7dd8 (2 MiB, fresh)
Time 2026-03-05T09:44:14.8946301Z
Commit 00013611 3633 keys in 10ms 570µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013607 | 00013604 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00013608 | 00013606 SST | [=============================================================================================] | 0d17912fd410ae98-fede697cf988e470 (0 MiB, fresh)
3 | 00013609 | 00013605 SST | [============================================================================================] | 094fc48477aa1157-f76d1016977e8665 (0 MiB, fresh)
1 | 00013610 | 00013603 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (1 MiB, fresh)
2 | 00013611 | 00013602 SST | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa (6 MiB, fresh)
2 | 00013614 | Compaction:
2 | 00013614 | MERGE (8273 keys):
2 | 00013614 | 00013189 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013195 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013200 INPUT | [==================================================================================================] | 000d168784b3a904-fffb6b73b51e00c8
2 | 00013614 | 00013210 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00013614 | 00013221 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013227 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013233 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013239 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013245 INPUT | [====================================================================] | 3ffdfb3b7d50fcf1-ef311d8b965c9633
2 | 00013614 | 00013251 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013257 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013263 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013269 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013275 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013281 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013287 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013293 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013299 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013305 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013311 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013317 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013323 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013328 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00013614 | 00013338 INPUT | [==================================================================================================] | 000d168784b3a904-fff068465974022c
2 | 00013614 | 00013349 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00013614 | 00013359 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013364 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00013614 | 00013371 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013377 INPUT | [================================================================================] | 20ff59e1772d8bcf-ef311d8b965c9633
2 | 00013614 | 00013387 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013393 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013399 INPUT | [==========================================================================================] | 09a1a5601bffdc2e-f123127f3b6f4541
2 | 00013614 | 00013404 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00013614 | 00013415 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013420 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013426 INPUT | [==================================================================================================] | 00eac999f8125084-ffe64bbd36bacfc8
2 | 00013614 | 00013433 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013438 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013444 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013451 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013457 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013462 INPUT | [==================================================================================================] | 000b1fbdee8aaa62-fff49d0b9a706a34
2 | 00013614 | 00013473 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013479 INPUT | [===========================] | 3922e28834dec7a3-801410113b08be83
2 | 00013614 | 00013485 INPUT | O | 3e454b68eb86960f-3e454b68eb86960f
2 | 00013614 | 00013490 INPUT | [==================================================================================================] | 001159b6a37810de-ff870422b220f2d9
2 | 00013614 | 00013501 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013507 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013513 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013519 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013525 INPUT | O | 3ffdfb3b7d50fcf1-3ffdfb3b7d50fcf1
2 | 00013614 | 00013531 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013537 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013543 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013549 INPUT | O | b294a4237ccef201-b294a4237ccef201
2 | 00013614 | 00013555 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013561 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013566 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013573 INPUT | O | 7c65b158fbf615ea-7c65b158fbf615ea
2 | 00013614 | 00013578 INPUT | [============================================================================================] | 09b7999c944d458c-f5d5f2d6bd5d47cb
2 | 00013614 | 00013585 INPUT | [================================================================================================] | 06945e35a566c40d-fd8767054879a7cc
2 | 00013614 | 00013591 INPUT | O | 7c65b158fbf615ea-7c65b158fbf615ea
2 | 00013614 | 00013596 INPUT | [==================================================================================================] | 00c875afcd53ecac-ff1ad0c236dc7dd8
2 | 00013614 | 00013602 INPUT | [==================================================================================================] | 000d168784b3a904-ffd966598c8595fa
2 | 00013614 | 00013613 OUTPUT | [==================================================================================================] | 007b83f40de780ac-ffe8beb2fab5240b (cold)
2 | 00013614 | 00013612 OUTPUT | [==================================================================================================] | 000b1fbdee8aaa62-fffb6b73b51e00c8 (warm)
Time 2026-03-05T09:44:15.0737579Z
Commit 00013615 8273 keys in 32ms 476µs 100ns
FAM | META SEQ | SST SEQ | RANGE
2 | 00013614 | 00013613 SST | [==================================================================================================] | 007b83f40de780ac-ffe8beb2fab5240b (0 MiB, cold)
2 | 00013614 | 00013612 SST | [==================================================================================================] | 000b1fbdee8aaa62-fffb6b73b51e00c8 (16 MiB, warm)
2 | 00013614 | 00013189 00013195 00013200 00013210 00013221 00013227 00013233 00013239 00013245 00013251 00013257 00013263 00013269 00013275 00013281 OBSOLETE SST
2 | 00013614 | 00013287 00013293 00013299 00013305 00013311 00013317 00013323 00013328 00013338 00013349 00013359 00013364 00013371 00013377 00013387 OBSOLETE SST
2 | 00013614 | 00013393 00013399 00013404 00013415 00013420 00013426 00013433 00013438 00013444 00013451 00013457 00013462 00013473 00013479 00013485 OBSOLETE SST
2 | 00013614 | 00013490 00013501 00013507 00013513 00013519 00013525 00013531 00013537 00013543 00013549 00013555 00013561 00013566 00013573 00013578 OBSOLETE SST
2 | 00013614 | 00013585 00013591 00013596 00013602 OBSOLETE SST
| | 00013189 00013195 00013200 00013210 00013221 00013227 00013233 00013239 00013245 00013251 00013257 00013263 00013269 00013275 00013281 SST DELETED
| | 00013287 00013293 00013299 00013305 00013311 00013317 00013323 00013328 00013338 00013349 00013359 00013364 00013371 00013377 00013387 SST DELETED
| | 00013393 00013399 00013404 00013415 00013420 00013426 00013433 00013438 00013444 00013451 00013457 00013462 00013473 00013479 00013485 SST DELETED
| | 00013490 00013501 00013507 00013513 00013519 00013525 00013531 00013537 00013543 00013549 00013555 00013561 00013566 00013573 00013578 SST DELETED
| | 00013585 00013591 00013596 00013602 SST DELETED
| | 00013193 00013199 00013208 00013217 00013225 00013231 00013237 00013243 00013249 00013255 00013261 00013267 00013273 00013279 00013285 META DELETED
| | 00013291 00013297 00013303 00013309 00013315 00013321 00013327 00013335 00013346 00013355 00013363 00013368 00013375 00013383 00013391 META DELETED
| | 00013397 00013403 00013413 00013419 00013425 00013431 00013437 00013443 00013449 00013455 00013461 00013471 00013477 00013482 00013489 META DELETED
| | 00013498 00013505 00013511 00013517 00013522 00013529 00013534 00013541 00013547 00013553 00013559 00013565 00013571 00013577 00013583 META DELETED
| | 00013589 00013595 00013601 00013611 META DELETED
Time 2026-03-05T09:45:04.2738421Z
Commit 00013625 1904 keys in 10ms 729µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013621 | 00013618 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00013622 | 00013620 SST | [====================================================================================] | 02cea76613175246-ddcd9a48d7354f8a (0 MiB, fresh)
3 | 00013623 | 00013619 SST | [=============================================================================] | 1053e97e66b456e8-d8133ee902cc8c89 (0 MiB, fresh)
2 | 00013624 | 00013616 SST | [==================================================================================================] | 0051cad80c47e3ca-fff3b56bbe0e6b22 (2 MiB, fresh)
1 | 00013625 | 00013617 SST | [==================================================================================================] | 0051cad80c47e3ca-fff3b56bbe0e6b22 (0 MiB, fresh)
Time 2026-03-05T09:45:22.6919165Z
Commit 00013631 4 keys in 7ms 467µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013629 | 00013628 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013630 | 00013626 SST | O | 801410113b08be83-801410113b08be83 (0 MiB, fresh)
2 | 00013631 | 00013627 SST | O | 801410113b08be83-801410113b08be83 (0 MiB, fresh)
Time 2026-03-05T09:45:38.0730767Z
Commit 00013637 81 keys in 6ms 305µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013635 | 00013634 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013636 | 00013633 SST | [==============================================================================================] | 040dc7eeb774bec4-f5d5f2d6bd5d47cb (0 MiB, fresh)
2 | 00013637 | 00013632 SST | [==============================================================================================] | 040dc7eeb774bec4-f5d5f2d6bd5d47cb (0 MiB, fresh)
Time 2026-03-05T09:45:43.2260573Z
Commit 00013647 2146 keys in 9ms 217µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013643 | 00013640 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00013644 | 00013642 SST | [==================================================================================================] | 006fbb6ec017bf69-ff2f104f8736cc76 (0 MiB, fresh)
3 | 00013645 | 00013641 SST | [==================================================================================================] | 00722fe17a68306b-fffaa2b20140affd (0 MiB, fresh)
2 | 00013646 | 00013638 SST | [==================================================================================================] | 001159b6a37810de-ffb36b555eaa2e36 (2 MiB, fresh)
1 | 00013647 | 00013639 SST | [==================================================================================================] | 001159b6a37810de-fff88b53b5ad4b9a (0 MiB, fresh)
Time 2026-03-05T09:45:49.5803448Z
Commit 00013653 2390 keys in 8ms 273µs 200ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013651 | 00013650 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00013652 | 00013648 SST | [==================================================================================================] | 015aa7af8c46be57-ff1373558b528b52 (0 MiB, fresh)
1 | 00013653 | 00013649 SST | [==================================================================================================] | 0013a9e4f34335e5-fff187cd7cce0e80 (1 MiB, fresh)
Time 2026-03-05T09:45:51.864302Z
Commit 00013663 681 keys in 11ms 141µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013659 | 00013656 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013660 | 00013654 SST | [==================================================================================================] | 01e217d129c5cd8b-ffd2128295feedf0 (0 MiB, fresh)
2 | 00013661 | 00013655 SST | [==================================================================================================] | 0205db9f6b04596e-ff1763b6f45cd288 (0 MiB, fresh)
3 | 00013662 | 00013657 SST | [=============================================================================] | 0a12f0dc4d221852-d125bd8c7ccdb585 (0 MiB, fresh)
4 | 00013663 | 00013658 SST | [==========================================================] | 2559e4611f5c0172-bd0c62044625aa6c (0 MiB, fresh)
Time 2026-03-05T09:46:36.3307863Z
Commit 00013673 198 keys in 10ms 222µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013669 | 00013666 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00013670 | 00013664 SST | [==================================================================================================] | 0234350df6afdb76-ffd95e498f1850a5 (0 MiB, fresh)
1 | 00013671 | 00013665 SST | [==================================================================================================] | 0234350df6afdb76-ffd95e498f1850a5 (0 MiB, fresh)
4 | 00013672 | 00013667 SST | [===================================================] | 03b6a334a1ed1265-87fe61d16c4e336a (0 MiB, fresh)
3 | 00013673 | 00013668 SST | [====================================================================] | 379ed994a6f89a0e-e8e89e1b79c84a13 (0 MiB, fresh)
Time 2026-03-05T09:47:18.7149438Z
Commit 00013679 77 keys in 7ms 369µs 500ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013677 | 00013676 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00013678 | 00013675 SST | [=================================================================================================] | 024fd2c66c04979c-fbb97280b2255708 (0 MiB, fresh)
1 | 00013679 | 00013674 SST | [=================================================================================================] | 024fd2c66c04979c-fbb97280b2255708 (0 MiB, fresh)
Time 2026-03-05T09:47:38.9509265Z
Commit 00013685 78 keys in 7ms 841µs 600ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013683 | 00013682 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013684 | 00013680 SST | [=============================================================================================] | 0302206520c18bf0-f366a041d02d9210 (0 MiB, fresh)
2 | 00013685 | 00013681 SST | [=============================================================================================] | 0302206520c18bf0-f366a041d02d9210 (0 MiB, fresh)
Time 2026-03-05T09:51:11.5129028Z
Commit 00013695 5718 keys in 11ms 538µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013691 | 00013688 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
4 | 00013692 | 00013690 SST | [==================================================================================================] | 014468475edc4608-ff789f220176697f (0 MiB, fresh)
3 | 00013693 | 00013689 SST | [==================================================================================================] | 00138ab5334ca35e-fffe1a2d422e4868 (0 MiB, fresh)
2 | 00013694 | 00013686 SST | [==================================================================================================] | 00457a46f5c1adcf-fff068465974022c (3 MiB, fresh)
1 | 00013695 | 00013687 SST | [==================================================================================================] | 00457a46f5c1adcf-fff068465974022c (1 MiB, fresh)
Time 2026-03-05T09:51:17.0554241Z
Commit 00013701 4 keys in 8ms 153µs 700ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013699 | 00013698 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013700 | 00013696 SST | O | 801410113b08be83-801410113b08be83 (0 MiB, fresh)
2 | 00013701 | 00013697 SST | O | 801410113b08be83-801410113b08be83 (0 MiB, fresh)
Time 2026-03-05T09:51:20.21688Z
Commit 00013707 59 keys in 7ms 408µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00013705 | 00013704 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013706 | 00013703 SST | [============================================================================================] | 0cf8b834dd50cb16-fcf23e4059cdfb0b (0 MiB, fresh)
2 | 00013707 | 00013702 SST | [============================================================================================] | 0e53f9aa3f2e5fa6-fcf23e4059cdfb0b (0 MiB, fresh)
Time 2026-03-05T09:51:26.6173918Z
Commit 00013717 242 keys in 11ms 469µs
FAM | META SEQ | SST SEQ | RANGE
0 | 00013713 | 00013710 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00013714 | 00013709 SST | [==================================================================================================] | 024a51d48220e7dd-fff068465974022c (0 MiB, fresh)
3 | 00013715 | 00013711 SST | [=] | 094aadbbd0c62e5e-0e452ca0afd31391 (0 MiB, fresh)
1 | 00013716 | 00013708 SST | [==================================================================================================] | 024a51d48220e7dd-fff068465974022c (0 MiB, fresh)
4 | 00013717 | 00013712 SST | [=======] | 6351cf276af0408c-776c88e811462325 (0 MiB, fresh)
Time 2026-03-05T09:53:31.4657146Z
Commit 00013723 188 keys in 6ms 995µs 800ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013721 | 00013720 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
1 | 00013722 | 00013718 SST | [=================================================================================================] | 040dc7eeb774bec4-fede697cf988e470 (0 MiB, fresh)
2 | 00013723 | 00013719 SST | [=============================================================================================] | 06945e35a566c40d-f5d5f2d6bd5d47cb (0 MiB, fresh)
Time 2026-03-05T09:54:08.9292929Z
Commit 00013729 56 keys in 7ms 280µs 100ns
FAM | META SEQ | SST SEQ | RANGE
0 | 00013727 | 00013726 SST | [=======================================================================] | 3aefa6fd5cf2deb4-f42f94001fcb5351 (0 MiB, fresh)
2 | 00013728 | 00013724 SST | [=================================================================================================] | 024fd2c66c04979c-fbb97280b2255708 (0 MiB, fresh)
1 | 00013729 | 00013725 SST | [=================================================================================================] | 024fd2c66c04979c-fbb97280b2255708 (0 MiB, fresh)

View File

@@ -4,8 +4,8 @@
"dynamicRoutes": {}, "dynamicRoutes": {},
"notFoundRoutes": [], "notFoundRoutes": [],
"preview": { "preview": {
"previewModeId": "196862b1bfff2ba012281ebc734bd07b", "previewModeId": "81c5b99488ca3ef406c0ad8b4a86d3ca",
"previewModeSigningKey": "3745933161423febbc580e5730495b53049213e7a37a27fdeb1d4a5c7215d2d3", "previewModeSigningKey": "5c3f99d29cba2cf6c1d0b5f06b0c3bcb717bd8a4cabfcfa05667c35a362a414f",
"previewModeEncryptionKey": "58cb94e204a1d02b3f8a529ba81bba219c2cfe8d0b7b36eff707ff947755d2d5" "previewModeEncryptionKey": "b589b6ec1c70eaeb79d83dbfbb549733febd58291914ffc41c9e19c4d4f59510"
} }
} }

View File

@@ -1,13 +1,13 @@
{ {
"/api/auth/[...nextauth]/route": "app/api/auth/[...nextauth]/route.js", "/api/auth/[...nextauth]/route": "app/api/auth/[...nextauth]/route.js",
"/api/chapters/[id]/route": "app/api/chapters/[id]/route.js",
"/api/projects/[id]/route": "app/api/projects/[id]/route.js", "/api/projects/[id]/route": "app/api/projects/[id]/route.js",
"/api/projects/route": "app/api/projects/route.js", "/api/projects/route": "app/api/projects/route.js",
"/api/user/profile/route": "app/api/user/profile/route.js", "/api/user/profile/route": "app/api/user/profile/route.js",
"/dashboard/page": "app/dashboard/page.js", "/dashboard/page": "app/dashboard/page.js",
"/login/page": "app/login/page.js", "/login/page": "app/login/page.js",
"/project/[id]/ideas/page": "app/project/[id]/ideas/page.js", "/profile/page": "app/profile/page.js",
"/project/[id]/page": "app/project/[id]/page.js", "/project/[id]/page": "app/project/[id]/page.js",
"/project/[id]/settings/page": "app/project/[id]/settings/page.js", "/project/[id]/settings/page": "app/project/[id]/settings/page.js",
"/project/[id]/workflow/page": "app/project/[id]/workflow/page.js",
"/project/[id]/world/page": "app/project/[id]/world/page.js" "/project/[id]/world/page": "app/project/[id]/world/page.js"
} }

View File

@@ -1,10 +1,9 @@
var R=require("../../../../chunks/[turbopack]_runtime.js")("server/app/api/chapters/[id]/route.js") var R=require("../../../../chunks/[turbopack]_runtime.js")("server/app/api/chapters/[id]/route.js")
R.c("server/chunks/Documents_00 - projet_plumeia_src_lib_prisma_ts_d7a1a866._.js") R.c("server/chunks/549ce_next_d909a8c3._.js")
R.c("server/chunks/549ce_next_dcda18ca._.js")
R.c("server/chunks/549ce_@auth_core_cb936014._.js") R.c("server/chunks/549ce_@auth_core_cb936014._.js")
R.c("server/chunks/549ce_jose_dist_webapi_61916537._.js") R.c("server/chunks/549ce_jose_dist_webapi_61916537._.js")
R.c("server/chunks/[root-of-the-server]__40bf2c68._.js") R.c("server/chunks/[root-of-the-server]__b06aea5c._.js")
R.c("server/chunks/[root-of-the-server]__27e12fd5._.js") R.c("server/chunks/[root-of-the-server]__94fb2294._.js")
R.c("server/chunks/b79dd_plumeia__next-internal_server_app_api_chapters_[id]_route_actions_62885031.js") R.c("server/chunks/b79dd_plumeia__next-internal_server_app_api_chapters_[id]_route_actions_62885031.js")
R.m("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/build/templates/app-route.js { INNER_APP_ROUTE => \"[project]/Documents/00 - projet/plumeia/src/app/api/chapters/[id]/route.ts [app-route] (ecmascript)\" } [app-route] (ecmascript)") R.m("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/build/templates/app-route.js { INNER_APP_ROUTE => \"[project]/Documents/00 - projet/plumeia/src/app/api/chapters/[id]/route.ts [app-route] (ecmascript)\" } [app-route] (ecmascript)")
module.exports=R.m("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/build/templates/app-route.js { INNER_APP_ROUTE => \"[project]/Documents/00 - projet/plumeia/src/app/api/chapters/[id]/route.ts [app-route] (ecmascript)\" } [app-route] (ecmascript)").exports module.exports=R.m("[project]/Documents/00 - projet/plumeia/node_modules/next/dist/esm/build/templates/app-route.js { INNER_APP_ROUTE => \"[project]/Documents/00 - projet/plumeia/src/app/api/chapters/[id]/route.ts [app-route] (ecmascript)\" } [app-route] (ecmascript)").exports

View File

@@ -4,7 +4,7 @@ R.c("server/chunks/ssr/[root-of-the-server]__715a440e._.js")
R.c("server/chunks/ssr/549ce_next_dist_a9a2f161._.js") R.c("server/chunks/ssr/549ce_next_dist_a9a2f161._.js")
R.c("server/chunks/ssr/[externals]__7f148858._.js") R.c("server/chunks/ssr/[externals]__7f148858._.js")
R.c("server/chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js") R.c("server/chunks/ssr/549ce_next_dist_client_components_builtin_global-error_316a03e7.js")
R.c("server/chunks/ssr/[root-of-the-server]__31132813._.js") R.c("server/chunks/ssr/[root-of-the-server]__f4e881ac._.js")
R.c("server/chunks/ssr/549ce_next_dist_client_components_5ea51078._.js") R.c("server/chunks/ssr/549ce_next_dist_client_components_5ea51078._.js")
R.c("server/chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js") R.c("server/chunks/ssr/549ce_next_dist_client_components_builtin_forbidden_0318745e.js")
R.c("server/chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js") R.c("server/chunks/ssr/549ce_next_dist_client_components_builtin_unauthorized_5a2cd2c8.js")

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

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$ssr$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-ssr] (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$copy$2e$js__$5b$app$2d$ssr$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-ssr] (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$ssr$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-ssr] (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$wand$2d$sparkles$2e$js__$5b$app$2d$ssr$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-ssr] (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$ssr$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-ssr] (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$2e$js__$5b$app$2d$ssr$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-ssr] (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$ssr$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-ssr] (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$ssr$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-ssr] (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$refresh$2d$cw$2e$js__$5b$app$2d$ssr$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-ssr] (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$ssr$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-ssr] (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$maximize$2d$2$2e$js__$5b$app$2d$ssr$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-ssr] (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$ssr$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-ssr] (ecmascript) <export default as Loader2>"); 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$ssr$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-ssr] (ecmascript) <export default as Loader2>");
@@ -33,12 +34,12 @@ var __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__proje
; ;
; ;
; ;
const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["forwardRef"])(({ initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref)=>{ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["forwardRef"])(({ editorId, initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref)=>{
const contentRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useRef"])(null); const contentRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useState"])(false); 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useState"])(false);
// Auto-Save State // 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useRef"])(null); const saveTimeoutRef = (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useRef"])(null);
// Track sync state to avoid autosave loopbacks wiping current edits // Track sync state to avoid autosave loopbacks wiping current edits
// Start as null so the initial useEffect ALWAYS writes initialContent to the div // Start as null so the initial useEffect ALWAYS writes initialContent to the div
@@ -151,27 +152,43 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
// --- Effects --- // --- Effects ---
(0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useEffect"])(()=>{ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useEffect"])(()=>{
if (!contentRef.current || initialContent === undefined) return; if (!contentRef.current || initialContent === undefined) return;
// Ignore exact loopbacks from our own saves let contentToLoad = initialContent;
if (initialContent === syncRef.current) return; let hasLocalDraft = false;
// Safety: never overwrite real content with an empty string from a stale/placeholder source // Check localStorage for a newer draft
const hasRealContent = latestContentRef.current && latestContentRef.current.trim().length > 0; if (editorId) {
if (!initialContent && hasRealContent) return; const localDraft = localStorage.getItem(`draft_${editorId}`);
// We reached here, so initialContent is genuinely NEW data we didn't know about. if (localDraft && localDraft !== initialContent) {
// E.g. clicked another chapter, or data was modified in another tab/device. contentToLoad = localDraft;
contentRef.current.innerHTML = initialContent; hasLocalDraft = true;
syncRef.current = initialContent; setSaveStatus('saved_local');
latestContentRef.current = initialContent; }
}
// 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;
}
}, [ }, [
initialContent initialContent,
editorId
]); ]);
// Flush pending save on unmount // 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useEffect"])(()=>{ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["useEffect"])(()=>{
return ()=>{ return ()=>{
if (saveTimeoutRef.current) { if (saveTimeoutRef.current) {
clearTimeout(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);
} }
}; };
}, [ }, [
@@ -188,16 +205,34 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
const currentHtml = contentRef.current.innerHTML; const currentHtml = contentRef.current.innerHTML;
latestContentRef.current = currentHtml; latestContentRef.current = currentHtml;
if (onChange) onChange(currentHtml); if (onChange) onChange(currentHtml);
// Auto-Save Debounce // 1. Save locally immediately
if (onSave) { if (editorId) {
localStorage.setItem(`draft_${editorId}`, currentHtml);
setSaveStatus('saved_local');
} else {
setSaveStatus('unsaved'); setSaveStatus('unsaved');
}
// 2. Auto-Save Debounce for DB
if (onSave) {
if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current); if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);
saveTimeoutRef.current = setTimeout(async ()=>{ saveTimeoutRef.current = setTimeout(async ()=>{
setSaveStatus('saving'); setSaveStatus('saving');
const htmlToSave = latestContentRef.current; const htmlToSave = latestContentRef.current;
// 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); await onSave(htmlToSave);
syncRef.current = htmlToSave; // Record that we've synced this exact string to the server setSaveStatus('saved_db');
setSaveStatus('saved'); 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 }, 2000); // 2 seconds
} }
} }
@@ -305,12 +340,12 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 18 size: 18
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 340, lineNumber: 377,
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 327, lineNumber: 364,
columnNumber: 5 columnNumber: 5
}, ("TURBOPACK compile-time value", void 0)); }, ("TURBOPACK compile-time value", void 0));
const hasSelection = savedRange.current && !savedRange.current.collapsed; const hasSelection = savedRange.current && !savedRange.current.collapsed;
@@ -328,7 +363,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
` `
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 348, lineNumber: 385,
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -340,7 +375,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
label: "Gras" label: "Gras"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 359, lineNumber: 396,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -349,7 +384,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
label: "Italique" label: "Italique"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 360, lineNumber: 397,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -358,14 +393,14 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
label: "Souligné" label: "Souligné"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 361, lineNumber: 398,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "w-px h-6 bg-slate-300 mx-1" className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 362, lineNumber: 399,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -375,7 +410,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
label: "Titre 1" label: "Titre 1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 363, lineNumber: 400,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -385,14 +420,14 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
label: "Titre 2" label: "Titre 2"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 364, lineNumber: 401,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "w-px h-6 bg-slate-300 mx-1" className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 365, lineNumber: 402,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -401,7 +436,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
label: "Aligner à gauche" label: "Aligner à gauche"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 366, lineNumber: 403,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -410,7 +445,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
label: "Centrer" label: "Centrer"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 367, lineNumber: 404,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -419,14 +454,14 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
label: "Aligner à droite" label: "Aligner à droite"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 368, lineNumber: 405,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "w-px h-6 bg-slate-300 mx-1" className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 369, lineNumber: 406,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -435,14 +470,14 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
label: "Liste" label: "Liste"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 370, lineNumber: 407,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "flex-1" className: "flex-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 372, lineNumber: 409,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -452,47 +487,84 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Loader2$3e$__["Loader2"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Loader2$3e$__["Loader2"], {
size: 12, size: 12,
className: "animate-spin" className: "animate-spin text-blue-500"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 376, lineNumber: 413,
columnNumber: 41 columnNumber: 41
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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), }, 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Fragment"], {
children: [ children: [
/*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__Check$3e$__["Check"], {
size: 12, size: 14,
className: "text-green-500" className: "text-green-500"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 377, lineNumber: 414,
columnNumber: 40 columnNumber: 46
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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), }, 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
className: "text-amber-500", className: "text-amber-500",
children: "Modifications non enregistrées..." children: "Non sauvegardé..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 378, lineNumber: 416,
columnNumber: 40 columnNumber: 40
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 375, lineNumber: 412,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "w-px h-6 bg-slate-300 mx-1" className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 381, lineNumber: 419,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])(ToolbarButton, {
@@ -502,13 +574,13 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
isActive: showHistoryMargin isActive: showHistoryMargin
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 382, lineNumber: 420,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 358, lineNumber: 395,
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -538,7 +610,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
"data-placeholder": "Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)" "data-placeholder": "Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 398, lineNumber: 436,
columnNumber: 11 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { showHistoryMargin && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -552,7 +624,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
className: "mx-auto mb-2 opacity-20" className: "mx-auto mb-2 opacity-20"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 422, lineNumber: 460,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("p", {
@@ -560,13 +632,13 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
children: "L'historique des modifications IA apparaîtra ici, aligné avec votre texte." children: "L'historique des modifications IA apparaîtra ici, aligné avec votre texte."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 423, lineNumber: 461,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 421, lineNumber: 459,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
versionGroups.map((group)=>{ versionGroups.map((group)=>{
@@ -585,7 +657,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
className: "absolute inset-0 bg-white border border-indigo-100 rounded-lg transform -translate-x-1 -translate-y-1 -z-10 shadow-sm" 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, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 443, lineNumber: 481,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -600,7 +672,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
className: "text-indigo-500" className: "text-indigo-500"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 453, lineNumber: 491,
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
@@ -608,13 +680,13 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
children: latest.type children: latest.type
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 455, lineNumber: 493,
columnNumber: 27 columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 451, lineNumber: 489,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -628,7 +700,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
}) })
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 463, lineNumber: 501,
columnNumber: 27 columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronUp$3e$__["ChevronUp"], { 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronUp$3e$__["ChevronUp"], {
@@ -636,26 +708,26 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
className: "text-slate-400" className: "text-slate-400"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 467, lineNumber: 505,
columnNumber: 42 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronDown$3e$__["ChevronDown"], { }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__$3c$export__default__as__ChevronDown$3e$__["ChevronDown"], {
size: 14, size: 14,
className: "text-slate-400" className: "text-slate-400"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 467, lineNumber: 505,
columnNumber: 95 columnNumber: 95
}, ("TURBOPACK compile-time value", void 0))) }, ("TURBOPACK compile-time value", void 0)))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 462, lineNumber: 500,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 447, lineNumber: 485,
columnNumber: 23 columnNumber: 23
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { !isExpanded && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -670,7 +742,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 475, lineNumber: 513,
columnNumber: 27 columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -681,20 +753,20 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 10 size: 10
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 482, lineNumber: 520,
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Restaurer" " Restaurer"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 478, lineNumber: 516,
columnNumber: 27 columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 474, lineNumber: 512,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { isExpanded && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -710,7 +782,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
children: i === 0 ? 'Dernière version' : `Version -${i}` children: i === 0 ? 'Dernière version' : `Version -${i}`
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 493, lineNumber: 531,
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
@@ -722,13 +794,13 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
}) })
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 496, lineNumber: 534,
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 492, lineNumber: 530,
columnNumber: 31 columnNumber: 31
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -740,7 +812,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 500, lineNumber: 538,
columnNumber: 31 columnNumber: 31
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -751,54 +823,54 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 10 size: 10
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 507, lineNumber: 545,
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Restaurer cette version" " Restaurer cette version"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 503, lineNumber: 541,
columnNumber: 31 columnNumber: 31
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, v.id, true, { }, v.id, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 491, lineNumber: 529,
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0))) }, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 489, lineNumber: 527,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 439, lineNumber: 477,
columnNumber: 21 columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, group.id, false, { }, group.id, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 434, lineNumber: 472,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)); }, ("TURBOPACK compile-time value", void 0));
}) })
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 418, lineNumber: 456,
columnNumber: 13 columnNumber: 13
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 395, lineNumber: 433,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 391, lineNumber: 429,
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Fragment"], { contextMenu && /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Fragment"], {
@@ -812,7 +884,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
} }
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 525, lineNumber: 563,
columnNumber: 11 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -829,7 +901,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 24 size: 24
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 536, lineNumber: 574,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("span", {
@@ -837,13 +909,13 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
children: "L'IA travaille..." children: "L'IA travaille..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 537, lineNumber: 575,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 535, lineNumber: 573,
columnNumber: 15 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Fragment"], { }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["Fragment"], {
children: [ children: [
@@ -852,7 +924,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
children: "Outils IA" children: "Outils IA"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 541, lineNumber: 579,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -864,14 +936,14 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 14 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 550, lineNumber: 588,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Corriger l'orthographe" " Corriger l'orthographe"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 545, lineNumber: 583,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -883,14 +955,14 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 14 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 558, lineNumber: 596,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Reformuler" " Reformuler"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 553, lineNumber: 591,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -902,14 +974,14 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 14 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 566, lineNumber: 604,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Développer" " Développer"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 561, lineNumber: 599,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -920,21 +992,21 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 14 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 573, lineNumber: 611,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Continuer l'écriture" " Continuer l'écriture"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 569, lineNumber: 607,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
className: "h-px bg-slate-100 my-1" className: "h-px bg-slate-100 my-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 576, lineNumber: 614,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("div", {
@@ -942,7 +1014,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
children: "Édition" children: "Édition"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 578, lineNumber: 616,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -954,14 +1026,14 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 14 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 587, lineNumber: 625,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Copier" " Copier"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 582, lineNumber: 620,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", { /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$5d$__$28$ecmascript$29$__["jsxDEV"])("button", {
@@ -972,21 +1044,21 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
size: 14 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 594, lineNumber: 632,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Tout sélectionner" " Tout sélectionner"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 590, lineNumber: 628,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true) }, void 0, true)
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 530, lineNumber: 568,
columnNumber: 11 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
@@ -994,7 +1066,7 @@ const RichTextEditor = /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$proj
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 347, lineNumber: 384,
columnNumber: 5 columnNumber: 5
}, ("TURBOPACK compile-time value", void 0)); }, ("TURBOPACK compile-time value", void 0));
}); });
@@ -1025,6 +1097,7 @@ function WritePage() {
const currentChapter = project.chapters?.find((c)=>c.id === currentChapterId); 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$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__["default"], { return /*#__PURE__*/ (0, __TURBOPACK__imported__module__$5b$project$5d2f$Documents$2f$00__$2d$__projet$2f$plumeia$2f$node_modules$2f$next$2f$dist$2f$server$2f$route$2d$modules$2f$app$2d$page$2f$vendored$2f$ssr$2f$react$2d$jsx$2d$dev$2d$runtime$2e$js__$5b$app$2d$ssr$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$ssr$5d$__$28$ecmascript$29$__["default"], {
ref: editorRef, ref: editorRef,
editorId: currentChapterId,
initialContent: currentChapter?.content || '', initialContent: currentChapter?.content || '',
onSave: (html)=>updateChapter(currentChapterId, { onSave: (html)=>updateChapter(currentChapterId, {
content: html content: html

File diff suppressed because one or more lines are too long

View File

@@ -1 +1 @@
self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/login/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}" self.__NEXT_FONT_MANIFEST="{\n \"app\": {\n \"[project]/Documents/00 - projet/plumeia/src/app/dashboard/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/login/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/profile/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/settings/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ],\n \"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page\": [\n \"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2\",\n \"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2\"\n ]\n },\n \"appUsingSizeAdjust\": true,\n \"pages\": {},\n \"pagesUsingSizeAdjust\": false\n}"

View File

@@ -8,7 +8,7 @@
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2", "static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2" "static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
], ],
"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/ideas/page": [ "[project]/Documents/00 - projet/plumeia/src/app/profile/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2", "static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2" "static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
], ],
@@ -20,10 +20,6 @@
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2", "static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2" "static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
], ],
"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/workflow/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"
],
"[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page": [ "[project]/Documents/00 - projet/plumeia/src/app/project/[id]/world/page": [
"static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2", "static/media/83afe278b6a6bb3c-s.p.3a6ba036.woff2",
"static/media/248e1dc0efc99276-s.p.8a6b2436.woff2" "static/media/248e1dc0efc99276-s.p.8a6b2436.woff2"

View File

@@ -104,6 +104,7 @@
--color-green-500: #00c758; --color-green-500: #00c758;
--color-green-700: #008138; --color-green-700: #008138;
--color-green-800: #016630; --color-green-800: #016630;
--color-emerald-600: #009767;
--color-blue-50: #eff6ff; --color-blue-50: #eff6ff;
--color-blue-100: #dbeafe; --color-blue-100: #dbeafe;
--color-blue-200: #bedbff; --color-blue-200: #bedbff;
@@ -126,8 +127,10 @@
--color-indigo-900: #312c85; --color-indigo-900: #312c85;
--color-purple-100: #f3e8ff; --color-purple-100: #f3e8ff;
--color-purple-200: #e9d5ff; --color-purple-200: #e9d5ff;
--color-purple-500: #ac4bff;
--color-purple-600: #9810fa; --color-purple-600: #9810fa;
--color-purple-700: #8200da; --color-purple-700: #8200da;
--color-pink-500: #f6339a;
--color-rose-100: #ffe4e6; --color-rose-100: #ffe4e6;
--color-rose-200: #ffccd3; --color-rose-200: #ffccd3;
--color-rose-800: #a30037; --color-rose-800: #a30037;
@@ -243,6 +246,7 @@
--color-green-500: lab(70.5521% -66.5147 45.8072); --color-green-500: lab(70.5521% -66.5147 45.8072);
--color-green-700: lab(47.0329% -47.0239 31.4788); --color-green-700: lab(47.0329% -47.0239 31.4788);
--color-green-800: lab(37.4616% -36.7971 22.9692); --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-50: lab(96.492% -1.14647 -5.11479);
--color-blue-100: lab(92.0301% -2.24757 -11.6453); --color-blue-100: lab(92.0301% -2.24757 -11.6453);
--color-blue-200: lab(86.15% -4.04379 -21.0797); --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-indigo-900: lab(23.3911% 24.6978 -50.4719);
--color-purple-100: lab(93.3333% 6.9744 -9.83434); --color-purple-100: lab(93.3333% 6.9744 -9.83434);
--color-purple-200: lab(87.8405% 13.4282 -18.7159); --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-600: lab(43.0295% 75.21 -86.5669);
--color-purple-700: lab(36.1758% 69.8525 -80.0381); --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-100: lab(92.8221% 9.86832 2.60077);
--color-rose-200: lab(86.806% 19.1909 4.07754); --color-rose-200: lab(86.806% 19.1909 4.07754);
--color-rose-800: lab(34.6481% 60.802 20.1957); --color-rose-800: lab(34.6481% 60.802 20.1957);
@@ -644,6 +650,10 @@
right: calc(var(--spacing) * 4); right: calc(var(--spacing) * 4);
} }
.right-6 {
right: calc(var(--spacing) * 6);
}
.right-10 { .right-10 {
right: calc(var(--spacing) * 10); right: calc(var(--spacing) * 10);
} }
@@ -664,6 +674,10 @@
bottom: calc(var(--spacing) * 2); bottom: calc(var(--spacing) * 2);
} }
.bottom-6 {
bottom: calc(var(--spacing) * 6);
}
.bottom-10 { .bottom-10 {
bottom: calc(var(--spacing) * 10); bottom: calc(var(--spacing) * 10);
} }
@@ -680,6 +694,10 @@
left: calc(var(--spacing) * 0); left: calc(var(--spacing) * 0);
} }
.left-2 {
left: calc(var(--spacing) * 2);
}
.left-3 { .left-3 {
left: calc(var(--spacing) * 3); left: calc(var(--spacing) * 3);
} }
@@ -1316,10 +1334,6 @@
grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-columns: repeat(2, minmax(0, 1fr));
} }
.grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-cols-4 { .grid-cols-4 {
grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-columns: repeat(4, minmax(0, 1fr));
} }
@@ -1589,6 +1603,11 @@
border-style: dashed; border-style: dashed;
} }
.border-none {
--tw-border-style: none;
border-style: none;
}
.border-\[\#dfcdae\] { .border-\[\#dfcdae\] {
border-color: #dfcdae; border-color: #dfcdae;
} }
@@ -1709,6 +1728,14 @@
border-color: var(--color-theme-border); 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-transparent {
border-color: #0000; border-color: #0000;
} }
@@ -1987,6 +2014,10 @@
background-color: var(--color-theme-panel); background-color: var(--color-theme-panel);
} }
.bg-theme-text {
background-color: var(--color-theme-text);
}
.bg-transparent { .bg-transparent {
background-color: #0000; background-color: #0000;
} }
@@ -2045,6 +2076,11 @@
background-image: linear-gradient(var(--tw-gradient-stops)); 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 { .from-blue-500 {
--tw-gradient-from: var(--color-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)); --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)); --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 { .from-red-200 {
--tw-gradient-from: var(--color-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)); --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); --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 { .via-yellow-100 {
--tw-gradient-via: var(--color-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); --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); color: var(--color-blue-900);
} }
.text-emerald-600 {
color: var(--color-emerald-600);
}
.text-gray-800 { .text-gray-800 {
color: var(--color-gray-800); color: var(--color-gray-800);
} }
@@ -2668,6 +2719,10 @@
color: var(--color-slate-900); color: var(--color-slate-900);
} }
.text-theme-bg {
color: var(--color-theme-bg);
}
.text-theme-editor-text { .text-theme-editor-text {
color: var(--color-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); 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 { .shadow-blue-200 {
--tw-shadow-color: #bedbff; --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 { .ring-amber-200 {
--tw-ring-color: var(--color-amber-200); --tw-ring-color: var(--color-amber-200);
} }
@@ -3033,6 +3140,13 @@
background-color: var(--color-blue-200); 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) { @media (hover: hover) {
.hover\:scale-105:hover { .hover\:scale-105:hover {
--tw-scale-x: 105%; --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) { @media (hover: hover) {
.hover\:border-slate-200:hover { .hover\:border-slate-200:hover {
border-color: var(--color-slate-200); 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) { @media (hover: hover) {
.hover\:bg-\[\#eaddc4\]:hover { .hover\:bg-\[\#eaddc4\]:hover {
background-color: #eaddc4; background-color: #eaddc4;
@@ -3141,12 +3273,6 @@
} }
} }
@media (hover: hover) {
.hover\:bg-blue-500:hover {
background-color: var(--color-blue-500);
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-blue-500\/10:hover { .hover\:bg-blue-500\/10:hover {
background-color: #3080ff1a; 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$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$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$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$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$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>"); 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'; '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(); _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 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 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); 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 // 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); 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 // Track sync state to avoid autosave loopbacks wiping current edits
// Start as null so the initial useEffect ALWAYS writes initialContent to the div // 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"])({ (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": ()=>{ "RichTextEditor.useEffect": ()=>{
if (!contentRef.current || initialContent === undefined) return; if (!contentRef.current || initialContent === undefined) return;
// Ignore exact loopbacks from our own saves let contentToLoad = initialContent;
if (initialContent === syncRef.current) return; let hasLocalDraft = false;
// Safety: never overwrite real content with an empty string from a stale/placeholder source // Check localStorage for a newer draft
const hasRealContent = latestContentRef.current && latestContentRef.current.trim().length > 0; if (editorId) {
if (!initialContent && hasRealContent) return; const localDraft = localStorage.getItem(`draft_${editorId}`);
// We reached here, so initialContent is genuinely NEW data we didn't know about. if (localDraft && localDraft !== initialContent) {
// E.g. clicked another chapter, or data was modified in another tab/device. contentToLoad = localDraft;
contentRef.current.innerHTML = initialContent; hasLocalDraft = true;
syncRef.current = initialContent; setSaveStatus('saved_local');
latestContentRef.current = initialContent; }
}
// 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"], [ }["RichTextEditor.useEffect"], [
initialContent initialContent,
editorId
]); ]);
// Flush pending save on unmount // 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"])({ (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": ()=>{ "RichTextEditor.useEffect": ()=>{
if (saveTimeoutRef.current) { if (saveTimeoutRef.current) {
clearTimeout(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"]; })["RichTextEditor.useEffect"];
@@ -210,16 +227,34 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
const currentHtml = contentRef.current.innerHTML; const currentHtml = contentRef.current.innerHTML;
latestContentRef.current = currentHtml; latestContentRef.current = currentHtml;
if (onChange) onChange(currentHtml); if (onChange) onChange(currentHtml);
// Auto-Save Debounce // 1. Save locally immediately
if (onSave) { if (editorId) {
localStorage.setItem(`draft_${editorId}`, currentHtml);
setSaveStatus('saved_local');
} else {
setSaveStatus('unsaved'); setSaveStatus('unsaved');
}
// 2. Auto-Save Debounce for DB
if (onSave) {
if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current); if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);
saveTimeoutRef.current = setTimeout(async ()=>{ saveTimeoutRef.current = setTimeout(async ()=>{
setSaveStatus('saving'); setSaveStatus('saving');
const htmlToSave = latestContentRef.current; const htmlToSave = latestContentRef.current;
// 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); await onSave(htmlToSave);
syncRef.current = htmlToSave; // Record that we've synced this exact string to the server setSaveStatus('saved_db');
setSaveStatus('saved'); 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 }, 2000); // 2 seconds
} }
} }
@@ -327,12 +362,12 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
size: 18 size: 18
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 340, lineNumber: 377,
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 327, lineNumber: 364,
columnNumber: 5 columnNumber: 5
}, ("TURBOPACK compile-time value", void 0)); }, ("TURBOPACK compile-time value", void 0));
const hasSelection = savedRange.current && !savedRange.current.collapsed; const hasSelection = savedRange.current && !savedRange.current.collapsed;
@@ -350,7 +385,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
` `
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 348, lineNumber: 385,
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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" label: "Gras"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 359, lineNumber: 396,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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, { /*#__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" label: "Italique"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 360, lineNumber: 397,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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, { /*#__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é" label: "Souligné"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 361, lineNumber: 398,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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" className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 362, lineNumber: 399,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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, { /*#__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" label: "Titre 1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 363, lineNumber: 400,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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, { /*#__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" label: "Titre 2"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 364, lineNumber: 401,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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" className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 365, lineNumber: 402,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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, { /*#__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" label: "Aligner à gauche"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 366, lineNumber: 403,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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, { /*#__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" label: "Centrer"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 367, lineNumber: 404,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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, { /*#__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" label: "Aligner à droite"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 368, lineNumber: 405,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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" className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 369, lineNumber: 406,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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, { /*#__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" label: "Liste"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 370, lineNumber: 407,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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" className: "flex-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 372, lineNumber: 409,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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: [ 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"], { /*#__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, size: 12,
className: "animate-spin" className: "animate-spin text-blue-500"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 376, lineNumber: 413,
columnNumber: 41 columnNumber: 41
}, ("TURBOPACK compile-time value", void 0)), }, ("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), }, 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: [ 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"], { /*#__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" className: "text-green-500"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 377, lineNumber: 414,
columnNumber: 40 columnNumber: 46
}, ("TURBOPACK compile-time value", void 0)), }, ("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), }, 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", { 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", className: "text-amber-500",
children: "Modifications non enregistrées..." children: "Non sauvegardé..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 378, lineNumber: 416,
columnNumber: 40 columnNumber: 40
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 375, lineNumber: 412,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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" className: "w-px h-6 bg-slate-300 mx-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 381, lineNumber: 419,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)), }, ("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, { /*#__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 isActive: showHistoryMargin
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 382, lineNumber: 420,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 358, lineNumber: 395,
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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)" "data-placeholder": "Commencez à écrire votre chef-d'œuvre... (Clic droit pour outils IA)"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 398, lineNumber: 436,
columnNumber: 11 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { 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" className: "mx-auto mb-2 opacity-20"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 422, lineNumber: 460,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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." children: "L'historique des modifications IA apparaîtra ici, aligné avec votre texte."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 423, lineNumber: 461,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 421, lineNumber: 459,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
versionGroups.map((group)=>{ 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" 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, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 443, lineNumber: 481,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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" className: "text-indigo-500"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 453, lineNumber: 491,
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 children: latest.type
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 455, lineNumber: 493,
columnNumber: 27 columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 451, lineNumber: 489,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 463, lineNumber: 501,
columnNumber: 27 columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)), }, ("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"], { 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" className: "text-slate-400"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 467, lineNumber: 505,
columnNumber: 42 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"], { }, ("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, size: 14,
className: "text-slate-400" className: "text-slate-400"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 467, lineNumber: 505,
columnNumber: 95 columnNumber: 95
}, ("TURBOPACK compile-time value", void 0))) }, ("TURBOPACK compile-time value", void 0)))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 462, lineNumber: 500,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 447, lineNumber: 485,
columnNumber: 23 columnNumber: 23
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { !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, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 475, lineNumber: 513,
columnNumber: 27 columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 size: 10
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 482, lineNumber: 520,
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Restaurer" " Restaurer"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 478, lineNumber: 516,
columnNumber: 27 columnNumber: 27
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 474, lineNumber: 512,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { 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}` children: i === 0 ? 'Dernière version' : `Version -${i}`
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 493, lineNumber: 531,
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 496, lineNumber: 534,
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 492, lineNumber: 530,
columnNumber: 31 columnNumber: 31
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 500, lineNumber: 538,
columnNumber: 31 columnNumber: 31
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 size: 10
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 507, lineNumber: 545,
columnNumber: 33 columnNumber: 33
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Restaurer cette version" " Restaurer cette version"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 503, lineNumber: 541,
columnNumber: 31 columnNumber: 31
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, v.id, true, { }, v.id, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 491, lineNumber: 529,
columnNumber: 29 columnNumber: 29
}, ("TURBOPACK compile-time value", void 0))) }, ("TURBOPACK compile-time value", void 0)))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 489, lineNumber: 527,
columnNumber: 25 columnNumber: 25
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 439, lineNumber: 477,
columnNumber: 21 columnNumber: 21
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, group.id, false, { }, group.id, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 434, lineNumber: 472,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)); }, ("TURBOPACK compile-time value", void 0));
}) })
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 418, lineNumber: 456,
columnNumber: 13 columnNumber: 13
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 395, lineNumber: 433,
columnNumber: 9 columnNumber: 9
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 391, lineNumber: 429,
columnNumber: 7 columnNumber: 7
}, ("TURBOPACK compile-time value", void 0)), }, ("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"], { 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, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 525, lineNumber: 563,
columnNumber: 11 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 size: 24
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 536, lineNumber: 574,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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..." children: "L'IA travaille..."
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 537, lineNumber: 575,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 535, lineNumber: 573,
columnNumber: 15 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"], { }, ("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: [ children: [
@@ -874,7 +946,7 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
children: "Outils IA" children: "Outils IA"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 541, lineNumber: 579,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 550, lineNumber: 588,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Corriger l'orthographe" " Corriger l'orthographe"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 545, lineNumber: 583,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 558, lineNumber: 596,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Reformuler" " Reformuler"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 553, lineNumber: 591,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 566, lineNumber: 604,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Développer" " Développer"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 561, lineNumber: 599,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 573, lineNumber: 611,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Continuer l'écriture" " Continuer l'écriture"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 569, lineNumber: 607,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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" className: "h-px bg-slate-100 my-1"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 576, lineNumber: 614,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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" children: "Édition"
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 578, lineNumber: 616,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 587, lineNumber: 625,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Copier" " Copier"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 582, lineNumber: 620,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)), }, ("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", { /*#__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 size: 14
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 594, lineNumber: 632,
columnNumber: 19 columnNumber: 19
}, ("TURBOPACK compile-time value", void 0)), }, ("TURBOPACK compile-time value", void 0)),
" Tout sélectionner" " Tout sélectionner"
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 590, lineNumber: 628,
columnNumber: 17 columnNumber: 17
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
}, void 0, true) }, void 0, true)
}, void 0, false, { }, void 0, false, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 530, lineNumber: 568,
columnNumber: 11 columnNumber: 11
}, ("TURBOPACK compile-time value", void 0)) }, ("TURBOPACK compile-time value", void 0))
] ]
@@ -1016,10 +1088,10 @@ const RichTextEditor = /*#__PURE__*/ _s((0, __TURBOPACK__imported__module__$5b$p
] ]
}, void 0, true, { }, void 0, true, {
fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx", fileName: "[project]/Documents/00 - projet/plumeia/src/components/RichTextEditor.tsx",
lineNumber: 347, lineNumber: 384,
columnNumber: 5 columnNumber: 5
}, ("TURBOPACK compile-time value", void 0)); }, ("TURBOPACK compile-time value", void 0));
}, "1keE8cf732OZ6jTNRl46BlQ/eZo=")), "1keE8cf732OZ6jTNRl46BlQ/eZo="); }, "cWpHoTw7wOYNa/FuW7N+8oRfoPQ=")), "cWpHoTw7wOYNa/FuW7N+8oRfoPQ=");
_c1 = RichTextEditor; _c1 = RichTextEditor;
const __TURBOPACK__default__export__ = RichTextEditor; const __TURBOPACK__default__export__ = RichTextEditor;
var _c, _c1; var _c, _c1;
@@ -1056,6 +1128,7 @@ function WritePage() {
const currentChapter = project.chapters?.find((c)=>c.id === currentChapterId); 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"], { 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, ref: editorRef,
editorId: currentChapterId,
initialContent: currentChapter?.content || '', initialContent: currentChapter?.content || '',
onSave: (html)=>updateChapter(currentChapterId, { onSave: (html)=>updateChapter(currentChapterId, {
content: html 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-500: #00c758;
--color-green-700: #008138; --color-green-700: #008138;
--color-green-800: #016630; --color-green-800: #016630;
--color-emerald-600: #009767;
--color-blue-50: #eff6ff; --color-blue-50: #eff6ff;
--color-blue-100: #dbeafe; --color-blue-100: #dbeafe;
--color-blue-200: #bedbff; --color-blue-200: #bedbff;
@@ -427,8 +428,10 @@
--color-indigo-900: #312c85; --color-indigo-900: #312c85;
--color-purple-100: #f3e8ff; --color-purple-100: #f3e8ff;
--color-purple-200: #e9d5ff; --color-purple-200: #e9d5ff;
--color-purple-500: #ac4bff;
--color-purple-600: #9810fa; --color-purple-600: #9810fa;
--color-purple-700: #8200da; --color-purple-700: #8200da;
--color-pink-500: #f6339a;
--color-rose-100: #ffe4e6; --color-rose-100: #ffe4e6;
--color-rose-200: #ffccd3; --color-rose-200: #ffccd3;
--color-rose-800: #a30037; --color-rose-800: #a30037;
@@ -544,6 +547,7 @@
--color-green-500: lab(70.5521% -66.5147 45.8072); --color-green-500: lab(70.5521% -66.5147 45.8072);
--color-green-700: lab(47.0329% -47.0239 31.4788); --color-green-700: lab(47.0329% -47.0239 31.4788);
--color-green-800: lab(37.4616% -36.7971 22.9692); --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-50: lab(96.492% -1.14647 -5.11479);
--color-blue-100: lab(92.0301% -2.24757 -11.6453); --color-blue-100: lab(92.0301% -2.24757 -11.6453);
--color-blue-200: lab(86.15% -4.04379 -21.0797); --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-indigo-900: lab(23.3911% 24.6978 -50.4719);
--color-purple-100: lab(93.3333% 6.9744 -9.83434); --color-purple-100: lab(93.3333% 6.9744 -9.83434);
--color-purple-200: lab(87.8405% 13.4282 -18.7159); --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-600: lab(43.0295% 75.21 -86.5669);
--color-purple-700: lab(36.1758% 69.8525 -80.0381); --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-100: lab(92.8221% 9.86832 2.60077);
--color-rose-200: lab(86.806% 19.1909 4.07754); --color-rose-200: lab(86.806% 19.1909 4.07754);
--color-rose-800: lab(34.6481% 60.802 20.1957); --color-rose-800: lab(34.6481% 60.802 20.1957);
@@ -945,6 +951,10 @@
right: calc(var(--spacing) * 4); right: calc(var(--spacing) * 4);
} }
.right-6 {
right: calc(var(--spacing) * 6);
}
.right-10 { .right-10 {
right: calc(var(--spacing) * 10); right: calc(var(--spacing) * 10);
} }
@@ -965,6 +975,10 @@
bottom: calc(var(--spacing) * 2); bottom: calc(var(--spacing) * 2);
} }
.bottom-6 {
bottom: calc(var(--spacing) * 6);
}
.bottom-10 { .bottom-10 {
bottom: calc(var(--spacing) * 10); bottom: calc(var(--spacing) * 10);
} }
@@ -981,6 +995,10 @@
left: calc(var(--spacing) * 0); left: calc(var(--spacing) * 0);
} }
.left-2 {
left: calc(var(--spacing) * 2);
}
.left-3 { .left-3 {
left: calc(var(--spacing) * 3); left: calc(var(--spacing) * 3);
} }
@@ -1617,10 +1635,6 @@
grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-columns: repeat(2, minmax(0, 1fr));
} }
.grid-cols-3 {
grid-template-columns: repeat(3, minmax(0, 1fr));
}
.grid-cols-4 { .grid-cols-4 {
grid-template-columns: repeat(4, minmax(0, 1fr)); grid-template-columns: repeat(4, minmax(0, 1fr));
} }
@@ -1890,6 +1904,11 @@
border-style: dashed; border-style: dashed;
} }
.border-none {
--tw-border-style: none;
border-style: none;
}
.border-\[\#dfcdae\] { .border-\[\#dfcdae\] {
border-color: #dfcdae; border-color: #dfcdae;
} }
@@ -2010,6 +2029,14 @@
border-color: var(--color-theme-border); 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-transparent {
border-color: #0000; border-color: #0000;
} }
@@ -2288,6 +2315,10 @@
background-color: var(--color-theme-panel); background-color: var(--color-theme-panel);
} }
.bg-theme-text {
background-color: var(--color-theme-text);
}
.bg-transparent { .bg-transparent {
background-color: #0000; background-color: #0000;
} }
@@ -2346,6 +2377,11 @@
background-image: linear-gradient(var(--tw-gradient-stops)); 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 { .from-blue-500 {
--tw-gradient-from: var(--color-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)); --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)); --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 { .from-red-200 {
--tw-gradient-from: var(--color-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)); --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); --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 { .via-yellow-100 {
--tw-gradient-via: var(--color-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); --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); color: var(--color-blue-900);
} }
.text-emerald-600 {
color: var(--color-emerald-600);
}
.text-gray-800 { .text-gray-800 {
color: var(--color-gray-800); color: var(--color-gray-800);
} }
@@ -2969,6 +3020,10 @@
color: var(--color-slate-900); color: var(--color-slate-900);
} }
.text-theme-bg {
color: var(--color-theme-bg);
}
.text-theme-editor-text { .text-theme-editor-text {
color: var(--color-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); 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 { .shadow-blue-200 {
--tw-shadow-color: #bedbff; --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 { .ring-amber-200 {
--tw-ring-color: var(--color-amber-200); --tw-ring-color: var(--color-amber-200);
} }
@@ -3334,6 +3441,13 @@
background-color: var(--color-blue-200); 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) { @media (hover: hover) {
.hover\:scale-105:hover { .hover\:scale-105:hover {
--tw-scale-x: 105%; --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) { @media (hover: hover) {
.hover\:border-slate-200:hover { .hover\:border-slate-200:hover {
border-color: var(--color-slate-200); 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) { @media (hover: hover) {
.hover\:bg-\[\#eaddc4\]:hover { .hover\:bg-\[\#eaddc4\]:hover {
background-color: #eaddc4; background-color: #eaddc4;
@@ -3442,12 +3574,6 @@
} }
} }
@media (hover: hover) {
.hover\:bg-blue-500:hover {
background-color: var(--color-blue-500);
}
}
@media (hover: hover) { @media (hover: hover) {
.hover\:bg-blue-500\/10:hover { .hover\:bg-blue-500\/10:hover {
background-color: #3080ff1a; background-color: #3080ff1a;

File diff suppressed because one or more lines are too long

View File

@@ -16,6 +16,7 @@ export default function WritePage() {
return ( return (
<RichTextEditor <RichTextEditor
ref={editorRef} ref={editorRef}
editorId={currentChapterId}
initialContent={currentChapter?.content || ''} initialContent={currentChapter?.content || ''}
onSave={(html) => updateChapter(currentChapterId, { content: html })} onSave={(html) => updateChapter(currentChapterId, { content: html })}
onAiTransform={async (text, mode) => { onAiTransform={async (text, mode) => {

View File

@@ -3,7 +3,7 @@
import React, { useRef, useEffect, useState, useImperativeHandle, forwardRef, useMemo } from 'react'; import React, { useRef, useEffect, useState, useImperativeHandle, forwardRef, useMemo } from 'react';
import { import {
Bold, Italic, Underline, AlignLeft, AlignCenter, AlignRight, List, Heading1, Heading2, Bold, Italic, Underline, AlignLeft, AlignCenter, AlignRight, List, Heading1, Heading2,
Copy, Wand2, Check, RefreshCw, Maximize2, Loader2, MousePointerClick, History, RotateCcw, Copy, Wand2, Check, CheckCheck, RefreshCw, Maximize2, Loader2, MousePointerClick, History, RotateCcw,
ChevronDown, ChevronUp, Layers ChevronDown, ChevronUp, Layers
} from 'lucide-react'; } from 'lucide-react';
@@ -12,6 +12,7 @@ export interface RichTextEditorHandle {
} }
interface RichTextEditorProps { interface RichTextEditorProps {
editorId?: string; // Used to uniquely identify the draft in localStorage
initialContent: string; initialContent: string;
onChange?: (html: string) => void; onChange?: (html: string) => void;
onSave?: (html: string) => void; onSave?: (html: string) => void;
@@ -34,13 +35,13 @@ interface VersionGroup {
versions: Version[]; versions: Version[];
} }
const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({ initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref) => { const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({ editorId, initialContent, onChange, onSave, onSelectionChange, onAiTransform }, ref) => {
const contentRef = useRef<HTMLDivElement>(null); const contentRef = useRef<HTMLDivElement>(null);
const scrollContainerRef = useRef<HTMLDivElement>(null); const scrollContainerRef = useRef<HTMLDivElement>(null);
const [isFocused, setIsFocused] = useState(false); const [isFocused, setIsFocused] = useState(false);
// Auto-Save State // Auto-Save State
const [saveStatus, setSaveStatus] = useState<'saved' | 'saving' | 'unsaved'>('saved'); const [saveStatus, setSaveStatus] = useState<'saved_local' | 'saved_db' | 'saving' | 'unsaved'>('saved_db');
const saveTimeoutRef = useRef<NodeJS.Timeout | null>(null); const saveTimeoutRef = useRef<NodeJS.Timeout | null>(null);
// Track sync state to avoid autosave loopbacks wiping current edits // Track sync state to avoid autosave loopbacks wiping current edits
@@ -168,8 +169,21 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
useEffect(() => { useEffect(() => {
if (!contentRef.current || initialContent === undefined) return; if (!contentRef.current || initialContent === undefined) return;
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 // 1. Si le contenu entrant est identique à ce qu'on a déjà, on ne touche à rien
if (initialContent === contentRef.current.innerHTML) return; if (contentToLoad === contentRef.current.innerHTML) return;
// 2. LOGIQUE CRUCIALE : On ne met à jour le DOM que si : // 2. LOGIQUE CRUCIALE : On ne met à jour le DOM que si :
// - L'éditeur est vide (premier chargement) // - L'éditeur est vide (premier chargement)
@@ -177,12 +191,12 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
// - OU si l'utilisateur n'est PAS en train de focus l'éditeur // - OU si l'utilisateur n'est PAS en train de focus l'éditeur
const isUserEditing = document.activeElement === contentRef.current; const isUserEditing = document.activeElement === contentRef.current;
if (!isUserEditing || (contentRef.current.innerHTML === "" && initialContent !== "")) { if (!isUserEditing || (contentRef.current.innerHTML === "" && contentToLoad !== "")) {
contentRef.current.innerHTML = initialContent; contentRef.current.innerHTML = contentToLoad;
syncRef.current = initialContent; syncRef.current = contentToLoad;
latestContentRef.current = initialContent; latestContentRef.current = contentToLoad;
} }
}, [initialContent]); }, [initialContent, editorId]);
// Flush pending save on unmount // Flush pending save on unmount
useEffect(() => { useEffect(() => {
@@ -213,9 +227,16 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
if (onChange) onChange(currentHtml); if (onChange) onChange(currentHtml);
// Auto-Save Debounce // 1. Save locally immediately
if (onSave) { if (editorId) {
localStorage.setItem(`draft_${editorId}`, currentHtml);
setSaveStatus('saved_local');
} else {
setSaveStatus('unsaved'); setSaveStatus('unsaved');
}
// 2. Auto-Save Debounce for DB
if (onSave) {
if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current); if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);
saveTimeoutRef.current = setTimeout(async () => { saveTimeoutRef.current = setTimeout(async () => {
@@ -227,10 +248,15 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
syncRef.current = htmlToSave; syncRef.current = htmlToSave;
try { try {
await onSave(htmlToSave); 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) { } catch (err) {
console.error('Auto-save failed:', err); console.error('Auto-save failed:', err);
setSaveStatus('saved_local'); // Revert to local save status on error
} }
setSaveStatus('saved');
}, 2000); // 2 seconds }, 2000); // 2 seconds
} }
} }
@@ -384,9 +410,10 @@ const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(({
{/* Save Status Indicator */} {/* Save Status Indicator */}
<div className="flex items-center gap-2 mr-4 text-xs font-medium text-slate-400"> <div className="flex items-center gap-2 mr-4 text-xs font-medium text-slate-400">
{saveStatus === 'saving' && <><Loader2 size={12} className="animate-spin" /> Sauvegarde...</>} {saveStatus === 'saving' && <><Loader2 size={12} className="animate-spin text-blue-500" /> <span className="text-blue-500 hidden sm:inline">Sauvegarde en cours...</span></>}
{saveStatus === 'saved' && <><Check size={12} className="text-green-500" /> Sauvegardé</>} {saveStatus === 'saved_local' && <><Check size={14} className="text-green-500" /> <span className="text-green-500 hidden sm:inline">Brouillon local</span></>}
{saveStatus === 'unsaved' && <span className="text-amber-500">Modifications non enregistrées...</span>} {saveStatus === 'saved_db' && <><CheckCheck size={14} className="text-emerald-600" /> <span className="text-emerald-600 hidden sm:inline">Sauvegardé</span></>}
{saveStatus === 'unsaved' && <span className="text-amber-500">Non sauvegardé...</span>}
</div> </div>
<div className="w-px h-6 bg-slate-300 mx-1" /> <div className="w-px h-6 bg-slate-300 mx-1" />

View File

@@ -1,7 +1,7 @@
'use client'; 'use client';
import React, { useState } from 'react'; import React, { useState, useEffect } from 'react';
import { UserProfile, UserPreferences } from '@/lib/types'; import { UserProfile, UserPreferences } from '@/lib/types';
import { User, Settings, Globe, Shield, Bell, Save, Camera, Target, Flame, Layout } from 'lucide-react'; import { User, Settings, Globe, Shield, Bell, Save, Camera, Target, Flame, Layout } from 'lucide-react';
import { useLanguage } from '@/providers/LanguageProvider'; import { useLanguage } from '@/providers/LanguageProvider';
@@ -30,9 +30,38 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
bio: user.bio || '', bio: user.bio || '',
email: user.email, email: user.email,
theme: user.preferences.theme, theme: user.preferences.theme,
dailyWordGoal: user.preferences.dailyWordGoal dailyWordGoal: user.preferences.dailyWordGoal,
customColors: user.preferences.customColors || {
bg: '#1a1b26',
panel: '#24283b',
text: '#c0caf5',
accent: '#7aa2f7'
}
}); });
// Handle Live Preview of Theme Changes
useEffect(() => {
const root = document.documentElement;
root.classList.remove('theme-light', 'theme-dark', 'theme-sepia', 'theme-custom');
root.classList.add(`theme-${formData.theme}`);
if (formData.theme === 'custom') {
root.style.setProperty('--theme-bg', formData.customColors.bg);
root.style.setProperty('--theme-panel', formData.customColors.panel);
root.style.setProperty('--theme-text', formData.customColors.text);
root.style.setProperty('--theme-border', formData.customColors.text + '20');
root.style.setProperty('--theme-muted', formData.customColors.text + '99');
root.style.setProperty('--theme-accent', formData.customColors.accent);
} else {
root.style.removeProperty('--theme-bg');
root.style.removeProperty('--theme-panel');
root.style.removeProperty('--theme-text');
root.style.removeProperty('--theme-border');
root.style.removeProperty('--theme-muted');
root.style.removeProperty('--theme-accent');
}
}, [formData.theme, formData.customColors]);
const fileInputRef = React.useRef<HTMLInputElement>(null); const fileInputRef = React.useRef<HTMLInputElement>(null);
const handleImageUpload = (event: React.ChangeEvent<HTMLInputElement>) => { const handleImageUpload = (event: React.ChangeEvent<HTMLInputElement>) => {
@@ -83,22 +112,29 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
preferences: { preferences: {
...user.preferences, ...user.preferences,
theme: formData.theme, theme: formData.theme,
dailyWordGoal: formData.dailyWordGoal dailyWordGoal: formData.dailyWordGoal,
customColors: formData.customColors
} }
}); });
localStorage.setItem('plumeia_theme', formData.theme);
if (formData.theme === 'custom') {
localStorage.setItem('plumeia_custom_colors', JSON.stringify(formData.customColors));
}
alert(t('profile.saved_success') || "Profil mis à jour !"); alert(t('profile.saved_success') || "Profil mis à jour !");
}; };
const isDark = formData.theme === 'dark'; const isDark = formData.theme === 'dark';
const isSepia = formData.theme === 'sepia'; const isSepia = formData.theme === 'sepia';
const isCustom = formData.theme === 'custom';
const themeOuterClass = isDark ? 'bg-slate-900 text-white' : isSepia ? 'bg-[#eaddc4] text-[#433422]' : 'bg-slate-50 text-slate-900'; const themeOuterClass = isCustom ? 'bg-theme-bg text-theme-text' : isDark ? 'bg-slate-900 text-white' : isSepia ? 'bg-[#eaddc4] text-[#433422]' : 'bg-slate-50 text-slate-900';
const themeInnerClass = isDark ? 'bg-slate-800 border-slate-700' : isSepia ? 'bg-[#f4ecd8] border-[#dfcdae]' : 'bg-white border-slate-200'; const themeInnerClass = isCustom ? 'bg-theme-panel border-theme-border' : isDark ? 'bg-slate-800 border-slate-700' : isSepia ? 'bg-[#f4ecd8] border-[#dfcdae]' : 'bg-white border-slate-200';
const themeTextHeading = isDark ? 'text-white' : isSepia ? 'text-[#332616]' : 'text-slate-900'; const themeTextHeading = isCustom ? 'text-theme-text' : isDark ? 'text-white' : isSepia ? 'text-[#332616]' : 'text-slate-900';
const themeTextMuted = isDark ? 'text-slate-400' : isSepia ? 'text-[#735e44]' : 'text-slate-500'; const themeTextMuted = isCustom ? 'text-theme-muted' : isDark ? 'text-slate-400' : isSepia ? 'text-[#735e44]' : 'text-slate-500';
const themeInputBg = isDark ? 'bg-slate-900 border-slate-700 text-white' : isSepia ? 'bg-[#fbf8f1] border-[#eaddc4] text-[#433422]' : 'bg-slate-50 border-slate-200 text-slate-900'; const themeInputBg = isCustom ? 'bg-theme-bg border-theme-border text-theme-text' : isDark ? 'bg-slate-900 border-slate-700 text-white' : isSepia ? 'bg-[#fbf8f1] border-[#eaddc4] text-[#433422]' : 'bg-slate-50 border-slate-200 text-slate-900';
const themeTabActive = isDark ? 'bg-white text-slate-900 shadow-lg' : isSepia ? 'bg-[#5c4731] text-white shadow-lg' : 'bg-slate-900 text-white shadow-lg'; const themeTabActive = isCustom ? 'bg-theme-text text-theme-bg shadow-lg' : isDark ? 'bg-white text-slate-900 shadow-lg' : isSepia ? 'bg-[#5c4731] text-white shadow-lg' : 'bg-slate-900 text-white shadow-lg';
const themeTabInactive = isDark ? 'text-slate-400 hover:bg-slate-800 hover:text-white' : isSepia ? 'text-[#735e44] hover:bg-[#eaddc4] hover:text-[#332616]' : 'text-slate-500 hover:bg-white hover:text-slate-900'; const themeTabInactive = isCustom ? 'text-theme-muted hover:bg-theme-panel hover:text-theme-text' : isDark ? 'text-slate-400 hover:bg-slate-800 hover:text-white' : isSepia ? 'text-[#735e44] hover:bg-[#eaddc4] hover:text-[#332616]' : 'text-slate-500 hover:bg-white hover:text-slate-900';
return ( return (
<div className={`h-screen overflow-y-auto p-8 font-sans ${themeOuterClass}`}> <div className={`h-screen overflow-y-auto p-8 font-sans ${themeOuterClass}`}>
@@ -141,7 +177,7 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
<div className={`flex-1 rounded-2xl shadow-sm border p-8 ${themeInnerClass}`}> <div className={`flex-1 rounded-2xl shadow-sm border p-8 ${themeInnerClass}`}>
{activeTab === 'profile' && ( {activeTab === 'profile' && (
<div className="space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300"> <div className="space-y-8 animate-in fade-in slide-in-from-bottom-4 duration-300">
<div className={`flex items-center gap-6 pb-8 border-b ${isDark ? 'border-slate-700' : isSepia ? 'border-[#dfcdae]' : 'border-slate-100'}`}> <div className={`flex items-center gap-6 pb-8 border-b ${isCustom ? 'border-theme-border' : isDark ? 'border-slate-700' : isSepia ? 'border-[#dfcdae]' : 'border-slate-100'}`}>
<div className="relative group cursor-pointer" onClick={() => fileInputRef.current?.click()}> <div className="relative group cursor-pointer" onClick={() => fileInputRef.current?.click()}>
<input <input
type="file" type="file"
@@ -150,7 +186,7 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
accept="image/*" accept="image/*"
className="hidden" className="hidden"
/> />
<img src={formData.avatar || 'https://via.placeholder.com/150'} className={`w-24 h-24 rounded-full object-cover border-4 shadow-md ${isDark ? 'border-slate-800' : isSepia ? 'border-[#f4ecd8]' : 'border-slate-50'}`} alt="Avatar" /> <img src={formData.avatar || 'https://via.placeholder.com/150'} className={`w-24 h-24 rounded-full object-cover border-4 shadow-md ${isCustom ? 'border-theme-panel' : isDark ? 'border-slate-800' : isSepia ? 'border-[#f4ecd8]' : 'border-slate-50'}`} alt="Avatar" />
<div className="absolute inset-0 bg-black/40 text-white rounded-full opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity" title={t('profile.change_avatar')}> <div className="absolute inset-0 bg-black/40 text-white rounded-full opacity-0 group-hover:opacity-100 flex items-center justify-center transition-opacity" title={t('profile.change_avatar')}>
<Camera size={20} /> <Camera size={20} />
</div> </div>
@@ -212,18 +248,42 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
<label className={`text-xs font-black uppercase tracking-widest flex items-center gap-2 ${themeTextMuted}`}> <label className={`text-xs font-black uppercase tracking-widest flex items-center gap-2 ${themeTextMuted}`}>
{t('profile.editor_theme')} {t('profile.editor_theme')}
</label> </label>
<div className="grid grid-cols-3 gap-3"> <div className="grid grid-cols-4 gap-3">
{['light', 'sepia', 'dark'].map((t) => ( {['light', 'sepia', 'dark', 'custom'].map((t) => (
<button <button
key={t} key={t}
onClick={() => setFormData({ ...formData, theme: t as any })} onClick={() => setFormData({ ...formData, theme: t as any })}
className={`p-4 rounded-xl border-2 transition-all flex flex-col items-center gap-2 ${formData.theme === t ? 'border-blue-500 bg-blue-50 text-blue-700' : isDark ? 'border-slate-700 hover:border-slate-600' : isSepia ? 'border-[#dfcdae] hover:border-[#cfbd9e]' : 'border-slate-100 hover:border-slate-200'}`} className={`p-4 rounded-xl border-2 transition-all flex flex-col items-center gap-2 ${formData.theme === t ? isCustom ? 'border-theme-text text-theme-text' : 'border-blue-500 bg-blue-50 text-blue-700' : isCustom ? 'border-theme-border text-theme-muted hover:border-theme-text' : isDark ? 'border-slate-700 hover:border-slate-600' : isSepia ? 'border-[#dfcdae] hover:border-[#cfbd9e]' : 'border-slate-100 hover:border-slate-200'}`}
> >
<div className={`w-8 h-8 rounded-full border border-slate-200 ${t === 'light' ? 'bg-white' : t === 'sepia' ? 'bg-[#f4ecd8]' : 'bg-slate-900'}`} /> <div className={`w-8 h-8 rounded-full border border-slate-200 ${t === 'light' ? 'bg-white' : t === 'sepia' ? 'bg-[#f4ecd8]' : t === 'custom' ? 'bg-gradient-to-tr from-pink-500 via-purple-500 to-indigo-500 border-none' : 'bg-slate-900'}`} />
<span className={`text-[10px] font-bold uppercase ${formData.theme !== t ? themeTextMuted : ''}`}>{t}</span> <span className={`text-[10px] font-bold uppercase ${formData.theme !== t ? themeTextMuted : ''}`}>{t}</span>
</button> </button>
))} ))}
</div> </div>
{formData.theme === 'custom' && (
<div className={`mt-6 space-y-4 pt-4 border-t ${isCustom ? 'border-theme-border' : 'border-slate-100'}`}>
<h4 className={`text-sm font-bold ${themeTextHeading}`}>Couleurs Personnalisées</h4>
<div className="grid grid-cols-1 md:grid-cols-2 gap-4">
<div className={`flex items-center justify-between p-3 rounded-xl border ${themeInputBg}`}>
<label className={`text-xs font-bold uppercase ${themeTextMuted}`}>Arrière-plan</label>
<input type="color" value={formData.customColors.bg} onChange={(e) => setFormData({ ...formData, customColors: { ...formData.customColors, bg: e.target.value } })} className="w-8 h-8 rounded shrink-0 cursor-pointer" />
</div>
<div className={`flex items-center justify-between p-3 rounded-xl border ${themeInputBg}`}>
<label className={`text-xs font-bold uppercase ${themeTextMuted}`}>Panneaux</label>
<input type="color" value={formData.customColors.panel} onChange={(e) => setFormData({ ...formData, customColors: { ...formData.customColors, panel: e.target.value } })} className="w-8 h-8 rounded shrink-0 cursor-pointer" />
</div>
<div className={`flex items-center justify-between p-3 rounded-xl border ${themeInputBg}`}>
<label className={`text-xs font-bold uppercase ${themeTextMuted}`}>Texte Principal</label>
<input type="color" value={formData.customColors.text} onChange={(e) => setFormData({ ...formData, customColors: { ...formData.customColors, text: e.target.value } })} className="w-8 h-8 rounded shrink-0 cursor-pointer" />
</div>
<div className={`flex items-center justify-between p-3 rounded-xl border ${themeInputBg}`}>
<label className={`text-xs font-bold uppercase ${themeTextMuted}`}>Détails / Accent</label>
<input type="color" value={formData.customColors.accent} onChange={(e) => setFormData({ ...formData, customColors: { ...formData.customColors, accent: e.target.value } })} className="w-8 h-8 rounded shrink-0 cursor-pointer" />
</div>
</div>
</div>
)}
</div> </div>
</div> </div>
</div> </div>
@@ -255,10 +315,10 @@ const UserProfileSettings: React.FC<UserProfileSettingsProps> = ({ user, onUpdat
</div> </div>
)} )}
<div className={`mt-12 pt-8 border-t flex justify-end ${isDark ? 'border-slate-700' : isSepia ? 'border-[#dfcdae]' : 'border-slate-100'}`}> <div className={`mt-12 pt-8 border-t flex justify-end ${isCustom ? 'border-theme-border' : isDark ? 'border-slate-700' : isSepia ? 'border-[#dfcdae]' : 'border-slate-100'}`}>
<button <button
onClick={handleSave} onClick={handleSave}
className={`px-8 py-3 rounded-xl font-bold flex items-center gap-2 transition-all shadow-xl hover:shadow-blue-200 ${isDark ? 'bg-white text-slate-900 hover:bg-blue-500 hover:text-white' : isSepia ? 'bg-[#5c4731] text-white hover:bg-blue-600' : 'bg-slate-900 text-white hover:bg-blue-600'}`} className={`px-8 py-3 rounded-xl font-bold flex items-center gap-2 transition-all shadow-xl hover:-translate-y-1 ${isCustom ? 'bg-theme-text text-theme-bg shadow-theme-border' : isDark ? 'bg-white text-slate-900 shadow-slate-900 hover:bg-slate-100' : isSepia ? 'bg-[#5c4731] text-white shadow-[#dfcdae] hover:bg-[#433422]' : 'bg-slate-900 text-white shadow-slate-200 hover:bg-slate-800'}`}
> >
<Save size={18} /> {t('profile.save_changes')} <Save size={18} /> {t('profile.save_changes')}
</button> </button>

View File

@@ -155,7 +155,13 @@ export interface UserUsage {
} }
export interface UserPreferences { export interface UserPreferences {
theme: 'light' | 'dark' | 'sepia'; theme: 'light' | 'dark' | 'sepia' | 'custom';
customColors?: {
bg: string;
panel: string;
text: string;
accent: string;
};
dailyWordGoal: number; dailyWordGoal: number;
language: 'fr' | 'en'; language: 'fr' | 'en';
} }

View File

@@ -7,14 +7,50 @@ export function ThemeProvider({ children }: { children: React.ReactNode }) {
const { user } = useAuthContext(); const { user } = useAuthContext();
useEffect(() => { useEffect(() => {
if (!user) return; // Read from localStorage to apply theme instantly across reloads
const savedTheme = localStorage.getItem('plumeia_theme');
const savedColorsStr = localStorage.getItem('plumeia_custom_colors');
const theme = user.preferences?.theme || 'light'; const theme = savedTheme || user?.preferences?.theme || 'light';
const root = document.documentElement; const root = document.documentElement;
root.classList.remove('theme-light', 'theme-dark', 'theme-sepia'); root.classList.remove('theme-light', 'theme-dark', 'theme-sepia', 'theme-custom');
root.classList.add(`theme-${theme}`); root.classList.add(`theme-${theme}`);
}, [user?.preferences?.theme]);
if (theme === 'custom') {
let colors = user?.preferences?.customColors || {
bg: '#ffffff',
panel: '#f8fafc',
text: '#0f172a',
accent: '#3b82f6'
};
if (savedColorsStr) {
try {
colors = JSON.parse(savedColorsStr);
} catch (e) {
console.error("Failed to parse custom colors", e);
}
}
root.style.setProperty('--theme-bg', colors.bg);
root.style.setProperty('--theme-panel', colors.panel);
root.style.setProperty('--theme-text', colors.text);
// To ensure UI remains legible, we compute a translucent border by default if not strictly provided
root.style.setProperty('--theme-border', colors.text + '20'); // 20% opacity of text color
root.style.setProperty('--theme-muted', colors.text + '99'); // 60% opacity of text color
root.style.setProperty('--theme-accent', colors.accent);
} else {
root.style.removeProperty('--theme-bg');
root.style.removeProperty('--theme-panel');
root.style.removeProperty('--theme-text');
root.style.removeProperty('--theme-border');
root.style.removeProperty('--theme-muted');
root.style.removeProperty('--theme-accent');
}
}, [user?.preferences?.theme, user?.preferences?.customColors]);
return <>{children}</>; return <>{children}</>;
} }